# Serverspace.us Knowledge Base
https://serverspace.us/support/help/how-to-create-a-virtual-disk-in-linux-a-step-by-step-guide-loop-lvm-vps.mdA comprehensive guide to creating virtual disks in Linux: loop devices, LVM, and QCOW2. Includes step-by-step commands, a comparison of methods, and recommendations for VPS on Serverspace.
**Creating a virtual disk in Linux** is a fundamental system administration task commonly used for testing, virtualization, working with LVM, or allocating isolated storage for applications and databases.
In VPS infrastructures such as **Serverspace**, virtual disks provide a flexible way to manage resources without requiring additional physical storage devices.
## What is a virtual disk in Linux
A virtual disk is a file or logical volume that the operating system treats as a real physical hard drive.
It can be created using loop devices, LVM, or virtualization tools.
Main use cases:
- Testing file systems
- Isolating application data
- Working with containers and virtual machines
- Flexible storage expansion on VPS environments
## Methods of creating a virtual disk in Linux
| Method | Description | Advantages | Use case |
| --- | --- | --- | --- |
| Loop device (file-based disk) | Creating a virtual disk from a file | Simple, fast testing | Dev, testing, learning |
| LVM Logical Volume | Logical volume on top of physical storage groups | Flexible resizing, production-ready | Servers, VPS, databases |
| QCOW2 / VMDK | Virtual disk formats for virtual machines | Snapshots, compression | KVM, QEMU, VMware |
## Creating a virtual disk using a loop device
This method is the simplest and is suitable for most testing scenarios.
Steps:
- **Create a disk file**
```
dd if=/dev/zero of=virtual_disk.img bs=1M count=1024
```
- **Attach the file as a loop device**
```
losetup /dev/loop0 virtual_disk.img
```
- **Create a filesystem**
```
mkfs.ext4 /dev/loop0
```
- **Create a mount point**
```
mkdir /mnt/virtual_disk
```
- **Mount the disk**
```
mount /dev/loop0 /mnt/virtual_disk
```
## Creating a virtual disk using LVM
LVM is widely used on production servers and VPS environments such as **Serverspace**, where flexible storage management is required.
Main steps:
- Create a physical volume
- Create a volume group
- Create a logical volume
- Format the filesystem
Example commands:
```
pvcreate /dev/sdb
vgcreate vg_data /dev/sdb
lvcreate -L 10G -n lv_disk vg_data
mkfs.ext4 /dev/vg_data/lv_disk
mount /dev/vg_data/lv_disk /mnt/lvm_disk
```
## When to use different types of virtual disks
Choosing the right virtual disk type in Linux depends on workload, environment, and performance requirements (VPS, local server, or virtualization platform).
- **Loop device (file-based disk)** — suitable for learning, testing, and development environments where performance is not critical.
- **LVM (Logical Volume Manager)** — the best choice for VPS and production systems. Allows flexible resizing, snapshots, and efficient storage management.
- **QCOW2 / VMDK** — used in virtual machines (KVM, QEMU, VMware). Supports snapshots, compression, and dynamic allocation.
- **RAID / LVM Thin Provisioning** — used in high-load systems where performance, redundancy, and reliability are required.
In general: **loop devices** are for experiments, **LVM** is for servers and VPS, and **QCOW2** is for virtualization.
## Common mistakes when creating virtual disks
When working with virtual disks in Linux, users often make mistakes that lead to non-working storage or data loss risks.
- **Forgetting to attach a loop device** — the file is created but losetup is not executed, so the disk is inactive.
- **Missing root privileges** — most disk operations require sudo, especially LVM and mounting tasks.
- **Filesystem not created** — the volume must be formatted (e.g., ext4) before use.
- **Skipping the mount step** — the disk is not usable until it is mounted.
- **Wrong device selection** — selecting the wrong disk can lead to data loss on real partitions.
Most issues can be avoided by checking disk status using lsblk or df -h after each step.
## How to verify a virtual disk in Linux
After creating and mounting a virtual disk, it is important to confirm that the system recognizes it correctly.
Use the following commands:
```
lsblk
```
Displays all block devices, including loop devices and LVM volumes.
```
df -h
```
Shows mounted filesystems and available disk space.
```
fdisk -l
```
Lists all disks and partitions in the system.
```
mount | grep loop
```
Checks whether the loop device is mounted.
If the disk does not appear in these outputs, it means it was not properly mounted or attached.
## Comparison of virtual disk creation methods
| Criteria | Loop | LVM | QCOW2 |
| --- | --- | --- | --- |
| Complexity | Low | Medium | Medium |
| Flexibility | Low | High | High |
| Production use | No | Yes | Yes (VMs) |
## Recommendations
- Use loop devices for testing and learning
- Use LVM for VPS and production environments
- Use QCOW2 or VMDK for virtual machines
- On Serverspace infrastructure, LVM is the most flexible and widely used solution
## Conclusion
Creating a virtual disk in Linux is an essential skill for system administration and infrastructure optimization.
Depending on the use case, you can choose simple loop devices for experiments or LVM for scalable storage management in VPS environments.
Platforms like **Serverspace** make it easy to deploy and scale such solutions in production.
https://serverspace.us/about/blog/how-to-run-roblox-clients-on-a-vps.mdLearn how to run Roblox clients on a Windows VPS — setup, multiple instances, configuration tips, and what to avoid.
Running Roblox on a local PC works fine for everyday gaming. But some tasks need more than a home machine can comfortably offer: testing a multiplayer game with several accounts at once, keeping a client active around the clock without leaving a computer on overnight, or working in Roblox Studio from multiple locations without reinstalling everything each time. A virtual private server handles all of this — and once it’s configured, it runs continuously without consuming local resources.
This guide covers the full setup: picking the right VPS configuration, connecting to it, installing Roblox, and getting one or more clients running. Along the way, we’ll look at what tends to go wrong, how to sidestep the most common mistakes, and where Roblox’s own rules draw a clear line.
## Why Use a VPS for Roblox
At first glance, Roblox on a server sounds unusual. On a gaming PC it just works — why add complexity? The answer depends on what you’re trying to do.
A VPS runs 24/7. There’s no sleep mode, no automatic update restart, no family member turning off the machine at an inconvenient moment. For developers who need a test server available at a specific time, or for anyone tracking limited-time in-game events, that persistence matters.
A VPS also keeps environments separated. If a test goes wrong — a script crashes the client, an installation breaks — it doesn’t touch the local machine or any other running session. Multiple VPS instances can coexist with completely different configurations, and each one can be reset or rebuilt independently.
What’s arguably the biggest draw for developers: Windows Server supports multiple concurrent Remote Desktop sessions, which makes it practical to run several Roblox clients in parallel on one machine. On a consumer Windows PC, running more than one Roblox instance simultaneously requires workarounds that break frequently. On a Windows Server VPS, it’s a matter of creating separate user accounts and opening additional RDP connections.
## System Requirements for Running Roblox on a VPS
Roblox is a Windows application. There’s no native Linux client, which means the VPS must run **Windows Server 2019 or 2022**. Windows Server 2022 is generally the better choice — it receives more recent driver and compatibility updates and is what most VPS providers offer as the current stable option.
Beyond the operating system, the configuration that actually matters breaks down like this:
- **RAM:** Each Roblox client typically uses between 500 MB and 1.5 GB depending on the game. For a single client, 4 GB of RAM is a comfortable starting point. For multiple clients, calculate roughly 1.5–2 GB per instance plus a baseline for the OS itself.
- **CPU:** Roblox is more CPU-intensive than GPU-intensive when running without hardware acceleration. Two vCPUs handle a single client adequately; multiple clients benefit from four or more cores.
- **Storage:** The Roblox installation itself takes around 600 MB. Add the Windows Server footprint and some buffer — 50–80 GB of SSD storage covers a single-client setup comfortably, with more needed as clients multiply.
- **Graphics:** Most VPS instances don’t have a dedicated GPU. Roblox falls back to software rendering using DirectX WARP (Windows Advanced Rasterization Platform), which runs on the CPU. It works, but performance is limited compared to hardware acceleration. GPU-enabled VPS instances are available from some providers at higher cost.
- **Network:** Roblox streams game data continuously. A stable uplink of at least 10–20 Mbps per active client keeps things smooth. Choosing a VPS located geographically close to Roblox’s infrastructure helps reduce latency.
The table below gives concrete configuration recommendations based on how many clients you plan to run simultaneously.
| Scenario | RAM | vCPUs | SSD Storage | Notes |
| --- | --- | --- | --- | --- |
| Single client, casual use | 4 GB | 2 vCPU | 50 GB | Minimal setup; fits always-on presence or light testing |
| Single client, graphics-heavy game | 6–8 GB | 4 vCPU | 60 GB | Software renderer under load; lower graphics settings required |
| 2–3 simultaneous clients | 8–12 GB | 4–6 vCPU | 80 GB | Typical for multiplayer game dev testing |
| 4–6 simultaneous clients | 16–24 GB | 8 vCPU | 120 GB | Monitor CPU; stagger client launches to reduce startup peak load |
| Roblox Studio only | 8 GB | 4 vCPU | 80 GB | Studio is resource-heavy; 8 GB is the comfortable minimum for larger projects |
## Step-by-Step: Setting Up Roblox on a Windows VPS
Step 1 — Order a Windows VPS
Choose a VPS provider that offers Windows Server as a selectable operating system. [Serverspace VPS servers](https://serverspace.us/services/vps-server.md), for example, support Windows Server 2022, come with SSD-backed storage, and let you pick exactly the RAM and vCPU count you need — without locking you into a fixed tier. Provisioning takes a few minutes; once the server is ready, you’ll receive an IP address and administrator credentials.
When placing the order, select **Windows Server 2022** as the operating system image. Confirm that the Windows license is included in the price — some providers charge for it separately.
Step 2 — Connect via Remote Desktop Protocol
On Windows, open the built-in **Remote Desktop Connection** app (search for it in the Start menu, or run mstsc). On macOS, download **Microsoft Remote Desktop** from the App Store. Enter the server’s IP address, log in with the administrator username and password, and the connection opens.
What you get is a full Windows desktop running on the server — with a virtual display. That display is important: Roblox requires a graphical session to run, and the RDP session provides exactly that, even on a machine with no physical monitor or dedicated GPU.
Before connecting, go into the RDP settings and set the remote display resolution to at least 1024×768. Some Roblox launcher versions behave oddly at very low resolutions, and debugging a broken Roblox install at 640×480 is not a pleasant experience.
Step 3 — Prepare the Browser
Windows Server ships with Internet Explorer as the default browser, and it won’t handle Roblox’s web-based launcher. Before doing anything else, open **Server Manager**, click **Local Server** in the left panel, find **IE Enhanced Security Configuration**, and set it to **Off** for both Administrators and Users. This setting blocks most modern websites by default.
Once that’s done, download and install Google Chrome or Firefox. Either works; Chrome tends to have fewer compatibility issues with Roblox’s launcher logic.
Step 4 — Install Roblox
With Chrome open, go to Roblox.com, log in to your account, and click Play on any game. The browser will prompt you to install the Roblox Player. Follow the installer — it takes under a minute. Roblox will attempt to launch the game immediately after installation.
If the game launches but looks very slow or stuttery, that’s the software renderer working at default graphics settings. Open the Roblox in-game menu, go to **Settings → Graphics Mode**, and switch to **Manual**. Then drag the graphics quality slider down to 1 or 2. On a VPS without a GPU, anything above level 3 tends to make the CPU sweat and the frame rate crawl.
Step 5 — Configure the Session to Stay Alive
By default, Windows Server may disconnect idle RDP sessions or lock the screen, which pauses or terminates running applications. To prevent this, make two changes:
First, open **Group Policy Editor** by pressing Win+R and running gpedit.msc. Navigate to Computer Configuration → Administrative Templates → Windows Components → Remote Desktop Services → Remote Desktop Session Host → Session Time Limits. Set _Set time limit for disconnected sessions_ to **Never**.
Second, open Power Options in the Control Panel, choose **High Performance**, and set sleep to **Never**. Disable the screen saver as well.
With these settings in place, Roblox keeps running even after you close the RDP window on your local machine — as long as you _disconnect_ rather than log out. Clicking the X on the RDP window disconnects the local client without ending the server-side session. Choosing Start → Sign out ends it entirely and stops all running applications.
## Running Multiple Roblox Clients on One VPS
Roblox normally prevents more than one instance from running under the same user account on the same machine. The cleanest workaround — and the one that survives Roblox updates reliably — is to create separate Windows user accounts on the VPS, each running its own Roblox client.
Windows Server supports multiple concurrent RDP sessions by default, which consumer Windows doesn’t. Each user account gets its own desktop environment, its own Roblox installation, and its own Roblox account logged in. Here’s the basic process:
- On the VPS, open Command Prompt as Administrator and create a new user account. For example: net user testuser2 Password123! /add. Then add that user to the Remote Desktop Users group: net localgroup "Remote Desktop Users" testuser2 /add.
- Open a second RDP connection to the same VPS IP address, but log in as the new user account.
- Within that new session, install Roblox by going through Roblox.com again. Roblox installs per-user on Windows, so each account needs its own installation.
- Log into a different Roblox account in the browser, launch a game, and the second client is running independently of the first.
Repeat for each additional client. Staggering the startups by 60–90 seconds apiece helps — Roblox pulls a lot of game data during initial load, and launching four clients simultaneously can briefly spike CPU usage to uncomfortable levels.
Some users look for shortcuts: registry patches, process injection tools, or third-party multi-instance launchers. These often work in the short term but break with Roblox updates, and several of them trigger Roblox’s anti-cheat system (Hyperion/Byfron). The multi-user approach takes longer to configure initially but is far more stable over time.
## Advantages and Disadvantages
What Works Well
**Always-on operation.** The VPS runs continuously. No sleep modes, no accidental shutdowns, no waiting for a home machine to wake up before connecting.
**Clean isolation.** Each VPS instance is a controlled environment. A crash, a broken installation, or a test gone sideways stays contained. It doesn’t touch your main machine or other running sessions.
**Multiple clients in parallel.** Windows Server’s native multi-session RDP makes running several Roblox clients simultaneously practical in a way that consumer Windows simply doesn’t allow cleanly.
**Scalable on demand.** Need more RAM as the project grows? Most VPS providers let you resize an instance without reinstalling the OS. You’re not locked into a fixed hardware configuration.
**Geographic flexibility.** A VPS can be provisioned in a data center geographically close to specific Roblox servers, which reduces in-game latency for region-specific tests or live sessions.
What to Watch Out For
**No GPU by default.** Software rendering gets the job done for development and testing, but it’s visibly slower than hardware-accelerated graphics. GPU-enabled VPS options exist but cost significantly more.
**Ongoing cost.** Unlike a home PC that’s already paid for, a VPS is a monthly expense. For very occasional use, the math may not work out in favor of a dedicated server.
**More moving parts.** Getting multiple clients configured, sessions kept alive, and Roblox updated properly requires more active management than simply opening the app on a gaming PC.
## Limitations and Risks
One topic deserves a direct word: Roblox’s Terms of Service.
Roblox explicitly prohibits automation, account farming, and operating accounts in ways inconsistent with normal human play. Running multiple clients to automate in-game actions — currency farming, experience grinding, or similar — violates those terms. Accounts caught doing this get permanently banned. Roblox’s anti-cheat system, Hyperion, has become increasingly capable of identifying non-human behavior patterns and flagging sessions running in virtualized environments.
Legitimate uses of Roblox on a VPS fall into a different category: game development testing, remote Roblox Studio work, keeping a single account active for valid reasons. These carry lower risk, but it’s worth noting that Roblox doesn’t officially support or endorse VPS usage at all. The platform is designed for consumer hardware.
On the technical side, a few practical constraints apply:
- Hyperion scans the hardware environment and can flag virtualized configurations. Some VPS providers’ hardware fingerprints are more recognizable than others.
- Roblox updates frequently, sometimes daily. Updates can break existing setups, require a reinstall, or change how the client behaves on software rendering. Budget time for maintenance.
- Windows Server licensing must be included in the VPS price or provided separately. Verify this before ordering — unlicensed Windows installations are not a stable foundation.
## Practical Use Cases
Multiplayer Game Development Testing
Roblox Studio — the game creation environment — runs on a VPS the same way it does on a consumer PC. A developer working on a multiplayer game needs to verify how the experience behaves with several players connected simultaneously: spawn behavior, collision logic, server scripts, data persistence. Running three or four VPS-hosted Roblox clients that join the same private server gives realistic multi-player data without needing multiple physical machines or coordinating a group of testers to be online at the same time.
Always-On Account for Time-Limited Events
Roblox regularly runs events where players need to log in, complete tasks, or simply be present within a specific window to earn rewards or collectibles. A VPS with a single Roblox client running keeps an account active without tying up a home computer. The session runs in the background; you check in via RDP when needed and disconnect again.
Remote Roblox Studio Access
Roblox Studio is resource-heavy and project files can grow large. Developers who work from multiple locations — home, office, a different city — can keep a single Studio installation on one VPS and access it from anywhere via RDP. The project stays in one place with no sync issues, version conflicts, or installation overhead on each new device.
Isolated Testing Environments
Testing a game script that interacts with in-game economies, modifies account data, or calls external APIs carries real risk if done on a main account. A VPS with a dedicated test account and a fresh Roblox installation provides a contained space where experimental changes can’t spill over to production accounts or the local machine. On the practical side, a botched test that wipes an in-game inventory is annoying on a test account and devastating on a main one.
Low-End Hardware Performance Benchmarking
Developers sometimes need to understand how a game performs on constrained hardware — specifically on the low-spec machines that a significant portion of Roblox’s player base uses. A VPS configured with 2 vCPUs, 4 GB RAM, and software rendering approximates the experience of an older device. Running the game on that configuration and observing actual frame rates gives more representative low-end performance data than testing exclusively on a developer’s high-spec workstation.
## Common Mistakes and How to Avoid Them
Choosing a Linux VPS
This comes up often and always causes the same frustration. Roblox has no Linux build. Running it through Wine — a Windows compatibility layer for Linux — is technically possible in theory but practically blocked by Hyperion, which identifies Wine environments and either prevents the client from launching or triggers a ban. Always select a Windows Server image when ordering the VPS.
Forgetting to Disable IE Enhanced Security Configuration
Windows Server blocks most modern websites through IE Enhanced Security Configuration, which is enabled by default. If you skip this step, Chrome won’t load Roblox.com, the installer won’t download, and you’ll spend time troubleshooting what’s actually a one-click fix in Server Manager. Disable it for both Administrators and Users before touching the browser.
Logging Out Instead of Disconnecting from RDP
When you log out of an RDP session — through Start → Sign out — the session terminates and all running applications, including Roblox, stop. To keep Roblox running after you close the RDP window, click the X on the RDP window itself (or press Alt+F4 while in the RDP app). This disconnects your local client from the session without ending it on the server. Everything keeps running; you reconnect later and find it exactly as you left it.
Running Graphics at Default or High Quality
Software rendering on a CPU-only VPS can’t handle Roblox’s default graphics settings without significant performance impact. The client slows noticeably or crashes on graphics-intensive games. As soon as Roblox launches, open Settings → Graphics, switch to Manual, and set the quality level to 1 or 2. This applies to every client running on the VPS — not just the first one.
Provisioning a VPS That’s Too Small
The most common outcome of undersizing is that everything appears to work at first, then degrades gradually as Roblox loads game assets and memory fills up. The VPS starts swapping, CPU throttles, and the client either freezes or crashes — usually taking other running sessions down with it. The configuration table earlier in this article gives starting-point estimates; after launch, open Task Manager → Performance and keep an eye on RAM and CPU usage for the first 30–60 minutes under real load. Resize early if usage consistently sits above 85–90%.
Neglecting Roblox Updates
On consumer machines, Roblox updates automatically when the launcher runs. On a VPS where the client isn’t launched regularly, the installation can fall several versions behind. An outdated client gets rejected by Roblox’s servers with a generic error that’s easy to misdiagnose. Either launch and close Roblox periodically to trigger the auto-updater, or set up a scheduled task in Windows Task Scheduler that does it automatically once a week.
Using Third-Party Multi-Instance Tools
Registry-patching tools and process injection utilities that try to run multiple Roblox instances under a single Windows account work inconsistently, break after Roblox updates, and some of them specifically trigger Hyperion flags. The separate-user-account method described earlier in this guide is more initial effort but runs reliably across updates without any anti-cheat exposure from the tooling itself.
## Conclusion
Running Roblox on a VPS comes down to a few fundamentals: a Windows Server instance with adequate RAM and CPU for the number of clients needed, an RDP session that provides a virtual display, Roblox installed per user account, and a handful of configuration changes to keep sessions alive after disconnecting. The setup is more involved than opening Roblox on a local PC, but it unlocks capabilities a home machine can’t match — always-on operation, multiple isolated clients in parallel, and remote access from anywhere.
The multi-user approach to running several clients simultaneously takes longer to configure than shortcut tools, but it holds up across Roblox updates and avoids anti-cheat triggers that come with process injection methods. For the use cases it’s actually suited for — game development testing, remote Studio work, isolated environments — it handles the workload reliably.
If this is a first setup, start small: one client on a minimal Windows VPS, verify the whole pipeline works, then scale up from there. Adding resources later is a few clicks; untangling a configuration that was overloaded from day one takes considerably more time.
https://serverspace.us/about/blog/5-forex-vps-mistakes-beginners-make-with-trading-bots.mdDiscover the 5 most common Forex VPS mistakes beginners make when running trading bots. Learn how to improve latency, uptime, security, and VPS performance for automated Forex trading.
Running Forex bots from a home PC usually works fine at first. But after a while, traders start running into random disconnects, terminal freezes during volatility, Windows updates in the middle of the night, or internet outages that stop automated strategies completely. That’s why VPS hosting became a standard part of algorithmic trading infrastructure. Platforms like **MetaTrader 4** and **MetaTrader 5** are lightweight enough to run almost anywhere, but stable execution still depends heavily on the server behind them.
A surprising number of trading issues are not related to the strategy itself. They come from poor VPS setups, overloaded servers, bad latency, or basic security mistakes.
## Common Forex VPS Problems at a Glance
| Problem | What Usually Happens |
| --- | --- |
| Cheap VPS with weak hardware | Terminal lag, freezes, unstable uptime during market activity. |
| Server too far from the broker | Higher ping and slower order execution. |
| Poor VPS security | Risk of compromised credentials or unauthorized access. |
| Too many terminals on one server | CPU saturation and RAM spikes affecting bot performance. |
| No monitoring or backups | Offline bots may go unnoticed for hours. |
## 1. Choosing a VPS Based Only on Price
A lot of beginners pick the cheapest VPS they can find because MetaTrader itself doesn’t look demanding. Technically, the platform can run on very small instances — until the market becomes volatile.
The problem usually appears during news releases, high trading volume, or when several Expert Advisors start processing data simultaneously. CPU usage spikes, RAM fills up, and the terminal starts lagging behind live market conditions. In some cases, charts stop updating entirely for a few seconds.
That delay may not matter for long-term swing trading, but scalping bots and high-frequency strategies are much more sensitive to execution speed and timing.
Low-end VPS providers also tend to oversell shared hardware. On paper, the server specs may look fine, while in reality neighboring virtual machines consume most of the resources.
**A more stable setup should include dedicated resources, SSD or NVMe storage, and enough RAM headroom for future scaling.**
## 2. Ignoring VPS Location and Network Latency
Server location affects Forex trading more than many people expect.
If the VPS is located far from the broker’s infrastructure, every request takes longer to travel between the trading terminal and the broker server. That additional latency increases execution time and can create slippage during fast market movement.
For example, running a VPS in Asia while trading through a broker with servers in Frankfurt or London creates unnecessary network distance. Even an extra 40–50 ms becomes noticeable for strategies opening dozens of trades per hour.
This does not mean every trader needs ultra-low latency infrastructure, but **placing the VPS close to the broker’s data center usually improves execution consistency**. Most experienced traders at least test ping values before deploying bots long term.
## 3. Treating VPS Security as an Afterthought
Forex VPS servers are frequent targets for brute-force login attempts, especially on exposed RDP ports. Yet many traders still use weak passwords, disable updates, or install random software on the same machine running their trading accounts.
Once a VPS is compromised, attackers may gain access to broker credentials, account sessions, saved passwords, or trading terminals themselves.
Another common mistake is using the VPS for everything at once: trading, browsing, downloading files, and testing unknown scripts. Over time, this creates unnecessary security risks and stability issues.
Keeping the environment clean makes a big difference. **Strong passwords, automatic OS updates, restricted remote access, and separating trading infrastructure from daily usage are usually enough to avoid most problems.**
## 4. Running Too Many Bots on a Single VPS
This happens constantly with beginners.
At first there’s one MetaTrader terminal and one EA. Then another bot gets added. Then a few more charts, indicators, Telegram integrations, copy trading software, and eventually the VPS starts struggling under load.
MetaTrader terminals are lightweight individually, but multiple instances can consume a surprising amount of CPU and RAM — especially when processing historical data or dozens of active charts simultaneously.
When the server approaches resource limits, symptoms appear gradually:
- **Charts update slower than normal**
- **Terminal freezes during volatility**
- **Bots stop reacting to market conditions in real time**
- **Orders execute late or fail completely**
Many traders blame the strategy when the actual bottleneck is infrastructure.
**Monitoring CPU load and memory usage regularly helps avoid these situations. In larger setups, splitting bots across several VPS instances is often more reliable than stacking everything onto one machine.**
## 5. Not Monitoring the VPS After Deployment
A surprising number of traders launch their bots and assume the system will run forever without supervision.
In reality, VPS environments still experience crashes, failed Windows updates, broker disconnects, storage problems, or networking issues. Sometimes the terminal itself remains open while the Expert Advisor quietly stops functioning in the background.
Without monitoring tools or alerts, these problems may stay unnoticed for hours. By the time the trader checks the server manually, important trades may already be missed.
**Simple uptime monitoring, scheduled backups, and snapshots reduce the damage significantly**. It’s also worth testing how the VPS behaves after a reboot instead of assuming every service restarts correctly on its own.
## Using Serverspace VPS for Trading Bots
Most traders running automated strategies 24/7 eventually move away from relying on a home PC. A VPS provides a more stable environment for keeping trading terminals online continuously, regardless of local internet outages or system shutdowns.
With [Serverspace](https://serverspace.us/index.md), traders can deploy Windows or Linux VPS instances suitable for MetaTrader platforms, Expert Advisors, and custom algorithmic trading setups.
The infrastructure supports SSD and NVMe storage, flexible scaling, snapshots, and multiple data center locations. That makes it easier to place trading servers closer to broker infrastructure and expand resources later if additional bots or terminals are added.
For traders managing several EAs simultaneously, being able to scale CPU and RAM without rebuilding the environment from scratch is especially useful.
## Conclusion
A lot of Forex bot failures have nothing to do with trading logic. The strategy may work perfectly fine while the VPS itself becomes the weak point.
Unstable hardware, poor latency, overloaded terminals, and missing monitoring can all affect execution quality in ways beginners often underestimate.
A properly configured VPS will not magically make a trading strategy profitable, but it does remove many technical problems that interfere with automated trading.
https://serverspace.us/about/blog/openclaw-how-to-set-up-an-ai-assistant-that-responds-to-clients-24-7.mdOpenClaw is a self-hosted AI assistant that responds to clients 24/7 on WhatsApp, Telegram, and Slack.
A client sends a message on WhatsApp at 11 PM asking about pricing. A potential partner reaches out on Telegram at 7 AM before your team logs in. Someone in your Slack support channel posts a question on a Sunday. For small business owners and solo operators, these aren’t edge cases — they’re regular occurrences that either get answered late or don’t get answered at all. Both outcomes cost something.
OpenClaw is an open-source personal AI assistant designed to close that gap. It doesn’t sit on your website as a floating chat bubble; it lives on a server or machine you control, connects to the messaging apps your clients already use, and stays online around the clock. This article covers what OpenClaw actually is, how to get it running, and how business owners are using it to handle communication that used to wait until Monday morning.
## What OpenClaw Is — and What It Isn’t
OpenClaw describes itself as “the AI that actually does things.” That framing matters, because it positions the product differently from both traditional chatbots and the new wave of AI assistants baked into operating systems. It’s not a chatbot widget you embed in a storefront, and it’s not a cloud service where your conversations pass through someone else’s infrastructure. It’s software you install, configure, and run — on your own terms.
The core idea is simple: you have a Gateway (the engine that manages everything), and that Gateway connects to the channels you already use — WhatsApp, Telegram, Slack, Discord, Signal, iMessage, and more. When someone messages you on any of those platforms, OpenClaw receives the message, processes it using whichever AI model you’ve configured, and replies. You can have the assistant handle conversations entirely on its own, or set it up to notify you when something requires your attention.
Created by Peter Steinberger and an active open-source community, OpenClaw has grown to over 376,000 GitHub stars since its release. In early 2026, TechCrunch noted that the creator joined OpenAI, while the project itself continued as independent open-source software — a detail that tells you something about how seriously the project is taken.
## The Architecture: Gateway, Channels, Skills
Understanding three concepts makes everything else about OpenClaw click into place.
The Gateway
The Gateway is OpenClaw’s local control plane. It runs as a background daemon on your machine or server, listens on port 18789, and orchestrates everything: sessions, channels, tools, and model calls. When you start OpenClaw, you’re starting the Gateway. When it goes offline, your assistant goes offline. This is why hosting it on a server that runs continuously matters — more on that later.
The Gateway handles multi-agent routing, which means you can have different assistants (workspaces) handling different channels. A Slack workspace for internal team communication can route to a different agent than your WhatsApp number used for clients.
Channels
Channels are the surfaces where conversations happen. OpenClaw ships with built-in support for Discord, Google Chat, iMessage, IRC, Signal, Slack, Telegram, WebChat, and WhatsApp. Additional channels — Matrix, Microsoft Teams, Mattermost, Nextcloud Talk, Feishu, Twitch, and others — come as bundled plugins. Each channel connects to the same Gateway, so one running instance handles all of them simultaneously.
For business use, WhatsApp and Telegram are the fastest channels to get working. Telegram requires just a bot token from BotFather. WhatsApp takes slightly more setup but reaches the widest client base. Slack integration is particularly relevant for teams managing a support channel — the Showcase section of the official documentation includes a real example of a company using OpenClaw to watch a Slack channel and respond autonomously, forwarding alerts to Telegram when something needs a human eye.
Skills and Memory
Skills are extensions that give OpenClaw specific capabilities. Some come from ClawHub (the official skills registry), others you can build yourself — or have OpenClaw build for you by describing what you need in a chat. Community members have built skills for Gmail, Todoist, Linear, Home Assistant, Jira, public transit APIs, and dozens of other tools. The assistant can install and start using a new skill within the same conversation where you requested it.
Persistent memory is a distinct feature from skills. OpenClaw builds up a knowledge of your context over time — your preferences, the context of ongoing client relationships, recurring questions it has learned to handle. That accumulated memory makes the assistant progressively more useful rather than starting from scratch every session.
## What OpenClaw Can Do for a Business Owner
The product is general-purpose by design, which means its value depends on how it’s configured. For a business owner focused on client communication, a few categories stand out based on what the community is actually building.
On the messaging side: receiving and replying to client messages on WhatsApp or Telegram, answering recurring questions about services or availability, routing urgent inquiries to you via a notification on another channel, and acknowledging receipt of messages that you’ll follow up on personally. The assistant can be given a persona and instructions that match your brand’s communication tone.
On the operational side: email inbox management (reading, summarizing, drafting replies), calendar coordination, web research for pricing or competitor information, creating and tracking tasks in tools like Todoist or Linear, and running scheduled checks on information you care about. Community users have built workflows that process email attachments, book appointments via browser automation, and generate morning briefings before the workday starts.
Browser automation is worth mentioning separately. OpenClaw can navigate websites, fill forms, and extract information without APIs — which means it can interact with tools that don’t offer integrations, as long as they have a web interface.
## Key Features: What’s Included
| Feature | What It Means in Practice | Business Relevance |
| --- | --- | --- |
| Multi-channel inbox | One Gateway handles WhatsApp, Telegram, Slack, Discord, Signal and more simultaneously | Clients can reach you on whichever platform they prefer |
| Persistent memory | The assistant builds context over time and retains it across sessions | Knows returning clients, ongoing projects, and recurring preferences |
| Skills / ClawHub | Community-built extensions for tools like Gmail, Todoist, Jira, calendars | Connects the assistant to workflows you already use |
| Browser automation | Navigates sites, fills forms, extracts data — no API required | Works with tools that don't have integrations |
| Cron jobs / heartbeats | Scheduled tasks and proactive check-ins on a defined cadence | Morning briefings, follow-up reminders, periodic reports |
| 35+ model providers | Anthropic, OpenAI, Google, and others; switch or combine models freely | Use the model that fits your cost and capability needs |
| DM safety controls | Pairing codes, allowlists, and sandboxing for messages from unknown senders | Controls who can interact with your assistant and how |
| Self-hosted data | All conversation data stays on your server — not shared with third-party platforms | Relevant for GDPR compliance and client confidentiality |
## Setting It Up: From Zero to Running Assistant
OpenClaw runs on macOS, Linux, and Windows (via WSL2). The documentation recommends Node.js 24, though Node 22.19 and above also works. The full setup takes about five minutes for the installation itself; connecting channels and tuning the assistant takes longer depending on how deeply you want to configure things.
Installation
On macOS or Linux, the quickest path is the one-line installer. It handles Node.js and all dependencies automatically:
```bash
curl -fsSL https://openclaw.ai/install.sh | bash
```
On Windows via PowerShell:
```
iwr -useb https://openclaw.ai/install.ps1 | iex
```
Alternatively, if you prefer to manage it through npm or pnpm directly:
```bash
npm install -g openclaw@latest
```
Onboarding
After installation, run the onboarding wizard. The –install-daemon flag sets up the Gateway as a background service so it survives reboots and keeps running when you close the terminal:
```
openclaw onboard –install-daemon
```
The wizard prompts you to choose a model provider and supply an API key. If you already use Claude or ChatGPT, you’ll use the same API key here. After onboarding completes, verify the Gateway is running:
```
openclaw gateway status
```
If it responds with the Gateway listening on port 18789, the engine is live. Open the Control UI dashboard with openclaw dashboard and send a test message to confirm everything works end-to-end before moving on to channel setup.
Connecting a Channel
Telegram is the fastest channel to connect — it requires only a bot token from Telegram’s BotFather. The documentation at [docs.openclaw.ai/channels/telegram](https://docs.openclaw.ai/channels/telegram) walks through the exact steps. WhatsApp, Slack, and Discord each have their own setup guides under the Channels section. Once a channel is connected, messages arriving on that platform route through the Gateway and the assistant begins responding.
DM access is locked down by default: unknown senders receive a pairing code and the assistant doesn’t process their message until you explicitly approve them. For a business setting, you can open this up by setting dmPolicy=”open” on channels where you want the assistant to respond to all inbound messages without prior pairing.
## Five Use Cases Where OpenClaw Makes a Real Difference
1. 24/7 Client Messaging on WhatsApp or Telegram
This is the most direct use case for business owners. Configure OpenClaw with a persona that reflects your brand’s communication style — name, tone, the information it should always have available — and connect it to your WhatsApp Business or Telegram number. When a client messages outside business hours, the assistant responds immediately rather than letting the inquiry sit until morning.
The memory system means it gets contextually better over time. After several conversations, it knows which clients have ongoing projects, what their typical questions are, and what answers you’ve given before. That context shapes responses in a way that generic chatbots can’t replicate.
2. Slack Support Channel Automation
The Showcase documentation includes a verified community example: [an OpenClaw instance watching a company Slack support channel](https://docs.openclaw.ai/start/showcase), responding helpfully to incoming questions, and forwarding alerts to Telegram when something needs a human decision. That same instance autonomously fixed a production bug in a deployed app without being asked — it noticed the issue during the channel monitoring and resolved it.
For a business running internal or client-facing Slack channels, this pattern works well: the assistant handles routine questions and acknowledgments, flags anything requiring a judgment call, and keeps the channel responsive without manual attention.
3. Email Inbox Triage
With a Gmail skill (available on ClawHub) or browser-based email access, OpenClaw can read incoming messages, categorize them by urgency or topic, draft replies, unsubscribe from lists, and surface the items that actually need your attention. Community users report running this on schedules — a morning email sweep that delivers a summary via Telegram before the workday starts, so you begin with context rather than an unprocessed queue.
4. Scheduled Follow-Ups and Proactive Outreach
OpenClaw’s cron job functionality handles time-based automation without any additional tools. You can configure it to send a follow-up message to a client three days after an initial conversation, deliver a weekly summary of open items, or check in on a project status at a defined interval. These aren’t blast messages — they’re context-aware follow-ups shaped by what the assistant already knows about the specific client or project.
The heartbeat feature is a related capability: the assistant sends you a proactive check-in at defined intervals, which some users configure as a daily briefing covering key updates, pending items, and anything the assistant flags as needing attention.
5. On-Demand Web Research and Information Lookups
When a client asks a question you don’t have the answer to immediately — a delivery carrier’s current estimated timeline, a competitor’s public pricing, availability of a specific product from a supplier — OpenClaw can look it up in real time using its browser control capability. No API integration with the target site is required. It navigates to the page, extracts the relevant information, and returns an answer within the same conversation.
This turns the assistant from a scripted responder into something more capable of handling genuinely varied questions, which is where a lot of scripted bots fail.
## Limitations and Risks to Factor In
OpenClaw is a general-purpose assistant, not a product built specifically for any one industry or workflow. That flexibility is its strength, but it also means there’s no out-of-the-box configuration for business communication — you’re shaping it yourself. The quality of the assistant’s responses reflects the quality of the instructions and context you give it. An undertrained, poorly prompted assistant will give generic, sometimes wrong answers.
The security model requires attention before you open the assistant to inbound messages from unknown senders. DM access is locked by default, and for good reason — OpenClaw connects to real messaging surfaces where it has real capabilities (file access, browser control, command execution). The documentation has a full security guide and an exposure runbook that should be read before making the assistant publicly accessible. Run openclaw doctor after setup to surface any misconfigured DM policies or risky settings.
Model cost is a variable that’s easy to underestimate. OpenClaw doesn’t charge per message, but it does call the AI model provider for every substantive interaction. With a busy client-facing channel, that means a steady stream of API calls. Monitor usage, set reasonable rate limits, and choose a model tier that fits your expected volume. For high-frequency, lower-complexity queries, a faster and cheaper model may serve better than a flagship one.
Finally, the assistant has no human empathy and no institutional awareness of your business beyond what you tell it. Complex client situations — disputes, sensitive negotiations, anything requiring nuanced judgment — need a human. Build clear escalation paths so the assistant knows when to notify you rather than respond on its own.
## Running OpenClaw 24/7: Infrastructure Considerations
The most common reason an OpenClaw deployment fails in practice isn’t configuration — it’s uptime. Running the Gateway on a personal laptop or desktop means the assistant goes offline whenever the machine sleeps, restarts, or loses power. For a 24/7 client communication tool, that’s not acceptable.
The practical solution is a always-on Linux VPS. OpenClaw runs comfortably on a standard setup: a lightweight Linux instance with a recent Node.js runtime is sufficient for most single-business deployments. The Gateway process is not particularly resource-heavy at typical messaging volumes; the resource usage scales with the number of concurrent active conversations and any browser automation tasks you run.
[Serverspace VPS](https://serverspace.us/services/vps-server.md) provides Linux-based virtual servers with predictable monthly pricing — a sensible match for OpenClaw’s fixed-cost model, where you pay for the server regardless of how many messages the assistant handles. With data center locations across different regions, you can place the server close to your client base to minimize any latency in response delivery. Setting up the Gateway as a systemd service (which the –install-daemon flag handles automatically on Linux) ensures the assistant restarts automatically if the process crashes or the server reboots.
On the operational side, configure monitoring for the Gateway process. A basic health check that pings localhost:18789 and alerts you if it stops responding takes minutes to set up and prevents the scenario where the assistant silently goes offline with no indication. Run openclaw gateway status regularly during the first weeks to get a feel for how stable your particular setup is.
## Common Setup Mistakes
Skipping the Persona and Instructions
OpenClaw out of the box will respond as a general assistant — helpful but generic. For business use, it needs explicit context: who you are, what you do, what the assistant is allowed to answer on your behalf, what it should always escalate, and what tone to use. The SOUL.md file in the workspace root is where you define the assistant’s persona. Spending an hour on this has more impact on the quality of responses than any model configuration choice.
Opening DM Access Before Reading the Security Guide
The default dmPolicy=”pairing” setting exists for a reason. Before switching to open DMs, read the [Security documentation](https://docs.openclaw.ai/gateway/security) and the exposure runbook. The assistant has real capabilities on the host machine; an improperly secured instance is a meaningful risk, not a theoretical one.
Using a High-Cost Model for Everything
Flagship models from Anthropic or OpenAI are capable but expensive at scale. For a client-facing channel handling hundreds of messages per day, a smaller, faster model will handle the majority of questions adequately and at a fraction of the cost. Configure model fallbacks and consider routing different task types to models appropriate for their complexity.
Not Building Escalation Logic
The assistant needs a defined path for situations it can’t or shouldn’t handle. Without explicit escalation instructions, it will attempt to respond to everything — sometimes inappropriately. Tell it exactly which scenarios should trigger a notification to you rather than an autonomous response: client complaints, payment-related questions, requests that involve commitments you haven’t pre-approved.
Treating Setup as a One-Time Task
OpenClaw improves with maintenance. Skills need updates. The model landscape evolves. Your business context changes. The assistant’s instructions should be revisited every few weeks, particularly in the early months. The Changelog on GitHub and the OpenClaw blog at [openclaw.ai/blog](https://openclaw.ai/blog) track changes worth staying current on.
## Who OpenClaw Is Actually For
OpenClaw fits best when a few things are true. You’re comfortable installing software from a command line, or you’re willing to learn — the setup isn’t complicated, but it’s not a point-and-click experience. You want control over your data and prefer not to route client conversations through a third-party SaaS platform. And you’re running a communication workload that genuinely can’t be covered by business hours alone.
It’s less suited to teams that need a polished, no-configuration product with a support team behind it. The open-source community is active and the Discord server is responsive, but support is peer-based rather than contractual. For a technically capable solo operator or small team, that trade-off is straightforward. For a larger organization with strict procurement requirements, it requires more evaluation.
On the cost side, the economics are straightforward: you pay for server hosting (fixed) and API calls to your model provider (variable but predictable). There’s no per-seat licensing, no usage-based markup, and no feature gating based on a subscription tier. For businesses that handle high message volumes, that model becomes meaningfully cheaper than SaaS alternatives at scale.
## Conclusion
OpenClaw is a self-hosted personal AI assistant that connects to the messaging apps your clients already use and stays online continuously. It handles inbound messages, manages email, runs scheduled tasks, and can extend its own capabilities with skills from the community or ones you build yourself. The data stays on your server, the cost model is predictable, and the setup is more accessible than the open-source label might suggest.
For a business owner losing opportunities to slow response times outside office hours, it’s a practical answer to a structural problem — not because it does one specific thing perfectly, but because it can be shaped to cover the specific gaps in your workflow. Start with one channel and one clear use case. Get that working well, then expand.
https://serverspace.us/about/blog/how-to-deploy-and-connect-an-mcp-server-a-step-by-step-guide.mdThis guide shows how to deploy and connect an MCP server: install a ready-made connector, build your own server over stdio, and host a remote server on a VPS with Nginx and TLS.
An MCP server lets a language model move beyond the chat window and work with real tools: databases, files, external APIs, and monitoring systems. The phrase "deploy and connect an MCP server" comes up more and more in 2026, because the protocol has become a shared standard for Claude, ChatGPT, Cursor, and other assistants. In this guide we cover the topic from the ground up and step by step: what MCP is, how it works, how to connect a ready-made server in a couple of minutes, how to write your own, and how to host a remote server on a separate machine.
This material is written for a broad audience, so we explain the basics in plain language and give the technical steps as ready-to-run commands you can repeat. To set the scale: the MCP ecosystem already counts thousands of ready-made servers, and the protocol is often compared to a USB-C port, a single connector that links AI to the outside world.
## What an MCP Server Is and Why You Need One
MCP stands for Model Context Protocol, an open protocol that defines a single way for a language model to talk to external tools and data. Anthropic introduced it in November 2024, and within about a year and a half it grew into a common standard. Today it is supported by Claude, ChatGPT, Cursor, VS Code with Copilot, and many other applications.
The core idea is simple. In the past, every integration meant separate code: one wrapper for a database, one for GitHub, one for an internal API. With the protocol the picture changes: we write a server once, and any compatible assistant can connect to it. That is where the USB-C comparison comes from, a single connector that fits many devices.
Three roles take part in the system, and it helps to tell them apart from the start.
- **** The AI application the user works through. Examples: Claude Desktop, Cursor, ChatGPT.
- **** The internal part of the host that holds a connection to one server. Each server gets its own client.
- **** The thing we deploy. It gives the assistant specific capabilities.
A server can expose three kinds of capabilities: tools (functions the model calls, such as "create a record" or "fetch a metric"), resources (data to read, such as the contents of a file), and prompts (ready-made templates for common tasks). In practice, tools are used most often.
The numbers show how mature the technology is. By May 2026, GitHub held around 16,000 repositories tagged mcp-server, and total SDK downloads run into the tens of millions per month. For a business, that means a large ecosystem has formed around the protocol, and ready-made solutions already cover most tasks.
## How MCP Works: the stdio and Streamable HTTP Transports
Under the hood, all communication runs over the JSON-RPC format: the client sends a request, the server returns a response. The way these messages are delivered is called the transport, and the choice of transport decides where the server lives and who connects to it. There are two transports, and understanding the difference solves half the questions that come up during deployment.
stdio for Local Use
The stdio transport runs the server as a local subprocess right on the user computer. The host starts the program itself and talks to it through standard input and output streams. This option suits work on a single machine, development, and personal tools: latency is minimal and no separate infrastructure is required.
One detail trips up newcomers. In a stdio server you must never write anything to standard output (stdout), because that channel carries the protocol own messages. Any stray print or console.log breaks the exchange. We send all logs to the error stream (stderr) or to a file.
Streamable HTTP for Remote Access
The Streamable HTTP transport is meant for remote servers and several clients at once. Messages travel as ordinary HTTP requests to a single address, for example /mcp, and the server streams its reply when needed. This is the current specification standard for remote deployments, and it replaced the older standalone SSE transport. The big advantage is that Streamable HTTP plays well with familiar web infrastructure: load balancers, proxies, and gateways.
The protocol keeps evolving. A major specification update planned for summer 2026 makes the protocol core stateless, which means the server stops holding session state and scales more easily behind a plain load balancer. In practice, that makes remote servers simpler to run across several copies.
## What You Need Before You Start
Before we deploy and connect an MCP server, we prepare the working environment. The set depends on the path you choose, so here is the minimum.
- **** For Python servers you need a Python interpreter and the uv package manager. For Node.js servers you need Node installed together with npm. Ready-made servers usually launch through npx (Node) or uvx (Python), so the matching runtime has to be present locally.
- **A host with MCP support.** Claude Desktop, Cursor, or another compatible assistant will do. We use it to confirm that the server is visible and the tools work.
- **A machine for the remote path.** If we plan to keep an MCP server reachable from outside, we need a separate machine with a public IP, a domain, and steady uptime. A virtual server fits this role.
- **Basic terminal skills.** Most steps come down to a few commands in the command line, and they do not require deep programming knowledge.
Once the environment is ready, we move on to practice. Next we walk through three methods, from the simplest to the most thorough.
## Method 1. Connect a Ready-Made MCP Server in a Couple of Minutes
The fastest way in needs no coding at all. For popular tasks, ready-made servers already exist: file system access, GitHub, databases, search. We take a ready-made server and connect it to the host.
If we work through Claude Code, adding a server takes a single command in the terminal. For example, the file server connects like this:
```
claude mcp add filesystem — npx -y @modelcontextprotocol/server-filesystem /path/to/folder
```
A server that needs a token is added together with an environment variable:
```
claude mcp add github -e GITHUB_TOKEN=your_token — npx -y @modelcontextprotocol/server-github
```
The command claude mcp list shows connected servers, and claude mcp remove takes one away.
Claude Desktop is set up a little differently. We open the configuration file claude_desktop_config.json and add the server to the mcpServers section, giving the launch command and an absolute path. After saving, it is important to fully restart the application: simply closing the window will not pick up the changes. On macOS that is Cmd+Q, on Windows you quit from the tray icon.
A nice detail: the configuration format is almost identical across hosts. A server set up for Claude Desktop connects the same way in Cursor, Claude Code, and Windsurf. Set it up once, use it everywhere.
To confirm everything worked, open the connectors menu in the host. The server should appear in the list, and its tools should become available to the assistant. From there a plain text request is enough, and the model decides which tool to call.
## Method 2. Write and Run Your Own MCP Server Locally
When no ready-made solution fits the task, we write our own server. It is easier than it looks: a working prototype comes together in about an hour. We walk the Python path with the FastMCP library, following the official scenario.
First we create the project and install dependencies:
```xml
uv init weather
cd weather
uv venv
uv add "mcp[cli]" httpx
```
Next we describe the server itself. We create a FastMCP object and register a tool through a decorator. FastMCP builds the tool description from type hints and the docstring, so there is no need to write a separate schema:
```xml
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("weather")
@mcp.tool()
async def get_forecast(city: str) -> str:
"""Returns the weather forecast for a city."""
return f"Forecast for {city}"
We run the server on the stdio transport:
if __name__ == "__main__":
mcp.run(transport="stdio")
```
Here we recall the logging rule again. In a stdio server any output to the standard stream breaks the protocol, so debug messages go to stderr. In Python the safe option is print(“text”, file=sys.stderr) or the regular logging module.
Before connecting to a host it helps to test the server on its own. The official MCP Inspector tool does this: it launches with npx @modelcontextprotocol/inspector and shows the list of tools and their results without involving the model. If the tools are visible and respond, the server is ready, and you can add it to the host configuration the same way as in the first method.
## Method 3. Deploy an MCP Server Remotely on a VPS
A local server lives on one machine and is reachable only by its owner. As soon as a team uses the server, or you need to connect it to the web version of an assistant, we move to remote deployment over Streamable HTTP. This calls for a separate machine reachable from the internet, and usually that is a virtual server.
The production setup looks like this. The client connects over the secure HTTPS protocol on port 443. Nginx sits on the server, terminates TLS, and acts as a reverse proxy. The MCP server itself listens only on a local address, for example localhost:3000, and is never exposed directly. This layout improves security and simplifies certificate handling.
The key point is a correct Nginx configuration, because MCP connections can be long. A minimal set of parameters for the block that serves /mcp looks like this:
```xml
location /mcp {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 300s;
}
```
What matters here. We raise the read timeout to at least 300 seconds, because the default 60 seconds cut long-running tools off mid-call. We set the protocol version to 1.1 and clear the Connection header, otherwise streaming breaks. The X-Forwarded headers help the server learn the real client IP and protocol, which is useful for logging and authorization. TLS certificates are easy to obtain for free through Let’s Encrypt and the Certbot utility, leaving their issuance and renewal to Nginx.
We will name the downside of this path honestly. Remote deployment gives full control, while the care of certificates, proxy configuration, and keeping the process alive falls on us. So the server survives a reboot, it is set up as a system service through systemd or run inside a container.
A remote server needs a stable platform with a public IP, a fixed domain, and predictable performance. [Serverspace VPS hosting](https://serverspace.us/services/vps-server.md) fits this role: such a machine runs the Nginx and MCP server bundle, with resources allocated to the load of a specific project. A US-based data center and pay-as-you-go billing in ten-minute increments are convenient when the server is needed for a test or a short-lived task.
## How to Connect a Remote Server to Claude, ChatGPT, and Cursor
Once the remote server is up and reachable over HTTPS, the last step is connecting it to the assistant. In most hosts this happens through a custom connector.
In Claude the path is: the Settings section, then Connectors, then adding a custom connector by the server address. In ChatGPT custom connectors are added through developer mode or workspace settings. Cursor tries the Streamable HTTP transport on its own when connecting by URL, so there is no need to specify it separately.
Authorization deserves separate attention. If the server is protected, the specification requires the OAuth 2.1 protocol. In practice that means the mandatory PKCE mechanism with the S256 method, an exact match of redirect addresses, and dropping outdated schemes. Public servers without sensitive data work without authorization, while anything that touches private systems must be protected.
If the host reports that it could not connect, the cause is usually the server address or the authorization setup. We collected the common failures in the next section.
## Common Deployment Errors and How to Avoid Them
Most problems that come up when you try to deploy and connect an MCP server repeat from project to project. The table below is laid out as "symptom, cause, fix" and covers the most frequent situations. Keep it close while you configure.
| Symptom | Cause | Fix |
| --- | --- | --- |
| Nginx returns a 502 Bad Gateway error | The MCP server is not running or listens on a different port | Check that the process is up and that the port in proxy_pass matches the server port |
| The connection drops in the middle of a tool call | The default proxy timeout of 60 seconds | Raise proxy_read_timeout to 300 seconds or more and enable HTTP/1.1 |
| The host reports "could not connect to the server" | The server is unreachable from outside, the address path is wrong, or the server only supports stdio | Check availability over HTTPS, confirm the address with /mcp, use Streamable HTTP for remote access |
| OAuth authorization fails | A redirect from the non-www domain to the www domain strips headers | Use the address in the form the redirect leads to and verify the OAuth endpoints |
| Server logs disappear and behavior is unpredictable | Output goes to stdout and breaks the protocol | Redirect all logs to stderr or to a file |
| The server is visible but tools are never called | A vague tool description, so the model does not know when to use it | Give a clear name and description and refine the input parameter types |
A word on prevention. Before connecting to a host, we always test the server with a separate tool such as MCP Inspector: that cuts out half the errors before the network and authorization come into play. If the server is remote, we first make sure it is genuinely reachable from the internet at the right address, and only then look deeper for the problem.
## MCP Server Security: What to Check Before Launch
An MCP server gains access to data and tools, so we treat security seriously from day one. Here is a baseline set of rules that closes the main risks.
- **Secrets only through environment variables.** Tokens, passwords, and API keys must never be hardwired into the code or configuration. They live in environment variables or a secrets manager.
- **Keep sensitive servers local.** If a server works with private data, it is safer to run it on the stdio transport on your own machine, with no exposure to the internet.
- **Minimal privileges.** We grant keys and tokens only the access a tool actually needs. Extra privileges raise the cost of a mistake.
- **Code review.** Before connecting someone else server to working systems, it is worth reading its code. A malicious server can swap tool descriptions even after the user has approved them.
- **Untrusted input.** We treat data arriving in a tool as untrusted, because the model produces it. Strict validation of input parameters against a schema helps.
- **** It is handy to run the server in a separate container or environment to limit the fallout of a possible failure.
Data storage is a separate question. If a project carries data residency or compliance requirements (for example SOC 2 or HIPAA) and the information cannot leave US-based infrastructure, the server stays inside your own perimeter. [Serverspace cloud servers in the USA](https://serverspace.us/services/vps-server/cloud-servers-in-the-usa.md) help in that scenario: data stays under the owner control in a US data center, while the server remains reachable over the network for the hosts that need it.
## Conclusion: Where to Start Right Now
We covered the path from the concept of MCP to remote deployment. Here is the short version.
- **Beginners** are best served by Method 1: take a ready-made server and connect it to Claude Desktop or Cursor in a couple of minutes.
- **Developers** will want Method 2: write their own server on stdio, test it in MCP Inspector, and register it with a host.
- **Teams or production** need Method 3: a remote server over Streamable HTTP behind Nginx with TLS, placed on a separate machine.
From there, move from simple to advanced. First connect one ready-made server and get a feel for how the assistant works with real tools. Then build your own for a specific task. When shared access becomes the goal, move the server to a remote platform: for production it is convenient to keep it on your own VPS, where resources and access are tuned to the project.
https://serverspace.us/about/blog/ubuntu-pastebin-is-closing-what-to-use-for-logs-errors-and-configs-instead.mdCanonical retires Ubuntu Pastebin in June 2026. We cover the working alternatives for logs and configs and show how to host your own pastebin on a server.
Ubuntu Pastebin is closing, and for thousands of Linux users that is real news. Canonical is retiring paste.ubuntu.com, the service that made it easy to share logs, configs, and error messages for years. In this article we explain what happened, how long the service still runs, and most importantly, what to use instead.
Canonical's IS team posted the announcement on May 22, 2026. The stated reason is short: the shutdown is part of a larger infrastructure modernization and migration project. The first cutoff was set for the end of May, which left only eight days between the announcement and the shutdown. After the community pushed back on the short notice, Canonical moved the date to the end of June 2026.
One technical detail matters. The addresses paste.ubuntu.com and pastebin.ubuntu.com are the same service. Both domains serve identical content and share the same paste IDs. So it does not matter which address you saw in a guide. Once the service goes offline, both stop working.
## What a pastebin is and why the service became part of Linux support culture
If you have never run into the term, here is the plain version. A pastebin is a web service where you paste a block of text and get back a short link to it. You then share that link in a chat, on a forum, or in a bug report. The benefit is that a long block of technical output stays out of the conversation itself. The other person just opens the link and sees everything.
Most often people share terminal output, system logs, configuration files, and error messages through a pastebin. Picture someone whose service will not start and who wants to show a log that runs to hundreds of lines. Dropping that wall of text straight into a message is awkward for everyone. A paste link solves it.
A pastebin also beats a screenshot in one important way. Text in a paste can be copied, searched, and quoted in a reply. A screenshot cannot, so whoever is helping would have to retype commands by hand. That is why technical communities usually value a paste link over a picture of the screen.
Ubuntu Pastebin ran from late 2007, almost eighteen years. In spirit it works like GitHub Gist, only without revision history. It was created in part to keep the official IRC support channels from drowning in terminal output, since newcomers kept dumping huge blocks of journalctl, dmesg, and apt into them. Over time the wider community adopted it everywhere: forums, Ask Ubuntu threads, bug trackers, and Reddit. That is how it became a fixture of everyday Linux support.
## Why the shutdown affects the whole Linux world and old guides
It might seem simple. One service closed, so we find another. The problem runs deeper, and it reaches far beyond the people using the service right now.
Canonical offered no archive of old pastes, no redirect system, no migration tool, and no built-in replacement. That means every link to paste.ubuntu.com will simply stop opening after the shutdown. And there are a huge number of those links out there. They sit in old how-to guides, forum threads, bug trackers, mailing list archives, and Reddit posts.
The result is what people call link rot. An old discussion where someone once solved your exact problem and attached a log through the pastebin loses half its value, because the error text and the fix disappear. Sometimes that paste held critical debugging information available nowhere else.
The Wayback Machine helps a little, since some pastes made it into its snapshots. It is not something to rely on, because only a small share of links were saved, finding them is manual work, and fresh pastes will not get archived in time.
There is also a wrinkle inside Ubuntu itself. Some packages and system scripts still reference paste.ubuntu.com directly. Those spots will need edits too once the service is gone. The takeaway is simple: plan your move early and do not wait for the end of June.
## What to use instead of Ubuntu Pastebin: a tour of working alternatives
The good news is that there are plenty of replacements, and almost all of them are free. It helps to split them into three groups: services that work straight from the terminal, familiar web pastebins, and the self-hosted option. We will go through each group and then bring everything together in a table.
### Services that work straight from the terminal
This group suits anyone who lives in the command line. The main convenience is that your output flies into the pastebin with a single command, no browser needed.
The best known option is termbin.com. No account is required. You just send text through a network utility, for example with a command like cat error.log | nc termbin.com 9999. A ready link comes back. dpaste.com, bpa.st, paste.rs, and the classic sprunge.us all work the same way.
It is worth naming the pastebins of the major distributions too: paste.debian.net for Debian and paste.centos.org for CentOS. They are stable, long lived, and happily accept command output. For a one off task of showing someone a log, this is the fastest route.
Another upside of terminal services is how easily they slot into scripts. You can set up a short shell alias, and then sending a log to a pastebin becomes a single word. That is handy when you have to show output often, for example while troubleshooting across several servers at once.
### Pastebins with a web interface and an account
If you prefer the browser, there are well proven web services, and each has its strengths.
GitHub Gist is probably the most capable option. It offers syntax highlighting, version history, and a tie in to your GitHub profile. The one catch is that it needs an account, while most other pastebins work anonymously. For a developer who already lives on GitHub, that is a plus rather than a cost.
The classic pastebin.com is familiar to almost everyone. It is convenient, supports paste expiration, and offers private pastes. Among newer options you can name pastecode.dev and Pastezen. The common point for every public service is this: you are trusting your text to someone else's server, so secrets and passwords are best kept out. We will come back to privacy shortly.
### Your own pastebin on your own server
The third path is to host a pastebin yourself. It sounds harder than it is, and it gives you the most control.
Among open source options, PrivateBin, Hastebin, and 0bin are popular. All of them install on your server, and you decide how long pastes live, who can reach them, and where the data physically sits. An instance like this comes up easily on an ordinary virtual server, for example in the Serverspace cloud, and from there it runs as your own private service. We will give a short PrivateBin walkthrough below. For now, here is a table that brings the options together for easy comparison.
| Service | Account | Encryption | Self-hosting | From terminal | Note |
| --- | --- | --- | --- | --- | --- |
| termbin.com | No | No | No | Yes | Quick send with one command |
| dpaste.com | No | No | No | Yes | Built into pastebinit |
| paste.debian.net | No | No | No | Yes | Debian pastebin, stable |
| GitHub Gist | Yes | No | No | Via gh CLI | Version history and code highlighting |
| pastebin.com | Optional | No | No | No | Classic, expiration settings |
| PrivateBin | No | Yes (AES-256) | Yes | No | Your own server, privacy |
| Hastebin | No | No | Yes | No | Lightweight, installs on your server |
## How to set up pastebinit so your usual commands keep working
Many Ubuntu users sent text to a pastebin through the pastebinit utility. It is a small program that takes a file or command output and uploads it to your chosen service. The good news is that switching it to a different pastebin is simple, and your usual commands will keep working.
First, let us see which services pastebinit supports out of the box. We run:
```
pastebinit -l
```
The list shows several ready addresses, among them bpa.st, dpaste.com, paste.debian.net, paste.centos.org, and sprunge.us. Importantly, dpaste.com is already built into the utility, which makes it a convenient default replacement.
To change the service, the easiest way is to edit the config. We create or open the settings file in the home folder:
```xml
nano ~/.pastebinit.xml
Inside, we set the pastebin we want as the default:
https://dpaste.com
```
After that, old commands like cat config.txt | pastebinit will send text to the new address. If your scripts had paste.ubuntu.com hardcoded in them, you will need to replace it by hand. That way you avoid the situation where a familiar workflow breaks the moment the service goes offline.
You can confirm the switch right away. Send any small file and check that the link in the reply points to the new address. If the link opens and shows your text, the utility is set up correctly and your old workflows will keep running past the end of June.
## How to host your own PrivateBin on a VPS in a few steps
If the data in your logs is sensitive, or you simply want full control, the best option is your own pastebin. We will use PrivateBin as the example, because it is among the easiest to deploy and it handles privacy well.
First, what makes PrivateBin good. It is an open source project where the server knows nothing about the contents of a paste. The text is encrypted and decrypted right in the browser using AES with a 256 bit key, and only an encrypted blob reaches the server. Even if someone gained access to the storage, they could not read the pastes without the key that lives in the link.
The minimum requirements are modest: a web server and PHP. The simplest way is to deploy PrivateBin in Docker, so you do not have to configure the environment by hand. The general flow looks like this.
**Step 1. **Rent a Linux virtual server. A minimal configuration is enough for a personal pastebin, and you can spin up [a suitable VPS at Serverspace](https://serverspace.us/services/vps-server.md) in a couple of minutes.
**Step 2. **Install Docker and connect to the server over SSH. Then start the official PrivateBin container with a single docker run command, specifying the port and a folder for storing pastes.
**Step 3. **Put a web server in front of the container as a reverse proxy, for example Nginx. It will accept requests and pass them to PrivateBin.
**Step 4. **Add a free Let's Encrypt certificate and turn on HTTPS. This is required, because without a secure connection PrivateBin's in browser encryption will not work.
After that, your own pastebin opens at your domain. In the config you can set paste expiration, size limits, and a password for writing. Here is why this is convenient for logs and configs specifically. Such files often contain internal addresses, paths, and sometimes access tokens. When the service runs on your own server, the data never leaves it, and if your team has internal security policies or compliance requirements that say sensitive data must stay inside infrastructure you control, self hosting covers that too.
A self hosted service needs only minimal upkeep. It is worth enabling automatic certificate renewal, updating the PrivateBin container to a fresh version from time to time, and optionally setting up a regular data backup. A personal pastebin usually sees light load, so even a modest server configuration lasts a long time.
## How to pick a replacement for a specific task
There is no one size fits all answer, so the choice depends on the task. Let us walk through five typical scenarios.
- **One off help in a chat. **You need to show someone command output quickly and then forget about it. Terminal services like termbin or dpaste win here: one command, a ready link, no registration.
- **Collaborating on code and configs. **If a paste lives a long time and people keep coming back to it, GitHub Gist is more convenient. Syntax highlighting and version history help the team.
- **Sensitive logs. **When the output contains internal addresses, paths, or tokens, a public service is a poor fit. Here it makes sense to host your own PrivateBin on a VPS, for example at Serverspace, so the data stays under your control, especially when security or compliance rules require it.
- **Long term storage of snippets. **For a library of frequently used commands and templates, Gist works well again, or your own instance with auto deletion turned off.
- **Attachments for a bug report. **If you are filing a bug against a distribution, it is logical to use that distribution's own pastebin: paste.debian.net or paste.centos.org. The link will last longer and feel familiar to maintainers.
From there it is easy to check these options against the table above, which shows where an account is needed, whether encryption is available, and whether you can host the service yourself.
## Common mistakes when moving off Ubuntu Pastebin
The move looks simple, but it is easy to trip on. We gathered the typical mistakes and how to avoid them.
- **Leaving old links as they are. **If addresses like paste.ubuntu.com remain in your documentation, on your site, or in scripts, they will stop opening after the end of June. It is worth searching for them in advance and updating them.
- **Pasting secrets into a public pastebin. **Logs and configs often contain passwords, API keys, or tokens. Before uploading, read the text over and strip anything sensitive, and for regular work with such data, set up your own service.
- **Choosing a pastebin with no control over lifetime. **Some services keep pastes forever and in public. It is better to pick options where you can set auto deletion or a password.
- **Failing to save important old pastes. **If you had your own entries on Ubuntu Pastebin, export them before the shutdown. After the end of June you will no longer have access to them.
- **Betting on yet another external service. **The story of Ubuntu Pastebin shows that any free service can close. If the data matters, keeping it on your own side is more reliable.
## What to do right now: a short plan
Let us wrap up. Ubuntu Pastebin goes offline at the end of June 2026, and a familiar tool for sharing logs and configs is going away. There is no need to panic, since there are enough replacements. You only have to pick the right one and prepare.
A short action plan looks like this. First, save the old pastes you need while the service still works. Then choose a replacement from the table in this article to fit your tasks. After that, update any paste.ubuntu.com links in your scripts, documentation, and notes. And finally, if you work with sensitive data, deploy your own pastebin on a server. That way the move goes smoothly, and your logs and guides stay available.
https://serverspace.us/about/blog/vps-vs-onpremise-server-which-is-better.mdCompare VPS and on‑premise servers: cost, performance, scalability, and security. Find out which option suits your tasks.
When you need to host a website, application, or database, one of the first questions is whether to rent a virtual server (VPS) or buy your own physical hardware. Both options have their advantages and limitations. The choice depends on budget, performance requirements, level of control, and available expertise.
In this article, we compare [VPS](https://serverspace.us/services/vps-server.md) and an on‑premise server across key parameters: cost, performance, management, scalability, and security. You will learn the key criteria for making a decision and be able to determine which option suits your task best.
## What is a VPS and an On‑Premise Server: Basic Definitions
**VPS (Virtual Private Server)** is a virtual machine that runs on a physical server in a provider's data center. A hypervisor divides the real server's resources (CPU, memory, disks, network) among several virtual instances. Each VPS is isolated from its neighbours and has its own operating system, root privileges, and a dedicated share of resources. The client rents a VPS on a monthly or hourly basis and does not worry about the condition of the physical hardware.
**On‑premise server** is a physical computer that you purchase, install in your office or home server room. You choose the components, assemble the server, connect it to the network, provide cooling, backup power, and regular maintenance. Such a server is fully under your control but requires capital expenditure and technical expertise.
There is also a hybrid option – renting a dedicated server from a provider. This is a physical machine owned by the provider but made available for your exclusive use. In terms of characteristics, it is closer to an on‑premise server, but without the need to buy hardware. In this article, "on‑premise server" refers specifically to a physical server that you host on your own premises.
## How It Works: Key Comparison Parameters
To objectively compare VPS and on‑premise servers, you need to consider several key aspects.
Total Cost of Ownership
VPS typically follows an **OpEx (operational expenditure)** model: you pay a small amount monthly without making large upfront investments. An on‑premise server follows a **CapEx (capital expenditure)** model: you buy the hardware, then incur costs for electricity, cooling, internet connection, and staff salaries.
Performance and Predictability
On a VPS, resources are shared among several tenants. Although providers ensure fair sharing, a "noisy neighbour" may temporarily affect your server's performance. An on‑premise server gives you all resources exclusively – the load does not depend on others. However, a physical server has hard limits: you cannot quickly increase memory or CPU without replacing components.
Control and Hardware Access
On a VPS you have full root access to the operating system, but you do not manage the hypervisor or see physical components. The provider is responsible for replacing failed disks, power supplies, etc. On an on‑premise server you have physical access to all components and can change the configuration at any time, but all responsibility for failures lies with you.
Scalability
VPS scales easily: in the control panel you can add more CPU, RAM, or disk space, often without a reboot. An on‑premise server is harder to scale – to increase resources you need to buy new components or an additional server and set up clustering.
Reliability and Fault Tolerance
VPS provider data centres are equipped with redundant power, climate control, and professional security. Your data is stored on RAID arrays, and virtual machines can be migrated to another physical host without downtime if needed. A home or office server room can rarely boast such infrastructure. Usually there is no second power source, the UPS provides only short runtime, and the internet connection is single (without BGP redundancy).
Security
On a VPS you are fully responsible for the security of the OS and applications. The provider isolates virtual machines at the hypervisor level, but in theory an attack on the hypervisor could affect several clients. On an on‑premise server you control physical access, but risks increase due to weak physical protection (the server could be stolen, damaged, or accessed by unauthorised persons).
## Comparison Table: VPS vs On‑Premise Server
| Parameter | VPS | On‑Premise Server |
| --- | --- | --- |
| Upfront costs | Low (from $5–10 per month) | High (from $1000 for server + infrastructure) |
| Monthly expenses | Fixed (plan price) | Electricity, internet, depreciation, maintenance |
| Performance | Shared with neighbours, but usually sufficient for most tasks | All resources are yours, not dependent on others |
| Scalability | Automatic, in minutes | Requires purchasing and installing new hardware |
| Control over hardware | None | Full physical access |
| Responsibility for failures | Provider (replacing disks, power supplies, network equipment) | You (repair, replacement, sourcing parts) |
| Infrastructure | Professional data centre (UPS, generators, air conditioning) | Typically room‑level (higher risk of outages and overheating) |
| Deployment time | From 2 minutes to a few hours | From a week (procurement, assembly, installation) |
## Practical Scenarios: What to Choose
Depending on the task, one option will be preferable.
- **Small and medium business (websites, online stores, CRM):** VPS. Websites usually require a guaranteed share of resources but do not need full hardware control. VPS provides the necessary performance at an affordable price and scales easily as traffic grows.
- **Development and testing:** VPS. For temporary environments, demo stands, or CI/CD agents, a VPS is ideal – you can create it for an hour and then delete it, paying only for the time used.
- **High‑load projects (big data, database clusters, rendering):** On‑premise or dedicated server. If the load constantly consumes 100% CPU and intensively accesses the disk, virtualisation may introduce additional latency. An on‑premise server guarantees that no one will take away resources.
- **Processing sensitive data (healthcare, finance):** On‑premise server. Some regulatory requirements (e.g., local storage of personal data) force physical control over hardware. However, many VPS providers offer certified segments (PCI DSS, HIPAA), making VPS a viable option.
- **Learning and experimenting with network technologies:** VPS. You can quickly reinstall the OS, spin up several virtual machines without buying new hardware, and avoid risking physical equipment.
## Advantages and Disadvantages of Each Solution
Pros of VPS
- **Low entry barrier** – you can start with a small plan and increase resources as your project grows. Providers offer convenient web interfaces with dashboards, customer‑friendly UX, and built‑in tips for server management.
- **No hardware worries** – the provider maintains disks, power supplies, and network switches.
- **Fast scaling** – adding resources often takes minutes.
- **Professional data centre infrastructure**: redundant power, cooling, 24/7 security.
- **Geographic flexibility** – you can choose a data centre in any country, reducing latency for remote users.
- **Provider support** – various communication channels (tickets, chat, phone), as well as the provider's own documentation and knowledge base, speeding up resolution of typical issues.
Cons of VPS
- Limited performance predictability due to the "noisy neighbour" effect (though modern hypervisors minimise it).
- No access to physical components – you cannot install a specific PCIe card or change BIOS settings.
- Dependence on the provider – their financial or technical problems may affect your service. To mitigate risks, use regular backups to external storage, load balancing across multiple providers (multi‑cloud strategy), and redundant VPS instances in different data centres or from different vendors with automatic failover.
- Some budget plans use HDD drives with low random access speed.
Pros of On‑Premise Server
- Full control over everything – from the CPU to the network card firmware.
- Predictable maximum performance, independent of other tenants.
- Ability to use unique hardware (e.g., multiple GPUs for machine learning).
- No monthly rental fees – you paid once (but still pay for electricity and maintenance).
- Complete physical isolation – data never leaves your premises (if required by security policy).
Cons of On‑Premise Server
- High initial investment: server, rack, UPS, air conditioner – all cost thousands of dollars.
- Difficulty scaling: to increase memory, you need to buy RAM sticks and possibly replace the motherboard.
- Lack of professional infrastructure: power outages or disk failures can lead to lengthy downtime.
- Requires skilled administrators for maintenance and repairs.
- Cost of replacing failed components falls on you.
## Common Mistakes When Choosing
**Mistake 1: Buying an on‑premise server for a project with unpredictable load.** You risk either overpaying for excess capacity or facing a resource shortage that cannot be quickly fixed. It is better to start with a VPS and move to your own server only after the load becomes stable and high.
**Mistake 2: Choosing the cheapest VPS for a critical application.** Budget plans often use HDDs, have I/O limits, and weak isolation from neighbours. For business applications, choose VPS plans with guaranteed resource shares (cloud SSDs, dedicated cores).
**Mistake 3: Ignoring the maintenance costs of an on‑premise server.** Many forget to account for electricity, disk replacements every 3–5 years, administrator pay, and spare equipment. As a result, total expenses exceed the cost of renting a VPS over the same period.
**Mistake 4: Placing the server in an office without UPS and air conditioning.** In summer, room temperature may rise above 30°C, causing overheating and failures. Power surges or short outages can damage file systems.
**Mistake 5: Choosing a VPS with a rigid configuration if the project will grow.** Some providers do not allow resource upgrades without recreating the server. Before purchasing, ensure the chosen plan supports vertical scaling.
## So What Should You Choose?
There is no single answer. VPS is suitable for most small and medium projects, as well as situations where deployment speed and predictable monthly costs matter. An on‑premise server makes sense when you need exceptional hardware control, maximum performance under constant load, or compliance with strict regulatory requirements for physical data location.
If you are unsure – start with a VPS. You can quickly launch your project, assess the real load, and if necessary migrate to an on‑premise or dedicated server. Many companies have successfully worked on VPS for years without ever needing their own hardware.
For renting a VPS with transparent pricing, SSD drives, and scaling options, consider the offering from [Serverspace](https://serverspace.us/services/vps-server.md). This allows you to focus on development rather than maintaining server infrastructure.
https://serverspace.us/about/blog/how-to-set-up-tailscale-on-a-vps.mdOverview of Tailscale capabilities: installation and configuration on a Linux VPS and client applications, using Exit Node and other features.
Imagine: you have rented a server in the cloud, for example, a powerful [VPS](https://serverspace.us/services/vps-server.md), to run a website, database, or game server. Everything works, but the question of network security arises. Every open port is a potential attack vector that can be discovered during scanning. Configuring firewalls and classic VPN solutions typically takes time and a certain level of expertise. There is an approach that allows you to grant access to services on the server without needing to open ports to the public network.
The tool that implements this approach is **Tailscale**. It is a solution for creating private (overlay) networks that connects devices (from a local computer to a cloud server) into a single secured network. In this article, we will explore what Tailscale is, describe how it works, and provide step‑by‑step instructions for setting it up on a VPS to access services without exposing ports.
## Definitions and Basic Concepts
Tailscale is a service for creating private networks that operates over the public internet. Devices in such a network (tailnet) can communicate directly as if they were on the same local network. The key feature is that there is no need to manually open ports on routers or servers.
**Main components of the Tailscale ecosystem:**
- **Tailnet:** the private network that connects all enrolled devices (nodes).
- **Nodes:** devices connected to the tailnet: laptops, servers, smartphones, single‑board computers.
- **Control Plane:** the cloud component that manages device authentication and key distribution. In the case of Tailscale, this component is hosted on the developer's infrastructure.
- **Data Plane:** traffic transmitted directly between devices using the WireGuard protocol, without passing through the control plane server.
Tailscale uses **WireGuard** — a modern protocol with strong encryption, a minimal codebase, and high performance. This is not the only technology for building overlay networks. There are open‑source projects, such as **Headscale**, that allow you to run your own implementation of the Tailscale control plane. However, in this article we focus on the official service as a simpler solution to get started.
## How It Works: NAT Traversal and Direct Connections
The key difference between Tailscale and traditional VPNs lies in how connections between devices are established.
With a traditional VPN, all traffic passes through a central VPN server, which can introduce latency and limit throughput. Tailscale, in contrast, tries to establish a direct (peer‑to‑peer) connection between devices whenever possible. This provides higher speed and lower latency.
The connection establishment mechanism works as follows:
- **Installation and authentication:** On each device (including the VPS), a Tailscale agent is started. On first run, the agent contacts the coordination server to authenticate the user (via OAuth providers: Google, Microsoft, GitHub). After successful authentication, the device receives an internal IP address from a dedicated pool (e.g., 100.64.0.0/10) and becomes part of the tailnet.
- **Key exchange:** The coordination server distributes information about other nodes in the tailnet to all devices, including their WireGuard public keys and current network addresses. The coordination server itself does not participate in transmitting user traffic and does not have access to the devices' private keys.
- **Direct connection setup (NAT traversal):** When device A tries to connect to device B, the Tailscale clients on both ends attempt to establish a direct UDP connection. This uses techniques known as NAT traversal, based on the STUN and ICE protocols. In most cases a direct connection is successfully established.
- **Fallback relaying (DERP):** If a direct connection is impossible due to firewall restrictions (e.g., symmetric NAT), traffic automatically switches to using DERP (Detoured Encrypted Routing Protocol) relay servers, also owned by Tailscale. Traffic through DERP servers remains end‑to‑end encrypted.
**Example:** You are travelling and connect your laptop to a hotel Wi‑Fi network. Your VPS running a control panel application is located in a data centre. The Tailscale agents on both devices will establish a direct encrypted connection (or use DERP if necessary). Your laptop can then open the control panel by accessing the server's internal IP address (e.g., 100.64.0.1:8080), without needing to open any ports on the VPS's public IP address. All traffic between the laptop and the server is encrypted.
## Comparison: Tailscale vs. Traditional VPN
| Characteristic | Traditional VPN (OpenVPN/IPsec) | Tailscale |
| --- | --- | --- |
| Traffic routing | Centralised: all traffic goes through the VPN server | Mesh network: direct (P2P) connection between devices |
| Performance | Limited by the VPN server's bandwidth | High, close to the speed of the direct internet connection |
| Setup complexity | High: key/certificate generation, routing and firewall configuration | Low: install agent and authenticate via OAuth |
| Access control | Based on IP addresses or certificates | Based on user accounts and ACLs (Access Control Lists) |
| Open ports | Requires open ports on the server and possibly on client firewalls | Not required: clients initiate outbound connections |
## Installing Tailscale on a VPS
To get Tailscale working on a server, you need to run a few standard commands. The example uses Ubuntu 22.04/24.04.
**1. Update the system**
```bash
sudo apt update && sudo apt upgrade -y
sudo apt install curl -y
```
**2. Add the official Tailscale repository**
```bash
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/$(lsb_release -cs).noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/$(lsb_release -cs).tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list
```
**3. Install the package**
```bash
sudo apt update
sudo apt install tailscale -y
```
**4. Connect the server to the tailnet**
```
sudo tailscale up
```
The system will output a URL like https://login.tailscale.com/a/xxxxxxxx. Open it in a browser and log into your Tailscale account (via Google, Microsoft, or GitHub).
**5. Verify the connection**
```
tailscale status
tailscale ip -4
```
The first command shows the list of devices in the network, the second shows the internal IPv4 address of your VPS (e.g., 100.64.0.1).
## Exit Node: Routing All Internet Traffic
The mechanism described above concerns traffic between devices inside your tailnet. By default, Tailscale **does not route public internet traffic** (e.g., browsing websites) — such traffic goes directly from your device, bypassing the tailnet. However, Tailscale allows you to change this behaviour with the **Exit Node** feature.
**What is an Exit Node?** It is a node in your tailnet that can act as a gateway for all internet traffic from other devices. If a client device is configured to use an Exit Node, all its internet traffic will be routed through that node, effectively using its public IP address and network environment.
**Why might you need this?**
- **Security in public networks:** When connecting to an untrusted Wi‑Fi network (cafe, airport, hotel), you can route all your internet traffic through your own Exit Node (e.g., a home server or VPS), where it will be encrypted by the Tailscale tunnel, protecting your data from possible interception by other local devices on the same public network.
- **Bypass geographic restrictions:** Some online services (streaming platforms, banking apps) provide different content based on the user's location. By setting up an Exit Node on a VPS in the desired country, you can access such services from anywhere in the world.
- **Fixed public IP for outbound traffic:** If your scripts or integrations need to access external APIs from a whitelisted (known and permitted) IP address, you can use your VPS as an Exit Node for those tasks.
**Step‑by‑step configuration of an Exit Node on a VPS**
Assume we already have a VPS with Tailscale installed and connected to a tailnet (as described in the previous section). Let's configure it as an Exit Node.
**1. Enable IP forwarding on the VPS**
For the server to be able to forward internet traffic from other devices, IP forwarding must be enabled in the Linux kernel. Edit the file /etc/sysctl.conf and uncomment or add the following line:
```
net.ipv4.ip_forward = 1
```
Apply the changes:
```
sudo sysctl -p
```
**2. Configure firewall rules (optional)**
On most modern Linux distributions, Tailscale automatically configures the necessary netfilter (iptables/nftables) rules. If you use custom firewalls or your distribution does not support automatic configuration, you may need to add rules manually. In general, enabling IP forwarding in step 1 is sufficient.
**3. Advertise the node as an Exit Node**
On your VPS, run:
```
sudo tailscale up --advertise-exit-node
```
This command notifies the coordination server that this node is ready to act as an Exit Node. After running the command, restart Tailscale to apply the new settings:
```bash
sudo systemctl restart tailscaled
```
**4. Approve the Exit Node in the web console**
For security, an administrator must explicitly approve the node as an Exit Node. Go to the Tailscale web console (login.tailscale.com/admin/machines). Find your VPS in the device list. Click the three dots ("") next to it and select **Edit route settings**. In the window that opens, enable the **Use as exit node** option and save the changes.
**5. Use the Exit Node on a client device**
On any device (laptop, phone) that you want to use with the VPS as the exit, open the Tailscale application. In the application interface, find the Exit Node section and select your VPS from the list of available nodes.
- **Linux (CLI):** sudo tailscale up --exit-node=
- **Windows / macOS:** through the graphical Tailscale interface: right‑click the system tray icon, choose "Use exit node" and select the desired node.
- **iOS/Android:** In the Tailscale app settings, under Exit Node.
After selection, all internet traffic from the client device will be routed through your VPS.
To verify, open any IP‑address checking service (e.g., ifconfig.me) — it should display the public IP address of your VPS, not the client's original network.
## Limitations and Considerations for Using an Exit Node
- **Availability:** The Exit Node feature is available on all Tailscale pricing plans, including the free tier. The free plan allows up to 3 devices to be used as Exit Nodes.
- **Performance:** Because all client traffic now passes through the VPS, the client's internet speed will be limited by the VPS's bandwidth and the quality of the connection between the client and the VPS.
- **VPS bandwidth allowance:** When using a VPS as an Exit Node, keep in mind any data transfer caps that may apply to your hosting plan, especially if you actively stream video or download large amounts of data through the Exit Node.
**Redundancy:** Tailscale supports automatic selection of the optimal Exit Node among several using the Auto Exit Nodes feature, which takes into account latency and client location.
## Advantages, Limitations, and Risks
Like any solution, Tailscale has its strengths and aspects to consider.
**Advantages:**
- **Reduced attack surface:** With no open ports on the server, it becomes invisible to automated scanners and bots on the public network, reducing the risk of unauthorised access.
- **Simplified network configuration:** Setting up a network of several devices takes minutes and does not require deep knowledge of network administration (static routing, VPN servers).
- **Performance of direct connections:** When a direct P2P connection (without DERP) is established, latency and packet loss are minimal, which is critical for real‑time applications.
- **Flexible access control:** Access to resources can be granted or restricted based on user accounts (via ACLs) rather than IP addresses.
**Limitations and aspects that require attention:**
- **Dependence on the coordination server:** Access to the Tailscale coordination server is required for initial connection setup and authentication of new devices. Existing direct connections between devices will continue to work even if the control plane becomes unreachable, but connecting new nodes or changing network configuration will be impossible.
- **Key expiry:** By default, Tailscale requires periodic re‑authentication of nodes. For servers that must be permanently accessible, it is recommended to disable key expiry in the web console (option "Disable key expiry").
- **Latency when using DERP:** When a direct P2P connection cannot be established (e.g., due to strict corporate firewall rules), traffic goes through DERP relay servers, which may increase latency and slightly reduce throughput compared to a direct connection.
- **Ecosystem:** To use all Tailscale features (MagicDNS, Tailscale SSH, Exit Node), you need to install the client application on each device. Accessing a device without the Tailscale agent installed is possible but requires additional configuration (e.g., via a Subnet Router).
## Use Cases for Tailscale on a VPS
Tailscale offers several practical scenarios for individuals and small teams.
- **Access to control panels and server administration:** You run a web‑based control panel (e.g., Portainer for Docker, phpMyAdmin for databases) on your VPS, or you simply want to connect via SSH. Using Tailscale allows you not to expose those services' ports to the public network. Access is only available to devices connected to your tailnet.
- **Securing development and staging environments:** A staging server running an application does not need to be publicly accessible. Team members can connect to it for testing through your tailnet without using separate VPN solutions.
- **Secure database access:** Developers can connect to databases deployed on a VPS (e.g., PostgreSQL, MySQL) from their local machines using Tailscale. This eliminates the need to open database ports (typically 5432, 3306) to the outside.
- **Private gaming network:** When hosting a game server (e.g., Minecraft) on a VPS, you can make it accessible only to members of your tailnet without opening the game's port to the internet. Friends connect via Tailscale and see the server using its internal IP address.
- **Secure CI/CD runner:** In CI/CD pipelines (e.g., GitHub Actions, GitLab CI), you can deploy a runner that connects to your VPS via Tailscale to execute deployment commands. This is more secure than storing SSH keys for external network access.
## Typical Errors and How to Fix Them
During Tailscale setup and use, some typical problems may arise. Below are ways to diagnose and solve them.
**Error 1: Devices cannot see each other.**
**Cause:** Usually the problem is that UDP traffic (port 41641 used by WireGuard) is blocked by client firewalls or the ISP network.
**Solution:** Check that Tailscale is running on both devices. Run tailscale status to confirm the devices are visible in the network. If a direct connection cannot be established, Tailscale will automatically fall back to DERP. You can force‑check DERP usage with tailscale ping –verbose .
**Error 2: Low connection speed.**
**Cause:** Traffic may be going through a DERP relay because a direct connection could not be established, increasing latency. Or one of the devices has limited bandwidth.
**Solution:** Check the connection type with tailscale ping. If the output shows DERP, try to optimise network settings (e.g., check firewall rules, allow UDP). For latency‑sensitive applications, consider placing the VPS in a data centre geographically close to most clients.
**Error 3: The key on the server expired, and the server disconnected from the tailnet.**
**Cause:** The node's authentication key has a limited validity period (180 days by default).
**Solution:** In the Tailscale web console, in the settings for the corresponding node (Machine Settings), enable the "Disable key expiry" option. For existing nodes this can be done at any time. After that the key will not require periodic renewal.
**Error 4: MagicDNS does not work; devices cannot be resolved by name.**
**Cause:** The system DNS resolver on the device may conflict with DNS settings provided by Tailscale.
**Solution:** Ensure that the "Use Tailscale DNS settings" option is enabled in the Tailscale client. On some OSes you may need to restart the network stack or restart the Tailscale client. For diagnostics use tailscale status — it shows both IP addresses and device names (if MagicDNS is active).
## Tailscale as a Tool for Secure Access
Tailscale offers a method to access services on remote servers, including VPS, without needing to open ports on the public network. Key features of the solution:
- Reduced attack surface by eliminating open network ports.
- Direct encrypted connections between devices (P2P) with automatic NAT traversal and fallback DERP relaying.
- Simple configuration and access management based on user accounts.
- Additional features: Exit Node (route all internet traffic through a chosen node), MagicDNS, Tailscale SSH.
For readers who want hands‑on experience:
- Register a Tailscale account and install the client on a VPS and a local device, following the step‑by‑step instructions in the "Installing Tailscale on a VPS" section.
- After verifying basic access to a service (e.g., via a Python HTTP server), explore the Exit Node capabilities to unlock additional use cases for your VPS — from secure internet egress on public networks to a fixed IP for calling external APIs.
- For further reading, refer to the official Tailscale documentation, which details access control (ACL) features, custom DERP server setup, and integrations.
https://serverspace.us/about/blog/how-to-deploy-a-node-js-api-for-a-mobile-app-on-a-vps.mdWe walk through deploying a Node.js API for a mobile app on a VPS step by step: Node 24 LTS, PM2, Nginx, HTTPS, and security setup for iOS and Android.
Most mobile apps have a half that users never see. It is the server side that stores data, checks logins, serves feeds, and accepts orders. To deploy a Node.js API for a mobile app on a VPS, we need a server that keeps this half online around the clock. In this guide we walk the full path, from a clean virtual server to a working API with an encrypted connection, ready to take requests from iOS and Android.
This material is for developers who built an app and hit the question of where to actually run it, for beginners with no admin experience, and for product owners who do not yet have an in-house infrastructure team. We aimed to explain things so that a reader without a deep Linux background follows every step and sees why it matters.
Node.js remains one of the most popular choices for a mobile app backend: one language on both client and server, a fast start, and a huge ecosystem of ready-made libraries. Next we look at how to bring it to a state where it runs reliably under real load.
## What a Mobile App Backend Is and Why It Needs a VPS
When a user opens an app and sees a list of products or messages, the app sends a request to the server and gets a response. This exchange goes through an API. In plain terms, an API is a set of addresses where the app asks for data and sends changes. For example, the app gets a list of orders from /api/orders, and by posting a new order there it saves the order on the server.
The code behind this API has to run somewhere, and that is where a VPS comes in. A VPS is a virtual private server, a dedicated slice of a powerful physical machine with its own operating system, where we log in with administrator rights and install whatever we need. It is effectively a full computer in a data center, reachable over the network twenty four hours a day.
**How a VPS differs from the neighboring options. **Shared hosting is cheaper, but there we share the environment with other sites and barely control the settings, which falls short for a server application. Serverless platforms are convenient at the start, yet the price climbs with the number of requests and platform limits appear. A VPS gives the middle ground: full control over the environment, a predictable fixed price, and the freedom to install any Node.js version, database, and supporting services side by side.
There is a wide gap between an app running on a developer laptop and an app holding hundreds of users at once. On your own machine one command is enough. On a server the process has to survive reboots and crashes, the connection has to be encrypted, and stray ports have to stay closed. That gap is what we close in this guide.
## What You Need Before You Start
Before we move to commands, let us gather a short list of what we need at hand. Without these pieces the later steps will not come together.
- **A VPS running Ubuntu 24.04 LTS. **This is a recent long-term-support release that most current tutorials target. An entry-level server will do, and we cover the exact resource requirements below.
- **A domain name. **To issue a free certificate and get clean addresses like api.yoursite.com, we need a domain with an A record pointing to the server IP address.
- **SSH access. **This is the secure way to connect to the server remotely from a terminal and run commands as if we were sitting right at it.
- **A Node.js version. **For a production server in 2026 we go with Node.js 24 LTS. Version 26 currently holds Current status and it is too early to put in production, while version 22 has already moved into the Maintenance phase. The long-term-support line ships security updates over a long horizon, which is exactly what a server meant to live for years needs.
The virtual server itself can be [rented from Serverspace](https://serverspace.us/services/vps-server.md). When ordering, we just pick an Ubuntu 24.04 image, and within a minute we have a clean machine with SSH access in a US data center, onto which we roll the whole stack from this guide.
## How Node.js, PM2, and Nginx Work Together
Before the hands-on part it helps to understand the architecture we are heading toward. It has become the de facto standard for running Node.js on a single server, and it is built from three parts.
**Node.js listens on an internal port. **The application itself starts and accepts requests on a local port, for example 3000. This port is visible only inside the server and does not face the internet directly. That way we keep the app behind a protective layer.
**Nginx sits in front and proxies traffic. **Nginx is a web server that accepts public requests on the standard ports 80 and 443 and forwards them to the internal port of the application. This mode is called a reverse proxy. Nginx also takes on connection encryption, serving static files, and compressing responses, offloading the application itself.
**PM2 keeps the process alive. **PM2 is a process manager for Node.js. It restarts the app if it crashes, brings it back up automatically after a server reboot, and can run several copies of the app across CPU cores, spreading the load between them. Without such a manager, any crash would mean the app stays down until someone connects by hand and starts it again.
Putting it all together, the request path looks like this. A user in the mobile app calls a secure address, the request reaches Nginx, which decrypts the connection and passes it to the internal port where PM2 keeps Node.js running. Each element does its own narrow job, and together they deliver stability.
## Step-by-Step Deployment of a Node.js API on a VPS
Now we go through the whole process step by step. The commands assume Ubuntu 24.04, and we run them in order after connecting to the server over SSH.
Step 1. Prepare the Server and a Separate User
Right after creating the server, we refresh the package list and the packages themselves to close known vulnerabilities and pick up fresh versions:
```bash
sudo apt update && sudo apt upgrade -y
```
Running the application as the root superuser is dangerous: if an attacker finds a hole in the code, they gain full power over the server. So we create a separate user with limited rights specifically for the app:
```
sudo adduser nodeapp
```
From here on we do most of the application work as this user, leaving root only for system tasks.
Step 2. Install the Right Node.js Version
The standard Ubuntu repository usually carries a badly outdated Node.js version, sometimes several major releases behind. So we install it from the official NodeSource source, which provides current builds. We add the repository for the 24 LTS line and install:
```bash
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash –
sudo apt install -y nodejs
```
We confirm the install with node -v. The response should show a version starting with 24. An alternative path is the nvm version manager, handy when one machine needs to keep several Node.js versions at once.
Step 3. Run the Application Through PM2
We copy the app code to the server (usually via git clone from a repository) and install dependencies with npm install. Then we install the process manager globally:
```bash
sudo npm install -g pm2
```
We launch the app under PM2. The cluster mode brings up copies of the app per CPU core and spreads incoming requests across them:
```
pm2 start app.js -i max –name my-ap
```
For the app to come back on its own after a reboot, we run pm2 startup and then pm2 save. The first command creates a startup service, the second remembers the current process list. Now, even after a sudden reboot, the API returns on its own without our help.
Step 4. Configure Nginx as a Reverse Proxy
We install the web server:
```bash
sudo apt install -y nginx
```
We create a site configuration that tells Nginx to accept requests for our domain and forward them to the internal port of the application. The key part of the config looks like this:
```css
location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }
```
After saving, we check the configuration with sudo nginx -t and reload the server with sudo systemctl reload nginx. From this point the app is reachable by domain name, while the internal port stays hidden from the outside world.
Step 5. HTTPS Through Let’s Encrypt
Plain HTTP sends data in clear text, and any node between the app and the server can read it. For a mobile API that is unacceptable, so we always encrypt the connection. We issue a free certificate through Let’s Encrypt with the certbot utility:
```bash
sudo apt install -y certbot python3-certbot-nginx
sudo certbot –nginx -d api.yoursite.com
```
Certbot writes the certificate into the Nginx config and sets up the redirect from HTTP to HTTPS on its own, so all traffic flows over a secure channel. The certificate renews automatically and needs no separate attention.
Step 6. Firewall and Final Check
We close the server off from unnecessary connections. We turn on the built-in UFW firewall and allow only what is truly needed: SSH access and web server traffic.
```xml
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
```
Finally, it makes sense to reboot the server and confirm that after startup the app came back on its own through PM2 and answers at the secure address. If the response arrives, the basic deployment is done.
## What Makes a Mobile App API Different
The server side of a mobile app lives by its own rules, and a few points are worth handling up front so you do not redo them later.
- **HTTPS is strictly required. **Modern iOS and Android refuse by default to reach insecure addresses. That means the certificate step from the instructions above is mandatory for a mobile backend; without it the app simply cannot talk to the server.
- **Token-based authentication with JWT. **Mobile apps work poorly with the cookies that sites rely on. So login is usually built on JSON Web Tokens: after login the server issues the app a token, and the app attaches it to every request in a header. A pair of a short-lived access token and a long-lived refresh token works well for renewing access.
- **Request rate limiting. **To guard against password guessing and abuse, sensitive addresses like login and token refresh get a cap on the number of requests from one address over a time window. In Node.js this is done with the ready-made express-rate-limit library.
- **API versioning. **Addresses like /api/v1/ let us ship new server versions without breaking older app versions on users who have not updated yet. This saves us from a server update suddenly knocking out part of the audience.
- **Input validation and security headers. **We check any data from the app before processing with ready-made validators, and set service security headers with the Helmet library. Secret keys and database passwords live in a separate environment file and never go into the code repository.
- **Push notifications go separately. **Pushes themselves are usually sent through Apple and Google services (APNs and FCM), so there is no need to keep a separate push server of our own. Our API only calls these services when it wants to send a notification.
Data is a topic of its own. If a mobile app collects personal data of US users, hosting the backend on our own VPS keeps that data inside the country and makes it easier to meet rules like the California Consumer Privacy Act, or HIPAA for health-related data. Full control over the server means we decide where the database physically sits and who has access to it. Serverspace runs its US servers in a New Jersey data center, so data stays in the United States. This is one reason teams choose a [US-based VPS](https://serverspace.us/services/vps-server/cloud-servers-in-the-usa.md) over external platforms with unclear data location.
## PM2 or Docker: What to Choose for Your API
As a project grows, the question comes up of whether to run the app directly through PM2 or pack it into a Docker container. It helps to understand that these tools solve different problems and often work together.
**PM2 manages processes. **It makes sure the app keeps running, restarts it, and spreads load across cores. For a single server and a fast start this is the simplest path.
**Docker packages the environment. **A container puts the app together with all its dependencies into an isolated box that runs the same way on any machine. This is handy when we need to move the app between servers or scale it across several hosts.
In practice many combine both approaches: they run PM2 inside a Docker container, getting both environment isolation and process management. The summary table below helps pick a starting point for a specific project.
| Criterion | PM2 | Docker | PM2 + Docker combo |
| --- | --- | --- | --- |
| Ease of starting | High, installs with one command and runs the app right away | Medium, you write a Dockerfile and learn about images | Lower, needs knowledge of both tools |
| Environment isolation | None, processes share the server system | Full, app and dependencies in a separate box | Full, thanks to the container |
| Scaling | Across cores of one machine via cluster mode | Across several machines and orchestrators | Both across cores and across several hosts |
| Portability | Depends on the specific server setup | High, the image runs the same everywhere | High, thanks to the container |
| Best fit | Starting on one VPS and launching fast | Moving between servers and growing onto several machines | Mature projects needing isolation and resilience |
## How to Speed Up the API and Keep It from Falling Over
Once the basic launch is ready, it is worth building in a margin of safety up front. A few simple measures noticeably raise response speed and resilience.
- **Caching with Redis. **If the app often asks the database for the same data, we keep it in the fast Redis store in memory. On real projects, moving heavy repeated queries into a cache cut response time several times over, for example from hundreds of milliseconds down to tens.
- **Response compression. **Gzip compression enabled in Nginx shrinks the volume of transferred data. Mobile clients unpack it automatically, while traffic and load time drop.
- **Cluster mode in PM2. **Running the app as several processes per core lets it handle more concurrent requests and use the server CPU more fully.
- **Monitoring and log rotation. **It is worth watching the load and setting up automatic log rotation so logs do not fill the disk. PM2 can rotate logs through an extra module.
These measures do not require rewriting the app and still give a tangible effect. We can begin with any of them and add the rest as the audience grows.
## Common Deployment Mistakes and How to Avoid Them
Most early problems repeat from project to project. Let us go through them together with solutions.
- **Installing Node.js from the standard apt. **It carries an outdated version. Solution: install from the NodeSource repository or through nvm, as described above.
- **Running the app as root. **This opens full access to an attacker at the first vulnerability. Solution: create a separate user with limited rights.
- **Exposing the Node.js port directly to the internet. **An app open to the outside with no reverse proxy stays without encryption and protection. Solution: always put Nginx in front and keep the internal port closed.
- **Secrets in the repository. **Keys and passwords that land in git leak sooner or later. Solution: keep them in an environment file and add that file to gitignore.
- **No request rate limiting. **Without limits the login address is open to password guessing. Solution: connect a limiter on sensitive addresses.
- **Manual edits straight on the production server. **Changes made on the fly over SSH and recorded nowhere break predictably and are hard to fix. Solution: make changes through a proper code deployment process.
- **Forgotten PM2 autostart. **If we skip pm2 startup and pm2 save, the app stays down after a server reboot. Solution: set up autostart right at the first deployment.
## Where This Is Actually Used: Typical Scenarios
To keep the picture concrete, let us look at where this deployment approach shows up most often.
- **A startup MVP on a single server. **The team tests an idea and keeps the whole app backend on one VPS. Cheap, fast, and enough for the first few thousand users.
- **A shared backend for iOS and Android. **The same Node.js API serves both versions of the app at once. There is no need to duplicate server logic; both platforms call the same addresses.
- **A project with sensitive data. **When an app handles medical, financial, or other personal data, an own server gives control over where it is stored, which matters for meeting protection rules.
- **Smooth scaling as the audience grows. **Starting on a modest plan, the project adds server resources as it grows, and later moves to containers and several machines if needed.
In all these scenarios the starting point is the same: a VPS with a clear price where we fully control the environment. For a start, [renting a virtual server from Serverspace](https://serverspace.us/services/vps-server.md) fits well, and from there the server capacity scales with the load without moving to another platform.
## The Bottom Line and Where to Start
We walked the path from a clean virtual server to a working Node.js API ready to serve a mobile app. The key combination is Node.js on an internal port, PM2 for process resilience, and Nginx with a certificate for secure access from the outside. On top of that we added token authentication, request rate limiting, and the baseline protection specific to mobile clients.
The concrete next step is simple. We spin up a VPS on Ubuntu 24.04, install Node.js 24 LTS, and walk through the steps in the deployment section. Once the basic API runs at a secure address, we gradually add caching, monitoring, and containerization if needed. This order gets a working result quickly and lets us grow it without painful rewrites.
https://serverspace.us/about/blog/aws-alternatives-for-vps-hosting-what-to-choose-in-2026.mdWe rank the top 7 AWS alternatives for VPS hosting in 2026, comparing entry price, included traffic, and US data centers so you pick with confidence.
Searching for AWS alternatives for VPS hosting usually starts with one feeling: the monthly bill stopped making sense. Amazon Web Services runs a large share of the internet, and for good reason. The platform is powerful, mature, and available almost everywhere. Still, "powerful" and "right for your project" are two separate questions. Many teams in the United States want a virtual private server they can understand on the first read, with a price they can predict before the invoice lands. In this guide we rank seven strong alternatives, explain why so many teams are leaving in 2026, walk through how to pick the right one for your workload, and flag the mistakes that cost people money during the switch.
## What Counts as an AWS Alternative for VPS Hosting?
A VPS, or virtual private server, is a slice of a physical machine that behaves like your own dedicated server, with its own CPU, memory, storage, and root access. You install what you need and pay a set rate for the resources. AWS sells this in two shapes. EC2 is the full compute service with hundreds of instance types and deep configuration. Lightsail is Amazon's simpler VPS product that hides most of that complexity behind fixed monthly plans. When people look for EC2 alternatives, they usually want the same outcome with less overhead and a clearer bill.
The market in 2026 splits into two camps. On one side sit the hyperscalers: AWS, Microsoft Azure, and Google Cloud. On the other side sits the alternative cloud, led by providers like Vultr, Linode, and DigitalOcean, which grew from hobby hosting into full infrastructure platforms. The alternative camp trades the enormous service catalog of the hyperscalers for simpler pricing and a gentler learning curve. That trade is exactly what most VPS buyers are after.
## Why Are Teams Moving Off AWS in 2026?
The reasons repeat across almost every recent comparison, and they come down to money you cannot see in advance.
**Traffic is the first. **AWS charges for outbound data while inbound data stays free. Sending data to the internet costs about $0.09 per GB for the first 10 TB each month, then roughly $0.085 per GB up to 50 TB, and around $0.07 per GB above that. Only the first 100 GB across the whole account is free. Traffic between availability zones in the same region adds about $0.01 per GB in each direction, and traffic between regions runs around $0.02 per GB, so a busy microservices setup pays for chatter that never leaves Amazon. Industry analyses put data transfer at roughly 6 to 12 percent of a typical cloud bill, and most teams cannot say where that spend goes.
**The pile of small networking charges is the second. **Since early 2024 AWS bills for every public IPv4 address at $0.005 per hour, which works out to about $3.65 per address each month. A NAT Gateway adds $0.045 per GB processed plus $0.045 per hour, and once you include the egress on top, the real cost of internet traffic through that gateway climbs toward $0.135 per GB.
**The snowball effect is the third. **A plain t3.large instance looks friendly at roughly $60 a month. Add a 200 GB disk, 5 TB of outbound traffic, a few idle static IP addresses, and a load balancer, and the same setup can reach around $612 a month. None of those line items is hidden, yet together they surprise people every billing cycle.
On top of the cost surprises, two structural frustrations come up again and again: vendor lock-in, because moving data out is deliberately expensive, and a catalog of hundreds of instance types that most teams will never touch. For a single application server, that breadth becomes a burden rather than a benefit.
There is also a planning cost that rarely shows up in a quote. When pricing is spread across compute, storage, traffic, gateways, and addresses, forecasting next month's bill turns into a spreadsheet exercise. Finance teams dislike that uncertainty, and engineers dislike spending time on it. A flat or near-flat VPS price removes most of that work, which is a quiet reason many teams switch even when the raw compute cost is similar.
## How We Ranked the Best AWS Alternatives
We scored each provider on six things that decide real-world value. Price per resource asks how much CPU, memory, and storage you get for your dollar. Billing transparency covers whether traffic is included and whether the invoice is easy to predict. US presence looks at data center locations inside the United States. Control panel simplicity measures how fast a beginner can launch a server. Support reflects response speed and quality. Feature set covers extras like one-click apps, managed Kubernetes, and APIs. Each provider earns a score out of five based on how these add up for a typical VPS buyer. We weighted billing clarity and US presence higher than headline price, because a low sticker rate means little if the final invoice swings month to month.
## The 7 Best AWS Alternatives for VPS Hosting in 2026
Here are the seven providers we recommend, ranked from the strongest all-round choice to the most situational. Each entry explains who it suits and where it falls short.
### 1. Serverspace: Best Overall for Predictable US Hosting (5/5)
Serverspace earns the top spot because it answers the exact pain points we listed above. Traffic is included, so the egress meter that drives up AWS invoices simply stays out of the equation. Billing runs in ten-minute cycles, and you pay only for the resources you actually use. When a server is powered off, the only charges left are for active components such as SSD storage, backups, snapshots, licenses, and dedicated IP addresses. Payment is in US dollars through Stripe and PayPal, with no hidden subscriptions and no surprise fees.
The hardware and location match the US framing. Servers run on Xeon Gold CPUs with NVMe SSD storage, the US data center sits in New Jersey, and a new machine spins up in under a minute. The platform backs everything with a 99.9 percent SLA and 24/7 support, and the infrastructure goes through regular audits. For a team that wants a clear bill and a server inside the United States, you can launch one on the [Serverspace VPS platform](https://serverspace.us/services/vps-server.md). Score: 5/5 for transparent billing, included traffic, and a genuine US presence.
### 2. Hetzner: Best Price per Resource (4.5/5)
Hetzner offers the most compute for the money of anyone on this list. A CX32 plan gives 4 vCPUs and 8 GB of RAM for about $7.59 a month, a spec that runs near $48 a month at several US competitors. The hardware is modern, the bandwidth allowances are generous, and an Ashburn, Virginia data center gives US users a local option. The trade-offs are real: Hetzner is a European company at heart, and it offers no managed services, so you handle the server yourself. For budget-focused Linux workloads, the value is hard to match.
### 3. Vultr: Best for Global Reach on a Budget (4.5/5)
Vultr keeps one of the lowest entry points in the market, with Cloud Compute plans starting around $4 for a small shared instance on NVMe storage. Its strength is geography: data centers spread across many continents let you place servers close to users wherever they are. Vultr also offers GPU tiers for AI workloads and higher-end optimized plans built on recent AMD and Intel chips. If your audience is spread worldwide and you want cloud-style features without cloud-style bills, Vultr is a smart pick.
### 4. DigitalOcean: Best for Developer Experience (4/5)
DigitalOcean helped define the modern developer VPS, and it remains the safe default for teams that value polish. The one-click app marketplace, clean control panel, and deep documentation make launching a project painless. The catch is price per resource. The famous $5 droplet now ships with just 1 GB of RAM and 25 GB of storage, which barely runs a modern content site without caching. You pay a small premium for the ecosystem and the smooth experience, and for many teams that premium is worth it.
### 5. Akamai Cloud (Linode): Best for Predictable Production (4/5)
Linode, now part of Akamai, has spent two decades building a reputation for calm, reliable hosting. Plans start around $5 a month, and the appeal is stability over flash. Since the Akamai acquisition, instances connect into a large global edge network, which helps content reach users faster. For long-running production workloads where you want few surprises and steady performance, Akamai Cloud is a dependable home.
### 6. OVHcloud: Best for Unlimited Traffic (3.5/5)
OVHcloud competes hard on price and is known for generous, often unlimited, traffic on its VPS plans. That makes it attractive for projects that move a lot of data and want to avoid metered egress entirely. The interface feels less refined than the developer-first providers, and support can be slower, so it rewards users who are comfortable working independently. For raw price per resource at larger sizes, OVHcloud stays in the conversation.
### 7. AWS Lightsail: Best if You Are Already Inside AWS (3/5)
Lightsail is Amazon's own answer to the simple VPS, and it deserves a place here for one reason: if your team already lives in AWS, it keeps you in familiar territory. Plans start at $3.50 a month for a small instance with 1 TB of transfer, rising to $5 a month once you add a public IPv4 address. The catches matter, though. A stopped instance keeps billing as if it were running, so saving money means deleting and rebuilding from a snapshot. Once you pass the included transfer, you pay the same $0.09 per GB egress as the rest of AWS. Lightsail makes sense mainly when AWS integration outweighs the cost.
## AWS Alternatives Compared at a Glance
The table below lines up all seven providers on the points that matter most: entry price, whether traffic is included, US data center availability, the workload each one suits, and our score. We kept the providers in the same order as the rankings above so you can scan the trade-offs quickly before committing to a test.
| Provider | Entry price | Traffic | US data center | Best for | Score |
| --- | --- | --- | --- | --- | --- |
| Serverspace | from $4.95/mo | Included | Yes (New Jersey) | Predictable US hosting | 5/5 |
| Hetzner | ~$7.59/mo (CX32) | Generous allowance | Yes (Ashburn, VA) | Price per resource | 4.5/5 |
| Vultr | from $4/mo | Metered allowance | Yes | Global reach | 4.5/5 |
| DigitalOcean | from $5/mo | Metered allowance | Yes | Developer experience | 4/5 |
| Akamai Cloud (Linode) | from $5/mo | Metered allowance | Yes | Predictable production | 4/5 |
| OVHcloud | budget tier | Often unlimited | Yes | Unlimited traffic | 3.5/5 |
| AWS Lightsail | from $3.50/mo | Bundled, then $0.09/GB | Yes | Already inside AWS | 3/5 |
## How Do You Choose the Right AWS Alternative for Your Workload?
The best choice depends on what you are running. Five common scenarios cover most decisions.
A content or media project that serves large files lives and dies by traffic cost. Here, included or unlimited bandwidth saves the most money, which is why a provider with a US data center and bundled traffic such as the [Serverspace cloud servers in the USA](https://serverspace.us/services/vps-server/cloud-servers-in-the-usa.md) fits an American audience well.
A startup building an MVP needs a predictable budget more than raw scale. Ten-minute or hourly billing and a flat resource price let you test ideas without fear of a runaway invoice.
A US business with rules about keeping customer data in the country should prioritize a provider with a verified American data center and regular security audits, then confirm the specific compliance terms it needs.
A hobby or learning project wants the cheapest credible server and a gentle control panel, where a low entry price and one-click apps shorten the path from idea to running site.
A container or microservices workload benefits from a provider with strong networking and predictable inter-service traffic, so the egress and gateway fees that bite on AWS do not reappear elsewhere.
## What Mistakes Should You Avoid When Leaving AWS?
A few errors turn an easy migration into an expensive one.
- **Counting only the instance price. **The sticker rate is the smallest part of a cloud bill. Always add traffic, storage, and add-ons before comparing providers.
- **Forgetting idle resources. **Static IP addresses you no longer use and instances you stopped but left in place can keep charging. Audit your account before and after the move.
- **Copying the architecture one for one. **AWS setups often include layers built around AWS quirks. Rebuilding them verbatim on a simpler host wastes money, so simplify as you migrate.
- **Choosing unmanaged without the skills. **An unmanaged VPS gives more resources per dollar, yet it expects you to handle updates and security. If a terminal makes you nervous, pick a managed option.
- **Ignoring the data center location. **A cheap server far from your users adds latency. Match the region to your audience, and for a US audience choose a US data center.
## Which AWS Alternative Should You Choose in 2026?
The short version: match the provider to your priority. For the most compute per dollar, Hetzner wins. For global reach, Vultr spreads widest. For a rich ecosystem and developer comfort, DigitalOcean leads. For calm, predictable production, Akamai Cloud holds steady. And for predictable US hosting with included traffic and a clear, ten-minute bill, Serverspace sits at the top of our list. Whatever you pick, do three things first: estimate your real monthly traffic, work out the total cost of ownership rather than the headline price, and run a short test on the smallest plan before you commit.
https://serverspace.us/about/blog/how-to-deploy-a-discord-bot-on-a-cloud-server.mdHow to deploy a Discord bot on a VPS: step-by-step guide covering Python/Node.js setup, .env configuration, systemd autostart, and basic server security.
Discord bots are everywhere on the platform: they assign roles to newcomers, ban spammers, play music in voice channels, and answer questions using AI. Writing a bot is only half the job. The other half is getting it to run continuously — not just while your laptop is open.
The most common approach is to move the bot to a VPS. The server runs 24/7, is independent of your home internet connection, doesn’t reboot unexpectedly, and never goes to sleep. This article covers the entire process: from choosing a server to setting up automatic restarts on failure. Examples are provided for both Python and Node.js, step by step, with real commands.
## Why Your Home Computer Isn’t Suitable for Production
When you’re writing a bot for the first time, running it directly on your machine is the fastest way to test that everything works. But for a bot serving a real Discord server, this is a poor long-term solution.
Home environments are unpredictable: your ISP can drop the connection for hours, the computer goes to sleep, Windows installs updates and reboots. Home IP addresses are usually dynamic — they change, and if the bot relies on whitelists or webhook notifications, that creates additional headaches. On top of that, the bot constantly consumes resources on your machine.
A VPS solves all of these problems at once. Fixed IP address, guaranteed uptime, and an isolated environment where the bot runs on its own — completely independent of your schedule.
## The Basics: VPS, SSH, and Process Manager
What Is a VPS
A VPS (Virtual Private Server) is a virtual machine running on a physical server in a data center. You get dedicated resources: CPU, RAM, and disk space. You manage it via SSH — a secure remote command-line connection. For Linux servers, it’s the primary tool for all operations.
What Is SSH
SSH (Secure Shell) is a protocol for connecting to a server remotely. Through it, you type commands as if you were sitting right at that machine, even though it may be physically located in a data center in another city. On macOS and Linux, SSH is built in; on Windows it’s available in PowerShell and through the PuTTY application.
Why You Need a Process Manager
If you simply run the bot from a terminal prompt, it will stop as soon as you close the SSH session. A process manager — systemd, PM2, or supervisor — launches the bot as a background service, restarts it on failure, and brings it back up automatically after a server reboot.
## Minimum Server Requirements
A Discord bot without voice features consumes very few resources. A typical Python bot with a few dozen commands uses around 50–150 MB of RAM. A voice bot or one running local ML models is a different story.
| Bot Type | RAM | CPU | Disk |
| --- | --- | --- | --- |
| Text commands, moderation | 512 MB | 1 core | 10 GB |
| API integrations, database | 1 GB | 1–2 cores | 20 GB |
| Music bot (voice channels) | 2 GB | 2 cores | 20 GB |
| Bot with a local ML model | 4+ GB | 2–4 cores | 40+ GB |
For most projects, a starter plan with 1 GB of RAM is enough. On a [Serverspace VPS](https://serverspace.us/services/vps-server.md), that configuration is sufficient to run several small bots simultaneously. Resources can be scaled through the control panel at any time without reinstalling the operating system.
## Step 1. First Connection and System Setup
After creating a VPS, you receive an IP address and a root password (or an SSH key, if you chose that option). Connect to the server:
```bash
ssh root@your_ip_address
```
The first thing to do is update the packages. This matters: a freshly installed system often ships with outdated software containing known vulnerabilities.
```bash
apt update && apt upgrade -y
```
Running everything as root permanently is poor practice. It’s better to create a dedicated user for the bot with limited privileges:
```
adduser botuser
usermod -aG sudo botuser
su - botuser
```
From this point on, all operations run under the botuser account, with sudo used only for administrative tasks. This reduces risk: even if a vulnerability exists in the bot, an attacker won’t have root-level access to the entire system.
## Step 2. Installing the Runtime
Python
On Ubuntu 22.04, Python 3 comes pre-installed. Check the version and install pip along with the virtual environment module:
```bash
python3 --version
sudo apt install python3-pip python3-venv -y
```
Node.js
For Node.js, it’s recommended to install the latest LTS version using the official NodeSource script — the version in Ubuntu’s default repositories is usually outdated:
```bash
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
node --version && npm --version
```
## Step 3. Uploading Your Bot’s Code to the Server
The most convenient method is Git. If the project is hosted on GitHub or GitLab, install git and clone the repository:
```bash
sudo apt install git -y
git clone https://github.com/your_username/your_bot.git
cd your_bot
```
If you don’t have a repository and need to copy files from your local machine, use scp — it works over the same SSH connection:
```bash
scp -r /local/path/to/bot botuser@your_ip:/home/botuser/bot
```
After transferring, verify that everything is in place: the main file (main.py or index.js), the dependency file (requirements.txt or package.json), and any folders containing commands and config files.
## Step 4. Setting Up Environment Variables
Your Discord bot token is sensitive data. Hard-coding it directly in the source is a mistake: the moment the code is pushed to GitHub, the token is exposed to everyone. The correct approach is to store the token and other secrets in a .env file.
Create the file in the bot’s directory:
```
nano .env
```
Example contents:
```
DISCORD_TOKEN=your_token_here
PREFIX=!
DATABASE_URL=sqlite:///bot.db
```
Add .env to your .gitignore — this file must never end up in the repository. To load environment variables in a Python bot, use the python-dotenv library:
```
from dotenv import load_dotenv
import os
load_dotenv()
TOKEN = os.getenv("DISCORD_TOKEN")
```
For Node.js, use the dotenv package — it connects with a single line at the top of the main file: require(‘dotenv’).config().
## Step 5. Installing Dependencies
Python — Virtual Environment
A virtual environment isolates the project’s packages from the system-level Python installation. This is important if the server hosts several bots or Python applications with different library version requirements.
```bash
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
Once activated, (venv) appears at the beginning of the terminal prompt — all subsequent pip commands operate inside the isolated environment.
Node.js
```bash
npm install
```
## Step 6. Test Run
Before configuring autostart, make sure the bot launches without errors:
```bash
# Python (inside the activated venv)
python3 main.py
# Node.js
node index.js
```
If a connection message from Discord appears in the console, everything is working. Quickly test a couple of commands in chat. If something goes wrong, errors will be visible right in the terminal. To stop the process: Ctrl + C.
Worth noting: while the bot is running directly from the terminal, it will stop when the SSH session is closed. Persistent operation requires the next step.
## Step 7. Autostart with systemd
systemd is the standard service manager in Ubuntu and most other Linux distributions. It starts processes at system boot, restarts them on failure, and keeps a log. For a Discord bot on a VPS, this is the optimal approach.
Create a unit file for the service:
```
sudo nano /etc/systemd/system/discord-bot.service
```
Contents for a Python bot:
```
Description=Discord Bot
After=network.target
Type=simple
User=botuser
WorkingDirectory=/home/botuser/bot
ExecStart=/home/botuser/bot/venv/bin/python main.py
Restart=on-failure
RestartSec=5
EnvironmentFile=/home/botuser/bot/.env
WantedBy=multi-user.target
```
For Node.js, the ExecStart line looks different:
```
ExecStart=/usr/bin/node /home/botuser/bot/index.js
```
A few notes on the config. After=network.target means the bot will only start after the network is initialized — critical for connecting to Discord. Restart=on-failure restarts the process on a crash, but not on a clean shutdown. EnvironmentFile loads variables from the .env file.
Enable and start the service:
```bash
sudo systemctl daemon-reload
sudo systemctl enable discord-bot
sudo systemctl start discord-bot
```
Check the status:
```bash
sudo systemctl status discord-bot
```
The line Active: active (running) confirms the service is running. The bot will now start automatically after any server reboot and recover on failure.
## Alternative: PM2 for Node.js
PM2 is a popular process manager in the Node.js ecosystem. It’s slightly easier to set up initially, offers convenient terminal-based monitoring, and manages multiple applications as a single workspace.
```bash
npm install -g pm2
pm2 start index.js --name "discord-bot"
pm2 startup
pm2 save
```
The pm2 startup command generates a command to create a systemd entry, which you’ll need to run. pm2 save saves the current process list — exactly what PM2 will restore after a reboot.
To view live logs:
```
pm2 logs discord-bot
```
For Python bots, native systemd is more practical. If your entire stack is Node.js, PM2 gives you more monitoring tools in one place.
## Viewing Logs and Diagnosing Issues
When the bot runs as a systemd service, logs are read through journalctl:
```
sudo journalctl -u discord-bot -f
```
The -f flag enables live streaming mode. To view the last 100 lines without a live feed:
```
sudo journalctl -u discord-bot -n 100
```
If the bot has its own file-based logging configured, look for a log file in the working directory. For Python bots this is often bot.log or a logs/ folder.
## Updating the Bot
When you need to deploy a new version of the code, the process is straightforward. If you use Git:
```bash
cd /home/botuser/bot
git pull origin main
source venv/bin/activate # Python only
pip install -r requirements.txt # if dependencies changed
sudo systemctl restart discord-bot
```
A restart takes a few seconds. For most bots this is perfectly fine — users barely notice the brief reconnect. If you want to minimize downtime, implement graceful shutdown in the bot itself: finish any in-progress tasks before exiting.
## Server and Bot Security
Deploying a bot and leaving the server in its default configuration creates unnecessary exposure. A few measures worth taking right after the initial deployment.
Disable password login for root and set up SSH keys. Automated scanners start brute-forcing passwords within minutes of a new IP appearing online. An SSH key is more secure than any password.
Set up UFW — Ubuntu’s built-in firewall:
```
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
```
By default, UFW blocks all incoming connections except those explicitly allowed. If the bot needs a web server for webhook requests, add the required port separately.
Store the bot token only in the .env file. If the token ever ends up in a public repository, reset it immediately in the Discord Developer Portal. Regeneration takes a second; the consequences of a leaked token can be significant — anyone who has it gains full control over the bot.
On the Discord side: don’t give the bot administrator permissions on a server unless the functionality genuinely requires it. Minimal permissions mean minimal damage if something goes wrong.
## Practical Use Cases
Let’s look at what tasks a Discord bot running on a permanently available server can actually handle.
**Moderating a large community.** The bot automatically assigns roles on join, filters banned words, issues warnings, and maintains a violation log. All of this requires uninterrupted operation — any downtime means an unmonitored window of activity in the channel.
**Automated notifications.** The bot monitors an RSS feed, checks GitHub Actions statuses, or tracks new releases on PyPI — then posts announcements to the appropriate channel. This kind of logic relies on a task scheduler (APScheduler for Python or node-cron for Node.js) and simply won’t work reliably on a machine that gets turned off periodically.
**Game features with a database.** The bot stores scores, reputation, and character inventories. SQLite works well for smaller servers; PostgreSQL handles heavier loads. The database lives on the same VPS alongside the bot, which simplifies backups and migrations.
**Voice bot.** Plays music in voice channels. This requires ffmpeg and yt-dlp installed on the server, a stable connection, and a reasonably powerful CPU. A plan with 2 GB of RAM is recommended — encoding an audio stream in real time takes resources.
**AI integrations.** The bot answers questions via the OpenAI API, generates images, or summarizes text. When using an external API, a base VPS configuration is sufficient. If a model runs locally, you’ll need a server with several gigabytes of RAM and a capable CPU.
## Common Mistakes and How to Avoid Them
| Problem | Cause | Solution |
| --- | --- | --- |
| Bot stops when SSH session closes | Process is tied to the terminal session | Configure a systemd service or use PM2 |
| Token exposed in repository | Hardcoded in the source or missing .gitignore | Reset the token in Developer Portal; move it to .env |
| ModuleNotFoundError when the service starts | ExecStart points to system Python instead of venv | Use the full path to venv/bin/python in the unit file |
| Bot can't read environment variables | EnvironmentFile not specified in [Service] section | Add EnvironmentFile=/path/.env to the service file |
| Slash commands don't update after deploy | Discord caches global commands for up to 1 hour | Use guild_id during development — updates are instant |
| Memory grows and bot crashes every few days | Memory leak or unbounded cache in code | Set Restart=always in systemd and review caching logic |
## Conclusion
Deploying a Discord bot to a cloud server takes a few hours on the first run and just a few minutes for every update after that. The key steps are: create a user on the VPS, install the runtime, upload the code, move secrets to a .env file, and configure a systemd service with autostart.
Once that’s done, the bot runs independently of your personal machine, restarts automatically on failure, and stays available to users around the clock. A minimal configuration is enough to get started — a [VPS from Serverspace](https://serverspace.us/services/vps-server.md) can be scaled up as load grows, directly from the control panel.
## Frequently Asked Questions
**Can I run multiple Discord bots on one VPS?**
Yes. Each bot runs as a separate systemd service with its own unit file and .env. Resources are shared across all processes, so when running several bots, choose a plan with enough RAM to spare.
**Does a Discord bot require a static IP address?**
No. The bot connects to Discord’s servers via an outbound WebSocket connection — a static IP isn’t needed for that. You’ll only need one if you’re exposing a web interface or accepting incoming webhook requests.
**The bot keeps crashing — what should I do?**
Check the logs: sudo journalctl -u discord-bot -n 50. There will be a detailed traceback. Common causes include: an invalid token, a missing dependency, insufficient permissions on the database file, or a syntax error introduced during a recent update.
**Which OS should I choose for the server?**
Ubuntu 22.04 LTS is the most common choice: large community, up-to-date packages, and support through 2027. Debian and Rocky Linux are solid alternatives — the difference for bot deployment purposes is minimal.
**Will the bot keep running if I turn off my computer?**
That’s exactly what a VPS is for. The server operates independently of your device — 24 hours a day, 7 days a week. There’s no need to keep your own computer on to keep the bot alive.
https://serverspace.us/about/blog/how-to-deploy-vaultwarden-on-a-vps-your-own-password-manager-on-a-server.mdStep-by-step guide to deploying Vaultwarden on a VPS. Set up your own self-hosted password manager with Docker, Caddy, and free SSL.
Every day we have to remember dozens of passwords — for email, social media, online banking, work services. It’s impossible to keep them all in your head, and writing them down in a notebook or a text file is risky. The solution is a password manager. But cloud services (like LastPass or 1Password) store your data on someone else’s servers, which always carries the risk of a leak. The alternative is to host your own password manager on a VPS. For example, **Vaultwarden** — a lightweight but feature‑rich alternative to the popular Bitwarden. In this article, we’ll walk you through, step by step, how to deploy Vaultwarden on a virtual server, set up HTTPS, and start using it.
## What Is Vaultwarden and Why Do You Need It?
Vaultwarden is a **server implementation of the Bitwarden password manager**, written in Rust. It is fully compatible with all official Bitwarden clients: browser extensions, Android, iOS, Windows, macOS, and Linux apps. The main advantage is its minimal resource consumption — a VPS with 512 MB of RAM is enough. At the same time, you get all the “premium” features of Bitwarden for free, including two‑factor authentication, inviting other users, and password vulnerability checking.
Why run your own server? **Complete control over your data**. No one except you can access your encrypted vault. You decide where and how to make backups, and you can disable external access or configure it however you like. This is especially important for companies that are prohibited from using cloud services due to security policies, and for advanced users who want to learn system administration.
## How a Self‑Hosted Password Manager Works
The principle is simple: you install the Vaultwarden application on a **VPS (Virtual Private Server)**. The application listens on a specific port (usually 80 or 443) and handles requests from clients. All passwords are stored encrypted — even the server administrator cannot read them because decryption happens only on the user’s device using the master password.
When you save a new password in the browser extension, the client sends it to the server already encrypted. The server simply stores a “meaningless” blob of bytes. When you request your password list, the server returns the encrypted data, and the client decrypts it locally. This is called _end‑to‑end encryption_ — your secrets never leave your device in plain text.
To access the server from anywhere, you need a **domain name and an SSL certificate** (HTTPS). Without traffic encryption, attackers can intercept your passwords on public Wi‑Fi networks. We’ll show you how to automatically get a free SSL certificate from Let’s Encrypt using the Caddy reverse proxy — it’s easier than manually configuring Nginx.
## Pros and Cons of Self‑Hosting Vaultwarden
Before you start, weigh the advantages and disadvantages. This will help you decide if this approach is right for you.
| Pros | Cons |
| --- | --- |
| Full control over your data (no risk of a provider breach) | Requires basic Linux administration skills |
| Free "premium" features (TOTP, password health reports, organizations) | You have to pay for a VPS (though you can find plans starting at $3–5 per month) |
| Lightweight — runs on servers with 256–512 MB RAM | Requires your own domain (or setting up dynamic DNS) |
| Compatible with all Bitwarden clients | You are responsible for backups and updates |
If the cons don’t scare you and the pros outweigh them, let’s move to practice.
## What You’ll Need for Deployment
You will need:
- A **VPS server** running Ubuntu 20.04 or newer. We recommend using [Serverspace VPS hosting](https://serverspace.us/services/vps-server.md) — you get a clean system with no unnecessary pre‑installed software, easy scaling, and a user‑friendly control panel. In the following steps, we’ll assume you already have a server with Ubuntu and SSH access.
- A **domain name** pointed to your VPS’s IP address (e.g., vault.your-domain.com). If you don’t have a domain, you can register one with any registrar (usually around $10–15 per year).
- **Basic familiarity with the command line** — the ability to connect via SSH and run simple commands. We’ll detail every step.
We’ll use **Docker** and **Docker Compose** for the installation. They isolate Vaultwarden from the host system, making updates and backups easier. We’ll also install **Caddy** — a web server that automatically issues an SSL certificate and sets up proxying.
## Step‑by‑Step Guide to Installing Vaultwarden on a VPS
All commands should be run as a user with sudo privileges (usually the user you logged in with). If you’re using a Serverspace Ubuntu VPS, the default user has full access.
Step 1: Prepare the Server
Connect to your VPS via SSH:
```bash
ssh user@your-server-ip
```
Update the package list and install required utilities:
```bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git ufw
```
Set up a basic firewall — open ports for SSH, HTTP, and HTTPS:
```
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
```
When you run sudo ufw enable, confirm the action (y). Be careful: if port 22 is closed, you’ll lose access. In our case it’s open, so it’s safe.
Step 2: Install Docker and Docker Compose
We’ll install the official Docker version from the developers’ repository — it’s the most up‑to‑date.
```bash
# Add Docker's GPG key and repository
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
# Install Docker Engine and Docker Compose Plugin
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
```
Verify that everything installed correctly:
```bash
docker --version
docker compose version
```
You should see version numbers with no errors.
Step 3: Create the Configuration File (docker-compose.yml)
Create a separate folder for the project and move into it:
```
mkdir ~/vaultwarden
cd ~/vaultwarden
```
Now create the docker-compose.yml file using the nano editor:
```
nano docker-compose.yml
```
Copy and paste the following content (don’t forget to replace vault.your-domain.com with your actual domain pointed to the server):
```yaml
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: always
environment:
WEBSOCKET_ENABLED: "true"
DOMAIN: "https://vault.your-domain.com"
volumes:
- ./vw-data:/data
expose:
- 80
networks:
- web
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost/"]
interval: 30s
timeout: 10s
retries: 5
caddy:
image: caddy:2
container_name: caddy
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy-data:/data
- caddy-config:/config
networks:
- web
volumes:
caddy-data:
caddy-config:
networks:
web:
driver: bridge
```
This file describes two containers: **vaultwarden** and **caddy**. They will communicate with each other through the internal web network. Caddy listens on ports 80 and 443 from the outside and forwards requests to Vaultwarden. Using expose: 80 makes the vaultwarden container accessible only inside Docker, which is more secure.
Now create the Caddy configuration. In the same folder, create a file named Caddyfile:
```
nano Caddyfile
```
Insert the following line (again, replace the domain):
```
vault.your-domain.com {
reverse_proxy vaultwarden:80
}
```
Save the file (Ctrl+O, Enter, then Ctrl+X).
Step 4: Start the Containers
While in the ~/vaultwarden folder, run:
```bash
docker compose up -d
```
The -d flag (detach) means “run in the background”. Docker will download the images (this may take a minute the first time) and start both services. To see the SSL certificate acquisition process, check the logs:
```bash
docker compose logs -f
```
After a few seconds you should see a message like _“successfully obtained certificate”_ — that means Caddy has automatically requested and installed a free Let’s Encrypt certificate. Press Ctrl+C to exit the logs.
If everything went well, your Vaultwarden is now available at https://vault.your-domain.com. Open this URL in your browser — you’ll see the registration page.
Step 5: First Login and Admin Setup
The first user who registers on your server automatically gets administrator privileges. Fill in the fields: email, name, master password (make sure it’s strong and unique). After registration, you’ll enter the web interface — you can start adding logins and passwords.
To access the admin panel, add /admin to the URL. For example, https://vault.your-domain.com/admin. The admin panel password is automatically generated and printed in the container logs. Retrieve it with:
```bash
docker logs vaultwarden 2>&1 | grep "Admin panel"
```
You’ll see a line containing the password. Copy it and use it to log in. In the admin panel you can invite other users, configure security policies, and change server settings.
## Practical Use Cases for Vaultwarden
Here are several typical scenarios where a self‑hosted password manager brings the most value.
- **Personal use for the whole family.** Create an organization in Vaultwarden, add family members, and share passwords for home Wi‑Fi, Netflix, online banking. Each person sees only the entries you’ve shared with them.
- **A small development team.** Instead of keeping passwords for servers, databases, and services in a shared document, the team uses Vaultwarden with two‑factor authentication. You can grant access to specific collections and simply block an employee’s account when they leave.
- **An IT enthusiast who wants to learn system administration.** Installing Vaultwarden on a VPS is a great project to get familiar with Docker, reverse proxies, and SSL certificates. You get both a useful service and valuable experience.
- **A company with data localization requirements.** If laws or internal policies prohibit storing passwords on servers outside your country, renting a VPS in a local data center (for example, using Serverspace) and hosting Vaultwarden solves the problem.
- **Emergency access backup vault.** You can deploy Vaultwarden on a cheap VPS and keep only copies of your most critical passwords there — in case your primary password manager (e.g., a cloud one) becomes unavailable.
## Common Mistakes and How to Avoid Them
Even when following instructions, issues can arise. Here are typical errors and their solutions in a table.
| Symptom | Cause | Solution |
| --- | --- | --- |
| Browser shows "502 Bad Gateway" | Vaultwarden container is not running or Caddy cannot reach it | Check status: docker compose ps. If vaultwarden is not "Up", view logs: docker logs vaultwarden. A common cause is an incorrect domain in the DOMAIN variable. |
| Browser complains about insecure connection (red padlock) | Caddy failed to obtain a certificate; probably the domain is not pointed to the server's IP | Make sure your domain's A record points to your VPS's public IP. Verify with ping vault.your-domain.com. If the IP doesn't match, correct the DNS record, wait 5–30 minutes, then restart Caddy: docker compose restart caddy. |
| Cannot access admin panel, get "unauthorized" | Wrong admin password or you haven't registered the first user | Confirm that you registered as the first user. After registration, the admin password is printed in the logs. Retrieve it again: docker logs vaultwarden 2>&1 \| grep "Admin panel". |
| Official Bitwarden mobile app won't connect | Wrong server address in the app or trust issue with a self‑signed certificate (but we use a valid Let's Encrypt certificate) | In the app, choose "Self‑hosted" and enter the full address: https://vault.your-domain.com. Ensure port 443 is open on your server and the domain is reachable from the internet. |
| After server reboot, Vaultwarden does not start | Docker not configured to start automatically or you didn't use restart: always in docker-compose | Our compose file includes restart: always. If you disabled auto‑start, enable Docker in systemd: sudo systemctl enable docker. To manually start after reboot: cd ~/vaultwarden && docker compose up -d. |
## Conclusion and Next Steps
You’ve successfully deployed your own password manager on a VPS. From now on, all your passwords are stored on a server you control. Vaultwarden is a reliable tool that doesn’t require powerful hardware and handles the load of a single user or a small team.
What you can improve later:
- **Set up automatic backups** of the vw-data folder to cloud storage or another server. Use rclone or a simple script with tar and scp.
- **Enable two‑factor authentication (2FA)** for your Vaultwarden account — supported methods include Google Authenticator, Duo, and YubiKey.
- **Automate container updates** using watchtower or a simple cron script.
- **Restrict access by IP** via the firewall if you know exactly where you’ll be connecting from (e.g., only your office IP).
If you haven’t yet chosen a VPS provider, take a look at **Serverspace**. Their services allow you to rent a virtual server in various data centers in just a few minutes, manage it through a convenient dashboard, and easily scale resources as you grow. Click the link [https://serverspace.us/services/vps-server/](https://serverspace.us/services/vps-server.md) to explore plans and launch your own Vaultwarden today.
https://serverspace.us/about/blog/introduction-why-this-new-ai-server-matters.mdDiscover Majestic Labs Prometheus: the 128TB AI server breaking the memory wall. Learn how it works and what it means for AI in 2027.
Building modern artificial intelligence systems is like trying to build a skyscraper with a tiny elevator. Your construction crew (the processors) can be incredibly fast, but if the elevator (memory bandwidth) only brings up a few bricks at a time, the whole project slows to a crawl. This is what engineers call the "memory wall" – and it's the biggest obstacle in AI today.
Majestic Labs, a startup founded by former Google and Meta engineers, claims to have found a way to tear down that wall. Their new server, called **Prometheus**, is designed not to chase raw computing power, but to solve the memory problem first. This article explains what Prometheus is, how it works in plain steps, where it can be used, and what you need to know before adopting such a system. Even if you don't have a technical background, you'll walk away understanding why this machine matters for the future of AI.
## What Exactly Is Majestic Labs Prometheus?
Majestic Labs Prometheus is an artificial intelligence server – a specialized computer designed to train and run large AI models. Unlike conventional servers that rely on standard GPUs (Graphics Processing Units) from companies like NVIDIA or AMD, Prometheus uses its own custom processors called **Ignite** and an enormous amount of fast memory.
The core idea is simple yet powerful: **memory comes first**. Today's most advanced AI chips can perform trillions of calculations per second, but they spend most of their time waiting for data to arrive from memory. Prometheus flips this by putting up to **128 terabytes (TB) of unified memory** right next to the compute units, making sure the processors never sit idle.
To put 128 TB into perspective: a high-end server from NVIDIA (the DGX B300) typically holds around 2 TB of memory. That's 60 times less. Prometheus doesn't just add more RAM sticks; it creates a single, shared pool of memory that every processing chip can access directly, without copying data back and forth.
Key elements of the Prometheus server:
**Custom Ignite AI processors:** 12 chips per server, combining ARM control cores with RISC‑V based vector and tensor engines.
**128 TB unified memory:** One continuous address space for all compute units.
**25.6 TB/s memory bandwidth:** Enough to move the entire Wikipedia library in a fraction of a second.
**Liquid cooling:** Cold‑plate liquid cooling to handle the heat from 12 powerful chips.
**Open Compute Project (OCP) form factor:** Designed to fit in standard data center racks.
## How Does Prometheus Work? A Step-by-Step Explanation
Let's break down the inner workings of the Prometheus server into five simple steps. Even if you're not an engineer, you'll see why this design is a game changer.
**Step 1 – The problem with traditional GPU servers:**
In a typical AI server, several GPUs are connected to separate memory banks. When one GPU needs data from another GPU's memory, it has to send a request over a shared bus (like a narrow highway). The data travels slowly, and the GPU sits idle waiting. This is the "memory wall".
**Step 2 – Unified memory space eliminates copying:**
Prometheus connects all 12 Ignite processors to a single, giant pool of memory using a high‑speed mesh. Any processor can read or write any memory address directly, as if it were its own. No more "copy from GPU A to GPU B" steps. This removes the biggest delay in distributed AI training.
**Step 3 – Custom Ignite processors combine control and compute:**
Each Ignite chip has two types of cores: ARM cores (think of them as managers that decide what to do) and RISC‑V vector/tensor cores (the workers that do the actual math for neural networks). Because the RISC‑V architecture is open, Majestic Labs could optimize the cores specifically for memory‑intensive AI tasks, not for gaming or graphics.
**Step 4 – Solving the "pin‑out" problem with copper cables:**
A single chip can only physically connect to a limited number of memory modules – this is called the "pin‑out" limitation. Majestic Labs bypassed it by using special copper cables (up to one meter long) and custom aggregation chips. This allows them to attach a huge amount of memory without slowing down the signals.
**Step 5 – Software compatibility without rewriting code:**
A new server is useless if you have to rewrite all your AI software. Prometheus supports popular frameworks like **PyTorch, vLLM, and OpenAI Triton** out of the box. Existing models and training scripts should run without changes, but they will run much faster because the memory bottleneck is gone.
**Example – Training a large language model:**
Imagine you want to train a 1‑trillion‑parameter language model. A traditional GPU server would need to split the model across dozens of GPUs, constantly shuffling data between them. With Prometheus, the entire model and its training data can fit into the unified 128 TB memory. All 12 Ignite chips work on different parts simultaneously, but they share data instantly. What might take weeks on a traditional cluster could take days or hours on Prometheus.
## Key Specifications at a Glance
The table below compares the Prometheus server with a typical high‑end AI server (based on NVIDIA DGX H100). Note that Prometheus is scheduled for delivery in 2027, so final specifications may change.
| Feature | Majestic Labs Prometheus | Traditional AI Server (e.g., NVIDIA DGX H100) |
| --- | --- | --- |
| Total unified memory | Up to 128 TB | 2 TB (typical) |
| Memory bandwidth | 25.6 TB/s | ~3.35 TB/s (H100 eight‑GPU system) |
| Number of compute chips | 12 × Ignite (custom) | 8 × H100 GPUs |
| Compute architecture | ARM + RISC‑V (open) | NVIDIA CUDA (proprietary) |
| Cooling method | Cold‑plate liquid cooling | Air or liquid (optional) |
| Target availability | 2027 | Available now |
## Where Can You Use Prometheus? Practical Applications
Because Prometheus excels at holding and moving huge amounts of data very quickly, it's ideal for tasks that currently struggle with memory limits. Here are four concrete examples.
**Training massive language models:**
Models like GPT‑4 or Llama 3 require enormous memory just to store the parameters (the "weights" of the neural network). With 128 TB, Prometheus could fit a model with hundreds of trillions of parameters – far beyond what is possible today. Researchers could experiment with larger, more capable models without having to spread them across hundreds of GPUs.
**Scientific simulations and digital twins:**
Climate modeling, drug discovery, and astrophysics simulations generate petabytes of data. Traditional servers waste time moving data from memory to disk and back. Prometheus can keep massive datasets in unified memory, allowing scientists to run complex simulations in real time.
**Real‑time recommendation engines:**
Companies like Netflix, Amazon, or Spotify run recommendation models that must process user behavior instantly. These models rely on large embedding tables (think of a giant lookup map for users and items). Prometheus can hold the entire embedding table in memory, reducing latency from milliseconds to microseconds.
**High‑resolution video and image generation:**
Generating 4K or 8K video with AI (like Sora from OpenAI) requires processing huge amounts of spatial and temporal data. The massive memory bandwidth of Prometheus allows for longer, higher‑quality video generation without crashing into memory limits.
## How to Choose and Deploy a Next‑Generation AI Server
Even if you're excited about Prometheus, you won't be able to buy one until 2027. But the principles behind it can guide your AI infrastructure decisions today. Here is a step‑by‑step approach to choosing an AI server – whether it's a future Prometheus or a current alternative.
**Step 1 – Measure your memory footprint:**
Calculate how much memory your AI model needs. For training, you need to store the model parameters, gradients, optimizer states, and input data. A rough rule: a 1‑billion‑parameter model in 16‑bit precision requires about 2 GB of memory. Multiply by 1000 for a trillion‑parameter model – that's 2 TB just for weights. Prometheus's 128 TB gives you room to grow.
**Step 2 – Check software compatibility:**
Most AI servers run Linux and use frameworks like PyTorch or TensorFlow. Prometheus promises to support them without changes. If you are considering any custom server, always test your code on a small sample first.
**Step 3 – Plan your physical infrastructure:**
High‑end AI servers consume a lot of power and generate heat. Prometheus requires liquid cooling. Before buying, ensure your data center has the necessary power (often 10‑20 kW per rack) and cooling capacity. For many companies, it's more practical to rent AI computing power from a cloud provider rather than build your own data center.
**Step 4 – Consider a hybrid approach:**
Not every AI task needs a 128‑TB monster. For development, prototyping, and smaller models, you can use flexible virtual private servers (VPS). **Serverspace** offers on‑demand [VPS hosting in US data centers](https://serverspace.us/services/vps-server.md), allowing you to experiment with AI frameworks, run inference, or train smaller models without a massive upfront investment. Once your project grows, you can then consider dedicated AI servers like Prometheus for the heavy lifting.
## Common Mistakes to Avoid When Adopting AI Servers
Even the most advanced hardware can fail to deliver if you overlook these typical pitfalls.
**Mistake 1 – Ignoring the memory bottleneck:**
Many buyers look only at peak TFLOPS (floating‑point operations per second). But if memory bandwidth is too low, those TFLOPS are wasted. Prometheus solves this, but with other servers, always compare memory bandwidth alongside compute power.
**Mistake 2 – Underestimating cooling and power costs:**
A full rack of AI servers can draw 50‑100 kW. Running them for a year might cost as much as the hardware itself. Factor electricity and cooling into your total cost of ownership.
**Mistake 3 – Locking yourself into proprietary software:**
Some vendors force you to use their own SDKs or programming languages. Prometheus avoids this with open standards (RISC‑V, ARM, PyTorch support). When choosing any AI server, prefer open ecosystems to avoid vendor lock‑in.
**Mistake 4 – Neglecting network bandwidth between servers:**
If you plan to chain multiple Prometheus servers together, the interconnect speed (like InfiniBand or Ethernet) becomes the new bottleneck. Ensure your data center has high‑speed fabric (400 Gb/s or higher) to keep multiple servers feeding data to each other.
## Frequently Asked Questions (FAQ)
**When can I buy a Majestic Labs Prometheus server?
**
According to the company, first deliveries are planned for 2027. Pre‑order details have not been announced yet.
**How much will it cost?
**
Majestic Labs has not released pricing. Given the 128 TB memory and custom chips, analysts estimate it could cost several hundred thousand dollars per server, similar to high‑end DGX systems.
**Can I run my existing PyTorch code on Prometheus without changes?
**
Yes, the company states that Prometheus supports PyTorch, vLLM, and OpenAI Triton out of the box. However, you may need to adjust memory allocation settings to take full advantage of the unified memory pool.
**Is Prometheus only for training, or can it be used for inference (running models)?
**
Both. For inference, the huge memory allows you to serve multiple large models simultaneously or handle very long context windows (e.g., processing entire books in one go).
**Do I need liquid cooling in my data center?
**
Yes, Prometheus uses cold‑plate liquid cooling. You will need a compatible cooling distribution unit. Many colocation data centers now offer liquid‑cooled racks.
**How does Prometheus compare to NVIDIA's Grace Hopper or AMD's MI300?
**
A: Those systems also offer unified memory, but at smaller scales (up to ~1 TB). Prometheus targets 128 TB – a different class for extreme memory‑bound workloads. For most current AI tasks, Grace Hopper or MI300 are more than enough.
**Can I try Prometheus in the cloud before buying?
**
A: Majestic Labs has not announced cloud partnerships yet. In the meantime, you can experiment with memory‑optimized cloud instances. [Serverspace VPS](https://serverspace.us/services/vps-server.md) offers scalable virtual servers that let you test your AI code on different memory configurations, helping you estimate your real requirements before committing to dedicated hardware.
## Conclusion: The Future of AI Infrastructure
Majestic Labs Prometheus represents a fundamental shift: from throwing more compute at AI problems to removing the memory bottlenecks that have secretly held us back. By providing up to 128 TB of unified, ultra‑fast memory, it opens doors to training models that are today impossible – not because they would be too slow, but because they simply would not fit into memory.
For businesses, the lesson is clear. The next generation of AI servers will look very different from today's GPU clusters. Memory capacity and bandwidth will become as important as teraflops. While Prometheus itself is still a year or more away, you can prepare now by profiling your AI workloads, understanding your memory requirements, and adopting flexible infrastructure that allows you to scale. **Serverspace** helps you do exactly that with affordable, on‑demand [VPS servers in US data centers](https://serverspace.us/services/vps-server.md) – perfect for developing and testing AI applications without a massive hardware investment.
Whether you eventually rent time on a Prometheus‑class machine or build your own, one thing is certain: the memory wall is finally coming down.
https://serverspace.us/about/blog/how-to-build-a-website-with-chatgpt-and-deploy-it-on-a-vps.mdLearn how to build a website with AI using ChatGPT, then deploy it on a VPS with Nginx and a free SSL certificate for full control over your live website.
Figuring out how to build a website with AI has become one of the most common questions for anyone starting a project online. The promise sounds easy. You describe what you want, an assistant writes the pages, and your site goes live. The reality splits into two halves. AI tools like ChatGPT are excellent at planning a site and generating its code, yet they stop short of putting it on the internet. That final step, hosting, stays with you. In this guide we walk the full path: how to create a website using AI, then how to publish it on a VPS so you keep complete control of the result. It fits beginners and anyone who would rather own their setup than rent space inside someone else’s builder.
## What does it mean to build a website with AI?
Building a website with AI means using a language model to handle the parts of web creation that used to eat the most time. The model drafts your structure, writes your copy, and produces the underlying code. The one thing it does not replace is the publishing layer. So what are AI websites in practice? They are ordinary sites whose planning, text, and markup were generated or sped up by an assistant, then refined and launched by a person.
It helps to separate two jobs. The first is generation: turning an idea into pages, words, and working HTML. The second is hosting: making those files reachable through a domain name. ChatGPT covers the first job well. It is not a platform like Wix or WordPress, and it gives you no drag and drop tools or publish button. Knowing where the assistant ends and your own work begins is the whole trick to a clean result.
There is a spectrum here. On one end, you let an AI builder generate and host everything inside its own walls. On the other end, you use the assistant only for code and content, then host that code yourself. This guide leans toward the second end, since owning your files and your server is what gives you room to grow later.
## Can AI create a website for me on its own?
When people ask whether AI can create a website for me, the honest answer sits between yes and no. The assistant produces most of what a small site needs. For straightforward layouts it generates the large majority of usable code, often enough that a beginner only tweaks details. That covers the build.
The launch is a different story. AI generated website content still arrives as files and text living inside a chat window. Something has to host those files, attach a domain, and serve them over a secure connection. The model does none of that for you. There is a second catch worth naming early. Generated output is not always accurate or current, so every block of copy and every snippet of code deserves a human review before it reaches visitors. Treat the assistant as a fast first draft engine. You stay the editor, the tester, and the person who presses go.
One more point clears up a common worry. The quality of the result tracks the quality of your prompt. A loose request produces a generic page, while a detailed brief with audience, tone, and structure produces something close to ready. Over time the skill that matters most is writing good prompts, and that is far easier to learn than full stack development.
## What do you need to build and launch an AI website?
Before we touch a single prompt, it helps to gather the pieces. Learning how to make an AI website is mostly about knowing which tool sits at each stage. Here is the short list.
- **A ChatGPT account. **The free tier handles planning and code generation for most simple sites.
- **A domain name. **This is the address visitors type, registered through any registrar.
- **A VPS. **A virtual private server gives you a clean machine with full root access. A Serverspace VPS in the New Jersey data center, for example, provisions in about a minute and comes with a US based IP.
- **Basic SSH access. **A terminal and a connection to your server are enough to follow along.
The point to remember is simple. Even when you develop a website using AI, the site only goes live once it has hosting and a domain. The assistant prepares the goods. Your server delivers them.
## How to build a website with ChatGPT step by step
With the pieces in place, we move to the build. The workflow below shows how to create a website using AI in three passes: plan, generate, refine. Each pass uses a focused prompt so the assistant stays on target.
Plan your pages and structure with one clear prompt
Begin with the map before the markup. A vague request gives a vague site, so we describe the audience, the goal, and the pages we expect. A prompt like this works well:
```xml
You are a web designer. Plan a one page site for a freelance photographer.
List the sections in order, from hero to footer, with a short note on
what each section contains.
```
The assistant returns a clean outline: a hero with a headline and call to action, an about block, a gallery, a services list, and a contact area. We adjust the order until the structure matches the idea. This planning step is where designing websites with AI pays off most, because fixing structure in words costs far less than fixing it in code.
Generate the HTML, CSS, and JavaScript
Once the outline is approved, we ask for the code. ChatGPT writes ready to use HTML, CSS, and simple JavaScript for headers, footers, menus, and contact forms. Canvas mode makes this smoother. It opens a side panel where the code renders and stays editable, so we request a change and watch it apply without leaving the chat.
A practical prompt looks like this:
```xml
Generate a complete index.html for the photographer site above.
Use semantic HTML, inline the CSS in a style tag, keep it responsive,
and add a simple contact form. Return the full file.
```
We save the result as index.html, then ask for any extra pages or a separate styles.css the same way. A browser extension or a quick local open lets us preview the page before it ever reaches the server.
For a multi page site we keep a simple structure: one HTML file per page plus a shared stylesheet. We ask the assistant to reuse the same header and footer across pages so navigation stays consistent. Images go into an assets folder, and we keep file names lowercase to avoid path problems once the files sit on a Linux server.
Review and refine the AI generated content
A first draft is rarely the final draft. Before anything goes live, we read every line. We check that the copy says what we mean, that links point somewhere real, and that the layout holds up on a phone as well as a laptop. Generated text can drift into filler, so we trim it. Generated code can carry small bugs, so we test each button and form.
This is also the moment to set the basics that search engines and AI answer engines reward: one clear H1 per page, descriptive title tags and meta descriptions, alt text on images, and clean URLs. The assistant drafts all of these. We approve them. The site that results reads like a person made it, because a person finished it.
A short checklist keeps the review honest: read the copy aloud, click every link, shrink the browser to phone width, and open the page source to confirm the title and meta tags are present. Five minutes here prevents most of the problems that surface after launch.
## Where should you host an AI built website?
Now the files exist on your machine. The next decision shapes everything that follows: where will they live? Most guides answer by pointing at a hosted builder or a one click static platform. Those work, and they are quick. They also hand control of your domain, your data, and your limits to someone else. When you want to own the stack, a VPS is the answer, because it gives you the whole machine and the freedom to run anything on it.
Ownership matters more than it first appears. It decides where visitor data sits, how fast pages load for a given region, and whether you can add a database, a mail service, or a custom backend later. A US audience, for instance, benefits from a server physically located in the United States, and a VPS lets you choose that location directly.
The table below compares the three common routes so you can match a host to your project.
| Option | Control | Typical cost | Scalability | Best for |
| --- | --- | --- | --- | --- |
| AI website builder (Wix, Hostinger Horizons) | Low, the platform sets the rules | Subscription, often $10 to $30 per month | Capped by your plan tier | Quick sites with no technical setup |
| Static host (Vercel, Netlify) | Medium, strong for static files | Free tier, then usage based | Great for static, limited for custom backends | Static AI generated sites shipped fast |
| VPS (full control) | High, full root access to the machine | From a few dollars per month | Scale CPU, RAM, and storage as you grow | Owners who want control, custom stacks, and their own data location |
For a site you plan to grow, the VPS row is the one that never boxes you in.
## How to deploy your website on a VPS
With a VPS chosen, we publish. The steps below take the files ChatGPT generated and put them online on Ubuntu 24.04, the current long term release. We use a [Serverspace VPS](https://serverspace.us/services/vps-server/cloud-servers-in-the-usa.md) in the New Jersey data center as the example, since it spins up in about a minute with a US based IP and a 99.9% SLA.
Do not worry if the command line feels new. Each step is a short instruction you copy and paste, and we explain what every line does before you run it.
Connect via SSH and install Nginx
First we open a terminal and connect to the server with its IP address:
```bash
ssh root@your_server_ip
```
Once inside, we update the package list and install Nginx, the web server that will hand your pages to visitors:
```bash
sudo apt update
sudo apt install nginx
sudo systemctl status nginx
```
The status command should report that Nginx is active. Visiting the server IP in a browser now shows the default Nginx welcome page, which confirms the web server is running.
Upload your website files
Next we give the site a home on disk. We create a folder for the domain inside the web root:
```
sudo mkdir -p /var/www/yourdomain.com
```
Then we move the files the assistant produced onto the server. From your own computer, SCP is the simplest tool:
```bash
scp -r ./my-site/* root@your_server_ip:/var/www/yourdomain.com/
```
If the project lives in a repository, a git clone on the server works just as well, and wget suits a single archived file. The goal stays the same: index.html and its assets sitting inside the domain folder.
Point your domain and configure the Nginx server block
For visitors to reach the site by name, two things must line up: DNS and the server config. In your registrar’s dashboard, we add an A record that points the domain at the server’s IP address. Propagation usually takes minutes.
On the server, we create a server block, a small config file that tells Nginx which folder to serve for the domain:
```xml
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
root /var/www/yourdomain.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
```
We enable the file, test the syntax, and reload:
```
sudo nginx -t
sudo systemctl reload nginx
```
If the test passes, the domain now serves your AI built pages over plain HTTP.
Secure the site with a free SSL certificate
A live site needs HTTPS, and Let’s Encrypt provides it at no cost. Certbot automates the whole exchange. We install it with the Nginx plugin:
```bash
sudo apt install certbot python3-certbot-nginx
```
Then we request the certificate for the domain:
```
sudo certbot –nginx -d yourdomain.com -d www.yourdomain.com
```
Certbot asks for an email, edits the Nginx config for us, and offers to send all HTTP traffic to HTTPS. We accept. It also sets up automatic renewal, so the certificate refreshes on its own before it expires. At this point the padlock appears in the browser, and the site that started as a prompt is fully live and encrypted.
## Pros and cons of building a website with AI
Like any approach, building a website with AI carries clear strengths and a few honest limits. Weighing them keeps expectations realistic.
**On the upside:**
- ** **Work that once took days of drafting and coding can happen in an afternoon.
- **Low cost. **A free assistant plus a small VPS covers most simple sites for a few dollars a month.
- **A gentle entry point. **You describe a site in plain words and still walk away with working pages.
**On the downside:**
- **Review is mandatory. **Generated code and copy can carry errors, so nothing ships unchecked.
- **No hosting included. **The assistant builds, while hosting, security, and updates stay your responsibility.
- **Limited for complex apps. **Heavy logic, databases, and integrations still call for real development skill.
Seen together, the method shines for small to mid sized sites and gives you a fast, controllable starting point you can expand later.
## Practical scenarios: where an AI built site on a VPS fits
To make this concrete, here are four situations where the build and deploy combination works especially well.
- **A product landing page. **A single page that explains an offer and collects sign ups. AI writes the copy and layout in minutes, and a VPS serves it fast with a local IP.
- **A small business site. **A few pages for a shop, studio, or practice. Full control means you set your own forms, analytics, and limits with no platform restrictions.
- **A portfolio or resume site. **A clean place to show work. Cheap to run, simple to update, and entirely yours.
- **A startup MVP or client project. **A working front end you stand up quickly, then scale the server resources as traffic grows.
- **An event or campaign microsite. **A short lived page for a launch or promotion. You publish it fast, run it through the season, and take it down without canceling a yearly plan.
The thread across all four is ownership. You decide what runs, where the data sits, and how far it scales.
## Common mistakes when building a website with AI and how to avoid them
A few errors show up again and again. Knowing them in advance saves hours. Learning how to create a website using AI is partly about sidestepping these traps.
- **Vague prompts. **Asking for something good gives an average result. Fix it with specifics: audience, goal, length, and format.
- **Trusting code blindly. **AI output can hide small bugs. Fix it by testing every form, link, and button before launch.
- **Forgetting SSL. **A site on plain HTTP looks unsafe to browsers and visitors. Fix it with a free Let’s Encrypt certificate during setup.
- **Skipping backups. **Servers fail and edits go wrong. Fix it by taking regular snapshots of your VPS.
- **Ignoring mobile. **Many visitors arrive on phones. Fix it by asking the assistant for responsive layouts and checking them on a small screen.
- **Overlooking speed. **Slow pages lose readers and rankings. Fix it by keeping images light and the markup clean.
None of these are hard to avoid. They only hurt when nobody looks for them.
## Conclusion: launch your AI website with full control
We have covered the full journey of how to build a website with AI and put it online on your own terms. The pattern stays steady: plan and generate the site with ChatGPT, review it like an editor, then deploy it on a VPS with Nginx and a free SSL certificate. The reward is a live site you fully own, with no builder deciding your limits. When you are ready to publish, you can spin up a [Serverspace VPS](https://serverspace.us/services/vps-server/cloud-servers-in-the-usa.md) and have your AI built site online within the hour. Build it once, host it your way, and grow it as you go.
https://serverspace.us/about/blog/best-vps-for-homelab-projects-in-2026.mdWe compare the best VPS options for homelab projects in 2026 and explain how to run DNS, NTP, web, VPN, and email services on a reliable virtual server.
A homelab server used to be a niche hobby for system administrators. In 2026 it has gone mainstream, and ordinary people who never wanted to manage infrastructure are now running their own services at home. The self-hosting market is projected to reach $85.2 billion by 2034, growing around 18.5 percent a year, and most of that growth comes from regular users rather than professionals. A homelab gives you control over your data, freedom from subscriptions, and a place to learn how the internet really works. The catch is that a server sitting at home cannot safely face the public internet on its own. This is where a virtual private server earns its place. In this guide we explain why a homelab needs a VPS, how we ranked the best options for 2026, and how to run DNS, NTP, web, VPN, and email services on top of one.
## What a homelab server is and why a VPS belongs next to it
So what is a homelab server? It is simply a computer you run at home to host your own software. It can be a Raspberry Pi, a mini PC, a repurposed desktop, or a small rack. People use it for media, photos, password managers, backups, and home automation, replacing cloud services they would otherwise rent every month.
The problem starts when you want to reach those services from outside your house. Many home connections sit behind CGNAT or a changing IP address, and most internet providers block inbound ports. Exposing your home IP directly also invites constant scanning. A small VPS solves this cleanly. It acts as the public edge of your lab: a WireGuard tunnel runs outbound from your home to the VPS, the VPS faces the internet, and your home IP stays hidden. Nothing needs to be opened on your router. Anything that must run around the clock, such as a bot or a status monitor, lives on the VPS so it does not depend on your home machine staying awake.
## How we picked the best VPS for a homelab
We did not rank these providers on price alone. A homelab edge has a specific job, so we weighed the things that matter for that job. Here is what we looked at.
- **Price and resources: **how much CPU, RAM, and SSD you get for an entry-level monthly fee, since most homelab edges stay small.
- **Disk speed: **real NVMe or SSD performance in IOPS, because a slow disk drags down everything you self-host.
- **Traffic allowance: **how much bandwidth is included before overage charges appear, which matters for media and backups.
- **Location and latency: **how close the data center sits to you and your users, which decides how responsive your services feel.
- **Clean IP and port 25: **whether the address is free of blacklists and whether outbound mail is allowed, both critical for email.
- **Uptime and billing: **the SLA, the high availability design, and whether the billing model punishes idle servers.
We also checked how easy each control panel is and which operating system images are available at signup, which matters when you pick the best OS for homelab server projects.
## Best VPS for homelab projects in 2026: our top picks
We scored each provider from one to five based on the criteria above, with a focus on running a homelab edge rather than a large production fleet. The table below summarizes our picks at a glance, and the sections that follow explain the reasoning behind each score. Prices reflect entry-level plans at the time of writing and are rounded for clarity. Specifications and bandwidth policies change often, so we recommend confirming the current details on each provider page before you deploy.
| Provider | Score | Entry specs | Price from | Data center | Best for |
| --- | --- | --- | --- | --- | --- |
| Serverspace | 5 / 5 | 1 vCPU / 1 GB / 25 GB SSD | $5.86 / mo | New Jersey (USA) | All-round homelab edge with US data residency and unlimited traffic |
| Hetzner | 4.5 / 5 | 2 vCPU / 4 GB / 40 GB | ~$4.59 / mo (EU) | Ashburn, Hillsboro (USA) | Best price-to-performance, though US traffic is capped |
| Vultr | 4.5 / 5 | 1 vCPU / 1 GB / 25 GB | ~$2.50 / mo | Many US locations | Low US latency and recent AMD silicon |
| DigitalOcean | 4 / 5 | 1 vCPU / 1 GB / 25 GB | ~$4 / mo | Global, US data centers | Smoothest UX and managed services |
| Oracle Cloud Free Tier | 3.5 / 5 | up to 2 ARM cores / 12 GB | Free | Multiple regions | Free experiments only, with idle reclamation caveats |
### 1. Serverspace, best overall homelab VPS (5/5)
We placed Serverspace first because it balances price, performance, and US data residency in a way that fits a homelab edge precisely. The entry plan starts at $5.86 per month for one core, 1 GB of RAM, and 25 GB of SSD, which is plenty for a WireGuard gateway and a reverse proxy. Traffic is unlimited, so media streaming and off-site backups will not trigger surprise bills.
Under the hood the servers run on Intel Xeon Scalable v2 CPUs with disks reaching up to 30,000 IOPS on the hyperconverged vStack platform. The SLA is 99.9 percent, and high availability means a virtual server reboots automatically on another host if hardware fails. Billing happens every ten minutes with a $5 minimum top-up, and support answers tickets within fifteen minutes around the clock. Both Linux and Windows server images are available at signup, so a Windows Server homelab is one click away.
For US users, the New Jersey data center keeps your data in country, which is a real advantage for anyone with privacy obligations. You can review the full configuration and current pricing on the [Serverspace VPS page](https://serverspace.us/services/vps-server.md) before you deploy.
### 2. Hetzner, best price-to-performance with US caveats
Hetzner is the reference point for value. Its cost-optimized line starts around $4.59 per month, and the disks are exceptional: a CX22 delivers roughly 58,200 read IOPS, beating far pricier rivals. For a European homelab edge it is hard to argue with.
The caveats matter for US readers. The cheap CX and ARM-based CAX lines are Europe only. In the United States Hetzner offers only the CPX and CCX series, hosted in Ashburn and Hillsboro, and the included traffic drops to about 1 TB per month instead of the 20 TB available in Europe. Practical US coverage is essentially Ashburn, so West Coast or Asia-Pacific latency can be noticeable. There are also no managed services, so you handle everything yourself.
### 3. Vultr, best US coverage and fresh silicon
Vultr is a strong pick when you want servers close to US users. It operates many data centers across the country, and its high-performance tier runs on recent AMD EPYC Genoa processors, so single-core speed is excellent. Entry plans start around $2.50 to $6 per month, and billing is hourly, which makes it easy to spin a server up for a test and destroy it afterward.
The trade-off is that the cheapest Vultr plans cost more than bargain providers once you match specs, and heavy bandwidth users should check the transfer allowance before committing. For a homelab edge that needs low US latency and modern processors without the polish premium of larger clouds, Vultr lands in a comfortable middle.
### 4. DigitalOcean, best UX and managed services
DigitalOcean is the friendliest option on this list. The control panel is polished, the documentation is extensive, and a large catalog of managed services, from databases to Kubernetes, sits one click away. For a homelab owner who wants to learn cloud patterns in a clean environment, it is a comfortable place to begin.
The cost is the obvious downside. A Basic Droplet with two vCPUs and 4 GB of RAM runs about $24 per month, roughly 60 percent more than an equivalent Hetzner server, and the included transfer is 4 TB. If your edge is tiny and you value the experience over the price, DigitalOcean is justifiable. For a strictly budget homelab gateway, the math is harder to defend.
### 5. Oracle Cloud Free Tier, best free option with caveats
Oracle Cloud is the famous free option, and on paper it is generous, offering an always-free ARM allowance that once reached four cores and 24 GB of RAM. For an experiment it is tempting.
The caveats are serious, and they grew sharper recently. As of June 15, 2026, Oracle halved the always-free Ampere limits to two cores and 12 GB of memory, and instances over the new limit get shut down until you resize them. The platform also reclaims idle servers: if CPU and network both stay under 10 percent for seven days, your instance can be stopped. There are no automated backups on the free tier, and capacity errors are common when you try to create an instance. Free works for tinkering, while a homelab edge that must stay reachable needs predictable resources, which is why we treat it as a last resort.
## How to deploy a web server in a homelab using your VPS
Once your VPS is online, the most common first task is publishing a web service from your homelab safely. We do this by running a reverse proxy on the VPS that forwards traffic through the tunnel to your home machine, with automatic HTTPS handled for you. Caddy is the simplest tool for the job because it requests and renews certificates on its own.
The steps are straightforward:
- **Install Docker **on the VPS so you can run Caddy in a container.
- **Create a Caddyfile **that maps your domain to the internal address of your homelab service.
- **Start the container **and let Caddy fetch a certificate automatically.
Here is a minimal example that proxies a domain to a media server reachable across the WireGuard tunnel:
```xml
# Caddyfile on the VPS
media.example.com {
reverse_proxy 10.8.0.2:8096
}
# start Caddy in Docker
docker run -d –name caddy \
-p 80:80 -p 443:443 \
-v $PWD/Caddyfile:/etc/caddy/Caddyfile \
-v caddy_data:/data \
caddy:latest
```
With this in place, visiting your domain reaches your home service over an encrypted path, and your home IP never appears in public DNS.
## How to configure a homelab DNS server on a VPS
A homelab DNS server gives you local name resolution and network-wide ad blocking, and a VPS is a sensible place to host the public-facing part. We usually pair Pi-hole or AdGuard Home for filtering with a resolver such as Unbound for privacy. On the VPS you run the resolver that your tunneled devices query, while keeping sensitive internal records on a second instance at home if you prefer.
To stand up a homelab DNS server with Pi-hole in Docker, the steps are:
- **Point port 53 **on the VPS to the Pi-hole container for DNS queries.
- **Expose the web interface **on a port you protect behind the tunnel.
- **Set your devices **to use the VPS address as their DNS server.
A minimal compose file looks like this:
```xml
services:
pihole:
image: pihole/pihole:latest
ports:
– "53:53/tcp"
– "53:53/udp"
– "8081:80/tcp"
environment:
TZ: "America/New_York"
WEBPASSWORD: "change-me"
volumes:
– ./etc-pihole:/etc/pihole
restart: unless-stopped
```
After the container starts, queries from your tunneled clients resolve through the VPS, and ad domains are blocked across every device on the network.
## What is a homelab NTP server and how to run one on a VPS
A homelab NTP server is a service that keeps the clocks on all your machines in sync using the Network Time Protocol. It sounds minor, yet accurate time is the quiet foundation under many other services. Logs from different machines only line up when their clocks agree. TLS certificates fail validation if a system clock drifts too far. Authentication systems like Kerberos, which sits under Active Directory, break outright when the time gap grows beyond a few minutes.
Running your own NTP source on a stable VPS gives every device in your lab one reliable reference, instead of each machine guessing from random public servers. We typically run chrony on the VPS, point it at upstream time pools, and let the rest of the homelab sync to it through the tunnel. Because a VPS has steady uptime and a solid network path, it makes an excellent anchor for time across the whole setup.
## Using a VPS as your homelab VPN server
A homelab VPN server lets you reach your services from anywhere without exposing them publicly. There are two honest paths here, and they suit different goals. For simply reaching your own lab from your phone or laptop, Tailscale is usually simpler and safer, because it builds a private mesh without you managing any server. Many homelab owners already have it and never need more.
Running your own WireGuard server on a VPS makes sense when you want a fixed public entry point, when you want to share access with others, or when you want full control over the routing. WireGuard is fast and its configuration is short, which is why it has replaced older protocols as the default. A WireGuard gateway runs comfortably on an entry-level VPS such as a Serverspace plan, since the workload is light. The right choice depends on whether you need a public edge or only private access.
## Running a homelab email server: why you need a VPS
A homelab email server is the hardest service to run from home, and the reason is almost never about your hardware. Residential IP addresses are frequently listed on spam blacklists, sometimes from day one. On top of that, most internet providers block outbound port 25, which is the port mail servers use to talk to each other. Together these two facts make reliable sending from a home connection close to impossible.
A VPS with a clean IP and an open port 25 changes the picture. We run the mail stack, such as Mailcow or Mailu, on the VPS, configure SPF, DKIM, and DMARC properly, and check the IP reputation before sending a single message. Even then, email demands ongoing care, so many people choose a provider known for clean address space and clear policies on outbound mail.
## Cheap homelab server vs a low-cost VPS: the honest math
People often ask whether a cheap homelab server at home beats a low-cost VPS. The honest answer is that they solve different problems, and the cost comparison is rarely as simple as it looks. A bargain homelab server rack or a used enterprise box can look cheap on a listing, yet it draws 200 watts or more, runs loud, and adds to your power bill every month. The community has largely moved away from old rack gear toward quiet mini PCs for exactly this reason, with sensible budgets landing between $100 and $600.
A VPS flips the equation for the public-facing part. There is no electricity cost, no noise, and no hardware to replace, and a predictable monthly fee covers it. We recommend keeping bulk storage and heavy compute at home, where buying capacity once is cheaper, and renting a small VPS for the edge that must stay online and reachable.
## Common mistakes when choosing a homelab VPS
A few avoidable errors trip up most newcomers. Watching for them saves hours of frustration later.
- **Forwarding ports on your home router **exposes your home IP to constant scanning, so use a VPS and a tunnel instead and keep your router closed.
- **Relying on a free tier for production **invites trouble, because idle reclamation and shifting limits can take your server offline without warning.
- **Ignoring traffic allowances **leads to surprise charges, especially on US regions where included bandwidth is far lower than in Europe.
- **Running mail from a dirty IP **wastes days on deliverability problems, so always check blacklists before installing anything.
- **Skipping backups **turns a small failure into permanent data loss, since cheap plans rarely back themselves up.
- **Undersizing the server **for your real workload causes constant slowdowns, so match CPU and RAM to what you actually run.
## Conclusion: the best VPS for your homelab in 2026
A homelab and a VPS are partners. The home server holds your data and heavy storage, and the VPS gives that lab a safe, always-on public face. For most people in 2026 the practical path is to keep bulk services at home and rent a small, reliable VPS for the edge that handles DNS, NTP, web, VPN, and mail.
If you want our shortlist in one line: Hetzner wins on raw value in Europe, Vultr covers US latency, DigitalOcean offers the smoothest experience, and Oracle suits pure tinkering. For an all-round homelab edge with US data residency, unlimited traffic, and a fair price, we keep coming back to Serverspace and its [New Jersey VPS](https://serverspace.us/services/vps-server.md). Whichever you choose, start small, tunnel rather than expose your home IP, and grow from there.
## FAQ
**Is it safe to expose a homelab to the internet via a VPS?**
Yes, when done correctly it is much safer than port forwarding at home. The VPS faces the internet while your home IP stays hidden behind an outbound tunnel, which shrinks your attack surface. Keep the VPS patched, limit open ports, and put sensitive services behind the VPN.
**VPS vs home server: which should I start with?**
Start with a home server for storage and learning, then add a small VPS once you want to reach services from outside. The two work best together rather than as competitors.
**Do I need a static IP for my homelab VPS?**
A VPS comes with its own stable public IP, so you do not need a static IP from your home provider. That stable address is one of the main reasons to use a VPS as your edge.
**Can a free VPS handle a homelab project?**
A free tier can run a light experiment, yet idle reclamation, missing backups, and capacity limits make it unreliable for anything that must stay online. For a real edge, a low-cost paid plan is worth the few dollars.
**VPS vs Tailscale for homelab remote access?**
Tailscale is simpler for private access to your own devices, while a VPS with WireGuard is better when you need a public entry point or want to share services. Many setups use both together.
https://serverspace.us/about/blog/vps-website-not-loading-how-to-check-dns-open-ports-firewall-and-network-connectivity.mdSite on a VPS not opening? Step-by-step troubleshooting: check DNS records, ports, firewall, and the web server with Linux commands.
Launching a site on a VPS is a straightforward and well-documented task. What is much harder is figuring out why it suddenly stopped opening. The browser shows an error, colleagues say the page is unavailable, and everything in the server control panel looks normal. It is an alarming situation — especially if this is a production service or an online store.
The cause is almost always hiding in one of four places: DNS resolves the domain to the wrong IP, the firewall has blocked the required port, the server is unreachable over the network, or the web server has crashed and stopped handling requests. Browser error messages can be misleading: ERR_CONNECTION_REFUSED and ERR_CONNECTION_TIMED_OUT look similar, but they mean completely different things. You need to work layer by layer — from basic network reachability to DNS and the web server configuration.
In this article, we will walk through each diagnostic layer step by step: how to check the network connection to the VPS, confirm that ports are reachable, verify the domain's DNS records, and find the problem in the web server itself. All examples are real Linux commands that you can run right away.
## How the chain works: where exactly things can break
When a user enters a website address in the browser, several things happen behind the scenes in sequence. The browser contacts a DNS server — asking which IP address corresponds to the domain name. After receiving the answer, it opens a TCP connection to the server on the required port. Only then does it send an HTTP request and wait for a page in response. If anything breaks at any of these steps, the site will not load.
Browser error messages provide a clue, but not always an exact one. ERR_NAME_NOT_RESOLVED points specifically to DNS — the domain does not resolve to an IP. ERR_CONNECTION_REFUSED means the server is reachable but refused the connection: the port is closed or the web server is stopped. ERR_CONNECTION_TIMED_OUT indicates a network problem or a hard firewall block — the connection is not established at all. 502 Bad Gateway means nginx is working, but the application behind it is not.
The easiest way to diagnose is from the bottom up: first check whether the server responds over the network, then whether the required ports are open, then whether DNS is configured correctly, and only after that check the web server itself. This order saves time: if the server is not reachable over the network at all, there is no point searching for nginx configuration errors.
## Step 1. Check the network connection to the VPS
Ping: is the server alive?
ping is the simplest way to verify that the server is physically reachable. The command sends ICMP packets to the server's IP address and waits for a reply.
```
ping 203.0.113.45
```
If replies come back, the server is online and reachable at the IP level. If you get a timeout or "Destination Host Unreachable," then either the server is down or ICMP is blocked by a firewall. The second case is fairly common: many administrators intentionally disable ping. So no reply to ping does not necessarily mean the server is dead — you need to keep checking.
traceroute: look at the path to the server
traceroute (on Windows — tracert) shows the full packet route — which intermediate hops they pass through and where they stop. This is useful when ping does not respond and you need to understand where the problem appears.
```
traceroute 203.0.113.45
```
Pay attention to the last lines. If the route breaks before reaching the server, the issue is somewhere in the provider's network or the backbone. If packets reach the last hop but there is no reply, ICMP is blocked on the server itself. In practice, that is normal if the site still opens.
curl: check the HTTP response directly
The curl utility lets you check the server's HTTP response without the browser's cache and extensions. The -I flag requests only the headers, so the response comes back quickly without downloading the full page.
```bash
curl -I http://203.0.113.45
```
If the server returns 200 OK, 301 Moved Permanently, or even 403 Forbidden, the web server is alive and responding. If curl hangs without a reply, port 80 is closed or the web server is not running. A 502 Bad Gateway response means nginx is running, but the application behind it is not.
Check the network interface from inside the server
If you have SSH access or access through the hosting provider's web console, check the network interfaces from inside the server. After a reboot, the interface sometimes does not come up or receives the wrong IP.
```
ip addr show
```
The output should show an active interface — usually eth0, ens3, or something similar — in UP state with the correct public IP address. If the interface exists but has no address or is in DOWN state, you need to bring it up manually or fix the network settings. Make sure the IP matches what is shown in the hosting control panel.
## Step 2. Check ports and the firewall
Why a closed port = an unavailable site
The web server accepts connections on specific ports: HTTP runs on 80, HTTPS on 443. Even if the server is physically reachable and nginx is running, the firewall can block incoming connections to those ports. The browser will not be able to connect, even though the server is alive. To the user, it looks like the server is turned off.
Check ports from the outside
The most reliable way is to check the port from another machine, not from the server itself. nmap is convenient for this. If you do not have the tool, online services such as portchecker.co or portscan.online will also work — they test the port from an independent external IP.
```
nmap -p 80,443 203.0.113.45
```
The result will show one of three statuses. open — the port is open and listening. closed — the port is unavailable, no process is listening. filtered — the port is blocked by a firewall. The difference between closed and filtered matters: in the first case, the problem is in the web server; in the second, it is in the firewall.
Check open ports from inside the server
On the server, the ss command helps you see what is listening and which process owns it. The -tlnp flags show TCP listening ports with process names.
```
ss -tlnp
```
In the Local Address column, look for lines with ports 80 and 443. If there are none, the web server is not running or is listening on another port. Pay attention to the address itself: 127.0.0.1:80 means the server listens only locally and does not accept external connections. For a public site, it should be 0.0.0.0:80 or :::80.
Open the required ports in the firewall
If the port is listening but shows filtered from the outside, the firewall is blocking it. On Ubuntu and Debian, UFW is most commonly used; on CentOS and Rocky Linux, firewalld or iptables is often used directly.
Check and allow ports in UFW:
```
ufw status verbose
ufw allow 80/tcp
ufw allow 443/tcp
ufw reload
```
For firewalld on CentOS and Rocky Linux:
```
firewall-cmd –list-all
firewall-cmd –permanent –add-service=http
firewall-cmd –permanent –add-service=https
firewall-cmd –reload
```
Keep in mind that cloud providers often add an extra firewall layer at the infrastructure level — on top of the system firewall. If you rent a [VPS on Serverspace](https://serverspace.us/services/vps-server.md), check the security group settings in the control panel: those rules work independently from UFW on the server itself. Both layers must allow the required ports.
## Step 3. Check DNS
What DNS is and when it is actually to blame
DNS (Domain Name System) is a global system that translates domain names into IP addresses. When the browser requests _example.com_, it first asks DNS: "What IP belongs to this domain?" After receiving the answer, it connects to the server at that address. If DNS returns the wrong IP or does not reply at all, the site will not open even if the server works perfectly.
DNS problems usually show up in two scenarios. First: the site opens by direct IP, but not by domain name. Second: it works for some users, but not for others. This happens because of DNS propagation — a new term for an old phenomenon: after an A record changes, the new data gradually spreads across DNS servers around the world and can be cached anywhere from a few minutes to 48 hours.
Check DNS with nslookup
nslookup is the easiest tool for checking DNS records. It works on Windows, macOS, and Linux without installation.
```
nslookup example.com
```
The command returns the IP addresses the domain points to. Compare the returned IP with the real public IP of your VPS. If they match, DNS is configured correctly. If they do not, the A record points to another address or the changes have not propagated yet.
You can also specify which DNS server to query. This helps determine whether public resolvers see the correct records:
```
nslookup example.com 8.8.8.8
```
Here 8.8.8.8 is Google's public DNS. If it returns the correct IP while your local DNS still shows the old one, the problem is caching on your side. You can also check using 1.1.1.1 (Cloudflare): if both public servers return the correct IP, the zone has propagated normally.
dig: a detailed DNS record check
On Linux and macOS, dig is available — a more informative tool. It shows the full DNS response, including the record's time to live (TTL) and the zone's authoritative servers.
```
dig example.com A +short
```
The answer should contain an A record with your server's IP. The TTL (Time to Live) value affects how quickly changes propagate: with a TTL of 300 seconds, updates become visible in 5–10 minutes; with a TTL of 86400, the cache may hold it for a day. If you plan to change the IP, lower the TTL in advance, a few hours before the change.
What to check in the domain settings
If DNS returns the wrong IP, open your registrar's or DNS provider's control panel and check the A record. It should contain your VPS's public IP. Do not confuse an A record with AAAA — the latter is for IPv6. If you use a www subdomain, check it separately: the A record for www.example.com may point to a different address. Sometimes the cause is simply an expired domain name — this is easy to check with whois:
```
whois example.com | grep -i expir
```
## Step 4. Check the web server
Make sure the service is running
If the network works, the ports are open, DNS points to the correct IP — but the site still does not open — the problem is in the web server itself. nginx or Apache may have crashed after a package update, due to a syntax error in the config, or because it ran out of memory.
Check nginx status:
```bash
systemctl status nginx
```
Check Apache:
```bash
systemctl status apache2
```
If the service is stopped (status inactive or failed), try starting it and immediately check the latest log entries:
```bash
systemctl start nginx && journalctl -u nginx -n 50 –no-pager
```
Check the configuration for errors
A common reason for a web server crash is a syntax error in the configuration file. Before starting it, it is worth validating the config: both nginx and Apache have built-in commands for this.
For nginx:
```
nginx -t
```
For Apache:
```
apachectl configtest
```
If there are errors in the config, the commands will point to the problematic file and the exact line. That makes troubleshooting much faster, especially when there are many config files spread across several directories.
Read the error logs
The web server logs are the main source of information during troubleshooting. nginx writes errors to /var/log/nginx/error.log, Apache to /var/log/apache2/error.log. To view the latest lines:
```
tail -n 50 /var/log/nginx/error.log
```
Look for lines with crit, error, or alert levels. notice and info are informational and do not affect the site. The most common log errors are: permission denied (wrong file permissions), no such file or directory (incorrect path to the site root), upstream timed out (the application is not responding in time).
## Diagnostic table: symptom — cause — solution
This summary table will help you quickly orient yourself by a specific symptom and understand where to look first.
| Symptom | Possible cause | What to check / do |
| --- | --- | --- |
| ERR_NAME_NOT_RESOLVED | The DNS record is missing or points to the wrong IP | Check the A record with nslookup or dig |
| ERR_CONNECTION_REFUSED | The port is closed or the web server is not running | Check ss -tlnp and the nginx / Apache status |
| ERR_CONNECTION_TIMED_OUT | The firewall is blocking the port or the server is unreachable over the network | Check ufw / iptables, run ping and traceroute |
| Opens by IP but not by domain | DNS has not updated or the A record is wrong | Check DNS through public servers, wait for propagation |
| Works for some users | Incomplete DNS record propagation | Wait up to 48 hours, check via whatsmydns.net |
| 502 Bad Gateway | nginx is working, but the backend (PHP-FPM, Node, Gunicorn) has crashed | Check PHP-FPM, pm2, Gunicorn, and uwsgi status |
| 403 Forbidden | Incorrect permissions on the site files | Check the owner and chmod of files in the document root |
| HTTP opens, HTTPS does not | The SSL certificate was not issued, has expired, or is configured incorrectly | Check certbot certificates and the HTTPS config in nginx / Apache |
| No SSH access either | The server is down or the network is unavailable at the provider level | Use the hosting web console and check the VPS status in the panel |
| Empty response (white page) | The web server responds but does not know what to serve | Check the virtual host, document root, and whether an index file exists |
## Three typical scenarios — and how to handle them
Scenario 1: The site worked, but stopped after a server reboot
One of the most common cases. After the VPS reboots, the web server does not start automatically — because autostart was not enabled. Check whether the systemd unit is set to start on boot:
```bash
systemctl is-enabled nginx
```
If the answer is disabled, enable autostart and start the service:
```bash
systemctl enable nginx && systemctl start nginx
```
Also check all dependent services: PHP-FPM, MySQL or MariaDB, Redis — if your application needs them. They should all have the enabled status so they start after reboot without manual intervention.
Scenario 2: A new site on a new domain does not open
If you have just created the A record and configured the server, the site may not open simply because DNS has not propagated yet. In practice, this takes anywhere from a few minutes to a few hours. To confirm that the A record is already visible in public DNS, use dig with an explicit resolver:
```
dig @1.1.1.1 example.com A +short
```
If the IP is already correct, check whether port 80 is open on the server and whether the web server is running. New servers are often shipped with the firewall closed by default, and the virtual host for the domain must be created separately in the nginx or Apache config.
Scenario 3: The site does not open only over HTTPS
HTTPS requires a valid SSL certificate. If the certificate was not issued, has expired, or is configured incorrectly in the config, the browser will show a connection error. Check Certbot status:
```
certbot certificates
```
An expired certificate is renewed with certbot renew –force-renewal. If the certificate is issued and valid, but HTTPS still does not work, check the nginx config: there must be a server block for port 443 that points to the correct certificate and private key file paths. Port 443 must also be open in the firewall at both levels — system and infrastructure.
## Common mistakes during diagnosis
The first and most common mistake is making several changes at once. If the site starts working, it is impossible to know what actually fixed it. If things get worse, it is impossible to know what broke. Change one thing at a time and check the result after each step.
The second mistake is confusing the server IP with the IP the domain points to. Sometimes DNS is configured to point to the previous host's address, while the site has already moved. Run nslookup and compare the returned IP with the one shown in the current VPS control panel.
The third is forgetting about two independent firewall layers. UFW on the server and the security group at the provider's infrastructure level work separately. Even if UFW allows port 80, a rule in the control panel may block it — and vice versa. Both layers need to be checked.
The fourth is diagnosing only from your own browser. DNS cache, extensions, VPN, and corporate proxy settings can all distort the picture. For an independent check, use curl, nslookup with an external server, or online tools that test the site's availability from an independent location.
The fifth is ignoring logs. Most people check them last, even though that is where the exact explanation is usually written: "permission denied," "no such file," "upstream timed out." Logs are faster than guessing.
## Limits of diagnosis and when support is needed
The tools described above cover most typical situations, but there are cases where self-diagnosis hits a wall. If traceroute shows packets are being lost before the server is reached, the problem is at the provider level or in its infrastructure, and in that case you will need to contact support. The same applies to complete loss of network connectivity: if the server does not ping, SSH is unavailable, and the web console in the panel also does not open, the machine is probably down or there is an incident on the data center side.
Another limitation is mirrored issues at the BGP routing level: the site is unavailable only from certain regions or autonomous systems, while it opens normally from others. Such cases are rare, but hard to diagnose on your own — tools such as BGP.tools or the provider's Looking Glass are needed.
In such cases, it helps that a [VPS on Serverspace](https://serverspace.us/services/vps-server.md) is accessible through a web console even when SSH is completely unavailable — this lets you log into the server and begin diagnosing from the inside without waiting for support.
## Conclusion
When a site on a VPS does not open, panic is a poor advisor. Most problems can be solved in 10–15 minutes if you work methodically. Start with the network: does the server ping, does traceroute reach it. Then check the ports: is 80 or 443 open, what does nmap show from the outside and ss from the inside. Then DNS: does the IP from nslookup match the server's real address. And only after that check the web server itself: is it running, are there config errors, what do the logs say.
The commands ping, curl, ss, nslookup, dig, and systemctl status are the basic toolkit for diagnosing any availability problem. With them, you can handle most typical situations on your own without special knowledge or outside help.
## FAQ
**How can I quickly check whether a site is available from another country?**
Use online services such as ping.eu, host-tracker.com, or downforeveryoneorjustme.com. They test availability from servers in different regions and return results in a few seconds — no extra software required.
**How long does DNS propagation take after a change?**
It depends on the TTL value. With a TTL of 3600 seconds, changes usually spread in about 1–2 hours. With a TTL of 86400 (one day), the cache can persist for up to 48 hours. To speed things up next time, lower the TTL to 300–600 seconds in advance, a few hours before the change.
**What should I do if SSH access to the server disappears?**
Most cloud providers offer a web console — direct access to the server from the browser, bypassing SSH. Through it, you can run any commands: check network status, start stopped services, and read error logs. If the console is also unavailable, the server is probably down and you should contact the hosting provider's support.
**Why does the site open for me but not for other users?**
Most likely, this is DNS propagation: your resolver already sees the new records, while other users' DNS caches still hold the old ones. Check with dig using two public servers — 8.8.8.8 and 1.1.1.1. If both return the correct IP, the issue is caching for specific users and it will resolve on its own within a few hours.
**The firewall is off, the web server is running, DNS is correct — but the site still does not open. Where should I look?**
Check three things. First — which address the web server is listening on: if it is 127.0.0.1, it accepts only local connections. Second — SELinux or AppArmor: they may prevent the web server from reading files or connecting to sockets. Third — the security group rules in the cloud provider's control panel: the system firewall and the infrastructure firewall work independently.
**How do I make sure the domain's A record has updated globally?**
Use whatsmydns.net — it shows which IP DNS servers around the world return for your domain. If all locations show the correct IP, propagation is complete. If some still return the old address, you need to wait.
https://serverspace.us/about/blog/nvidia-rubin-everything-you-need-to-know-about-nvidias-next-generation-ai-platform.mdDiscover NVIDIA Rubin, the next-generation AI platform designed to succeed Blackwell. Learn about HBM4 memory, sixth-generation NVLink, the Vera CPU, and how Rubin will transform AI infrastructure, inference, and agentic AI workloads.
**The development of artificial intelligence requires ever-increasing computing power. While just a few years ago the primary use case for GPUs was training neural networks, today the industry faces a new challenge — scaling generative AI, agentic systems, and reasoning models.
**
It is precisely to address these challenges that NVIDIA introduced the Rubin platform — a new generation of AI accelerators that will succeed the Blackwell architecture.
In this article, we will explore what NVIDIA Rubin is, the technologies behind the new platform, and why it could transform the approach to building AI infrastructure.
## What Is NVIDIA Rubin?
Although Rubin is often referred to as a new GPU, this is not entirely accurate.
**NVIDIA Rubin is a comprehensive AI computing platform that integrates GPUs, CPUs, networking adapters, DPUs, and high-speed data transfer infrastructure.**
The platform is named after American astronomer Vera Rubin, whose research played a crucial role in the study of dark matter.
Rubin includes:
- NVIDIA Rubin GPUs;
- NVIDIA Vera processors;
- sixth-generation NVLink switches;
- ConnectX-9 SuperNIC network adapters;
- BlueField-4 DPUs;
- Spectrum-6 Ethernet networking solutions.
Instead of individual servers, NVIDIA proposes using data center-scale racks, where all components are optimized to work together from the ground up.
## Why NVIDIA Had to Move Beyond Traditional GPUs
Modern large language models contain hundreds of billions of parameters and process massive amounts of data.
The primary bottleneck is no longer the performance of individual accelerators, but the speed of data exchange between them.
Training and running next-generation models requires:
- enabling high-speed communication between GPUs;
- reducing inference latency;
- efficiently scaling workloads across thousands of accelerators;
- lowering the cost of generating a single token;
- optimizing data center energy consumption.
That is why Rubin is not a standalone GPU but a comprehensive platform designed for building so-called AI factories.
## Key Innovations in NVIDIA Rubin
### Next-Generation HBM4 Memory
Rubin will be one of NVIDIA’s first platforms to support HBM4 memory.
The new memory delivers significantly higher bandwidth compared to the HBM3E used in Blackwell.
For large language models, this means:
- faster inference;
- support for longer context windows;
- fewer accesses to external storage;
- improved efficiency for agentic systems.
### Third-Generation Transformer Engine
The new Transformer Engine introduces support for the NVFP4 compute format and hardware-based data compression. This increases compute density while reducing inference costs.
According to NVIDIA, Rubin delivers up to 10× lower token generation costs than Blackwell in certain use cases.
### Sixth-Generation NVLink
One of the key upgrades is **NVLink 6**.
Each Rubin GPU provides up to 3.6 TB/s of interconnect bandwidth between accelerators. In the NVL72 configuration, total bandwidth reaches 260 TB/s.
This approach enables dozens of GPUs to function as a single computing system.
### The New NVIDIA Vera Processor
Alongside Rubin, the company introduced the **Vera processor**, based on NVIDIA’s proprietary Arm architecture.
It features 88 compute cores and uses the NVLink-C2C interface to exchange data with GPUs.
Vera is responsible for task orchestration, data preparation, and auxiliary computations.
### Security and Reliability
Rubin introduces third-generation Confidential Computing and an updated RAS framework.
The new architecture provides:
- hardware-level data protection;
- isolated computing environments;
- automated hardware diagnostics;
- predictive failure detection.
This is especially important for enterprise AI systems that process sensitive information.
## Rubin vs. Blackwell: What’s Changed?
| Specification | Blackwell | Rubin |
| --- | --- | --- |
| Memory Type | HBM3E | HBM4 |
| Transformer Engine | 2nd generation | 3rd generation |
| Compute Format | FP4 / FP8 | NVFP4 |
| NVLink | 5th generation | 6th generation |
| CPU | Grace | Vera |
| Primary Use Case | Training and inference | Agentic AI and reasoning models |
| Inference Cost | Baseline | Up to 10× lower |
## When Will Rubin-Based Servers Become Available?
The first commercial systems powered by NVIDIA Rubin are expected in the second half of 2026.
Among the companies planning to adopt the new platform are leading cloud providers and AI companies:
- **AWS;**
- **Microsoft Azure;**
- **Google Cloud;**
- **Oracle Cloud;**
- **OpenAI;**
- **xAI;**
- **Anthropic;**
- **Mistral AI.**
Rubin is expected to become the foundation for the next generation of AI data centers.
## Where to Rent a GPU Server for AI Workloads Today
Although Rubin-based servers will not arrive for several years, many AI workloads can already be efficiently deployed in the cloud.
If you need to train neural networks, run large language models, generate images, or analyze large datasets, there is no need to invest in expensive hardware.
The Serverspace cloud platform allows you to quickly deploy a GPU server and access computing resources on a pay-as-you-go basis.
Benefits of renting GPUs in the cloud include:
- server deployment in minutes;
- hourly billing with no capital expenditure;
- flexible resource scaling;
- support for Docker, Kubernetes, and JupyterLab;
- convenient management through APIs and the control panel;
- rapid AI and machine learning project deployment.
Using cloud infrastructure allows teams to focus on developing models and applications instead of maintaining hardware.
## Conclusion
**NVIDIA Rubin** is not just another generation of GPUs.
The company is changing the very approach to building AI infrastructure, moving from standalone accelerators to fully integrated computing platforms.
New GPUs, HBM4 memory, sixth-generation NVLink, and Vera processors are designed to solve the biggest challenge in modern AI — efficiently scaling agentic systems and reasoning models.
Over the coming years, platforms like Rubin will become the foundation of next-generation AI factories, while competition among infrastructure providers will be determined not only by GPU performance but by the efficiency of the entire ecosystem.
https://serverspace.us/about/blog/teamspeak-server-installation-guide-2026-best-discord-alternative-for-gaming-vps-hosting.mdLearn how to install and configure a TeamSpeak server step by step. Discover the best Discord alternative for gamers, esports teams, and communities with low latency, full control, and VPS deployment via Serverspace cloud infrastructure.
**Although Discord remains one of the most popular voice communication platforms, many gaming communities, esports organizations, and businesses continue to choose TeamSpeak because of its exceptional stability, minimal latency, and complete infrastructure control. Unlike cloud-based communication platforms, TeamSpeak allows you to host your own server on a VPS or dedicated machine, giving you full ownership over voice traffic, user permissions, and stored data.**
This guide explains how to install and configure a TeamSpeak Server on Ubuntu 22.04 and Ubuntu 24.04. You’ll also learn how to secure the server, configure the firewall, manage the service with systemd, and troubleshoot common issues after deployment.
## Who is this guide for?
Whether you’re building a private voice server for friends or deploying enterprise communication infrastructure, this tutorial covers the complete installation process.
- Gaming communities migrating from Discord.
- Esports teams that require ultra-low latency voice communication.
- Businesses that prefer self-hosted communication infrastructure.
- Linux administrators deploying TeamSpeak on VPS or dedicated servers.
- Developers who need full control over server permissions and configuration.
## Why choose TeamSpeak instead of Discord?
Discord is an excellent solution for everyday communication, but TeamSpeak remains the preferred choice when performance, privacy, and server ownership are top priorities. Hosting your own TeamSpeak server provides complete control over data, network configuration, security policies, and permission management.
- Extremely low voice latency for real-time communication.
- High-quality audio even on unstable internet connections.
- Complete ownership of your server, data, and configuration.
- Advanced permission system with fine-grained access control.
- Low CPU and memory consumption.
- Self-hosting on VPS, dedicated servers, or private infrastructure.
- No dependence on third-party cloud services.
## Minimum system requirements
TeamSpeak has very modest hardware requirements and runs smoothly even on entry-level virtual servers. The following configuration is sufficient for most small and medium-sized communities.
| Requirement | Recommended Minimum |
| --- | --- |
| CPU | 1 vCPU |
| Memory | 1 GB RAM |
| Storage | 10 GB SSD or NVMe |
| Operating System | Ubuntu 22.04 LTS or Ubuntu 24.04 LTS |
| Network | Stable Internet connection with a public IP address |
For larger communities with hundreds of active users, allocating additional CPU resources and memory is recommended to ensure stable performance during peak activity.
**
| Port | Protocol | Purpose |
| --- | --- | --- |
| 9987 | UDP | Voice communication |
| 30033 | TCP | File transfers |
| 10011 | TCP | ServerQuery API |
## Step 1. Connect to the server via SSH
Connect to your Ubuntu server using SSH. Replace the example values with your own username and server IP address.
```bash
ssh username@your_server_ip
```
Once connected, update the operating system to install the latest security patches and package versions.
```bash
sudo apt update && sudo apt upgrade -y
```
Install the utilities required to download and extract the TeamSpeak Server archive.
```bash
sudo apt install wget bzip2 -y
```
Keeping the operating system updated before installing new software helps prevent compatibility issues and improves overall server security.
## Step 2. Create a dedicated TeamSpeak user
For security reasons, TeamSpeak should never run as the root user. Instead, create a dedicated system account with limited privileges.
```
sudo useradd -r -m -d /opt/teamspeak -s /bin/false teamspeak
```
This account owns the TeamSpeak files while preventing interactive shell access, reducing the potential attack surface.
Switch to the temporary directory before downloading the installation package.
```
cd /tmp
```
## Step 3. Download TeamSpeak Server
Before downloading the installation package, check the official TeamSpeak website to verify that you’re using the latest server release. Running the newest version ensures access to recent security updates, bug fixes, and performance improvements.
Download the archive:
```bash
wget https://files.teamspeak-services.com/releases/server/3.13.7/teamspeak3-server_linux_amd64-3.13.7.tar.bz2
```
Extract the downloaded archive.
```bash
tar xjf teamspeak3-server_linux_amd64-3.13.7.tar.bz2
```
Move all extracted files into the installation directory.
```
sudo mv teamspeak3-server_linux_amd64/* /opt/teamspeak/
```
Assign ownership of the installation directory to the dedicated TeamSpeak account.
```bash
sudo chown -R teamspeak:teamspeak /opt/teamspeak
```
The TeamSpeak Server files are now installed and ready for the initial configuration.
## Step 4. Accept the license agreement
Create a license confirmation file:
```
sudo -u teamspeak touch /opt/teamspeak/.ts3server_license_accepted
```
## Step 5. Create a systemd service
Create the service file:
```
sudo nano /etc/systemd/system/teamspeak.service
```
Add the following configuration:
```xml
Description=TeamSpeak Server
After=network.target
WorkingDirectory=/opt/teamspeak
User=teamspeak
Group=teamspeak
ExecStart=/opt/teamspeak/ts3server_startscript.sh start
ExecStop=/opt/teamspeak/ts3server_startscript.sh stop
PIDFile=/opt/teamspeak/ts3server.pid
Restart=always
RestartSec=15
[Install]WantedBy=multi-user.target
```
Save changes and run:
```bash
sudo systemctl daemon-reload
sudo systemctl enable teamspeak
sudo systemctl start teamspeak
```
Check service status:
```bash
sudo systemctl status teamspeak
```
## Step 6. Open required ports
If UFW is used, run:
```
sudo ufw allow 9987/udp
sudo ufw allow 30033/tcp
sudo ufw allow 10011/tcp
sudo ufw reload
```
## Step 7. Retrieve the admin token
On first startup, TeamSpeak generates a privileged token.
You can find it in the logs:
```
sudo journalctl -u teamspeak | grep token
```
Copy the generated token.
Open the TeamSpeak client and connect to the server:
```
IP_ADDRESS_OF_SERVER:9987
```
Then paste the admin token.
## Useful TeamSpeak management commands
| Action | Command |
| --- | --- |
| Start server | sudo systemctl start teamspeak |
| Stop server | sudo systemctl stop teamspeak |
| Restart server | sudo systemctl restart teamspeak |
| Check status | sudo systemctl status teamspeak |
| View logs | sudo journalctl -u teamspeak -f |
## TeamSpeak server security recommendations
- Disable root password login and use SSH keys instead.
- Regularly update the operating system and TeamSpeak to the latest versions.
- Open only necessary ports and close unused services.
- Restrict ServerQuery API access by IP address.
- Use strong passwords for administrator accounts.
- Regularly create backups of server configuration and database.
- Set up Fail2Ban to protect against brute-force attacks.
## Common TeamSpeak installation issues
### Server does not appear in the client
Check whether port 9987/UDP** is open in your firewall and cloud control panel.
### Cannot connect via ServerQuery
Ensure that port **10011/TCP** is accessible and not blocked by security rules.
### Admin token not displayed
Check service logs:
```
sudo journalctl -u teamspeak -n 100
```
### Service does not start after reboot
Check whether autostart is enabled:
```bash
sudo systemctl is-enabled teamspeak
```
If the output is **disabled**, enable it:
```bash
sudo systemctl enable teamspeak
```
## TeamSpeak vs Discord: which to choose
| Parameter | TeamSpeak | Discord |
| --- | --- | --- |
| Server hosting | Self-hosted or VPS | Discord cloud infrastructure |
| Data control | Full | Limited |
| Voice latency | Minimal | Depends on region |
| Permission system | Highly flexible | Basic |
| Resource requirements | Low | N/A |
| Launch cost | Requires VPS | Free |
**Discord is suitable for quick start and everyday communication, while TeamSpeak is the optimal choice for gaming communities, esports teams, and organizations that require stability, low latency, and full infrastructure control.**
## Deploy TeamSpeak on Serverspace cloud
If you want to launch your own voice server in minutes, use Serverspace cloud infrastructure.
- Create a virtual server in minutes.
- Pay-as-you-go billing.
- High-performance NVMe storage.
- Data centers in multiple regions worldwide.
- Preconfigured Linux templates.
- Scalable resources without data migration.
Simply create an Ubuntu server, connect via SSH, and follow this guide.
## Conclusion
TeamSpeak remains one of the best solutions for voice communication when stability, minimal latency, and full infrastructure control are important.
Setting up your own server takes less than 30 minutes, while cloud deployment eliminates the need for physical hardware and maintenance.
If you are looking for a Discord alternative for gaming communities, corporate teams, or esports projects, TeamSpeak is still an excellent choice.
https://serverspace.us/about/blog/counter-strike-2-community-setup-vps-server-discord-bot-website-stats-system-guide.mdLearn how to build a complete Counter-Strike 2 community using VPS hosting, dedicated servers, Discord bots, statistics websites, and backend architecture. Full technical guide for scalable CS2 infrastructure.
## Introduction
**Counter-Strike 2 (CS2)** remains one of the most popular competitive games in the world, and organized communities are increasingly looking for their own infrastructure to improve player experience.
This includes dedicated servers, Discord bots, statistics websites, and control panels — all hosted on VPS to ensure performance, stability, and scalability.
## Architecture of a modern CS2 community
- **CS2 Server**: main game environment hosted on a VPS
- **Discord Bot**: integration with matches, ranking, and administration
- **Community Website**: hub with statistics, players, and rules
- **Database**: storage for matches, users, and ranks
- **Backend API**: communication between server, bot, and website
## Infrastructure components comparison
| Component | Function | Common technologies | VPS requirements |
| --- | --- | --- | --- |
| CS2 Server | Host matches and community matchmaking | SteamCMD, Linux, Docker | High-frequency CPU, low latency, SSD |
| Discord Bot | Manage players, stats, and commands | Node.js, Python, Discord.js | Light CPU, moderate RAM |
| Statistics Website | Display rankings, history, and match data | React, Next.js, Laravel | Stable CPU + RAM |
| Database | Store community data | PostgreSQL, MySQL, Redis | Fast SSD, automated backups |
## CS2 Server on VPS
Hosting a Counter-Strike 2 server on a VPS allows full control over maps, rules, and performance.
Linux usage is highly recommended due to its stability and lower resource consumption.
Main advantages:
- Full environment control
- Low latency for players
- On-demand scalability
- Support for mods and plugins
## Discord bot for CS2 communities
A Discord bot is essential for automating tasks within the community:
- Automatic match registration
- Real-time rankings and leaderboards
- Server activity notifications
- Administrative commands
It typically connects to the backend via an API and may use WebSockets for real-time updates.
## How to Install a CS2 Server on Linux VPS
Deploying a Counter-Strike 2 dedicated server on a Linux VPS is a straightforward process that provides complete control over server settings and performance.
The typical deployment workflow includes:
- **Create a Linux VPS (Ubuntu or Debian are commonly used).**
- **Install SteamCMD.**
- **Download Counter-Strike 2 dedicated server files.**
- **Configure the server.cfg file.**
- **Open the required firewall and network ports.**
- **Start the server and verify player connectivity.**
Many administrators automate deployment and updates using shell scripts, Docker containers, or CI/CD pipelines.
## Website and statistics system
The community website acts as a central hub. It can include:
- Player profiles
- Match history
- ELO ranking or custom rating system
- Detailed statistics (K/D, HS%, wins)
This system usually depends on a robust backend and a database optimized for fast reads.
## Security Considerations for CS2 Infrastructure
Security is a critical aspect of any community infrastructure, especially when multiple services, databases, and administrative tools are connected to the internet.
Recommended security practices include:
- Enable firewall protection and restrict unnecessary ports.
- Use SSH keys instead of password authentication.
- Keep the operating system and software up to date.
- Perform regular backups of databases and configurations.
- Limit administrative access to trusted users.
- Monitor logs for suspicious activity.
Implementing these measures helps reduce the risk of unauthorized access, service disruptions, and data loss.
## Using Docker for CS2 Infrastructure
Docker has become a popular solution for managing gaming infrastructure because it simplifies deployment, maintenance, and scalability.
Benefits of using Docker include:
- Faster server provisioning
- Easy migration between VPS instances
- Consistent environments across deployments
- Simplified updates and rollbacks
- Improved infrastructure management
Many communities run backend services such as APIs, Discord bots, Redis, and PostgreSQL inside Docker containers while keeping the game server isolated for optimal performance.
## Monitoring and Maintenance
Continuous monitoring helps maintain server stability and identify performance issues before they affect players.
Popular monitoring solutions include:
- Prometheus
- Grafana
- Netdata
- Uptime Kuma
Key metrics to monitor include:
- CPU utilization
- Memory usage
- Network latency
- Packet loss
- Disk usage
- Server tick stability
Regular monitoring helps administrators optimize performance and ensure a smooth gaming experience for the community.
## Why use VPS for everything?
A VPS allows consolidating the entire infrastructure into a scalable and accessible environment.
For CS2 communities, this means less reliance on external services and greater technical control.
## Serverspace for CS2 infrastructure
Serverspace provides high-performance VPS ideal for hosting Counter-Strike 2 servers, Discord bots, and statistics systems.
With fast provisioning and on-demand scalability, you can start small and grow your community without migrating infrastructure.
The platform allows you to deploy servers in minutes with Linux support and custom configurations for gaming and backend applications.
## Recommended technical architecture for CS2 communities
To ensure stability and scalability, a CS2 community infrastructure should be split into independent services.
- **Game Server (CS2)** — handles matches and local matchmaking
- **Backend API** — centralizes user logic, rankings, and statistics
- **Discord Bot** — social interface and community automation
- **Frontend (website)** — public dashboard for stats and profiles
- **Database** — PostgreSQL or MySQL for data persistence
- **Cache layer** — Redis to reduce latency in rankings and queries
Separating these components into different services allows scaling only what is needed, reducing costs and improving overall performance.
## Performance optimization for CS2 servers on VPS
To ensure low latency and the best player experience, several technical points are essential:
- Use high-frequency CPU VPS (single-thread performance is critical)
- Prefer NVMe SSD for fast map and log loading
- Configure appropriate tickrate for competitive servers
- Isolate processes (game server separate from bot and backend)
- Continuous monitoring of CPU, RAM, and network
These practices help prevent lag, packet loss, and instability during peak usage.
## Scalability and community automation
As the community grows, automation becomes essential. Key strategies include:
- Automated deployment using Docker or CI/CD pipelines
- Load balancing across multiple CS2 servers
- Horizontal scaling of backend and API
- Real-time synchronization between Discord bot and database
- Centralized logging for player behavior analysis
With this approach, it is possible to support everything from small communities to competitive networks with multiple active servers simultaneously.
## CS2 Server Requirements on VPS
The required VPS resources depend on the number of players, server configuration, and tickrate settings.
| Server Size | CPU | RAM | Storage |
| --- | --- | --- | --- |
| 10 Players | 2 vCPU | 4 GB | 40 GB SSD |
| 20 Players | 4 vCPU | 8 GB | 60 GB SSD |
| 32 Players | 6–8 vCPU | 16 GB | 80+ GB NVMe SSD |
For competitive Counter-Strike 2 servers, CPU frequency is often more important than the total number of cores. Fast NVMe storage can also improve map loading times and overall server responsiveness.
## Conclusion
Building a modern Counter-Strike 2 community goes far beyond just a game server.
The integration of VPS, Discord bots, statistics websites, and backend systems creates a complete, scalable, and automated ecosystem.
With the right infrastructure, a simple community can evolve into a competitive and professional project.
https://serverspace.us/about/news/serverspace-expands-llm-selection-claim-25-off-new-models.mdMeet our expanded LLM lineup. Deploy next-gen models for AI bots, virtual assistants, docs, code, and APIs with 25% off. Use promo code LLM25.
Serverspace has expanded its lineup of available language models. Next-gen models from OpenAI, Anthropic, Google, xAI, Alibaba, DeepSeek, MiniMax, Zhipu AI, Tencent, and Moonshot AI are now available in the control panel.
This update allows you to choose the ideal model for your project’s requirements and test drive different approaches: compare response quality, processing speed, and real-world performance.
To make trying out these new models even better, use promo code **LLM25**. It gives you a 25% discount on LLM tokens for 3 months from the date of activation**.**
### **Added Models**
| Models | What's New & Highlights |
| --- | --- |
| GPT-5.5 | Improved agentic coding, tool use, and data analysis capabilities. |
| Claude Opus 4.8 Claude Sonnet 4.6 | Enhanced coding, agentic tasks, tool use, and long-context performance. |
| Gemini 3.5 Flash Gemini 3.1 Pro Preview | Updated Flash and Pro pipelines for coding tasks and agentic workflows. |
| Grok 4.3 Grok Build 0.1 | Added support for tool calling, reasoning, and autonomous agent workflows. |
| Qwen 3.7 Max | Upgraded code generation, autonomous agentic tasks, and pipeline efficiency. |
| DeepSeek V4 Pro DeepSeek V4 Flash | Introduced V4 Pro and V4 Flash featuring MoE architecture and expanded context windows. |
| Minimax M3 | Added MiniMax Sparse Attention, multimodal capabilities, and up to a 1M-token context window. |
| GLM 5.1 | Boosted agentic coding and long-horizon tasks. |
| Hy3 | Improved inference efficiency and agentic workflows. |
| Kimi K2.6 | Enhanced coding scenarios, tool use, and agentic tasks. |
This expanded selection provides greater flexibility for your LLM integrations: you can deploy a powerful model for complex logic and coding, or choose a high-speed one for live chats, bulk queries, and large-scale data processing.
Use these next-gen models for a wide variety of AI workflows:
- Launch AI bots and internal virtual assistants;
- Connect models to your websites, apps, and APIs;
- Process documents and structure unstructured data;
- Analyze support tickets and user feedback;
- Work with copy, source code, and agentic tasks.
### **How to get your discount on LLM tokens**
Activate promo code **LLM25** in the Serverspace control panel and get a 25% discount on LLM tokens for 3 months from the moment of activation.
Here is how to do it:
- Go to the **“Finances”** section.
- Click **“Top up balance”**.
- Open the **“Promo code”** section.
- Enter promo code **LLM25** and activate it.
Once activated, your discount will remain valid for 3 months. Use it to test drive the new models, deploy more AI-driven tasks, or integrate our LLM service into your project for the first time.
**Important**: This promotion for LLM tokens ends July 5, 2026.
The new models are already live in the [Serverspace control panel](https://my.serverspace.us/gpt?pid=559208). Choose your model, activate promo code **LLM25**, and start leveling up your projects with our LLM service today.
https://serverspace.us/support/help/how-to-build-ai-workflows-with-claude-for-automation-and-customer-support.mdLearn how to create AI workflows with Claude using API integrations, Python automation, CRM connections, and customer support scenarios. Build scalable AI-powered business processes.
**Claude by Anthropic** has quickly become one of the leading tools for automating business processes and customer support. Thanks to its large context window, high-quality text generation, and convenient API, the model is well suited for building AI workflows — automated scenarios in which artificial intelligence processes requests, analyzes data, and interacts with external services.
Such workflows are already being used in customer support, CRM systems, Telegram bots, document processing, and internal company tools. Instead of handling repetitive tasks manually, AI can independently classify requests, generate responses, create tasks, and assist employees in daily operations.
In this guide, we will explore how to create AI workflows using Claude, what tools are needed for automation, and how to build your own interaction scenario between AI and external services.
## **What Is an AI Workflow**
An AI Workflow is a sequence of automated actions where artificial intelligence performs part of the work instead of a human.
The simplest example looks like this:
- the user sends a message;
- Claude analyzes the request;
- determines the category of the issue;
- creates a task or ticket;
- sends a response to the user;
- notifies an employee if necessary.
In practice, workflows can be much more complex: integrating with CRM systems, working with databases, generating reports, and interacting with APIs of external services.
## **Why Claude Is Used for Automation**
Claude is well suited for AI automation thanks to its combination of response quality and integration capabilities.
Key advantages:
| Feature | Benefit for Workflows |
| --- | --- |
| Large context window | Analysis of long conversations, documents, and instructions |
| High-quality text generation | More natural responses for users |
| API integrations | Connection to CRM systems, chats, and internal services |
| Instruction following | Creation of stable model behavior scenarios |
| Data analysis | Classification and processing of information |
## **Where AI Workflows Are Used**
Automation scenarios with Claude are suitable for almost any business.
One of the most common use cases is customer support automation. Claude can automatically answer frequently asked questions, sort incoming requests, determine ticket priority, prepare replies for operators, and create helpdesk tickets. This reduces the workload on support teams and speeds up response times for users.
Another major area is content automation.Claude can generate product descriptions, create article drafts, translate texts, prepare email campaigns, and generate reports. This allows companies to automate repetitive content-related tasks and significantly speed up production workflows.
Claude is also effective for document processing. The model can analyze PDF files, extract structured data, search for specific information, summarize large documents, and process internal instructions. Such workflows are especially useful for companies that work with large amounts of text and documentation on a daily basis.
## **How an AI Workflow Works**
Most AI workflows follow a similar structure:
- Receiving data from a user or service
- Sending the request to the Claude API
- Analyzing and generating the result
- Performing an action in an external system
- Returning a response to the user
Example of a simple chain:
```
Telegram → Claude API → CRM → Response to the user
```
In real-world projects, task queues, databases, monitoring systems, and additional validation layers may be added between these stages.
## **What You Need to Build a Workflow**
For basic AI automation, you will need:
- Claude API;
- a server or cloud infrastructure;
- webhooks for event processing;
- a database;
- integrations with external services.
The backend part of the workflow is convenient to host in the cloud. For example, [Serverspace](https://serverspace.us/index.md) allows you to quickly deploy VPS instances for Python, Node.js, or container infrastructure.
## **Getting a Claude API Key**
To integrate Claude, you need an API key.
Main steps:
- Register with Anthropic
- Create an API Key
- Store the key in environment variables
- Connect via SDK or HTTP API
Example environment variable:
```
export ANTHROPIC_API_KEY="your_api_key"
```
After that, you can connect to the API using Python, Node.js, or any other programming language.
## **Example AI Workflow in Python**
Let's look at a simple scenario: a user sends a message, and Claude automatically generates a response.
Install the library:
```bash
pip install anthropic
```
Example Python code:
```xml
from anthropic import Anthropic
client = Anthropic(
api_key="YOUR_API_KEY"
)
response = client.messages.create(
model="claude-sonnet-4-0″,
max_tokens=300,
messages=[
{
"role": "user",
"content": "Write a short reply to a customer about their order status"
}
]
)
print(response.content[0].text)
```
This code can be integrated into:
- Telegram bots;
- CRM systems;
- helpdesk platforms;
- email services;
- internal company portals.
## **Automating Customer Support**
One of the most popular scenarios is AI-powered support.
A typical workflow looks like this:
```
Customer → Claude → Request Classification → Response / Escalation
```
For example:
| Request Type | Workflow Action |
| --- | --- |
| FAQs and standard questions | Automatic response |
| Payment issues | Create a ticket and notify an operator |
| Technical problems | Forward to technical support |
| Complaints and negative feedback | Escalate to a human employee |
Such workflows help reduce support workload and speed up request processing.
## **How to Write Effective Prompts**
Workflow quality directly depends on the instructions given to the model.
Example system prompt:
```
You are a customer support assistant.
Reply briefly and politely.
If the issue is payment-related, ask for the order number.
If the user is upset, use a calm tone.
```
The more detailed the rules and restrictions are, the more stable the automation becomes.
## **Integrations with External Services**
Claude can be connected to various platforms:
- Telegram;
- Slack;
- Notion;
- Jira;
- HubSpot;
- Google Sheets.
The most commonly used tools for integrations are:
- FastAPI;
- Flask;
- Node.js;
- Zapier;
- n8n.
No-code platforms make it possible to build workflows quickly without full-scale backend development.
## **Common Mistakes When Building AI Workflows**
The same issues often appear during AI automation implementation.
| Problem | Cause | Solution |
| --- | --- | --- |
| Inconsistent model responses | Prompt is too vague | Add clear instructions and constraints |
| JSON parsing errors | The model returns arbitrary text | Explicitly require JSON output format |
| High API costs | Overly long prompts and context | Reduce message history and token usage |
| Slow response times | Complex workflows and large requests | Add task queues and caching |
| Sensitive data leaks | Sending unnecessary information to the model | Filter and anonymize data |
## **FAQ**
**Can Claude be used for free?**
Anthropic provides limited free access, but production scenarios usually require a paid API plan.
**Is Claude suitable for chatbots?**
Yes. Claude is widely used for Telegram bots, customer support, and internal AI assistants.
**Do I need programming skills?**
Simple workflows can be built with no-code tools like Zapier or n8n, but more advanced scenarios usually require Python or JavaScript.
**Can Claude be connected to a CRM?**
Yes. Claude can be integrated with almost any CRM system via API and webhooks.
**Which programming language is best for AI workflows?**
Python is the most commonly used option thanks to its convenient libraries and large number of integration examples.
## **Conclusion**
Claude makes it possible to build полноценные AI workflows for customer support automation, data processing, and internal business operations. Even simple scenarios can significantly reduce repetitive tasks and improve interaction speed with users.
The main strength of AI automation is flexibility. Claude can be integrated with CRM systems, chats, databases, and corporate services, turning the model from a simple chatbot into a full-featured automation tool.
At the same time, it is important to pay attention to prompt engineering quality, data security, and output validation. When implemented correctly, AI workflows can become a reliable part of a company's infrastructure and business processes.
https://serverspace.us/support/help/windows-dns-commands-cheat-sheet.mdExplore the essential cheat sheet for ipconfig, nslookup, and PowerShell commands to troubleshoot, flush cache, and automate your cloud network workflows.
**Windows DNS by Microsoft** has quickly become a fundamental tool for network service automation and resource management. Thanks to its robust CLI integration and the power of PowerShell, it is ideal for creating stable network workflows where the system handles name resolution, cache management, and connectivity diagnostics.
Such workflows are essential for cloud infrastructure, DevOps pipelines, and server administration. Instead of manual configuration, administrators can use commands to automate record verification, flush outdated data, and ensure seamless interaction between services.
In this guide, we will examine how to manage Windows DNS using the command line, what tools are required for automation, and how to build your own network diagnostic scenarios.
## **What is a DNS Workflow**
A DNS Workflow is a sequence of automatic actions where the operating system or a script performs network tasks on behalf of a human.
A simple example looks like this:
- a service attempts to connect to a domain;
- the Windows DNS Client checks the local cache;
- if the record is missing or expired, it queries a DNS server;
- the system validates the response (e.g., checks the IP or MX record);
- if necessary, the script notifies the administrator of a resolution failure.
## **Why Use Windows CLI for DNS Management**
Windows provides powerful built-in utilities that are perfect for infrastructure automation and deep diagnostics.
Main advantages:
| Feature | Benefit for Workflow |
| --- | --- |
| Local Cache Control | Instant clearing of stale records via ``` ipconfig ``` |
| Advanced Diagnostics | Direct querying of specific record types (MX, TXT, AAAA) |
| PowerShell Integration | Ability to pipe DNS results into other automation scripts |
| Zero Cost | Built-in tools that do not require third-party licenses |
## **Terminology**
Before diving into the commands, we should briefly explain the key terms:
- **DNS Cache** — a temporary database in the OS memory that stores recently resolved domain names.
- **TTL (Time to Live)** — a setting that tells the resolver how long to cache a record.
- **Recursive Query** — a request where the DNS server does all the work to find the final IP.
- **PTR Record** — used for reverse lookups (finding a domain name by its IP address).
## **How DNS Resolution Works in Windows**
The resolution process follows a predictable hierarchy:
- Checking the local
```
hosts
```
file.
- Searching the local DNS Client cache.
- Querying the primary and secondary DNS servers configured on the adapter.
- Returning the result to the application or service.
A typical chain:
```
Application → hosts → Local Cache → Cloud DNS → Final Result
```
## **Practical Instructions: DNS Command Cheat Sheet**
### **1. Managing Cache with ipconfig**
We use
```
ipconfig
```
for fast, everyday maintenance of the local resolver.
**Flushing the DNS Cache**
We recommend running this command whenever you change a domain’s IP address:
```
ipconfig /flushdns
```
**Viewing the Current Cache**
Use this to see exactly what records the OS is holding in its memory:
```
ipconfig /displaydns
```
### **2. Deep Diagnostics with nslookup**
The
```
nslookup
```
utility allows us to bypass the local cache and query servers directly.
**Verifying an A-Record**
```
nslookup serverspace.io
```
**Checking Mail Servers (MX Records)**
```
nslookup -type=mx google.com
```
**Querying via a Specific Server**
To see how the Cloudflare DNS (1.1.1.1) perceives your domain:
```
nslookup mydomain.com 1.1.1.1
```
### **3. Modern Automation: PowerShell DnsClient**
For complex scripts, we advise using PowerShell cmdlets for more structured output.
**Resolving a Name**
```
Resolve-DnsName -Name serverspace.io
```
**Viewing Configured DNS Servers**
```
Get-DnsClientServerAddress
```
## **Common DNS Troubleshooting**
| Issue | Cause | Solution |
| --- | --- | --- |
| Request Timed Out | Network blockage or server is down | Check firewall rules and ping the DNS IP |
| NXDOMAIN Error | Domain does not exist or typo in FQDN | Verify domain registration and spelling |
| Old Data Appearing | Stale cache or long TTL | Execute ``` ipconfig /flushdns ``` |
## **FAQ**
**Is it possible to use these commands on Windows Home?**
Yes. These tools are included in all Windows editions, including Home, Pro, and Server.
**Why is my browser not showing updated records?**
Modern browsers often have their own internal DNS cache. You may need to clear your browser history or restart it.
**How do I find a PTR record?**
Simply type
```
nslookup [IP_Address]
```
to perform a reverse lookup.
**Does ServerSpace provide its own DNS?**
Yes. When using ServerSpace VPS, your servers are typically pre-configured to use high-performance local resolvers.
## **Conclusion**
We have covered the essential Windows DNS commands that form the backbone of network diagnostics and automation. By integrating these tools into your daily workflow, you can ensure the high availability of your services and quickly resolve any connectivity issues.
In the ServerSpace cloud environment, mastering these commands allows you to build reliable infrastructures and maintain seamless communication between your virtual servers and the global web. Always remember to verify your results after flushing the cache to ensure you are seeing the most recent network data.
https://serverspace.us/support/help/how-to-fix-zabbix-agent-not-available-error-causes-troubleshooting-solutions.mdLearn how to fix the Zabbix Agent Not Available error. Troubleshoot connection issues, firewall settings, port 10050, hostname mismatches, DNS problems, and Zabbix Agent configuration on Linux and Windows.
**Zabbix Agent Not Available** is one of the most common errors in **Zabbix**, where the monitoring server cannot retrieve data from the agent on the host. As a result, the node becomes unavailable, metrics stop updating, and the interface displays an agent unavailable message.
In most cases, the issue is related to the network, firewall, incorrect agent configuration, or hostname configuration errors. Sometimes DNS issues, SELinux, or version compatibility problems may also cause the error.
In this guide, we will explain what causes the Zabbix Agent Not Available error, how to diagnose it, and which methods help restore monitoring functionality quickly.
## **What Does the Zabbix Agent Not Available Error Mean?**
The error occurs when the Zabbix server cannot connect to the agent or retrieve data from it.
Usually, this means:
- the agent is not running;
- port 10050 is closed;
- the Server parameter is configured incorrectly;
- the hostname does not match;
- the firewall blocks the connection;
- there are DNS issues.
By default, Zabbix Agent uses port **10050/TCP**.
## **Quick Troubleshooting**
If Zabbix Agent becomes unavailable, first check the following:
- Whether zabbix-agent is running
- Whether port 10050 is open
- Whether the Hostname matches
- Whether the correct Server parameter is configured
- Whether the server can connect to the agent
## **Checking Zabbix Agent Status**
The first thing you should verify is whether the agent is running.
### **Linux**
```bash
systemctl status zabbix-agent
```
If the service is stopped:
```bash
sudo systemctl start zabbix-agent
sudo systemctl enable zabbix-agent
```
### **Windows**
Open:
```
services.msc
```
Find the **Zabbix Agent** service and make sure it is in the Running state.
## **Checking Port 10050**
Zabbix Agent must listen on TCP port 10050.
### **Linux**
```
ss -tulnp | grep 10050
```
or:
```
netstat -tulnp | grep 10050
```
If the port is not displayed, the agent is either not running or configured incorrectly.
### **Testing Connectivity from the Zabbix Server**
```
telnet HOST_IP 10050
```
or:
```
nc -zv HOST_IP 10050
```
If the connection cannot be established, the issue is usually related to the firewall or network.
## **Firewall Blocks the Connection**
Very often, the error appears because port 10050 is blocked.
### **UFW**
```
sudo ufw allow 10050/tcp
```
### **firewalld**
```
sudo firewall-cmd –permanent –add-port=10050/tcp
sudo firewall-cmd –reload
```
### **iptables**
```
iptables -A INPUT -p tcp –dport 10050 -j ACCEPT
```
## **Checking the Server Parameter**
The agent configuration must contain the IP address of the Zabbix server.
The configuration file is usually located here:
```
/etc/zabbix/zabbix_agentd.conf
```
Check the following parameters:
```
Server=192.168.1.10
```
If Active Agent is used:
```
ServerActive=192.168.1.10
```
After making changes, restart the agent:
```bash
systemctl restart zabbix-agent
```
## **Hostname Issues**
One of the most common causes of the error is a hostname mismatch.
The parameter:
```
Hostname=web-server-01
```
must match the host name configured in the Zabbix web interface.
If the names differ, the server will not be able to correctly associate agent data with the monitoring host.
## **DNS Issues**
If a hostname is used instead of an IP address:
```
Server=zabbix.local
```
make sure DNS works correctly.
Check it with:
```
ping zabbix.local
nslookup zabbix.local
```
## **SELinux Blocks Zabbix Agent**
On some Linux systems, SELinux may block agent connections.
Check SELinux status:
```
getenforce
```
To temporarily disable SELinux for testing:
```
setenforce 0
```
If the agent starts working afterward, SELinux policies will need to be configured properly.
## **Table of Causes and Solutions**
| Problem | Cause | Solution |
| --- | --- | --- |
| Host unavailable | Agent is stopped | Start zabbix-agent |
| Connection refused | Port 10050 is closed | Open the port in the firewall |
| Timeout | Network issues | Check routing and firewall |
| Agent unavailable | Incorrect Server parameter | Specify the correct Zabbix server IP |
| No data | Hostname mismatch | Synchronize the hostname |
| Cannot resolve hostname | DNS error | Check DNS records |
## **How to Check the Agent Manually**
On the Zabbix server, run:
```
zabbix_get -s HOST_IP -k system.hostname
```
If the agent responds, you will receive the server hostname.
Example:
```
web-server-01
```
If there is no response, the issue is related to connectivity or agent configuration.
## **Checking Zabbix Agent Logs**
Logs help quickly identify the source of the problem.
### **Linux**
```
tail -f /var/log/zabbix/zabbix_agentd.log
```
### **Windows**
Logs are usually located here:
```
C:\Program Files\Zabbix Agent\zabbix_agentd.log
```
Common errors include:
```
connection refused
cannot resolve hostname
active check configuration update failed
```
## **Running Zabbix in the Cloud**
For stable monitoring, it is important to use reliable server infrastructure. Zabbix can be deployed both on a dedicated VPS and in the cloud.
For example, **[Serverspace](https://serverspace.us/index.md) **allows you to quickly deploy a cloud server for Zabbix with Linux, Docker, or container infrastructure. This is convenient for building a monitoring stack, configuring redundancy, and scaling monitoring infrastructure without complex physical hardware administration.
## **How to Prevent the Zabbix Agent Not Available Error**
To reduce the chance of this issue occurring:
- use configuration templates;
- automate setup with Ansible or Terraform;
- monitor firewall rules;
- keep hostnames consistent;
- monitor the Zabbix Agent itself.
Example trigger:
```
nodata(/host/system.uptime,5m)=1
```
## **FAQ**
**Why does Zabbix Agent become unavailable periodically?**
Most often, the issue is related to unstable networking, firewall rules, high server load, or agent restarts.
**Which port does Zabbix Agent use?**
By default:
- Zabbix Agent — 10050/TCP;
- Zabbix Server — 10051/TCP.
**What is better — Active or Passive checks?**
Active checks are more convenient for servers behind NAT and firewalls because the agent sends data to the server itself.
**Can the issue be related to Docker?**
Yes. If the agent runs inside a container, you should check port mapping, network mode, and connectivity to the Zabbix server from the container.
**Should port 10050 be exposed to the internet?**
No. It is better to restrict access only to the monitoring server IP address.
## **Conclusion**
The Zabbix Agent Not Available error is usually related to networking, firewall rules, or incorrect agent configuration. In most cases, the issue can be resolved by checking the service status, port 10050 availability, Server and Hostname parameters, and agent logs.
A consistent troubleshooting approach helps quickly restore monitoring functionality and prevent the issue from recurring in the Zabbix infrastructure.
https://serverspace.us/support/help/how-to-install-python-on-ubuntu-26-04-step-by-step-guide-with-pip-virtual-environment.mdLearn how to install Python on Ubuntu 26.04 step by step. Includes pip setup, virtual environments, quick commands, troubleshooting tips, and best practices for developers.
Getting Python running on a fresh Ubuntu 26.04 server is usually one of the first things you do before starting any real development work. Whether you're deploying a web app, running automation scripts, or setting up a backend service, a clean Python environment is the foundation.
On Ubuntu, the process is usually quick, but there are a few things worth doing properly from the start — especially if you plan to work with virtual environments or deploy projects to production.
## Before you start: check if Python is already installed
Most Ubuntu 26.04 installations already include Python 3. The first step is simply to confirm it:
```
python3 –version
```
If you see a version number, Python is already available. If not, you'll install it in the next step.
## Install Python on Ubuntu 26.04
Start by updating your package list. This avoids dependency issues later:
```bash
sudo apt update && sudo apt upgrade -y
```
Now install Python 3:
```bash
sudo apt install python3 -y
```
Check the installation:
```
python3 –version
```
At this point, Python is ready to use.
## Install pip (you will need it almost immediately)
If you plan to install any Python libraries (Flask, Django, requests, etc.), pip is required.
Install it with:
```bash
sudo apt install python3-pip -y
```
Verify:
```
pip3 –version
```
## Set up a proper development environment
Using the system-wide Python installation for application development is discouraged because it couples project dependencies with OS-level packages, which can lead to version conflicts and unstable behavior during updates. A more reliable approach is to isolate each project in its own environment using Python virtual environments.
Start by installing the required system packages for environment management and package compilation:
```bash
sudo apt install python3-venv python3-dev build-essential -y
```
This provides:
- venv for creating isolated Python environments
- development headers required for building native extensions
- compiler toolchain for packages that include C/C++ bindings
## Real-world example: setting up a small Python project
Let's say you want to quickly test a simple web service on your Ubuntu server.
After activating your virtual environment:
```bash
pip install flask
```
Create a file:
```
nano app.py
```
Add a minimal Flask app:
```python
from flask import Flask
app = Flask(name)
@app.route("/")
def home():
return "Python is running on Ubuntu 26.04"
if name == "main":
app.run(host="0.0.0.0″, port=5000)
```
Run it:
```bash
python app.py
```
Now you have a working Python service running on your server. This is often the first step before deploying something more serious.
## Why developers use Serverspace for Python projects
When you're working with Python on Ubuntu, local machines are not always the best option — especially if you're testing deployments, APIs, or background services.
With [Serverspace](https://serverspace.us/index.md), you can spin up a ready Ubuntu VPS in minutes and work exactly like you would on a production server.
Typical workflow looks like this:
- Create an Ubuntu 26.04 VPS in the Serverspace control panel
- Connect via SSH and install Python (same steps as above)
- Deploy your project or test environment
- Scale resources when needed without downtime
If you're working with web apps or automation tools, it's often easier to develop directly on a VPS instead of syncing between local and server environments.
You can explore more about cloud infrastructure and deployment options here:
[https://serverspace.us/services/cloud-servers/](https://serverspace.us/services/cloud-servers.md)
## Common issues (and what actually fixes them)
**Python command not found**
On Ubuntu, the command is usually python3 instead of python.
If you want python to point to python3:
```bash
sudo apt install python-is-python3
```
**pip is installed but not working**
This usually happens when pip is installed for a different Python version. Try:
```
python3 -m pip –version
```
**Virtual environment not activating**
Most of the time it's just missing permissions or wrong folder. Make sure you are inside your project directory:
```
cd my-project
source venv/bin/activate
```
**Old Python version from repositories**
Ubuntu repositories sometimes lag behind official Python releases. If you need a newer version, consider:
compiling from source
using a version manager like pyenv
## Conclusion
Installing Python on Ubuntu 26.04 is straightforward, but the real value comes from setting it up properly — using pip, isolating environments, and keeping projects structured.
Once your environment is ready, you can move on to building APIs, automation scripts, or full backend services without worrying about system conflicts.
If you're deploying to production or testing real-world workloads, using a VPS from **[Serverspace](https://serverspace.us/index.md) **is often the most practical next step.
https://serverspace.us/support/help/how-to-set-up-a-vps-from-scratch-complete-step-by-step-guide-for-beginners.mdLearn how to set up a VPS from scratch with this beginner-friendly step-by-step guide. Configure SSH, firewall, Docker, backups, SSL, and secure your Linux VPS with ease.
Deploying a VPS from scratch is one of the core tasks in modern infrastructure management. Unlike shared hosting environments, a VPS provides isolated compute resources, root-level access, customizable networking, and full control over the operating system stack.
A clean VPS can be used for a wide range of workloads:
- **Web applications and APIs**
- **Containerized environments with Docker**
- **Self-hosted databases and services**
- **Game servers and backend infrastructure**
- **CI/CD pipelines and automation tools**
- **Development and staging environments**
However, a newly deployed server is rarely production-ready out of the box. Initial configuration typically includes system updates, SSH hardening, firewall configuration, user management, package installation, backup setup, and service deployment.
In this guide, we will go through the full VPS initialization workflow step by step — starting with operating system selection and ending with a secured, deployable Linux environment ready for real workloads.
A VPS is typically used when you need more control, flexibility, and performance than regular shared hosting can provide. Developers and companies use VPS servers to run applications, host websites, manage backend services, automate workflows, and create isolated environments for different projects.
Common VPS use cases include:
- **Hosting websites, APIs, and web applications**
- **Running Docker containers and self-hosted services**
- **Deploying multiplayer or dedicated game servers**
- **Managing databases and storage services**
- **Creating private VPNs or remote work environments**
- **Building CI/CD pipelines and automation systems**
- **Testing software in isolated Linux environments**
Compared to dedicated servers, VPS hosting is cheaper, faster to deploy, and easier to scale.
## Quick VPS Setup Checklist
| Step | What to Do | Why It Matters |
| --- | --- | --- |
| 1 | Choose VPS provider | Infrastructure quality affects performance and uptime |
| 2 | Select OS | Linux distributions differ in package management and stability |
| 3 | Connect via SSH | Main way to manage the server remotely |
| 4 | Update packages | Installs latest security patches |
| 5 | Create non-root user | Improves security |
| 6 | Configure firewall | Protects server ports |
| 7 | Install required software | Web server, Docker, database, etc. |
| 8 | Configure backups | Prevents data loss |
| 9 | Monitor server | Helps detect issues early |
## Step 1. Choose a VPS Provider
The first step is selecting a VPS provider with stable infrastructure, flexible scaling, and fast deployment.
One option is [Serverspace](https://serverspace.us/index.md) — a cloud platform that allows you to deploy virtual servers in just a few minutes.
Some useful features include:
- Fast VPS deployment
- Hourly billing
- Data centers in multiple regions
- Preconfigured Linux and Windows templates
- API and Terraform support
- Built-in snapshots and backups
- Flexible scaling without long-term contracts
For beginners, the ability to quickly redeploy or resize a VPS is especially useful during testing and learning.
## Step 2. Deploy Your VPS
After registering with your provider, create a new virtual server.
Typical parameters:
| Setting | Recommended Choice |
| --- | --- |
| OS | Ubuntu Server LTS |
| CPU | 1–2 vCPU |
| RAM | 2–4 GB |
| Storage | SSD/NVMe |
| Authentication | SSH key preferred |
| Location | Closest to your users |
Once deployment finishes, you will receive:
- Public IP address
- Root username
- Password or SSH access
## Step 3. Connect to the VPS via SSH
On Linux or macOS:
```bash
ssh root@YOUR_SERVER_IP
```
On Windows, you can use:
- PowerShell SSH
- PuTTY
- Windows Terminal
After login, you should see a terminal prompt from your server.
## Step 4. Update the System
Before installing anything else, update system packages.
For Ubuntu/Debian:
```bash
apt update && apt upgrade -y
```
For Rocky Linux / AlmaLinux:
```bash
dnf update -y
```
This installs security patches and latest package versions.
## Step 5. Create a New User
Running everything under root is not recommended.
Create a separate user:
```
adduser adminuser
```
Add the user to the sudo group:
```
usermod -aG sudo adminuser
```
Now reconnect using the new account:
```bash
ssh adminuser@YOUR_SERVER_IP
```
## Step 6. Configure SSH Security
Basic SSH hardening significantly improves server security.
Open SSH configuration:
```
nano /etc/ssh/sshd_config
```
Find and change:
```
PermitRootLogin no
```
If you use SSH keys:
```
PasswordAuthentication no
```
Restart SSH:
```bash
systemctl restart ssh
```
## Step 7. Configure a Firewall
Ubuntu usually includes UFW.
Allow SSH:
```
ufw allow OpenSSH
```
Allow web traffic:
```
ufw allow 80/tcp
ufw allow 443/tcp
```
Enable firewall:
```
ufw enable
```
Check status:
```
ufw status
```
## Step 8. Install Required Software
The exact software depends on your project.
### Install Nginx
```bash
apt install nginx -y
```
Check service:
```bash
systemctl status nginx
```
### Install Docker
Docker is one of the most common tools on VPS environments.
Install Docker:
```bash
curl -fsSL https://get.docker.com | sh
```
Verify installation:
```bash
docker –version
```
Launch a test container:
```bash
docker run hello-world
```
## Step 9. Set Up Automatic Security Updates
Automatic updates help reduce security risks.
Install unattended upgrades:
```bash
apt install unattended-upgrades -y
```
Enable service:
```
dpkg-reconfigure unattended-upgrades
```
## Step 10. Configure Backups and Snapshots
Backups are often ignored until something breaks.
At minimum, configure:
- Scheduled snapshots
- Database backups
- Offsite backup storage
- Configuration backups
Platforms like [Serverspace](https://serverspace.us/index.md) provide snapshot functionality directly in the control panel, which simplifies recovery after failed updates or configuration mistakes.
## Step 11. Configure domain and SSL
If you are hosting a website:
- Point domain DNS records to your VPS IP
- Install SSL certificates
- Configure HTTPS
The easiest option is Let's Encrypt.
Install Certbot:
```bash
apt install certbot python3-certbot-nginx -y
```
Generate SSL certificate:
```
certbot –nginx
```
Certificates renew automatically.
## Step 12. Monitor your VPS
Monitoring helps identify problems before downtime occurs.
Useful monitoring tools:
| Tool | Purpose |
| --- | --- |
| htop | Resource monitoring |
| Netdata | Real-time monitoring dashboard |
| Zabbix | Infrastructure monitoring |
| Prometheus + Grafana | Metrics and visualization |
Example installation:
```bash
apt install htop -y
```
Run:
```
htop
```
## Why developers choose Serverspace
Modern cloud platforms simplify infrastructure management compared to traditional VPS hosting.
With **[Serverspace](https://serverspace.us/index.md)**, developers can deploy a ready-to-use VPS in minutes and scale resources whenever needed.
Typical workflow looks like this:
- **Create a VPS through the Serverspace control panel**
- **Connect via SSH**
- **Install required software and services**
- **Deploy applications or Docker containers**
- **Scale resources without downtime**
This is especially useful for:
- **Startups**
- **Developers**
- **Indie projects**
- **Test environments**
- **Game backend hosting**
You can explore cloud server options here:
[https://serverspace.us/services/cloud-servers/](https://serverspace.us/services/cloud-servers.md)
## FAQ
**How much memory should a VPS have?**
For small websites or test projects, 1–2 GB RAM is usually enough.
**Which Linux distro is the easiest for beginners?**
Ubuntu Server LTS is usually the easiest option due to extensive documentation and community support.
**Is Docker necessary on a VPS?**
No, but Docker simplifies deployments and dependency management.
**Should I disable root login?**
Yes. Using a separate sudo user improves security.
**Can I host multiple websites on one VPS?**
Yes. Nginx or Apache virtual hosts allow multiple websites on the same server.
**How often should I back up my VPS?**
Critical services should be backed up daily. Automated backups are strongly recommended.
## Conclusion
Setting up a VPS from scratch is one of the most valuable skills for developers, system administrators, and anyone working with modern infrastructure.
The basic workflow is always similar:
- Deploy the server
- Secure SSH access
- Configure firewall rules
- Install required services
- Enable backups and monitoring
Once the initial setup is complete, managing a VPS becomes much easier.
If you are deploying production workloads or testing real-world applications, using a VPS from **[Serverspace](https://serverspace.us/index.md)** can significantly simplify infrastructure management with fast deployment, flexible scaling, and cloud automation tools.
https://serverspace.us/support/help/how-to-install-debian-13-on-a-vps-step-by-step-guide-for-beginners-serverspace.mdLearn how to install Debian 13 on a VPS step by step. Easy guide for beginners with SSH setup, OS installation, and configuration tips. Deploy a Debian VPS in minutes with Serverspace cloud hosting.
Debian 13 (“**Trixie**“) is a stable, secure, and lightweight Linux distribution widely used for servers, cloud environments, web hosting, and containerized workloads. It is a strong choice for production VPS deployments due to its long-term stability and minimal resource usage.
In this guide, you will learn how to install Debian 13 on a VPS and prepare it for production in just a few minutes.
## Before You Start
Make sure you have the following ready:
- **Active VPS instance**
- **Access to your VPS control panel**
- **SSH credentials or SSH key prepared**
- **Backup of important data (if needed)**
## Quick Installation Table
| Step | Action | Description |
| --- | --- | --- |
| 1 | Log in | Access your VPS control panel |
| 2 | Open reinstall menu | Find "Reinstall OS" or "ISO / OS Images" |
| 3 | Select OS | Choose Debian 13 (Trixie) |
| 4 | Set credentials | Define root password or SSH key |
| 5 | Confirm installation | Start OS deployment |
| 6 | Wait for completion | VPS will install and reboot automatically |
| 7 | Connect via SSH | Use server IP and credentials |
## Step 1. Access Your VPS Panel
Log in to your VPS provider control panel and select the server where you want to install Debian 13.
## Step 2. Open OS Reinstallation Section
Navigate to the operating system management section such as **"Reinstall OS", "ISO Images", or "Operating System".**
## Step 3. Choose Debian 13 (Trixie)
From the list of available operating systems, select **Debian 13 (Trixie)** as your installation target.
## Step 4. Configure Access Credentials
Set a strong root password or (recommended) upload your SSH public key for more secure authentication.
## Step 5. Start Installation
Confirm the reinstallation process. The VPS will automatically format the disk and install a clean Debian 13 system.
## Step 6. Wait for Deployment
Installation usually takes 2-5 minutes. Once completed, the VPS will reboot automatically and become accessible via SSH.
## Step 7. Connect to Your Server
Connect via SSH:
```bash
ssh root@YOUR_SERVER_IP
```
Update the system immediately after first login:
```bash
apt update && apt upgrade -y && apt autoremove -y
```
Optional reboot:
```
reboot
```
## Post-Installation Security Setup (Recommended)
To prepare your VPS for production use, follow these best practices:
- Create a non-root user with sudo privileges
- Disable root SSH login
- Enable a firewall (UFW or nftables)
- Install essential tools
Example:
```bash
apt install curl sudo git ufw -y
```
## FAQ
**Is Debian 13 free to use?**
Yes, Debian is fully open-source and free for both personal and commercial use.
**Can I reinstall Debian later?**
Yes, you can reinstall or switch the operating system anytime from your VPS control panel.
**Is Debian 13 good for production servers?**
Yes, Debian is widely used in production environments due to its stability, security, and long-term support.
**Can I use Debian 13 for Docker?**
Yes, Debian is one of the most common base systems for Docker and containerized workloads.
**How long does installation take?**
Usually between 2-5 minutes depending on the VPS provider.
## Conclusion
Installing Debian 13 on a VPS is a fast and straightforward process. Within minutes, you get a clean and stable Linux environment ready for production workloads such as web applications, APIs, and containerized services.
Proper post-installation setup (users, firewall, updates) ensures your server is secure and production-ready.
## Deploy Debian 13 on Serverspace VPS
You can deploy a VPS with Debian 13 preinstalled using Serverspace cloud infrastructure. It provides a fast and flexible way to launch production-ready servers in minutes.
- Fast VPS provisioning in minutes
- Flexible CPU, RAM, and storage scaling
- Global data center locations
- Easy OS reinstallation anytime
Learn more:
[Serverspace Cloud Servers](https://serverspace.us/services/cloud-servers.md)
Start deploying your project immediately with a ready-to-use Debian 13 VPS.
https://serverspace.us/support/help/how-to-build-a-trading-bot-in-python-and-run-it-on-a-vps.mdLearn how to build a trading bot in Python from scratch and deploy it on a Linux VPS for 24/7 operation. Step by step ccxt tutorial, SMA strategy code, systemd setup, security and risk rules.
A trading bot is a program that watches a market, applies rules, and sends orders to an exchange through an API. People who want to know how to build a trading bot usually run into the same problem fast. Writing the strategy is one piece. Keeping it running 24/7 is another. Markets do not pause, and a laptop that goes to sleep at 2 a.m. misses every signal that happens overnight. This guide walks through the full path: pick a stack, choose a strategy, write a working example in Python, and deploy it on a Linux VPS so it runs without supervision. The goal is to show how to build a cryptocurrency trading bot you understand from top to bottom.
## What a Trading Bot Actually Does (and What It Does Not)
At its core, a trading bot is an execution system. It reads market data, runs the numbers, checks rules, and places orders. If the rules are weak, the bot will simply execute weak trades faster than a human could. Automation amplifies the strategy. It does not invent one.
Bots come in a few common shapes. Rule based bots follow fixed logic, like buying when RSI drops below 30. Signal based bots react to alerts from TradingView or other providers. AI assisted bots use machine learning models on top of standard indicators. Custom coded bots in Python give the most flexibility and are what most serious traders eventually move to. The category we cover in this how to build a trading bot tutorial is the custom coded one. A bot will not predict black swan events. It does exactly what its code says, on every tick. That predictability is the advantage and also the risk.
## Why Python and a VPS Form the Standard Stack for Automated Trading
Python became the default language for retail and institutional algo trading because the ecosystem is hard to beat. Pandas and NumPy handle time series data with very little code. Libraries like ccxt, alpaca-py, and ib_insync wrap exchange APIs into clean Python objects. TA-Lib and pandas-ta cover more than 150 technical indicators out of the box. C++ wins for high frequency trading where microseconds matter, but for the strategies most retail traders run, Python is fast enough and far more productive.
The second half of the stack is infrastructure. Crypto markets trade 24/7. Stock and futures markets still run during your sleep and your commute. A bot on a laptop competes with system updates, Wi-Fi drops, and a lid that closes when you leave the room. A virtual private server removes all of that. The bot runs on a remote Linux box with a stable connection, predictable resources, and uptime measured against an SLA.
Latency matters too. A VPS placed near the exchange data center cuts round trip time to a few milliseconds. For a Binance bot, a server in Tokyo or Frankfurt can reach the API in under two milliseconds. Cloud providers like [Serverspace](https://serverspace.us/services/vps-server.md) spin up a Linux VPS in under a minute in regions close to the major exchanges, which is enough infrastructure for most strategies that are not pure HFT.
## Five Trading Bot Strategies, Compared by Market Conditions
Before writing code, pick a strategy that matches the market you want to trade. Each approach has a personality. Trend followers love directional moves and suffer in chop. Mean reversion bots are the opposite. DCA bots ignore market timing entirely. The table below maps the five most common strategies to the conditions where each one tends to work.
| Strategy | How it works | Works best in | Pros | Cons |
| --- | --- | --- | --- | --- |
| Trend following (SMA crossover) | Buy when short SMA crosses above long SMA, sell on reverse cross | Strong directional moves | Simple logic, easy to backtest, catches big trends | Whipsaws in sideways markets, late entries and exits |
| Mean reversion (RSI) | Buy when RSI falls below 30, sell when it climbs above 70 | Range bound or sideways markets | Many trade opportunities, defined entry signals | Bleeds money in trending markets, hard stop losses essential |
| DCA | Buy a fixed amount on a fixed schedule, no timing | Long term accumulation, any market | Removes emotion, easy to automate, good for beginners | No edge over manual DCA, not a short term strategy |
| Grid trading | Place buy and sell orders at fixed price intervals | Low volatility, ranging markets | Profits from oscillation, no directional guess needed | Large drawdown if price breaks the range, capital intensive |
| Arbitrage | Exploit price gaps between exchanges or instruments | Fragmented markets with latency edges | Theoretically market neutral, no view on direction | Needs low latency, fees and transfer times kill thin spreads |
For this guide we will build an SMA crossover bot. The logic is the easiest to explain and to verify visually on a chart, which makes it a good first project. Once the pipeline works, swapping in RSI or another rule set is a small change.
## Choosing an Exchange and Connecting Through ccxt
The exchange you pick determines which API library to use. For crypto, ccxt is the practical default. It is a Python library that wraps more than a hundred exchanges behind the same interface, so the same code can talk to Binance, Coinbase, Kraken, Bybit, and OKX with only a one line change. This is the foundation of any how to build a trading bot python ccxt tutorial worth reading.
For US stocks and ETFs, Alpaca is the cleanest starting point and the answer to how to build a stock trading bot without paying commissions. It offers a paper trading sandbox, an API first design, and zero commission orders. For options and futures, Interactive Brokers through ib_insync is the institutional choice. For currency pairs and how to build a forex trading bot, OANDA and MetaTrader 4/5 bridges are the usual paths.
We will use Binance Testnet for this guide. It is a full replica of the production exchange that runs on fake balances, with no KYC. Sign up at testnet.binance.vision, generate an API key, and you are ready to write code without risking a cent. Two security rules matter from day one. First, never grant withdrawal permission to a bot key, only trading and reading. Second, if the exchange supports IP whitelisting, enable it and lock the key to your VPS address before going live.
## Building a Simple SMA Crossover Bot Step by Step
Here is where we move from theory to a working script. The bot will pull recent candles from Binance Testnet, compute two simple moving averages, and place a market order when they cross. This section is the core of how to build a crypto trading bot in the simplest reproducible form.
### Setting up the Python environment
Create a project folder, set up a virtual environment, and install the three libraries we need. A virtual environment keeps dependencies isolated from your system Python, which prevents version conflicts later.
```xml
mkdir trading-bot && cd trading-bot
python3 -m venv venv
source venv/bin/activate
pip install ccxt pandas python-dotenv
```
Three packages cover the whole bot. ccxt talks to the exchange, pandas crunches the candle data, and python-dotenv loads API keys from a file instead of hardcoding them in the script.
### Storing API keys safely with .env
Create a file called .env in the project folder. Add your testnet credentials. Then add .env to your .gitignore so you never commit it by accident. This single habit prevents the most common way trading bot accounts get drained, which is leaking keys to a public repository.
```
BINANCE_API_KEY=your_testnet_key_here
BINANCE_SECRET=your_testnet_secret_here
```
### Fetching market data from the exchange
The first script connects to Binance Testnet and downloads recent candles for a symbol. Each candle is one OHLCV record: open price, high, low, close, and volume over a time window. We will pull one hour candles for BTC/USDT.
```xml
import ccxt, os, pandas as pd
from dotenv import load_dotenv
load_dotenv()
exchange = ccxt.binance({
"apiKey": os.getenv("BINANCE_API_KEY"),
"secret": os.getenv("BINANCE_SECRET"),
"enableRateLimit": True,
})
exchange.set_sandbox_mode(True)
ohlcv = exchange.fetch_ohlcv("BTC/USDT", "1h", limit=100)
df = pd.DataFrame(ohlcv, columns=["ts","open","high","low","close","volume"])
```
The set_sandbox_mode call points ccxt at testnet endpoints. Drop that line later for live trading.
### Calculating SMA signals
Add two moving averages to the dataframe. A 20 period SMA is the fast signal, a 50 period SMA is the slow one. A long position opens when the fast SMA crosses above the slow SMA. The position closes on the opposite cross.
```xml
df["sma_fast"] = df["close"].rolling(20).mean()
df["sma_slow"] = df["close"].rolling(50).mean()
df["signal"] = 0
df.loc[df["sma_fast"] > df["sma_slow"], "signal"] = 1
df.loc[df["sma_fast"] < df["sma_slow"], "signal"] = -1
```
Plain English: when the recent average price runs above the longer term average, the short term trend is up, so the bot wants to be long. When it slips back below, the trend has turned, so the bot exits.
### Placing orders safely with size limits
Never let the bot bet the whole account on one trade. Define a position size as a fixed percentage of the balance, and wrap every API call in try except. Real exchanges fail for many reasons: rate limits, brief outages, expired keys. The bot has to survive all of them.
```xml
def place_buy(symbol, usdt_amount):
try:
price = exchange.fetch_ticker(symbol)["last"]
qty = round(usdt_amount / price, 5)
order = exchange.create_market_buy_order(symbol, qty)
return order
except Exception as e:
print(f"order failed: {e}")
return None
```
Risk management lives here. A common rule is to risk no more than 1 to 2 percent of the account on a single trade. If the strategy can lose 50 trades in a row and still leave most of the account intact, the math is on your side.
### Putting it all together in a main loop
The main loop ties everything into a continuous cycle. Fetch candles, calculate signals, check the current position, place an order if the signal changed, log the action, and sleep before the next iteration. For an hourly strategy, polling every minute is more than enough.
```xml
import time, logging
logging.basicConfig(filename="bot.log", level=logging.INFO)
position = 0
while True:
try:
df = get_candles("BTC/USDT")
signal = df["signal"].iloc[-1]
if signal == 1 and position == 0:
place_buy("BTC/USDT", 100)
position = 1
elif signal == -1 and position == 1:
place_sell("BTC/USDT", 100)
position = 0
logging.info(f"loop ok, signal={signal}")
except Exception as e:
logging.error(f"loop error: {e}")
time.sleep(60)
```
For scalping or anything faster than one minute candles, replace the polling loop with a WebSocket stream. ccxt has a ccxt.pro version that handles real time data with persistent connections, which is the right tool for sub second logic.
## Deploying the Bot on a Linux VPS for 24/7 Operation
A working script on your laptop is half the project. The other half is putting it on a server that runs around the clock. The remaining sections of this how to build a trading bot guide cover server choice, secure setup, and a systemd service that keeps the bot alive through crashes and reboots.
### Choosing a VPS that fits a trading bot
A starter bot does not need expensive hardware. Two virtual CPU cores, 2 to 4 GB of RAM, and 30 to 50 GB of SSD storage cover most strategies. Ubuntu 22.04 LTS or 24.04 LTS is the standard image. Linux uses about 1 GB of RAM at idle, while Windows Server can eat 4 to 8 GB just to run the desktop, so Linux frees up resources for the bot.
Location matters more than raw specs. A Frankfurt or Amsterdam server reaches Binance EU endpoints in 1 to 2 milliseconds. A Tokyo VPS gets similar numbers to Binance Asia. For Alpaca and US brokers, look at New York or New Jersey. [Serverspace USA VPS](https://serverspace.us/services/vps-server/cloud-servers-in-the-usa.md) runs data centers in the United States, Europe, and Asia and provisions Linux VPS instances in around 40 seconds, which makes it straightforward to put a bot close to whatever exchange you target. Plans start small and scale up as the strategy grows.
### Initial server setup over SSH
After the VPS is provisioned, the panel shows the public IP and a root password. Connect over SSH from your local machine.
```bash
ssh root@your-server-ip
apt update && apt upgrade -y
adduser botuser
usermod -aG sudo botuser
```
Working as root is dangerous because any mistake can wipe the system. Create a regular user, give it sudo rights, and log in as that user from now on.
### Securing the server before anything else
Three steps lock down the box. Generate an SSH key on your laptop, copy the public key to the server, then disable password login. After that, set up a firewall that allows only SSH inbound. A trading bot does not need any inbound ports open because it initiates outbound connections to the exchange API.
```bash
ssh-keygen -t ed25519
ssh-copy-id botuser@your-server-ip
sudo ufw allow OpenSSH
sudo ufw enable
```
Edit /etc/ssh/sshd_config and set PasswordAuthentication to no, then restart the SSH service. The server is now reachable only with your private key.
### Installing Python and project dependencies
Ubuntu ships with Python 3, but you still need pip and venv. Upload the bot script with scp or clone it from a private Git repo, then build the same virtual environment you used locally.
```bash
sudo apt install python3-pip python3-venv -y
mkdir ~/tradingbot && cd ~/tradingbot
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
Create the .env file directly on the server with nano. Do not push it through Git. The closer the API key stays to the machine that uses it, the smaller the blast radius if something leaks.
### Running the bot 24/7 with systemd
systemd is the Linux service manager. A small unit file tells it to run the bot at boot, restart it if it crashes, and stream its output to the system journal. This step is what separates a one off script from a production deployment.
sudo nano /etc/systemd/system/tradingbot.service
Paste a minimal unit file like the one below, adjust paths, save, and enable the service.
```xml
Description=Trading Bot
After=network.target
User=botuser
WorkingDirectory=/home/botuser/tradingbot
ExecStart=/home/botuser/tradingbot/venv/bin/python bot.py
Restart=on-failure
RestartSec=10
WantedBy=multi-user.target
sudo systemctl enable tradingbot
sudo systemctl start tradingbot
journalctl -u tradingbot -f
```
Now the bot survives crashes, server reboots, and SSH disconnects. The last command tails its live log so you can confirm everything works.
## Mistakes That Quietly Drain Trading Bot Accounts
Most blown accounts trace back to the same handful of mistakes. Knowing them in advance is the cheapest insurance available.
Overfitting on backtest. A strategy that returns 400 percent on five years of history often loses money in live trading because it was tuned to noise. Use walk forward optimization and reserve unseen data for the final test.
Ignoring fees and slippage. Commissions and slippage eat 10 to 15 percent of paper profits in a real environment. Subtract them in every backtest.
No stop loss or position sizing. One outsized loss can wipe months of gains. Hard limits on per trade risk and a server side stop loss order prevent the worst outcomes.
Hardcoded API keys. Keys in the script, keys in a committed config file, keys in a public GitHub repo. All are common and all are fatal. Use .env, add it to .gitignore, disable withdrawal permission, and turn on IP whitelisting on the exchange.
Going live with no testnet time. Two to four weeks on a testnet or paper account is the minimum. The bot should survive a sharp price move during that window without breaking.
No error handling. A single network blip will crash a bot that has no try except around its API calls. Add retries with backoff and log every failure. Consider a Telegram alert for unrecoverable errors.
Running the script with nohup in an SSH session. The bot dies when the session closes for good. systemd, screen, or Docker are the real options.
## Five Practical Scenarios Where Trading Bots Outperform Manual Trading
The cases below cover the most common reasons people learn how to build a trading bot in the first place.
Scheduled DCA on crypto. A bot buys a fixed dollar amount of BTC every week regardless of price. Boring on purpose, which removes emotion and discipline failures.
Grid trading in a range. When a market chops between two levels, a grid bot stacks buy orders below the price and sell orders above. Every oscillation books a small profit, which explains why people search for how to build a bitcoin trading bot during sideways months.
Trend following on equities. An SMA crossover on daily candles for SPY or AAPL, executed through Alpaca. The bot ignores intraday noise and acts only on confirmed trend shifts. For anyone curious how to build a stock trading bot without a broker terminal, this is the starter project.
Cross exchange arbitrage. Two crypto exchanges show a 0.4 percent gap on the same pair. A bot using ccxt watches both order books and trades the spread, after subtracting fees and transfer time. A low latency VPS is mandatory.
Signal execution. A TradingView alert fires when a custom indicator triggers. A small Flask endpoint on the VPS catches the webhook, validates it, and forwards the trade. The pattern works for crypto, forex pairs, and US stocks alike.
## Pre Launch Checklist Before You Switch from Testnet to Live
Run through every item below before pointing the bot at a real funded account. None of these checks take long. Skipping them is what people regret later.
| Check | Why it matters |
| --- | --- |
| 30+ days of stable testnet results | Short runs hide bugs that only show up over time and across market regimes |
| Strategy survived a 5 percent intraday move | Confirms the risk rules actually trigger when volatility spikes |
| Clean logs, no recurring errors | Repeated exceptions in logs mean the bot is one bad day away from a crash |
| Stop loss tested by manual trigger | A stop you never fired in testing is a stop you cannot trust in production |
| API key without withdrawal permission | Limits damage if the key leaks, since funds cannot be moved off the exchange |
| .env file outside Git | Public repos with leaked keys get scraped by bots within minutes |
| systemd service auto restarts after manual kill | Proves the service definition is correct before you depend on it |
| Telegram or email alert on critical errors | Lets you react in minutes instead of hours when something breaks |
| Position sizing limits hardcoded | Caps the worst case on any single trade, regardless of signal logic |
| Initial live capital small enough to lose | Reality usually finds at least one bug paper trading missed |
## Conclusion: From Testnet to Real Trades
A trading bot is two things stacked together. The first is the strategy, a clear set of rules you can defend in plain English. The second is the infrastructure, the code and the server that turn rules into orders without supervision. We covered both, from a working SMA crossover script in Python to a systemd service running on a Linux VPS.
Next steps are simple. Run the bot on Binance Testnet for at least a month. Watch the logs daily. Survive at least one sharp move without losing your stop loss. Then provision a production VPS, copy the project over, and start live with a small amount. [Serverspace](https://serverspace.us/services/vps-server.md) offers Linux and Windows VPS options across multiple regions with quick deployment and pay as you go pricing, which fits the way most traders scale from one bot to several.
## FAQ
### How much money do I need to start?
Zero for testnet. For live, $100 to $500 is enough to validate that the bot behaves the same on real fills as on paper. Scale up only after a few months of stable returns. Starting big is the fastest way to discover bugs the expensive way.
### Is it legal to run a trading bot?
In most jurisdictions yes, and exchanges officially publish APIs for that purpose. In the United States, pattern day trader rules apply to bots that trade equities with leverage on small accounts. Check the rules of your broker and your local regulator before going live.
### Can I run several bots on the same VPS?
Yes, as long as the resources stretch. Each bot should live in its own virtual environment with its own systemd service, so a crash in one cannot take down the others. Two or three light bots fit on a 4 GB VPS. Heavier strategies with machine learning models need more RAM and CPU.
https://serverspace.us/support/help/how-to-install-mongodb-on-ubuntu-2.mdDiscover a step-by-step guide on installing MongoDB on Ubuntu. Learn the essentials of setting up MongoDB.
## Overview
Installation of MongoDB involves several steps, such as choosing whether to use community or commercial versions, downloading package with wrote repository and sign before on Ubuntu, setting up replica sets (if required), and verifying the installation with a connection test. In that instruction we will consider installation for Ubuntu.
**Warning!** Commonly in repositories actively distribute package with label mongodb, which don’t maintained by official developer! Instead of that we will add official repository and download mongodb-org. If you already have installed mongodb unofficial package, than you have to purge them from the system by entering command:
```bash
apt purge mongodb -y
```
After that command package with dependencies will be deleted!
## Installation
First of all we need to make sure that we use latest version of package in the system:
```bash
apt update && apt upgrade -y
```
Screenshot №1 — Update package
Than, let’s talk about how we will securely download package. For that Linux use official repository and open realisation of pgp sign! If you don’t have that package, than install it:
```bash
apt install gnupg curl
```
Check version of using OS:
```
lsb_release -a
```
Screenshot №2 — Version of OS
Download public key which allowed us to confirm authenticity and integrity of transfer data from insecure network:
```bash
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | \
gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg \
–dearmor
```
Screenshot №3 — Curl download
That command prefer to use from user with administrative privileges or use command sudo. In our case we use root, therefore command without sudo. In the previous action we downloaded pgp-key and add them into the trusted sign. Then we need to create list in the repository:
```
touch /etc/apt/sources.list.d/mongodb-org-7.0.list
```
Add repository with sign in the file like in the command below:
```
nano /etc/apt/sources.list.d/mongodbb.list
```
Insert in that file row below:
```
deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse
```
Screenshot №4 — Add repository
We indicate architecture, sign and URL address therefore we need to update indexes:
```bash
apt update
```
Next we need to install package from repository, by using apt manager, for download the latest version:
```bash
apt install mongodb-org -y
```
Screenshot №5 — APT install
If you want to download dedicated version of MongoDB, than you can type:
```bash
apt install mongodb-org=6.0.12
```
That command line help to download dedicated version but don’t save from unexpected update, that can be useful in the situations when new version unsuitable, than we need to setup status of packet:
```
echo "mongodb-org hold" | sudo dpkg –set-selections
```
Option –set-selections help to indicate status of package, that can be install, deinstall or hold. In the official package there is configuration file that we can modify:
```
nano /etc/mongod.conf
```
Now we need to start daemon in the initialisation system we will use command:
```bash
systemctl start mongod
```
Then check the loading of daemon typing command before:
```bash
sudo systemctl status mongod
```
Screenshot №6 — Status of the daemon
Alright! Now we need to start MongoSH, that can help to manage DB server:
```
mongosh
```
Screenshot №7 — MongoSH
All process involves several crucial steps to ensure a secure and reliable setup. The decision between community and commercial versions, proper repository selection, and attention to package authenticity are fundamental considerations. Notably, caution is advised against using unofficial MongoDB packages distributed in certain repositories, as these may lack official maintenance and support.
https://serverspace.us/support/help/mongodb-server-and-gui-client-installation-on-windows.mdStudy the steps for installing MongoDB on the Windows operating system. The guide provides simple instructions for installing MongoDB.
## Overview
Usually, database specialists prefer to use Linux because of security issues in another OS, high performance, and the ability to manage quickly. But there are situations when we need to comply with a project requirement and agreements with clients. They may want to use Windows instead of Linux, or the information system may require it due to compatibility issues. In this instruction, we will consider the step-by-step process of installing MongoDB on Windows OS.
## Preparation
For Windows OS, we can use an .msi or .exe installation package, which can be found on the official website, for this, scroll down the page and find the Select package button, choose your OS version:
When clicking the button, the page automatically scrolls down and presents a menu where you can choose the version, platform, and type of installation package. Click the download button or choose the copy link and save the data in a suitable way!
At this point, we have finished the preparation process and started the installation!
## Installation
Wait for the process to finish and open the package with administrator rights, you can use the domain administrator account or the local administrator account of the domain, the latter may be disabled by policy! The MongoDB package installation is very similar to the process of installing any program, but there is one difference. Let us consider them below:
Do not pay attention to the checkboxes, we need to install MongoDB as a service, if by default the checkbox is cleared, then click on it. Below we can see two types of service installation, on a network and a local or domain user. Here you choose the method based on your needs or the requirements of the information system. If you choose Network, then a separate account will not be created, and Windows will automatically create the service with directories.
In other cases, in modern corporate networks, separate accounts are created to ensure security, for example, to control access or to control the efficiency of programs with the concept of least privilege. Specify the service name and the directories for logs and data, then click the Next button! Choose the Compass GUI version for managing MongoDB or use mongosh, which is installed by default:
Wait a few minutes for the installation process to finish and click the Finish button! Now that we have installed MongoDB, open mongosh or Compass to manage it. In our case, we open the search bar in the lower left corner and find Compass, click on it:
In the field with the new connection, enter the IP address and port if you are using the remote method. For local use, simply click Connect and wait for the pop-up window:
Great! We are in, on the left we can see the default database, at the top the endpoint we are connected to, and other GUI things!
This guide concludes with the successful installation of MongoDB on Windows, providing users with tools for efficient database management through the graphical interface mongosh or Compass.
https://serverspace.us/support/help/how-to-set-up-wireguard-vpn-server-on-ubuntu-20-04-2.mdIn this tutorial, we will look at the steps to set up and configure the WireGuard VPN server and client on Ubuntu 20.04
WireGuard is an application that allows you to establish a secure virtual private network (VPN), known for its simplicity and ease of use. It uses proven cryptographic protocols and algorithms to protect data. Originally designed for the Linux kernel, it can be deployed on Windows, macOS, BSD, iOS and Android.
This WireGuard vpn setup uses Ubuntu 20.04.
## Installing WireGuard Server on Ubuntu Linux
Log in via SSH to the Linux server, after logging in, check if the machine is updated by running the following command:
```bash
sudo apt-get update && sudo apt-get upgrade
```
Now install WireGuard by running the following command:
```bash
sudo apt-get install wireguard
```
## Setting up IP Forwarding
For VPN to work we need to enable packet forwarding, only then we will be able to connect through Wireguard server, to do this we need to edit /etc/sysctl.conf file:
```
sudo nano /etc/sysctl.conf
```
remove the “#” for the following command:
```
net.ipv4.ip_forward=1
```
After that, run the following command to apply the changes:
```
sysctl -p
```
The following message will be displayed:
## Generation of Private and Public Keys
WireGuard works by encrypting the connection using a cryptographic key pair. The key pair is used by passing the public key to the other party, which can then encrypt its message so that it can only be decrypted with the corresponding private key. To secure two-way communication, each side must have its own private and public keys, since each pair provides only one-way communication.
Before generating the key pair, go to the
```
sudo cd /etc/wireguard
```
Set the permission for this directory:
```
umask 077
```
To generate a key pair, type the following command:
```
wg genkey | tee private.key | wg pubkey > public.key
```
## Setting Up the Server Configuration
To start configuring the WireGuard server, go to the /etc/wireguard folder and create the file **wg0.conf**
```
sudo nano /etc/wireguard/wg0.conf
```
Add the following directives to the configuration file:
```
PrivateKey =
Address = 10.0.0.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
PublicKey =
AllowedIPs = 10.0.0.2/32
```
Copy the private key we generated earlier and paste it into the PrivateKey.
Similarly, we have to generate a key pair for the client, copy the client’s public key and paste it into PublicKey.
To copy the key value, run the following command:
```
sudo cat /etc/wireguard/public.key
```
```
sudo cat /etc/wireguard/private.key
```
## Launch WireGuard and Make It Start at Boot
Now we are ready to start the server, to start WireGuard we use **wg-quick** and specify the name of the new interface:
```
wg-quick up wg0
```
If the configuration is perfect, you will see the following screen,
To check the status of the WireGuard server enter:
```
wg show
```
Congratulations, we have successfully started up the WireGuard server!
## Installing WireGuard on the Client
The client setup depends on the operating system you are using. On Ubuntu/Debian-based systems, install WireGuard using the same command as on the server:
```bash
sudo apt-get install wireguard
```
On Windows or macOS, download and install the official WireGuard client from the official website at **wireguard.com/install**.
## Generating Client Keys
On the client machine, generate a dedicated key pair just as we did on the server. First, navigate to the WireGuard directory and set permissions:
```
sudo cd /etc/wireguard
umask 077
```
Then generate the client key pair:
```
wg genkey | tee client-private.key | wg pubkey > client-public.key
```
Retrieve both key values for use in the configuration files:
```
sudo cat /etc/wireguard/client-public.key
```
```
sudo cat /etc/wireguard/client-private.key
```
Copy the client public key and paste it into the **[Peer]** section of the server’s **wg0.conf** file under the **PublicKey** field, as described in the server configuration step above.
## Setting Up the Client Configuration
On the client machine, create the configuration file **wg0.conf**:
```
sudo nano /etc/wireguard/wg0.conf
```
Add the following directives, replacing the placeholders with your actual values:
```
PrivateKey =
Address = 10.0.0.2/32
DNS = 8.8.8.8
PublicKey =
Endpoint = :51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
```
## Connecting the Client to the Server
Once the configuration file is saved, bring up the WireGuard tunnel on the client:
```
wg-quick up wg0
```
To verify the connection is established and the handshake with the server has occurred, run:
```
wg show
```
You should see the server listed as a peer with a recent last handshake timestamp. To enable the client tunnel automatically at system boot, run:
```bash
sudo systemctl enable wg-quick@wg0
```
Congratulations, the client is now securely connected to the WireGuard VPN server!
https://serverspace.us/support/help/how-to-install-openclaw.mdOpenClaw is an AI assistant that you deploy yourself on your own cloud server.
OpenClaw is an AI assistant that you deploy yourself on your own cloud server. Regular bots simply respond to messages, while this one can also act: send messages where needed, process data, work with files, and integrate with third-party services. You can connect to it via messengers (for example, Telegram), via API, or directly from the command line.
## Creating a Server
To run OpenClaw, create a server with a suitable configuration through the control panel.
- Go to the **"vStack Cloud"** or **"VMware Cloud"** section.
- Go to the **"Servers"** section.
- In the personal account panel **"Create a cloud server"**, click **"Create server"**.
- Select the OS version, location, and configuration (you can choose a server with a ready-made configuration in the **Fixed plan** section), as well as the authorization method.
- In the **"Applications"** section, select the required application from the OpenClaw list.
- Come up with a server name and click **"Create"**.
After creating the server, perform the initial setup of OpenClaw.
- Connect to the server via SSH from your computer.
- If you are using macOS or Linux, launch the terminal; on Windows – PowerShell.
- In the control panel, click on the server name and copy the string from the **"SSH connection"** block.
On the first connection, a request will appear to add the server to the trusted list:
```
Are you sure you want to continue connecting (yes/no/[fingerprint])?
```
Type **yes** and press Enter. Enter the password from the **"Root password"** field on the **"Connections"** tab of the control panel.
## Initial Configuration
To launch the OpenClaw setup wizard, call it manually with the command:
```
openclaw onboard
```
Read the disclaimer and agree to the terms by selecting **"Yes"**. In the **"Onboarding mode"** section, select **"QuickStart"**. At the **"Model/auth provider"** step:If you have an API key from an external provider, select it. If you plan to use the built-in AI agents, select **"Skip for now"**.
## Connecting a Custom Model via API
OpenClaw supports any model that implements the OpenAI-compatible (GPT-like) API format – including the **Serverspace GPT API**. This allows you to use your own model endpoint instead of external providers.
### Step 1 – Get the API Key
Log in to your Serverspace account, go to the **"GPT"** section, and create a new API key. Copy the key value – you will need it in the next step.
### Step 2 – Open the OpenClaw Configuration File
On the server, open the OpenClaw configuration file in a text editor:
```
sudo nano /etc/openclaw/config.yaml
```
### Step 3 – Specify the Custom Model Parameters
Find the **model** section and fill in the following fields:
```
model:
provider: openai-compatible
base_url: https://gpt.serverspace.ru/v1/chat/completions
api_key: YOUR_SERVERSPACE_API_KEY
model_name: gpt-4o
```
- **base_url** – the base address of the Serverspace GPT API endpoint.
- **api_key** – the API key obtained in Step 1.
- **model_name** – the name of the model available in your Serverspace account (for example, **gpt-4o** or **gpt-3.5-turbo**).
### Step 4 – Save and Restart OpenClaw
Save the changes (in nano: **Ctrl+O**, then **Ctrl+X**) and restart the service to apply the new settings:
```bash
sudo systemctl restart openclaw
```
### Step 5 – Verify the Connection
Check that OpenClaw has successfully connected to the model:
```
openclaw status
```
If the configuration is correct, the output will display the active model and the **connected** status. You can also send a test message via the command line:
```
openclaw chat "Hello, are you working?"
```
A response from your custom model via the Serverspace GPT API confirms that the setup was completed successfully.
https://serverspace.us/about/blog/windows-server-2022-or-2025-which-version-to-choose-for-vps.mdCompare Windows Server 2022 and 2025 for VPS hosting: performance, security, containers, and key use cases for 2026 infrastructure.
For every system administrator, IT architect, and business owner, choosing an operating system for a server is more than a technical formality—it is a strategic decision. In 2026, with Windows Server 2025 having moved past its “early adopter” phase and matured with stable updates, the choice between it and the time-tested Windows Server 2022 has become even more critical. Each version offers distinct strengths, specific hardware requirements, and licensing nuances that directly impact application performance and the total cost of infrastructure ownership.
This guide is designed for those planning to deploy new capacities on Virtual Private Servers ([VPS](https://serverspace.us/services/vps-server.md)) and wanting to understand whether to pivot to Microsoft’s latest OS iteration or stick with a conservative approach. We will analyze architectural changes, security enhancements, new virtualization features, and practical scenarios to help you make an informed choice.
## Windows Server 2022: Proven Reliability
Before evaluating the new features, it is worth remembering why Windows Server 2022 remains the “gold standard” for many corporate environments. Released during a massive shift toward hybrid cloud models, this version focused on three pillars: advanced multi-layer security, hybrid capabilities with Azure, and a flexible application platform.
The key advantage of the 2022 version is its predictability. Over years of operation, the IT community has accumulated a vast knowledge base for optimization and troubleshooting. If your project relies on specific legacy software or proprietary drivers sensitive to kernel changes, Windows Server 2022 remains the safest harbor. Furthermore, the support lifecycle for this version guarantees security updates for years to come, which is critical for long-term government or financial sector projects.
## Windows Server 2025: What the New Release Brings
Windows Server 2025 is not just a cosmetic update. Microsoft listened to the requests of administrators handling high-load systems and distributed networks. In 2026, we see how the innovations of this version are truly paying off in cloud environments.
One of the most significant advancements is the overhaul of Active Directory. It now supports 32 KB database pages (up from the standard 8 KB), which significantly accelerates operations with massive object trees and boosts the overall performance of domain controllers. Also noteworthy is “Hotpatching”—a technology that allows critical security patches to be applied to the OS kernel without rebooting the server. In a VPS context, where uptime correlates directly with business availability, this is a revolutionary change.
### Deep Dive into Hotpatching: A Future Without Downtime
In 2026, Hotpatching has become one of the most discussed features of Windows Server 2025. To understand its significance, one must recall the standard server maintenance cycle. Every second Tuesday of the month, sysadmins worldwide prepare for “Patch Tuesday.” The process is simple but painful: install updates, reboot, and verify functionality. For mission-critical systems, this means planned downtime that must be coordinated with clients and departments.
Hotpatching changes the game. This technology allows code updates in RAM without needing to restart the entire operating system. The OS creates “patches” for functions in real-time. As a result, a server can run for months without a single reboot while remaining protected against the latest exploits. In a VPS environment, this provides a massive advantage: your web services or databases are always available, and the risk of a server failing to come back up after a planned reboot is virtually eliminated.
### Active Directory Revolution
Many mistakenly believe that Active Directory (AD) is a stagnant technology from the early 2000s. Windows Server 2025 proves otherwise. Moving to a 32 KB database page size is a fundamental change to the storage structure in ntds.dit
In 2026, as corporate networks have become incredibly complex and saturated with IoT objects and virtual entities, the old 8 KB limit became a bottleneck. The increased page size allows more attribute data to be stored in a single block, radically reducing disk read operations during directory searches. Furthermore, new forest and domain functional levels in the 2025 version introduce support for modern password encryption methods and improved replication. If you plan to build a distributed network of branches using VPS in different regions, AD based on Windows Server 2025 will provide faster and more stable synchronization between controllers.
### Storage and Network Evolution
In the 2025 version, Microsoft engineers seriously reworked the data storage stack. Storage Spaces Direct (S2D) received an acceleration boost through optimization for NVMe drives. In performance tests, Windows Server 2025 shows up to a 30-40% increase in IOPS compared to its predecessor on identical hardware. For databases and heavy ERP systems on a VPS, this could be the deciding factor in favor of upgrading.
The network stack did not stay behind either. The implementation of SMB over QUIC provides secure access to file servers over the internet without using a VPN, utilizing standard TLS 1.3. This not only simplifies life for remote employees but also reduces the load on network equipment, making data exchange more efficient and faster.
## Deep Feature Comparison
| Parameter | Windows Server 2022 | Windows Server 2025 |
| --- | --- | --- |
| System Kernel | Stable, focused on Azure Hybrid | Optimized for NVMe and Hotpatching |
| Active Directory | Basic features, 8 KB pages | 32 KB pages, new algorithms |
| Security | Secured-core server, TLS 1.3 | Hotpatching, improved AD delegation |
| Storage Performance | Standard S2D | NVMe optimization, SMB over QUIC |
| Support Lifecycle | Until 2031 (Extended) | Until 2034-2035 |
## New Hyper-V and Container Capabilities
While we discuss the OS running inside a VPS, it is important to understand the virtualization capabilities it provides “within” itself (Nested Virtualization). Windows Server 2025 has significantly improved support for Windows Containers. The size of base container images has been reduced, speeding up downloads and launches. In 2026, many developers use containers to isolate microservices within a single powerful Windows VPS. Improved integration with Kubernetes and support for advanced software-defined networking (SDN) make Windows Server 2025 an excellent platform for DevOps teams working in the .NET ecosystem. Running containerized applications under Windows has now become almost as light and efficient as in the Linux world, while retaining all the benefits of Microsoft ecosystem integration.
## Practical Selection Scenarios
Scenario 1: Corporate Domain Controller and Mail
For a large organization with thousands of users, Windows Server 2025 is the undisputed leader. Improvements in Active Directory allow authentication requests to be processed faster, and Hotpatching eliminates the need to plan nightly maintenance windows for domain controller reboots. This increases the overall availability of the company’s IT services.
Scenario 2: Hosting Legacy Applications
If you are migrating an application to a VPS that was written 5-7 years ago and requires specific .NET versions or specific IIS configurations, Windows Server 2022 is a more sensible choice. Compatibility with old software is honed to perfection in this version, and the risk that the new system kernel will “break” the logic of an old program is minimal.
Scenario 3: High-Load Web Projects and SQL Server
For MS SQL Server databases, disk operation speed and RAM volume are critical. Windows Server 2025, with its NVMe optimization and improved memory management, allows you to squeeze the maximum out of rented VPS capacities. You will get a faster system response at the same hardware rental cost.
## Common Upgrade Mistakes to Avoid
- **Ignoring System Requirements:** Windows Server 2025 is more resource-hungry. Attempting to run it on a minimal VPS plan with 2 GB of RAM will result in the system spending all its energy on self-maintenance, leaving no resources for applications.
- **Licensing Oversights:** Ensure your current licenses or provider rental terms support the new version. Moving to 2025 may require updating Client Access Licenses (CALs).
- **Lack of a Testing Period:** Never update a production server “on the fly.” Create a snapshot or deploy a test VPS on Windows Server 2025, migrate a copy of the application, and ensure everything works correctly for a week.
## Choosing the Perfect VPS Configuration
For Windows Server in the Serverspace cloud, we recommend these benchmarks:
- **For Windows Server 2022:** A minimum of 2 vCPUs and 4 GB of RAM for basic tasks. For SQL Server—at least 8 GB of RAM and SSD/NVMe drives.
- **For Windows Server 2025:** It is recommended to start with 4 vCPUs and 8 GB of RAM. This allows the system to unlock the potential of Hotpatching and new AD features without lagging. Always use NVMe storage to feel the disk subsystem speed boost.
At Serverspace, you can [scale your VPS resources](https://serverspace.us/services/vps-server.md) at any time, which is particularly convenient when testing Windows Server 2025: start small and increase power as the load grows.
## Conclusion
In 2026, the choice between Windows Server 2022 and 2025 is a balance between the stability of the past and the efficiency of the future. If your task is “set it and forget it” for proven software, choose 2022. If you are building a modern, scalable infrastructure where every second of uptime and every IOPS matters, Windows Server 2025 will pay for itself many times over.
## Frequently Asked Questions (FAQ)
Can I upgrade Windows Server 2022 to 2025 without reinstalling?
Technically, an In-place upgrade is possible, but for server environments, it is not recommended. A clean installation on a new VPS followed by the migration of roles and data is a much more reliable path, preventing the accumulation of system clutter.
Will old applications work on Windows Server 2025?
In 95% of cases—yes. Microsoft pays enormous attention to backward compatibility. However, specific software that works directly with drivers or low-level kernel functions requires preliminary testing.
https://serverspace.us/about/blog/how-to-install-ubuntu-26-04-lts-server-on-a-vps-and-perform-basic-setup.mdA step-by-step guide to upgrading Ubuntu 24.04 LTS or 25.10 to Ubuntu 26.04 LTS on a VPS: running do-release-upgrade in screen, configuring Chrony, SSH keys, and the firewall
Ubuntu 26.04 LTS was released in April 2026 under the codename Resolute Raccoon. Like any LTS release, it is designed for long-term use — Canonical promises support until 2031, and with an Ubuntu Pro subscription, until 2036. For server infrastructure, that means five years of stable security updates without having to plan annual migrations.
An important nuance: most cloud providers at the time of the 26.04 release offer 24.04 LTS and 25.10 images, but not 26.04 directly. That is normal — Canonical has provided an official upgrade path, and it is well-tested. In this article, we will look at how to upgrade a server from 24.04 LTS or 25.10 to 26.04 LTS, and at the same time perform the basic security setup needed on any fresh or upgraded VPS.
## What Is New in Ubuntu 26.04 LTS for Server Tasks
Before moving on to commands, it is worth understanding why upgrade at all. For server environments, 26.04 brought several significant changes.
**OpenSSH has been updated to version 10.2p1.** Support has been added for the post-quantum key exchange algorithm mlkem768x25519-sha256 — it is enabled by default and protects the connection even if sufficiently powerful quantum computers appear. Support for the weak DSA algorithm has been removed. The PerSourcePenalties option has appeared, which automatically blocks addresses that do not complete authentication. In addition, both service names now work — ssh.service and the alias sshd.service.
**Chrony has replaced systemd-timesyncd.** The new time synchronization daemon supports NTS (authenticated and encrypted NTP) and uses Ubuntu servers by default. When upgrading from 24.04, it must be installed separately — we will show how.
**Key updates to the server stack:** PostgreSQL has risen to version 18 with a new I/O subsystem (according to Canonical — up to three times faster when reading from disk), MySQL has been updated to 8.4 LTS, PHP to 8.5, and Django to 5.2 LTS. DocumentDB has appeared — a MongoDB-compatible database based on PostgreSQL. Valkey has been updated to 9.0.
**sudo-rs and rust-coreutils.** Starting with 26.04, sudo by default is the Rust implementation (sudo-rs), and the basic operating system utilities have also moved to Rust. For most tasks, you will not notice any difference, but it is worth knowing about if something behaves unexpectedly.
**Linux kernel 7.0** with support for Intel Core Ultra Series 3, improved virtualization, and — importantly for servers — the real-time kernel is now available in the main archive without an Ubuntu Pro subscription.
**cgroup v1 has been removed.** If you have old configurations or containers tied to cgroup v1, you need to migrate them to cgroup v2 before upgrading.
## Choosing the Starting Point: 24.04 LTS or 25.10
The path to 26.04 depends on which version you currently have. Ubuntu supports upgrading only from the previous release — you cannot jump from 22.04 straight to 26.04 with a single command.
| Current version | Upgrade path | You get changes from | Notes |
| --- | --- | --- | --- |
| 24.04 LTS | 24.04 → 26.04 directly | 24.10, 25.04, 25.10, 26.04 | Recommended path for production |
| 25.10 | 25.10 → 26.04 directly | Only changes in 26.04 | Minimal amount of change |
| 22.04 LTS | 22.04 → 24.04 → 26.04 | All intermediate releases | Two stages, more time |
If you are creating a VPS from scratch and the provider offers 24.04 — that is an excellent starting point. Canonical considers it the main "source" for upgrading to 26.04.
## Step 0: Creating the VPS and First Connection
If you do not yet have a server — create one based on Ubuntu 24.04 LTS or 25.10. On [VPS from Serverspace](https://serverspace.ru/services/vps-server/), the image is deployed in minutes: choose the configuration, operating system, set the root password or upload an SSH key — and the server is ready to use.
After startup, connect via SSH:
```bash
ssh root@
```
The system will ask you to confirm the server key fingerprint — type yes. If you are connecting from Windows, use the built-in OpenSSH (available since Windows 10) or PuTTY.
## Step 1: Preparing the System Before the Upgrade
Do not rush the upgrade command. A few minutes of preparation will save you from problems during the process.
**Update all current packages to the latest versions.** Upgrading a system on top of outdated packages is a common cause of conflicts:
```bash
apt update && apt upgrade -y && apt autoremove -y
```
**Install the release-upgrade utility** if it is not already installed:
```bash
apt install update-manager-core -y
```
**Check whether upgrades are configured for LTS releases.** Open the configuration file:
```
cat /etc/update-manager/release-upgrades
```
The output should contain the line Prompt=lts. If it says Prompt=never — change the value to lts using any text editor.
**Take a snapshot or backup.** Most providers allow you to create a disk snapshot directly from the control panel. Do this before upgrading — rollback will take minutes, not hours of recovery from backup.
**Make sure there is enough disk space.** The upgrade requires at least 2–3 GB of free space:
```
df -h /
```
If you have less than 3 GB free — clear the package cache with apt clean.
**Check compatibility with cgroup v2.** In 26.04, cgroup v1 support has been completely removed. Make sure the system is already running on cgroup v2:
```
stat -fc %T /sys/fs/cgroup
```
If the answer is cgroup2fs — everything is fine. If you see tmpfs, the system is using cgroup v1 or hybrid mode, and you need to switch before upgrading.
## Step 2: Starting the Upgrade to Ubuntu 26.04 LTS
On a VPS, it is best to run the upgrade in screen — if the connection is interrupted, the process will continue in the background:
```bash
apt install screen -y
screen -S upgrade
```
Now start the upgrade wizard:
```
do-release-upgrade
```
If the upgrade is not yet available through the standard channel (this can happen in the first weeks after a release), add the -d flag:
```
do-release-upgrade -d
```
If the connection drops — reconnect and restore the session:
```
screen -r upgrade
```
The wizard will display a list of changes and ask for confirmation. After that, the process is mostly automatic, but it will require several answers about configuration files.
The most common question is — _"The configuration file has been changed. Keep the current version or replace it?"_ For files you have edited (SSH, Nginx, MySQL, etc.), choose N (keep) to preserve your settings. You can view the difference with D directly in the dialogue — this helps you make an informed decision.
At the end, the wizard will ask about rebooting — agree. The server will come back up in a minute or two.
## Step 3: Verification After the Upgrade
After reboot, connect via SSH and check the system version:
```
lsb_release -a
```
The output should show Ubuntu 26.04 LTS and Resolute Raccoon. Check the kernel:
```
uname -r
```
The kernel should be version 7.0 or newer. Make sure there are no "broken" dependencies left:
```bash
apt –fix-broken install
apt autoremove -y
apt clean
```
After upgrading from 24.04, the system will usually offer to remove several dozen obsolete packages — that is normal, confirm it. Also check the logs for errors:
```
journalctl -p err -b
```
## Step 4: Switching to Chrony (for those who upgraded from 24.04)
In 26.04, Chrony has replaced systemd-timesyncd as the main time synchronization daemon. When upgrading from 24.04, it needs to be installed manually:
```bash
apt-mark auto systemd-timesyncd
apt install chrony -y
```
After installation, make sure synchronization works:
```
chronyc tracking
```
The output should contain a Reference ID line with the NTP server address and System time with a small deviation — units of milliseconds are considered normal.
## Step 5: Basic Security Setup
Regardless of whether you upgraded the system or created a new VPS — the basic security settings are the same. Let's go through them step by step.
Creating a User and Setting Up sudo
Working permanently as root is dangerous: any typo in a command is applied immediately and irreversibly. Create a regular user and add it to the sudo group:
```
adduser deploy
usermod -aG sudo deploy
```
Check that sudo works — switch to the new user:
```
su – deploy
sudo whoami
```
If root is returned — everything is configured correctly. Note: in 26.04, the sudo command is now handled by the sudo-rs implementation, and behavior for standard scenarios is identical to classic sudo.
Setting Up SSH Keys
Passwords for SSH login are a weak point. Keys are more reliable: without the private part, it is impossible to access the server, even knowing the password. If you do not yet have a key pair — generate it on your machine (not on the server):
```bash
ssh-keygen -t ed25519 -C "your@email.com
"
```
The ed25519 algorithm is faster and more secure than old RSA. Copy the public key to the server:
```bash
ssh-copy-id deploy@
```
If ssh-copy-id is unavailable (for example, on Windows) — manually add the contents of the file ~/.ssh/id_ed25519.pub to ~/.ssh/authorized_keys on the server:
```bash
mkdir -p ~/.ssh
echo "YOUR_PUBLIC_KEY" >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
```
Disabling Password Login and Root Login
As soon as the keys are configured — disable password login. Open the SSH config:
```
sudo nano /etc/ssh/sshd_config
```
Find and set the following parameters:
```
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
```
Save the file (Ctrl+O, then Ctrl+X) and restart SSH. In 26.04, both service names work:
```bash
sudo systemctl restart ssh
```
Important: do not close your current session. Open a second terminal and make sure you can log in with the key — only after a successful check can you close the old window.
Configuring the UFW Firewall
First allow SSH, and only then enable the firewall — otherwise you risk locking yourself out:
```
sudo ufw allow OpenSSH
sudo ufw enable
```
For a web server, add ports 80 and 443:
```
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
```
Check the status and the list of rules:
```
sudo ufw status verbose
```
## Step 6: Additional Settings
Two small steps that are often forgotten after an upgrade.
**Time zone.** By default, the server runs in UTC. If you need Moscow time:
```
sudo timedatectl set-timezone Europe/Moscow
```
**Hostname.** Helps distinguish servers when there are several:
```
sudo hostnamectl set-hostname my-server
```
## What Else to Configure — Extended Checklist
| Task | Why it is needed | Tool |
| --- | --- | --- |
| Automatic security updates | Patches are applied without manual intervention | unattended-upgrades |
| Protection against password guessing | Blocks IPs after several failed login attempts | fail2ban |
| Resource monitoring | Shows what is consuming CPU, RAM, disk | htop, glances |
| Database upgrades | PostgreSQL 18, MySQL 8.4 require separate steps for data | pg_upgradecluster, official guides |
| Backups | Recovery after failures and mistakes | rsync, provider snapshots |
| Checking System V scripts | systemd 259 is the last release with init-script support | Conversion to systemd unit files |
| Checking sudo-rs | Make sure it is compatible, especially when using LDAP | sudo –version |
## Practical Use Cases for Ubuntu 26.04 LTS Server on a VPS
**Web hosting and CMS.** A server with Nginx, PHP 8.5, and a database is the standard stack for WordPress, Drupal, or any other PHP system. PHP 8.5 brought property hooks, the pipe operator, and an improved DOM API, which is noticeable in modern frameworks like Laravel and Symfony.
**Backend for a web or mobile application.** Python, Node.js, Go — all of this is easy to deploy on Ubuntu. With systemd 259, you can configure autostart and monitoring without additional tools. It is worth noting that systemd 259 in 26.04 is the last release with support for System V init scripts: if you have old init.d scripts, now is the time to convert them into unit files.
**Databases.** PostgreSQL 18 with the new I/O subsystem is suitable for heavily loaded projects — Canonical reports disk read acceleration of up to three times in some scenarios. MySQL 8.4 LTS, unlike 8.0, is supported long-term. If you need a MongoDB-compatible database — DocumentDB is now available directly from the Ubuntu repository.
**AI/ML workloads.** In 26.04, NVIDIA CUDA Toolkit and AMD ROCm 7.1.0 have been added to the official Ubuntu archive. If your VPS has a GPU — installing them is now easier than before: sudo apt install cuda-toolkit without additional third-party repositories.
**Secure infrastructure.** OpenSSL supports post-quantum algorithms (ML-KEM, ML-DSA, SLH-DSA), and OpenSSH uses the hybrid post-quantum key exchange mlkem768x25519-sha256 by default. For projects with higher security requirements, this is a noticeable step forward without any additional configuration on your side.
## Common Mistakes and How to Avoid Them
**Upgrading without a snapshot.** If something goes wrong during the upgrade, reverting to a working state without a snapshot will be long and painful. Create a snapshot through the provider panel before starting — it takes a minute.
**Not updating packages before upgrading.** do-release-upgrade works better on a fully updated system. Run apt update && apt upgrade -y immediately before starting, even if you did it recently.
**Running the upgrade without screen or tmux.** An upgrade from 24.04 takes 20–40 minutes. If the SSH connection drops in the middle — the process will stop in an undefined state. Always use screen -S upgrade.
**Replacing all configuration files with new versions.** When the upgrade wizard offers to overwrite a modified configuration file — for everything you have edited (SSH, Nginx, PHP, MySQL), choose N to keep your version. If you are unsure — press D to view the diff directly in the dialogue.
**Ignoring the removal of cgroup v1.** Older versions of Docker, LXC, or some systemd units may depend on cgroup v1. Check this before upgrading: the command stat -fc %T /sys/fs/cgroup should return cgroup2fs.
**Not configuring Chrony after upgrading from 24.04.** After the upgrade, systemd-timesyncd will technically continue to work, but Chrony provides encrypted synchronization via NTS and keeps time more accurately. Installation takes a minute, and the difference is noticeable on servers with heavy network load.
**Forgetting to check logs after the upgrade.** A few hours after the update is a good time to browse the system journal:
```
journalctl -p err -b
```
This command shows only errors since the last boot — fast and to the point.
## Conclusion
Upgrading a VPS to Ubuntu 26.04 LTS is not a one-time operation, but a deliberate move to a platform supported until 2031. From 24.04 LTS, the path takes one step: do-release-upgrade in a screen session, a few answers to configuration questions, a reboot — and the server is on the new system.
The key benefits for server tasks are out-of-the-box post-quantum SSH, Chrony with NTS encryption, PostgreSQL 18 with a redesigned I/O subsystem, PHP 8.5, MySQL 8.4 LTS, the real-time kernel without Ubuntu Pro, and official CUDA and ROCm support in the archive. For most projects, these are tangible improvements that come without extra effort after the upgrade.
Deploy Ubuntu 24.04 LTS on a [VPS Serverspace](https://serverspace.us/services/vps-server.md) — and within an hour you will have a ready-to-use 26.04 server with basic security configured.
## Frequently Asked Questions
**Can Ubuntu 26.04 be installed directly, without upgrading?**
Only if the provider supplied a ready-made 26.04 image. If not — take 24.04 or 25.10 and upgrade with do-release-upgrade. This is the official and well-tested path.
**What should I choose as the starting point — 24.04 or 25.10?**
For a production server — 24.04 LTS. It is more stable, supported longer, and the upgrade to 26.04 from it is well documented. 25.10 is an intermediate release, used if you need specific packages from a newer snapshot. Support for 25.10 ends in April 2026, so it is not worth staying on it for long.
**How long does the upgrade take?**
From 25.10 — about 15–20 minutes. From 24.04 LTS — 30–40 minutes, sometimes longer on a slow connection. Most of the time is spent downloading packages; the installation itself is fast.
**What is sudo-rs and should I worry about the switch?**
sudo-rs is the Rust implementation of sudo, which replaced the classic one by default in 26.04. For most scenarios it is fully compatible. If you used sudo-ldap — note: this package has been removed, and you need to switch to LDAP via PAM.
**Do PostgreSQL or MySQL need to be updated separately after the system upgrade?
** Yes. The packages will be updated to the new versions, but the data in the database remains in the old format. PostgreSQL requires an explicit run of pg_upgradecluster. MySQL 8.4 starts migration automatically, but for production it is better to make a dump before upgrading the system. Read the official documentation for your DBMS before starting the upgrade.
**What should I do if the upgrade ends with an error?
** The first step is to check the logs: cat /var/log/dist-upgrade/main.log. Often the problem is "broken" dependencies — apt –fix-broken install fixes them, after which you can repeat do-release-upgrade. If the situation is serious — restore from the snapshot you made before upgrading.
https://serverspace.us/about/blog/dns-commands-in-linux-a-cheat-sheet-for-checking-and-configuring-dns.mdWe break down the main DNS commands in Linux: dig, nslookup, host, resolvectl. How to check records, clear the cache, and configure a DNS server.
When a website stops opening, mail starts bouncing, or a new domain does not resolve after migration, experienced administrators check DNS first. Not the server, not the firewall, not the load balancer. DNS, because most network problems originate there: an incorrect record, an outdated cache, an unavailable resolver.
In Linux, there are several powerful utilities for DNS diagnostics and configuration, and they are easier to use than they seem. This article is a detailed breakdown of the main tools: what each command does, when to use it, and which mistakes are better to avoid. At the end, there is a summary cheat-sheet table you can keep handy.
## What DNS is and why work with it from the terminal
DNS (Domain Name System) is a distributed system that translates domain names into IP addresses. When you enter a website address, your computer first asks the DNS resolver: "Which IP corresponds to this name?" — and only after receiving the answer does it establish the connection. This entire chain works invisibly until something breaks.
Command-line tools are needed by different people for different reasons. A system administrator checks whether the domain is delegated correctly. A developer wants to make sure the DNS record has updated after deployment. A DevOps engineer tests the configuration before migrating a service. Even without a deep IT background, knowing how to use commands to check and flush DNS saves a lot of time.
In practice, working with DNS in the terminal comes down to several common tasks: query a record, compare answers from different servers, clear the local cache, check whether changes have propagated. Linux has a suitable utility for each of these tasks.
## Main tools for working with DNS in Linux
There is no single universal DNS command in Linux for every case. Instead, there is a set of specialized utilities, each good in its own scenario. Let's go through the main ones.
dig — the main diagnostic utility
dig (Domain Information Groper) is the most powerful Linux command for working with DNS. It is included in the dnsutils package (Debian/Ubuntu) or bind-utils (CentOS/RHEL/Fedora). If the utility is not installed on the system, it is easy to add:
```bash
# Ubuntu / Debian
sudo apt install dnsutils
CentOS / RHEL / Fedora
sudo yum install bind-utils
```
A basic query looks like this:
```
dig example.com
```
The response has several sections. The ANSWER SECTION contains the requested records — IP address, type, TTL. The AUTHORITY SECTION shows which NS servers are authoritative for the domain. The ADDITIONAL SECTION adds supporting data, most often the IP addresses of NS servers.
To query a specific record type, add it to the command:
```
dig example.com MX # Mail exchange records
dig example.com TXT # TXT records: SPF, DKIM, domain verification
dig example.com NS # Zone NS servers
dig example.com AAAA # IPv6 address
dig example.com CNAME # Alias (canonical name)
dig example.com SOA # Start of Authority record
```
It is also worth noting the ability to specify a particular DNS server for the query. This is useful when comparing responses from different resolvers or when you need to confirm that the authoritative server is already returning the new value:
```
dig @8.8.8.8 example.com # Through Google Public DNS
dig @1.1.1.1 example.com # Through Cloudflare DNS
dig @ns1.example.com example.com # Through a specific NS server for the domain
```
The +short option reduces output to the essentials — only the IP or record value, without extra details. Convenient for scripts and quick checks:
```
dig +short example.com
```
For reverse DNS lookups (IP → domain), use the -x option — this is the DNS lookup command in the terminal:
```
dig -x 93.184.216.34
```
Tracing and additional dig options
The +trace option makes dig follow the entire delegation chain — from the root servers to the authoritative NS. Indispensable when diagnosing delegation problems or migrating a domain to another registrar:
```
dig +trace example.com
```
The output is long, but you can immediately see at which step something goes wrong. To verify that DNSSEC is configured correctly:
```
dig +dnssec example.com
```
The response should include a record of type RRSIG — a digital signature. Its absence means DNSSEC is not enabled for the domain. Batch checking multiple domains at once:
```
dig -f domains.txt +short
```
Where domains.txt is a text file with domains, one per line.
nslookup — a familiar tool on two platforms
nslookup exists in both Linux and Windows. This is the utility most often mentioned when talking about DNS cmd commands in the Windows environment. The simplest query:
```
nslookup example.com
```
The utility will display the resolver in use and the domain's IP address. To use a specific DNS server:
```
nslookup example.com 8.8.8.8
```
Querying a specific record type in one line:
```
nslookup -type=MX example.com
nslookup -type=TXT example.com
nslookup -type=NS example.com
```
In practice, nslookup is somewhat less informative than dig: it does not show the full TTL explicitly and does not support tracing. It is good for quick checks, but for deep diagnostics it is better to use dig.
host — fast and minimal
The host command outputs only what is needed, without sections or flags. Handy when you want a short visual answer:
```
host example.com # A record
host -t MX example.com # MX records
host -t NS example.com # NS servers
host -t TXT example.com # TXT records
host 93.184.216.34 # Reverse lookup (PTR)
```
It works well in scripts and for quick checks, when the detailed dig output is excessive.
resolvectl and systemd-resolve
On modern Linux distributions — Ubuntu 18.04+, Fedora, Arch, and others — DNS resolution is handled by systemd-resolved. To work with it, use resolvectl (the newer option) or systemd-resolve.
To see which DNS server the system is actually using right now:
```
resolvectl status
```
This command lets you view DNS by network interface, which is especially useful on machines with multiple connections. Run a DNS query through systemd-resolved:
```
resolvectl query example.com
```
Statistics and current cache status:
```
resolvectl statistics
```
The /etc/resolv.conf file
This is not a command, but you need to know its contents. It stores resolver configuration: the DNS server address, search domain, parameters. View it with:
```
cat /etc/resolv.conf
```
Typical output:
```
nameserver 8.8.8.8
nameserver 8.8.4.4
search example.com
```
Important: on systems with systemd-resolved, this file is most often a symbolic link. It is not recommended to edit it directly — changes will disappear after a network restart.
## Clearing the DNS cache in Linux
The DNS cache stores the results of completed queries so the server does not need to be contacted again. This speeds things up, but sometimes it causes problems: outdated records stay in the cache longer than they should. That is when you need the DNS flush command.
The exact command depends on which service manages DNS on your system.
Via systemd-resolved (Ubuntu, Debian, Fedora)
This is the most common option on modern distributions. DNS cache flush command:
```
sudo resolvectl flush-caches
```
An older syntax that also works:
```
sudo systemd-resolve –flush-caches
```
To check that the cache was actually cleared:
```
resolvectl statistics
```
The Current Cache Size line should be 0. This is the DNS refresh command from the perspective of the local system: everything cached is forcibly cleared, and subsequent queries will go directly to the resolver.
Via nscd
If nscd (Name Service Cache Daemon) is installed on the system, you can clear the DNS record cache like this:
```
sudo nscd -i hosts
```
Or by fully restarting the service:
```bash
sudo service nscd restart
```
Via dnsmasq
dnsmasq is often found in server configurations and on routers with OpenWRT. You can clear its cache by restarting it:
```bash
sudo systemctl restart dnsmasq
```
Or send a SIGHUP signal — this will flush the cache without fully stopping the process:
```
sudo kill -HUP $(cat /var/run/dnsmasq.pid)
```
It is worth noting: the DNS cache flush command is a local operation. You are not changing records on the server; you are simply forcing your system to request current data again from the upstream resolver. If the DNS record has not yet updated at the provider, after flushing the cache you will still receive the old answer, but now it will be "fresh" from the perspective of public servers.
## DNS commands in Windows: a brief comparison
If you work in a mixed infrastructure or are used to Windows, it is useful to know the Linux equivalents. The ipconfig /displaydns command shows the contents of the local cache — this is analogous to resolvectl statistics. The ipconfig /flushdns command is the Windows version of the flush DNS command, that is, the DNS cache clearing command. It is sometimes searched for as "flash dns command" — it is the same operation, just with a typo in the query.
The ipconfig dns command in Windows is part of the broader ipconfig /all command, which prints the full network configuration, including DNS servers for each adapter. Its Linux equivalent is resolvectl status.
nslookup works the same on both platforms. But Resolve-DnsName in PowerShell is a more powerful tool: it allows you to query specific record types and specify a DNS server.
## Table: DNS commands cheat sheet
| Task | Linux | Windows |
| --- | --- | --- |
| Check the domain A record | dig example.com | nslookup example.com |
| Check MX records (mail) | dig example.com MX | Resolve-DnsName -Type MX example.com |
| Check TXT records (SPF, DKIM) | dig example.com TXT | Resolve-DnsName -Type TXT example.com |
| Reverse DNS lookup (IP → domain) | dig -x 1.2.3.4 | nslookup 1.2.3.4 |
| Specify DNS server manually | dig @8.8.8.8 example.com | nslookup example.com 8.8.8.8 |
| View the current DNS server | resolvectl status | ipconfig /all |
| Clear DNS cache | sudo resolvectl flush-caches | ipconfig /flushdns |
| Short output (IP only) | dig +short example.com | — |
| Trace the delegation chain | dig +trace example.com | — |
| Check the zone NS servers | dig example.com NS | nslookup -type=NS example.com |
| Check DNSSEC | dig +dnssec example.com | Resolve-DnsName -DnssecOk example.com |
| View cache contents | resolvectl statistics | ipconfig /displaydns |
## Configuring a DNS server in Linux
Checking is one side of working with DNS. The other is configuration: telling the system which resolver to use. The method depends on the distribution and the network configuration.
Via Network Manager (nmcli)
This is the standard approach on desktop and server Ubuntu systems where NetworkManager manages the network:
```
nmcli con mod "Wired connection 1" ipv4.dns "8.8.8.8 8.8.4.4"
nmcli con up "Wired connection 1″
```
Changes apply immediately and persist after reboot.
Via systemd-resolved
Edit the configuration file:
```
sudo nano /etc/systemd/resolved.conf
```
Specify the desired DNS server command:
```
DNS=8.8.8.8 1.1.1.1
FallbackDNS=8.8.4.4
```
Restart the service:
```bash
sudo systemctl restart systemd-resolved
```
After that, run the DNS cache flush command so the system starts using the new servers instead of serving cached answers based on the old settings:
```
sudo resolvectl flush-caches
```
Permanent changes to /etc/resolv.conf
On servers without Network Manager and systemd-resolved, the file can be edited directly. To prevent it from being overwritten when the network restarts, use the immutable attribute:
```
sudo chattr +i /etc/resolv.conf
```
The +i flag forbids changing the file even for root. To remove it: sudo chattr -i /etc/resolv.conf. The method works, but it is rough — package updates may cause conflicts.
## Practical scenarios for using DNS commands
Scenario 1. The website does not open after changing hosting
The first step is to check which IP the DNS returns for the domain right now:
```
dig +short example.com
```
If the IP is old, you need to understand: have the records not yet updated on the authoritative server, or is the problem in the local cache? Check via a public resolver:
```
dig @8.8.8.8 +short example.com
```
If Google DNS already returns the new IP, but locally you still get the old one, the problem is the cache. Run the DNS flush command and repeat the check. If the public resolver also returns the old IP, the record has not yet propagated; you need to wait for the TTL to expire.
Scenario 2. Mail is not being delivered
Mail issues are most often related to MX records or SPF. Check both:
```
dig example.com MX
dig example.com TXT
```
In the TXT records, look for the line starting with v=spf1. If it is missing, emails will go to spam or be rejected. To check the DKIM record:
```
dig default._domainkey.example.com TXT
```
If the selector differs from default, you need to get it from the mail service.
Scenario 3. Setting up a VPS with its own DNS resolver
When renting a VPS on [Serverspace](https://serverspace.us/services/vps-server.md), full control over the network configuration is available, including DNS. You can run your own recursive resolver — for example, for traffic isolation, lower latency, or bypassing provider restrictions. To do this, install bind9 or unbound, then specify the server address in /etc/systemd/resolved.conf.
Check that the local resolver is responding correctly:
```
dig @127.0.0.1 example.com
```
Scenario 4. Diagnosing slow resolution
If DNS works but is slow, measure response time:
```
dig example.com | grep "Query time"
```
A good result is up to 50 ms. If the response time is consistently above 200 ms, it is worth trying a DNS server that is geographically closer or setting up a local caching resolver.
Scenario 5. Checking domain delegation before migration
Before changing NS servers, it is important to make sure delegation works correctly. Tracing will show the full chain from the root servers:
```
dig +trace example.com NS
```
If an error or an unexpected response appears at any step, it will be visible immediately. This check saves a lot of time when migrating a domain: it is better to find the problem before changing NS, not after.
## Common mistakes and how to avoid them
Expecting DNS to update instantly
DNS records are cached for the duration specified in the TTL (Time to Live) field. If the TTL is set to 86400 seconds (24 hours), then after the record is changed, providers and resolvers around the world will continue to return the old value until that time expires. Before changing hosting or IP addresses, it is worth lowering the TTL in advance to 300–600 seconds — then the update will spread across the internet much faster.
Editing /etc/resolv.conf directly on modern systems
In Ubuntu 20.04+ and other systems with systemd-resolved, the /etc/resolv.conf file is a symbolic link. Direct edits will be overwritten on the next network restart or NetworkManager restart. The correct approach is to edit /etc/systemd/resolved.conf or use nmcli.
Forgetting about the cache during diagnostics
It often happens that people run DNS commands in Linux, get an old answer, and cannot understand why the changes are not visible. You should either check via a public resolver (dig @8.8.8.8 example.com) or first run the DNS cache flush command and then diagnose. Without this step, the result may be misleading.
Confusing A and CNAME records
An A record points directly to an IP address. A CNAME is an alias that points to another domain name. If you configure a CNAME for the root domain (example.com, without www), many services will start behaving incorrectly: the DNS standard forbids CNAME at the apex zone, where SOA and NS records must exist.
Using only nslookup for serious diagnostics
At first glance, nslookup is more convenient — it exists in both Windows and Linux, and the interface is familiar. But its output is less precise: it does not always show TTL, does not support tracing, and sometimes returns unexpected answers when working with non-standard configurations. For serious DNS diagnostics, it is better to switch to dig.
Ignoring DNSSEC when troubleshooting availability issues
If a domain is configured with DNSSEC, an incorrect signature can cause resolvers with validation enabled to refuse to answer. Some users see the site normally, while others get an error — depending on which resolver they use. Check DNSSEC:
```
dig +dnssec example.com
```
## Conclusion
Working with DNS from the command line is not a niche skill, but a basic part of any network or server administration. A few utilities in your toolkit let you quickly find the cause of a problem: dig for detailed diagnostics and tracing, nslookup and host for quick checks, resolvectl for managing the system resolver and the DNS cache flush command.
Getting started is easier than it seems: install dnsutils, run dig +short example.com, and look at the result. From there, add tracing, checking specific record types, and comparing answers from different servers to your routine. Over time, these DNS commands will become as familiar a part of the job as ping or curl.
If you work on your own VPS — for example, rented from [Serverspace](https://serverspace.us/services/vps-server.md) — you have full control over the DNS configuration from the very first minute. You can configure any resolver, spin up a caching or recursive server, and avoid depending on the provider's settings.
## Frequently Asked Questions
**How does dig differ from nslookup?**
dig provides more detailed and accurate output: it shows TTL, response flags, the AUTHORITY and ADDITIONAL sections, supports delegation-chain tracing and DNSSEC checking. nslookup is simpler and is available on Windows without additional installation. For quick checks, both are fine; for serious diagnostics, dig is preferable.
**How can I see which DNS server my Linux system is using right now?**
On systems with systemd: resolvectl status — it will show the server for each network interface. Without systemd: cat /etc/resolv.conf. In Windows, the same task is done with ipconfig /all, where there are "DNS servers" lines for each adapter.
**Why does the website still open at the old IP after I changed the DNS record?**
DNS records are cached for the duration of the TTL. To make sure the record has already updated on the authoritative server, check via a public resolver: dig @8.8.8.8 +short example.com. Clear the local cache with sudo resolvectl flush-caches. If the public resolver also returns the old value, you need to wait for the TTL to expire.
**How do I check a PTR record (reverse DNS)?**
Use dig -x IP address or host IP address. If PTR is configured, you will see the domain name corresponding to that IP. PTR is important for mail servers: many anti-spam filters check for its presence and its match with the A record.
**How often should DNS cache be cleared?**
In normal operation — only during diagnostics, when you have changed DNS records and want to see the current answer immediately. In everyday use, the cache is useful: it speeds up resolution and reduces load on DNS servers. Clearing it regularly without reason only slows things down.
**Which DNS command should I use in scripts for automated checks?**
dig +short example.com is best — it outputs only the IP without extra text. The result is convenient to store in a variable or compare with an expected value. For reverse lookups in a script: dig +short -x IP address.
https://serverspace.us/about/blog/intel-core-ultra-400-nova-lake-expected-specifications-and-release-date.mdIntel Core Ultra 400 Nova Lake launches in late 2026: 52 cores, bLLC cache, new LGA-1954 socket. Full specs breakdown and SKU lineup.
What Intel has scheduled for desktop in 2026 represents the largest reset of the company’s consumer CPU line in years. The marketing name reads Core Ultra 400. During development it has gone by Nova Lake. This release directly succeeds Arrow Lake and bundles several architectural changes into one launch wave. The headline numbers: a 52-core ceiling, fresh microarchitectures driving both performance and efficiency threads, a fresh cache strategy called bLLC that competes with AMD’s X3D approach, plus a transition to the new LGA-1954 socket. Some of these details have surfaced through Intel’s own statements. A larger portion still rests on leaks at this point. This overview consolidates what is currently established about Core Ultra 400: when the launch is expected, how the SKU stack looks, what separates it from the current Core Ultra 200 family, and how the matchup against AMD Zen 6 is shaping up.
## Intel Core Ultra 400 Release Date and Where It Sits on the Roadmap
On the official side, the first confirmed mention surfaced at the January 2026 earnings briefing covering Q4 2025. During that call, chief executive Lip-Bu Tan committed to a clear timeframe: the new chips will appear in retail channels before year-end 2026. A precise launch day has not yet entered the public record. Industry sources together with leakers converge on the final quarter of 2026 as the kickoff for high-volume fabrication.
A less optimistic projection is also in circulation. According to leaker Golden Pig Upgrade, retail availability for the desktop tier could slip until the CES window in January 2027. The scenario aligns with how Intel has historically rolled out chip families: showcase the silicon late in the year, push consumer availability into the following spring.
Distribution is widely expected to break into staged tranches. Unlocked K-class chips alongside Z990 motherboards take the first slot, hitting shelves within a few weeks of Intel’s reveal event. Lower-tier parts paired with B960 and H910 chipsets typically need another quarter or two before they appear. Both Arrow Lake and Raptor Lake launched on essentially the same schedule, and the same pacing seems likely to repeat with this generation.
Positioning in the roadmap looks straightforward: Nova Lake replaces Arrow Lake at the desktop tier (today known commercially as Core Ultra 200) and slots in after Panther Lake on the mobile side (a laptop-only release branded Core Ultra 300 that lands first). What this means practically for users: anyone reluctant to hold off for nearly a year can still pick up Core Ultra 200 chips or wait a couple of months for the Arrow Lake Refresh in spring. Buyers planning long-term builds targeting 2027 and beyond should approach the upgrade as a complete platform overhaul, since CPU, board, and memory all swap together.
## Why Intel Core Ultra 400 Will Not Run on Socket LGA-1851
The previous socket landed in retail back in October 2024, debuting alongside Arrow Lake silicon and 800-series chipset boards. A common assumption among early adopters was that the platform would support at least two CPU generations before being retired. Reality has not cooperated. The new chips simply will not fit into LGA-1851 at the physical level. Only the redesigned LGA-1954 socket can hold them.
Several factors pushed Intel toward a brand new socket. First on the list, the extra 103 contact points (the jump from 1851 to 1954) handle expanded power delivery, because feeding a 52-core flagship at 175 watts requires a markedly heavier VRM design. Second, native DDR5-8000 support combined with more PCIe 5.0 lanes asks for additional signal routing through the package. On top of all that, the physical CPU package itself has been re-engineered to accommodate the dual compute tile layout.
For anyone currently invested in Z890, B860, or H810 hardware, the upgrade road tops out at the Arrow Lake Refresh. The next-generation boards built around LGA-1954 fall under the 900-series chipset banner, which spans B960, Z970, Z990, Q970, and W980 SKUs. Launch prices on those motherboards are expected to come in noticeably higher than current ones, driven by reinforced VRM circuitry alongside updated controller silicon.
Cooling news arrives on a brighter note. Physical dimensions of LGA-1954 remain close enough to recent Intel sockets that existing heatsinks can adapt. Both Noctua and Thermaltake have come forward to confirm support, with mounting kits planned that adapt LGA-1700 and LGA-1851 coolers onto the new layout. Separately, Intel has stated that the upcoming socket should accommodate four chip generations in total: Nova Lake first, then Razer Lake, Titan Lake, and Hammer Lake. Should that commitment hold up, this socket would offer a longer support window than what Intel buyers have grown used to.
During the period before 900-series boards and DDR5-8000 memory kits saturate retail, technical teams running build pipelines, automation tests, and virtualisation workloads tend to find better value in renting a [VPS on Serverspace](https://serverspace.us/services/vps-server.md). The route avoids tying up capital in hardware that will be a generation behind within months, and unlocks flexible spec tiers on demand.
## Intel Core Ultra 400 Specifications: What the SKU Leaks Reveal
This desktop lineup is broader than what came with Arrow Lake. Reporting from VideoCardz combined with leaks from Jaykihn point to five distinct die layouts in development, packaged into roughly 13 SKUs aimed at retail. The TDP grading reverts to its traditional four-step layout: 35, 65, 125, and 175 watts.
The headline part, provisionally identified as Core Ultra 9 485K, employs a two-tile architecture yielding 52 total cores. The breakdown: 16 Coyote Cove performance cores, 32 efficiency Arctic Wolf cores, plus four low-power LP-E cores. Cache memory adds up to 288 MB across the package thanks to bLLC, distributed evenly as 144 MB sitting on each compute tile.
Immediately under the flagship comes a 44-core variant configured as 16P, 24E, and 4LPE within the same 175 W TDP class. The midrange clusters around a 28-core design (built from 8P, 16E, and 4LPE) that ships in two flavours: a premium gaming version equipped with 144 MB of bLLC, plus a regular SKU running 36 MB of L3 as before. The budget bracket lands at 16 cores with 18 MB of L3, rated 65 W. At the entry point of the family, Core Ultra 3 maxes out at 8 cores in a 4P plus 4 LPE setup (no E-cores at all), and Intel will manufacture this one in-house on its own 18A node.
A segment-by-segment overview of the expected Core Ultra 400 specifications appears in the table below.
| Segment | Core configuration | Total cores | Cache | TDP |
| --- | --- | --- | --- | --- |
| Flagship (Core Ultra 9 K) | 16P + 32E + 4LPE | 52 | 288 MB bLLC | 175 W |
| Secondary flagship | 16P + 24E + 4LPE | 44 | up to 288 MB bLLC | 175 W |
| Premium gaming | 8P + 16E + 4LPE | 28 | 144 MB bLLC | 125 W |
| Mainstream | 8P + 16E + 4LPE | 28 | 36 MB L3 | 125 W |
| Mid-range | 4P + 8E + 4LPE | 16 | 18 MB L3 | 65 W |
| Entry (Core Ultra 3) | 4P + 0E + 4LPE | 8 | 12 MB L3 | 35 W |
Beyond core configuration, two more axes split the family. The first axis: whether a chip wears the K letter. Models with K behind their number arrive with their multiplier unlocked, giving overclockers headroom, and sit in the higher power brackets. Variants without K share the same core counts but stay locked at base frequencies and lower TDPs. The second axis: who gets bLLC. The bigger cache pool ships with K-class parts within the 9 and 7 tiers. Regular variants retain the conventional L3 implementation.
All numbers above remain unconfirmed leak data. Up to the point production reaches volume in late 2026, Intel can still adjust frequencies, modify how many SKUs ship, or revise the final TDP table. Most reporting on this topic traces back to two original streams: Jaykihn posting via X, plus the VideoCardz team working their own contacts in the supply chain.
## Coyote Cove, Arctic Wolf, and bLLC: What Changes Under the Hood
Coyote Cove serves as the successor to Lion Cove, the P-core design currently inside Arrow Lake. Preliminary numbers suggest single-threaded IPC will climb by anywhere from 10 percent up to 16 percent. Multi-threaded improvements look closer to 12 percent. Hyper-Threading remains off the table this generation. Intel removed SMT from its desktop products with Arrow Lake, and so far there is no sign that decision will be reversed.
On the efficiency side, Arctic Wolf takes the place of Skymont. Small cores have historically delivered larger generational IPC leaps than their larger siblings, and this generation appears set to follow the same trend. The four LP cores reside on their own SoC tile under the Low Power Island arrangement: when the workload is light, the main compute tile can power down entirely while those LP cores handle background activity.
Manufacturing keeps its hybrid foundry strategy intact. Entry tier and mid tier chips will come out of Intel’s 18A facility located in Arizona. The larger SKUs carrying bLLC get routed to TSMC, fabricated on the cutting-edge N2 line (with N2P reserved for the highest-power variants). That strategy raises the cost basis on the flagship: a compute tile carrying bLLC measures over 150 square millimetres on the die, versus the roughly 76 mm² figure expected for the rival Zen 6 CCD from AMD.
The standout architectural move tied to Intel’s gaming strategy is bLLC, an abbreviation of Big Last Level Cache. The technology functions as Intel’s counterpunch to AMD’s 3D V-Cache, although the engineering looks different. AMD’s solution stacks cache vertically on top of the CCD silicon. Intel’s solution expands the SRAM array horizontally across the same plane of silicon as the compute logic. The bLLC budget per compute tile sits at 144 MB. Combined across two tiles on the flagship, the sum is 288 MB. As a benchmark, today’s Core Ultra 9 285K ships with just 36 MB of L3.
Going horizontal with the cache produces gains on both thermal behavior and frequency headroom. AMD’s stacked design has historically lowered the maximum boost clocks attainable on X3D parts. The trade-off facing Intel is the predictable one: more silicon area in use per die, which raises the manufacturing bill noticeably.
## Xe3 Graphics, NPU6, and the Refreshed Platform
Integrated graphics on these desktop chips reduces in core count this time around. Where Arrow Lake includes 4 Xe-LPG cores, the new family limits itself to 2 Xe3-LPG cores. At first glance this resembles regression, although the underlying graphics architecture has actually moved a generation forward (a Battlemage-class design, the same one in mobile Panther Lake) and delivers more consistent output on a per-core basis for productivity workloads. Since desktop CPUs almost universally pair with separate graphics cards anyway, trimming integrated graphics down looks like a sensible bill-of-materials decision.
Both the media engine and the display controller jump up to Xe3P. That brings dedicated hardware decoding for next-generation codecs, including VVC (also known as H.266), and based on the latest information, AV2 as well. Video streaming and playback for upcoming formats should run fully on dedicated silicon, freeing the CPU cores for other work.
The biggest single jump generation-over-generation belongs to NPU6. Intel’s sixth-generation neural unit hits 74 TOPS measured at INT8, compared to the 13 TOPS NPU3 produces inside Arrow Lake silicon. That comes to roughly a 5.6 times improvement. Once GPU and CPU AI capacity is added on top, the platform exceeds 100 TOPS of total throughput, comfortably above the bar Microsoft has set for Copilot+ PC branding.
Native memory speed reaches DDR5-8000 from launch, with support extending to CUDIMM, CSODIMM, and ECC modules at the higher SKU tiers. The CPU now contributes 24 PCIe 5.0 lanes directly, supplemented by another 24 PCIe Gen4 lanes routed via the chipset. Two Thunderbolt 5 ports and Wi-Fi 7 are integrated into the SoC silicon. Storage tops out at eight attached SSDs, and the display engine drives up to four independent monitors.
## Intel Nova Lake Core Ultra 400 vs Arrow Lake and AMD Zen 6
Laying the next-generation flagship next to today’s puts the size of the leap into context. Currently shipping is the Core Ultra 9 285K: 24 cores split as 8 performance and 16 efficiency, 36 MB of L3 cache, an NPU rated at 13 TOPS, and a 125-watt thermal envelope. Its expected successor numbered 485K more than doubles core count to 52, brings cache up to 288 MB, lifts NPU performance to 74 TOPS, and pushes TDP to 175 watts. Leaked information indicates PL2 (the brief power burst ceiling) can reach 471 watts. Extreme PL4 spikes are reportedly capable of hitting 854 watts. Forecast pricing will be considerably higher, mainly because of TSMC N2P wafer economics.
AMD enters this round with Zen 6, marketed in the Ryzen 10000 series and known internally as Olympic Ridge. Leaks describe AMD increasing core density per CCD by 50 percent, going from 8 to 12 cores, which places the AMD flagship at a maximum of 24 cores. SMT remains active on Ryzen, so the same flagship hits 48 logical threads. AMD also expands cache capacity: one 3D V-Cache stack now holds 144 MB, and dual-stack X3D variants double that to 288 MB. Reported Zen 6 frequency targets sit between 6.3 and 6.4 GHz, which is above where Intel can clock its own chips.
Viewed as a single coordinated release, the new family stakes a serious claim to being Intel’s boldest desktop launch of the past decade. Built into this one release are a completely overhauled cache philosophy, a substantial NPU upgrade, standardized DDR5-8000 support, and Thunderbolt 5 directly on the processor. AMD’s counter package consists of the new 12-core CCD design and revised 3D V-Cache, both built on the same TSMC N2P line.
The contest breaks down as follows. On a clock-for-clock basis, Coyote Cove appears to nudge slightly past Zen 6, while AMD wins outright on raw clock speed. Multi-threaded workloads should favor Intel given its higher physical core count. Gaming continues to lean AMD’s way in most scenarios, helped along by mature X3D engineering and shorter inter-core latency. There is also a non-trivial chance Zen 6 slips into early 2027, which would buy Nova Lake a short period of standing alone in the market without a direct rival.
## Intel Nova Lake Latest News: A Timeline of Leaks and Confirmations
News snippets surrounding this family have been arriving steadily for over twelve months. The earliest meaningful disclosure landed in April 2025, when shipping records published on NBD indicated Intel was validating prototypes against the new LGA-1954 socket. The generational split crystallized around that point as well: the Arrow Lake Refresh would stay tied to LGA-1851, with Nova Lake jumping to its own platform.
December 2025 delivered another round of flagship-centric details: a 52-core count, 288 MB of cache, an IPC bump projected near 15 percent. In January 2026, CEO Lip-Bu Tan officially put the late-year release on the record during the earnings call. February 2026 contributed die-size details: a standard compute tile measures upwards of 110 square millimetres, and the variant featuring bLLC extends past 150 square millimetres. The same month also leaked the dramatic power consumption ceilings (PL2 around 471 watts).
Activity peaked across April 2026. VideoCardz published a preliminary spreadsheet listing 13 SKUs with detailed configurations attached. During the same window, the iGPU situation also clarified: official direction has Xe3-LPG taking precedence over the previously circulating Xe4 Druid rumours. The mobile APU project carrying the Nova Lake-AX label (rumoured to combine 28 CPU cores with 48 Xe3 GPU cores to challenge AMD’s Strix Halo) currently sits in an uncertain state, with some reporting suggesting the project has been paused.
Items to watch over the coming months: engineering samples being delivered to motherboard manufacturers, early Geekbench score leaks appearing online, and Intel’s own marketing slides arriving as Q3 2026 approaches.
## Who Should Wait for Intel Core Ultra 400 in 2026
Several user categories have a legitimate reason to wait this one out. PC gamers who interpret bLLC as Intel’s overdue answer to AMD’s X3D technology, particularly those running titles with cache-heavy data patterns. Creative professionals and software engineers whose workflows benefit from 52 physical cores when rendering scenes, compiling large codebases, or running simulations. New builders constructing systems entirely from fresh parts, aiming at a DDR5-8000 platform anchored by a socket that promises to outlive the standard two-generation rule.
Conversely, the case for waiting weakens significantly for owners of relatively new LGA-1851 systems. Their drop-in upgrade pathway concludes with the Arrow Lake Refresh. Migrating to LGA-1954 requires a fresh CPU purchase, a new motherboard, potentially a memory upgrade as well, and a cooling solution rated for the heavier thermal output. Total spend on a complete build at launch will run materially higher than an equivalent AM5 system from AMD.
Pricing predictions remain inexact at this point. The Core Ultra 9 K parts will likely settle into the high-premium price tier because TSMC N2P wafers are expensive. Z990 motherboards should debut at price points well above current Z890 levels, and coolers capable of handling 175 watts of sustained load will add another sizeable chunk to the bill. A fully built flagship rig will rank among the most expensive desktop configurations to ship during 2026.
For teams weighing the choice between current-generation desktop hardware and patience for the new release, daily engineering tasks (compilation, training smaller machine learning models, executing test runs, server-side feature work) continue to run reliably on a [VPS on Serverspace](https://serverspace.us/services/vps-server.md). Cloud-based compute can be sized to fit each task, anywhere from a lightweight evaluation environment up to a multi-core node hosting CI/CD work, leaving capital free from any single piece of physical equipment.
## The Bottom Line on Intel Core Ultra 400
The Core Ultra 400 family running on Nova Lake silicon is on track to debut before December 2026 wraps. The more conservative estimate moves that window into the opening weeks of 2027. Headlining the flagship are 52 cores, 288 MB of bLLC, and an NPU6 unit producing 74 TOPS of AI throughput. The whole platform moves over to LGA-1954, which Intel claims will host four chip generations.
Every spec listed in this overview comes from pre-launch leaks and remains subject to change before final retail. One outcome already looks locked in regardless: competition across the desktop processor market through the next two years will be the most intense in recent memory, and the end consumer comes out ahead whichever way the matchup resolves.
https://serverspace.us/about/blog/best-cloud-providers-for-running-openclaw.mdThis guide ranks the six best cloud providers for running OpenClaw in 2026, comparing RAM, pricing, setup ease, and reliability to help you choose the right VPS for your AI agent deployment.
By early 2026, OpenClaw had become one of the most starred open-source repositories on GitHub. The concept landed at the right moment: an autonomous AI agent that runs on your own server, plugs into the messaging apps people already live in, and handles actual work. Ask it something over Telegram, and it can pull data from your inbox, push an update to your CRM, or fire a shell command. No dedicated interface, no browser tab left open.
Making that work in practice demands a server that never goes dark. A laptop closes, a desktop reboots, a home connection drops. Any of those events takes the agent with it. A cloud VPS sidesteps all of that: persistent uptime, a fixed public address, and full control over the environment.
This guide ranks six cloud providers against the specific demands of an OpenClaw deployment. Each entry covers hardware fit, real-world tradeoffs, and the type of user who will actually get value from it.
## Why OpenClaw Cannot Run Reliably on a Home Machine
The agent maintains live WebSocket connections to every messaging platform you connect. Those connections break the moment the host process goes down. Unlike a web app that users open on demand, OpenClaw has to be reachable whenever a message arrives, which is not a schedule you control.
Home infrastructure introduces too many failure points. A power cut, a mandatory OS restart, an unstable ISP, a machine that slips into sleep mode. All of them drop the agent. A teammate who sends a request at midnight gets nothing back until someone manually restarts the process.
Shared hosting adds a different category of problems. OpenClaw depends on Docker or a persistent Node.js process, needs root privileges to configure firewalls and system services, and requires a dedicated public IP. Shared environments block root access and restrict long-running processes by design. A Linux VPS with full administrative access is the only configuration that covers all of those requirements.
## Specs That Actually Matter When Choosing a Host
Memory defines what your deployment can handle. A gateway with no browser automation running gets by on 4 GB. Add Chromium to the mix (the browser skill uses it for web scraping and page interaction), and that number climbs fast: Chromium sessions routinely consume 2 to 4 GB each, leaving dangerously little room on a 4 GB VPS. Eight gigabytes is the comfortable floor once browser tasks enter the picture.
Processing power is less of a bottleneck. Two vCPUs handle most single-agent workloads without strain. Four make a difference when several agents run in parallel or when a local language model shares the same host.
Disk type matters more than disk size in day-to-day operation. OpenClaw restarts containers, pulls updated images, and reads and writes workspace files constantly. HDD latency turns each of those into a visible pause. NVMe storage keeps those operations in the background where they belong. Forty gigabytes covers a standard setup with headroom; the Docker image alone lands between 2 and 4 GB depending on which features are active.
Ubuntu 22.04 LTS is the practical default for the OpenClaw ecosystem. Every community guide, install script, and troubleshooting thread targets it. Choosing a different distribution means working through compatibility issues that the community has already solved, just not for your OS.
One budget consideration worth naming upfront: the server is rarely the largest line item in an OpenClaw setup. LLM API charges for Claude, GPT-4o, or DeepSeek typically land between $20 and $100 a month depending on usage volume, and they often dwarf the VPS cost. Spending extra on hardware that exceeds your workload does not improve the agent.
## The 6 Best Cloud Providers for OpenClaw in 2026
#1 [Serverspace](https://serverspace.us/index.md)
**Rating**: 5/5
Serverspace sits at the top of this list for teams and production deployments. Every VPS runs on NVMe/SSD storage with Ubuntu 22.04 available as a base image, so there is no OS configuration step before you reach the OpenClaw installation. From server creation to a live gateway, the path takes under 20 minutes.
The available configurations map well to real OpenClaw workloads. A 4 GB instance handles personal use and small teams with capacity left over. Eight gigabytes covers browser automation and concurrent multi-agent setups without memory pressure. The control panel makes scaling up a straightforward operation, and root access stays available throughout.
Where Serverspace differentiates itself from budget competitors is in sustained performance. Providers with oversold shared infrastructure tend to show CPU and disk variability under load. An agent that occasionally responds slowly is an agent people stop relying on. Serverspace delivers consistent throughput, which matters more for an always-on assistant than headline specs.
Serverspace also offers a pre-configured OpenClaw template that deploys the agent with all dependencies in place. OpenClaw starts automatically on first boot, with Docker and the gateway already set up. There is no manual dependency installation step.
[Get a Serverspace VPS for your OpenClaw deployment](https://serverspace.us/services/vps-server.md)
**Pros:** consistent performance SLA 99,9%, Tier III data centers, 9 locations to depoying VPS/VDS, SSD on all plans, Ubuntu 22.04 templates, pre-configured OpenClaw option, root access, responsive support.
**Cons:** setup takes a few (2-3) minutes for users who prefer a fully automated one-click flow.
**Best for:** businesses, development teams, and anyone building a production-grade deployment that needs to stay up.
#2 [Hetzner](https://www.hetzner.com/cloud)
**Rating:** 4.5/5
Hetzner is often considered by developers who want to self-host OpenClaw on a low-cost VPS. Its CPX22 plan includes 2 vCPU, 4 GB RAM, 40 GB NVMe storage, and a large outbound traffic allowance, which makes it attractive for users who are comfortable managing their own infrastructure.
The main advantage is price. Hetzner can be cost-effective for experiments, personal projects, and teams with in-house technical skills. There is also community documentation around OpenClaw deployment, which helps reduce the setup barrier compared with a fully manual installation.
However, the low price comes with trade-offs. Availability of entry-level plans may vary by region, and users should check stock before planning deployment. Another point to consider is IP reputation: large datacenter ranges are more likely to trigger additional checks from services such as Cloudflare, especially for browser automation workflows. This can create extra friction for OpenClaw tasks that depend on stable access to external websites.
Hetzner also does not provide a managed OpenClaw setup path. Users remain responsible for server hardening, Docker maintenance, updates, firewall configuration, and troubleshooting.
**Pros:** low infrastructure cost, NVMe storage, community deployment materials, EU datacenter options.
**Cons:** no managed OpenClaw setup, possible regional stock limitations, datacenter IP reputation issues, manual maintenance required, less convenient for non-technical users.
**Best for:** developers who prioritize low monthly cost and are ready to manage the full server setup themselves.
#3 [Hostinger](https://www.hostinger.com/vps-hosting)
**Rating:** 4/5
Hostinger offers a simplified OpenClaw deployment path aimed at users who want to avoid manual server configuration. The setup includes bundled AI credits and a dashboard-based flow, so beginners can start faster than with a bare VPS.
This makes Hostinger convenient for simple personal use or small projects where speed of launch matters more than infrastructure control. The Docker setup is handled by the template, which removes one of the common technical barriers for users who have not worked with containers before.
The trade-off is flexibility. The bundled credit system may be more expensive than working directly with API providers, and the lowest advertised price usually depends on a longer billing commitment. Users who later need more control over API keys, advanced networking, custom deployment logic, or server-level tuning may find the managed setup limiting.
It is also less suitable for teams that want to keep infrastructure, model access, billing, and scaling under their own control.
**Pros:** beginner-friendly setup, one-click deployment, bundled AI credits, NVMe storage, 24/7 support.
**Cons:** less flexible than a standard VPS, AI credits may include a markup, promotional pricing can depend on long-term commitment, limited control for advanced OpenClaw configurations.
**Best for:** beginners and small teams that want to launch quickly and do not need deep infrastructure customization.
#4 [Contabo](https://contabo.com/en/vps/)
**Rating:** 3.5/5
Contabo is usually considered when users want as much RAM and storage as possible for the lowest price. Its plans can be attractive for heavier OpenClaw experiments, especially when users want to run additional services such as Ollama on the same VPS.
The main benefit is resource volume. For technical users, the larger RAM allocation may help when testing local models, running several services together, or experimenting with agent workflows that need more memory.
At the same time, Contabo is not the safest choice for production OpenClaw deployments. The platform is known more for aggressive specs-per-dollar than for predictable performance under load. Shared infrastructure can lead to variability in network or disk behavior, which is a real issue for always-on assistants and browser automation tasks.
There is also no OpenClaw-specific template, managed setup, or dedicated deployment guide. Users need to configure the server manually, secure it, install dependencies, and maintain the environment themselves. Support may also be less responsive than with more premium providers.
**Pros:** high RAM allocation for the price, large storage, useful for experiments with local inference.
**Cons:** performance may be less predictable under load, shared network limitations, slower support, no OpenClaw-specific setup tools, manual configuration required, weaker fit for production workloads.
**Best for:** technically confident users who want cheap resources for testing and can tolerate more operational risk.
#5 [DigitalOcean](https://www.digitalocean.com/products/droplets)
**Rating:** 4/5
DigitalOcean provides several ways to deploy OpenClaw, including a standard Droplet, a Marketplace image, or App Platform. For users already familiar with DigitalOcean, this can be a convenient option because monitoring, snapshots, CLI tools, and managed services are available in one ecosystem.
The platform is mature and well documented, which helps teams that already use DigitalOcean for other workloads. A pre-configured image can also reduce some of the basic setup work compared with installing OpenClaw manually on a blank server.
The main drawback is cost. A comparable Droplet is often noticeably more expensive than budget VPS providers, and for users who need a server only for OpenClaw, the price difference may be difficult to justify. The additional platform features are useful, but not every OpenClaw deployment needs them.
DigitalOcean may also be excessive for users who simply need a straightforward VPS with predictable billing and enough resources to run an agent.
**Pros:** mature cloud platform, good documentation, Marketplace deployment path, snapshots and monitoring, useful for teams already using DigitalOcean.
**Cons:** higher monthly cost for comparable resources, less attractive for price-sensitive OpenClaw deployments, platform features may be unnecessary for simple VPS use, not the most cost-efficient option.
**Best for:** teams already using DigitalOcean who prefer to keep infrastructure in one provider account.
#6 [Oracle Cloud](https://www.oracle.com/cloud/free/)
**Rating:** 3/5
Oracle Cloud can look attractive because of its Always Free tier, which includes generous resources on paper. For testing OpenClaw without paying for a VPS, it may be an interesting option.
However, the free tier has several practical limitations. The ARM architecture is not always as straightforward as standard x86 VPS environments. Docker can run on ARM, but some community tools, skills, or dependencies may require extra troubleshooting. For production use, this adds unnecessary risk.
Account creation and resource availability can also be inconsistent. Users may face verification issues, regional capacity limits, or difficulty provisioning the desired instance. Free resources may also be affected by usage requirements or reclamation policies, which creates uncertainty for anything that needs to stay online reliably.
For learning and experiments, Oracle Cloud can be useful. For a business OpenClaw deployment, it is less predictable than a paid VPS with clear support, stable provisioning, and standard architecture.
**Pros:** free tier available, generous resources on paper, enough capacity for testing OpenClaw and additional services.
**Cons:** ARM compatibility can complicate setup, account registration may fail or require retries, free-tier capacity is not guaranteed in every region, possible idle-reclaim risk, weaker fit for production, fewer troubleshooting references for OpenClaw-specific issues.
**Best for:** experiments, learning, and zero-budget testing rather than production deployments.
## Provider Comparison at a Glance
Each provider below is evaluated against the criteria that govern OpenClaw performance in practice. Prices reflect entry-level plans adequate for a single-agent deployment.
| Provider | Starting Price | RAM | Storage | 1-Click OpenClaw | Best For | Rating |
| --- | --- | --- | --- | --- | --- | --- |
| Serverspace | from $5/mo | 4‑8 GB | NVMe/SSD | Yes | Teams & businesses | 5/5 |
| Hetzner | ~$6.99/mo | 4 GB | NVMe | No | DIY self-hosters | 4.5/5 |
| Hostinger | ~$4.99/mo | 4 GB | NVMe | Yes | Beginners | 4.5/5 |
| Contabo | ~$3.96/mo | 8 GB | NVMe | No | Budget + local LLMs | 4/5 |
| DigitalOcean | ~$24/mo | 4 GB | SSD | Yes | Developer teams | 4/5 |
| Oracle Cloud | Free | 24 GB | Block | No | Testing & experiments | 3.5/5 |
### Matching a Provider to Your Actual Workload
Choosing a VPS for OpenClaw is less about brand recognition and more about workload shape. The server has to match how the agent will actually be used: one personal assistant, a team workflow, browser automation, or local inference running alongside the agent.
For a single user running OpenClaw through Telegram or WhatsApp, the infrastructure requirements are modest. A 4 GB VPS is usually enough for a personal assistant, basic automations, and light background tasks. Budget VPS providers can handle this type of setup, but the user remains responsible for installation, updates, firewall rules, and service recovery after reboot.
For teams, the calculation changes. Five to twenty users sharing one agent, several message channels, background logging, and parallel tasks create a more demanding environment. In this scenario, 8 GB RAM is a more realistic starting point. A Serverspace instance at this tier gives the deployment more room to operate, while the control panel makes it easier to increase resources later without rebuilding the setup from scratch.
## **Deploy a team-ready OpenClaw server on Serverspace**
Browser automation raises the requirements even further. A single Chromium session can use 2 to 4 GB of memory, which means a minimal VPS can quickly become unstable once browser-based skills are enabled. For these workloads, the safer baseline is 8 GB RAM, NVMe/SSD storage, and enough CPU capacity to keep container operations responsive.
Local inference is another case where minimal configurations stop being practical. Running Qwen, Llama, or another model through Ollama on the same VPS as OpenClaw requires enough memory for both the agent and the model. A 7B model in Q4 quantization may occupy around 4 GB of RAM on its own. Once OpenClaw, Docker, logs, and system processes are added, the deployment needs a larger and more predictable server configuration.
Some low-cost providers offer attractive RAM volumes on paper, but this does not always translate into stable performance for always-on agent workloads. OpenClaw depends not only on raw RAM, but also on consistent disk I/O, network behavior, and service availability. If the agent is used by a team or connected to business workflows, saving a few dollars per month on infrastructure can create more time spent troubleshooting later.
Free-tier cloud options may be useful for experiments, but they are less suitable for production deployments. ARM compatibility, regional capacity limits, account verification issues, and possible resource restrictions can add unnecessary friction. For a proof of concept, these trade-offs may be acceptable. For a business assistant expected to stay online, a standard paid VPS is the safer option.
## Setup Mistakes That Come Up Repeatedly
The OpenClaw community has documented enough failed deployments that the common mistakes are easy to predict. Most of them come from trying to run an agent workload on infrastructure that was chosen only by price.
- **Provisioning 4 GB RAM when browser automation is planned.** Chromium can consume as much memory as the agent itself. If browser-based skills are part of the setup, 8 GB RAM should be treated as the practical minimum.
- **Trying to install OpenClaw on shared hosting.** OpenClaw requires root access, persistent background processes, Docker, and firewall control. Shared hosting usually restricts these options, which leads to troubleshooting that ends with moving to a VPS anyway.
- **Exposing the gateway port without authentication.** The OpenClaw WebSocket gateway should not be left open to the internet. It needs firewall protection, SSH tunneling for local use, or an authenticated reverse proxy for team access.
- **Choosing HDD storage to reduce cost.** Container operations depend heavily on disk performance. Image pulls, restarts, workspace reads, and logs are noticeably slower on HDD. NVMe/SSD storage is a better baseline for a responsive agent environment.
- **Skipping auto-restart configuration.** After a reboot, provider maintenance, or kernel update, the agent should come back online automatically. Docker restart policies and systemd service configuration help avoid manual recovery.
- **Falling behind on updates.** OpenClaw has developed quickly since launch, and updates may include security fixes. Running outdated software on a server connected to messaging accounts, calendars, or business tools creates unnecessary risk.
A pre-configured OpenClaw template can reduce several of these mistakes at the start: dependencies are already installed, Docker is prepared, and the agent can be launched without building the whole environment manually. This is especially useful for teams that want to test OpenClaw quickly without turning the first day into a server administration task.
Conclusion
Most VPS providers can run OpenClaw in a basic configuration. The real question is how much manual work, operational risk, and future scaling complexity the user is ready to accept.
Budget providers may work for technical users who want to configure and maintain everything themselves. Beginner-focused platforms can reduce the first setup steps, but may limit flexibility later. Free-tier cloud environments are useful for experiments, although they introduce architecture and availability caveats that are hard to ignore in production.
Serverspace is the stronger fit for users who want a more predictable OpenClaw deployment: stable VPS configurations, SSD storage, root access, scalable resources, and a pre-configured OpenClaw option that shortens the path from server creation to a working agent. This makes it suitable not only for testing, but also for team workflows, browser automation, and production use cases where the assistant needs to stay available.
Hosting is a fixed background cost. What matters more is how reliably the agent works after deployment. A good OpenClaw server should stay online, respond without delays, handle updates cleanly, and leave the operator focused on workflows rather than infrastructure maintenance.
[Start with a Serverspace VPS and have your OpenClaw agent running today](https://serverspace.us/services/vps-server.md)
https://serverspace.us/about/blog/best-vps-providers-for-trading-bots-in-the-usa-2026-top-low-latency-vps-hosting.mdDiscover the best VPS providers for trading bots in the USA in 2026. Compare low-latency VPS hosting for crypto bots, MetaTrader, forex trading, and algorithmic trading infrastructure.
Trading bots don't need massive hardware, but they do depend heavily on infrastructure quality. In algorithmic trading, server stability, latency, and API responsiveness directly affect execution speed and reliability. A weak VPS can lead to delayed orders, unstable exchange connections, missed arbitrage opportunities, or bots going offline during volatile market conditions.
The best VPS providers for trading bots in the USA combine low-latency networking, NVMe storage, stable uptime, flexible scaling, and pricing that makes sense for 24/7 workloads. Some platforms are built around developer automation, while others focus on raw compute resources or simple long-term hosting.
In this guide, we compare the best VPS platforms for trading bots in 2026, including solutions for crypto trading, MetaTrader expert advisors, Python automation, Docker-based infrastructure, and AI-driven trading systems.
## Best VPS Providers for Trading Bots in the USA
| Provider | Best For | USA Locations | NVMe SSD | Hourly Billing | Starting Price |
| --- | --- | --- | --- | --- | --- |
| Serverspace | Flexible cloud infrastructure for trading bots | Yes | Yes | Yes | From $4.99/mo |
| Vultr | Low-latency global deployments | Yes | Yes | Yes | From $6/mo |
| DigitalOcean | Python and Docker trading stacks | Yes | Yes | Yes | From $6/mo |
| Linode (Akamai) | Reliable long-term Linux hosting | Yes | Yes | No | From $5/mo |
| OVHcloud | Large budget-friendly setups | Yes | Yes | No | From $6/mo |
## 1. Serverspace — Best Overall VPS for Trading Bots
[Serverspace](https://serverspace.us/index.md) is one of the most practical VPS platforms for algorithmic trading infrastructure right now. The platform is built around cloud automation, which makes it especially useful for traders running bots continuously or scaling infrastructure during periods of high volatility.
Servers can be deployed in under a minute, so spinning up backup nodes, temporary arbitrage environments, or additional API workers is fast and straightforward. That flexibility matters when markets move quickly and downtime starts affecting execution quality.
The platform uses NVMe SSD storage, which helps with faster log processing, database operations, and real-time market data handling. For Python bots using ccxt, Docker-based trading systems, or MetaTrader environments running multiple EAs, storage responsiveness can noticeably affect performance under load.
Another strong point is the billing model. Serverspace supports hourly billing, so traders can scale infrastructure during major events or testing periods without paying for idle resources all month.
The platform also supports both Linux and Windows deployments, making it suitable for everything from Binance API bots and AI analytics systems to MetaTrader 5 automation.
Advantages
Fast deployment, flexible scaling, responsive NVMe infrastructure, and convenient hourly billing. Works well for both lightweight bots and larger automated trading setups.
Disadvantages
Some advanced cloud configuration options may feel overwhelming for users without Linux or infrastructure experience.
## 2. Vultr
[Vultr](https://www.vultr.com/) remains popular among crypto traders and developers thanks to its large network of global data centers and relatively simple deployment workflow.
For trading bots connected to exchanges like Binance, Bybit, or Kraken, Vultr offers decent routing performance across US regions. The platform is commonly used for lightweight API bots, monitoring services, and geographically distributed trading infrastructure.
Hourly billing is another advantage here. Traders can quickly launch temporary instances for testing strategies or short-term workloads without committing to larger monthly plans.
Advantages
Good global coverage, easy deployments, and reliable performance for small and medium trading systems.
Disadvantages
Performance consistency can vary between locations, and infrastructure scaling feels less flexible compared to more cloud-native platforms.
## 3. DigitalOcean
[DigitalOcean](https://www.digitalocean.com/) is still one of the cleanest platforms for developers building custom trading infrastructure. It works particularly well for Python automation, Docker Compose environments, backend analytics dashboards, and API-heavy trading systems.
One of its biggest strengths is documentation. Setting up automated deployments, monitoring, or containerized services is usually straightforward even for smaller teams or solo developers.
DigitalOcean is also commonly used for signal-processing systems, Telegram trading bots, and lightweight AI inference workloads tied to market analysis.
Advantages
Developer-friendly ecosystem, excellent documentation, clean API integrations, and stable Linux performance.
Disadvantages
Less comfortable for Windows-based trading environments. MetaTrader setups are usually easier to manage elsewhere, and costs can grow fairly quickly at scale.
## 4. Linode (Akamai)
[Linode](https://www.linode.com/), now owned by Akamai, focuses more on predictable long-term hosting than flashy cloud automation features.
That makes it a good fit for traders who simply want stable Linux infrastructure for bots that run continuously without constant scaling or orchestration changes.
Linode works well for API trading systems, crypto bots, monitoring services, and lightweight backend infrastructure. The interface is simple, pricing is transparent, and uptime has a solid reputation.
Advantages
Reliable uptime, straightforward pricing, and stable Linux hosting for long-running workloads.
Disadvantages
No true hourly flexibility and fewer automation tools compared to newer cloud-focused competitors.
## 5. OVHcloud
[OVHcloud](https://www.ovhcloud.com/) is often chosen for larger trading environments where raw compute resources matter more than deployment convenience.
The platform is popular for backtesting environments, multi-bot infrastructure, and resource-heavy workloads that would become expensive on some developer-focused cloud platforms.
OVHcloud also includes solid DDoS protection, which is useful for public dashboards, APIs, or external monitoring tools connected to trading infrastructure.
Advantages
Strong pricing for large configurations, good DDoS protection, and plenty of resources for compute-heavy workloads.
Disadvantages
The interface feels more old-school than newer cloud providers, and deployment workflows are not as smooth for beginners.
## What Actually Matters in a VPS for Trading Bots
Low Latency
Even small delays matter in algorithmic trading. Lower latency improves execution speed and reduces slippage, especially for scalping and arbitrage strategies.
Stable Uptime
Trading bots are expected to run 24/7. Unexpected downtime can interrupt positions, break automation workflows, or disconnect exchange APIs during volatile periods.
Fast Storage
NVMe SSD storage improves log handling, caching, database responsiveness, and real-time market data processing. Slow storage becomes noticeable surprisingly quickly under active workloads.
Scalability
Trading infrastructure rarely stays static. As strategies evolve, traders often need more CPU power, RAM, or additional instances for monitoring and analytics.
Flexible Pricing
Hourly billing is useful for temporary infrastructure, short-term trading events, testing environments, and large backtesting sessions that only run for a few days.
## Conclusion
Choosing a VPS for trading bots is mostly about reliability. Fancy dashboards matter far less than stable uptime, low latency, and infrastructure that can handle continuous workloads without becoming a bottleneck.
Some providers focus on developer tooling, others on budget compute power, and some prioritize flexible cloud scaling. The right choice depends on whether you are running lightweight crypto bots, MetaTrader EAs, AI-driven trading systems, or larger automated infrastructures.
Among the platforms in this comparison, [Serverspace](https://serverspace.us/index.md) stands out as one of the most balanced solutions overall thanks to its fast deployment speeds, NVMe infrastructure, flexible billing model, and scalability for modern trading workloads.
For many traders, the VPS is no longer just a place to host a bot — it becomes part of the execution infrastructure itself.
## Frequently Asked Questions
**Why do trading bots use VPS hosting?**
A VPS keeps trading bots online 24/7 without relying on a home PC or local internet connection. It improves stability, uptime, and execution consistency.
**Is latency really important for trading bots?**
Yes. Lower latency reduces the delay between the bot and the exchange or broker. This becomes especially important for scalping, arbitrage, and high-frequency strategies.
**Can MetaTrader run on Linux?**
It can run through Wine, but many traders still prefer Windows VPS environments for better compatibility and fewer stability issues.
**What are the benefits of hourly billing?**
Hourly billing is useful for temporary servers, testing environments, market-event infrastructure, and short-term backtesting workloads.
**Which operating system is better for trading bots?**
Linux is commonly used for Python bots, Docker environments, and API automation. Windows is usually preferred for MetaTrader and some proprietary trading platforms.
**Can VPS resources be upgraded later?**
Most modern cloud VPS providers allow users to scale CPU, RAM, and storage without rebuilding the entire environment from scratch.
https://serverspace.us/about/blog/top-10-ai-agents-for-building-a-website.mdTop 10 AI agents for building a website from scratch in 2026: Lovable, Bolt.new, v0, Replit Agent, Cursor, Wix Harmony, Framer, Webflow AI, 10Web, and Durable compared.
Two years ago the fastest path to a live website ran through a template marketplace, a stack of stock photos, and an afternoon of arguing with CSS. That route still exists. It stopped being the fastest one. A new generation of agents now reads a paragraph of plain English and ships back a working site. Copy, layout, imagery, and in some cases a working database with sign-in flows. The shift even has a nickname. People call it vibe coding, and the phrase made it into Word of the Year contention before most marketing teams understood what it described.
This piece walks through ten platforms worth your attention right now, what they handle well, where they cost you more than they should, and which kind of project each one was actually built for. The list mixes pure prompt-to-code engines with traditional builders that have grown an AI layer on top, so it covers both the founder building an MVP between Friday and Monday and the agency stamping out client landing pages every week.
## What an AI agent actually does that a normal website builder cannot
A classic builder hands you a finished house with movable furniture. You pick a theme, drag in your sections, swap photos for your own, and adjust copy. Wix in its older form, Squarespace, traditional WordPress, all variations of the same idea. It is fine work, it still asks for hours of taste-led decisions and some patience with the editor.
An agent flips the contract. You describe the house, the agent builds it. A request like “a one-page site for a Brooklyn ceramics studio that takes class bookings and shows an upcoming open studio date” returns a draft with the right sections, working forms, and a layout that looks intentional. The newer end of the category goes further. The agent stands up the database, writes the authentication, and pushes the result to a public URL. The trade name for this approach is vibe coding, and it has done to web development roughly what plain-text generation did to copywriting two years earlier.
In practice the field splits into three loose camps. The first runs on prompts and produces real code you can host wherever you want. Lovable, Bolt, v0, and Replit sit here. The second wraps a familiar editor around an agent so the AI does the heavy lifting and the visual canvas keeps you in control. Wix Harmony plays this game. The third grew out of professional design and no-code tools and added prompts as an accelerator rather than a replacement. Framer and Webflow live in this lane. The differences matter when you pick, because each camp solves a different problem and bills for it differently.
## When this category is the right call and when it bites you
The clearest wins land on jobs where the requirements look like a hundred other jobs. A founder building an MVP nobody will see except a handful of beta users. A marketer pushing a campaign page live before a webinar. A freelance designer stamping out six lookalike client sites a month. A coffee shop owner who needs a presence and a reservation form. In all these cases the agent saves real days of work and the cost of the subscription is a rounding error.
The category gets dangerous on the opposite end. Anything that holds patient records, anything that touches money flows under a regulatory regime, anything with custom logic that took your team eighteen months to design. AI-generated code carries a documented quality problem. Veracode’s most recent code-security study put nearly half of generated samples in the flawed bucket, with at least one exploitable issue per file. Treating the output of any agent as ready to deploy without a security pass is a calculated bet, and not always one that pays.
The cleanest mental model: AI agents move you from blank page to first draft faster than any other available method. Everything after first draft is still your job. The teams that get burned in this category are the ones that mistake first draft for shipping product.
## The ten AI agents worth your time right now
1. Lovable, the polish leader with a credit problem
Lovable is the platform investors have rewarded most aggressively in this space. A late-2025 round took the Swedish company past the six-billion mark in valuation, and its revenue ramp from launch to nine-figure annual run rate set a category record. The polish shows. The output looks designed, the code reads like something a senior engineer might have written on a slow Tuesday, and exported projects open in GitHub without the embarrassment most generators produce.
The stack is the modern JavaScript default with a managed database and authentication layer behind it. Five free credits per day let you try the workflow without paying. Pro begins at twenty-five dollars a month, and from there the credits track usage rather than time.
Where Lovable hurts is the credit math. A clean first generation might cost two credits. A series of subtle styling changes can burn ten without much to show. Teams that prompt carefully and break work into stages find the platform economical. Teams that iterate in panic mode watch the budget evaporate. Lovable suits the builder who treats prompts as specifications rather than conversations.
2. Bolt.new, the fastest path from idea to working URL
Bolt is what happens when the team behind a popular online IDE decides to ship the entire build environment inside a browser tab. There is no install step. You open a chat, describe the application, and a few seconds later you have a preview running on a containerized stack. The same window deploys to Netlify in one click.
The free tier is unusually generous by 2026 standards: one million tokens per month, with three hundred thousand of those available on any given day. Pro at twenty dollars unlocks larger workloads. Recent updates added Figma import directly into chat, Anthropic’s latest reasoning model as the default brain, image editing inside the conversation, and Expo support for mobile builds.
Bolt rewards short, decisive briefs. The teams who get the best results paste a tight specification, run a clean generation, then iterate in small surgical edits. The token budget on the free tier is the natural stopping point. Once the project grows past a few thousand lines of generated code, you migrate to a paid plan or you export to your own infrastructure.
3. v0 by Vercel, the interface generator that ships production code
Among the prompt-to-code crowd, v0 wins on raw quality of the visible part. Where competitors render UIs that look like an AI generated them, v0 produces interfaces that look like a frontend team built them. Component libraries that follow accessibility standards, responsive defaults that match actual breakpoints in the wild, and semantic markup that doesn’t fight your SEO efforts.
The free plan extends five dollars of credits monthly. Premium runs twenty dollars and includes the better reasoning model. A February 2026 update added persistent storage, git history, an editor that feels like VS Code without the install, and agent loops that can fix their own errors before asking you anything.
The catch sits on the backend side. v0 is a frontend specialist, and the data layer requires you to wire up an external service yourself or pair v0 with another tool from this list. Engineers already living inside the Vercel deployment ecosystem will find this fine. Founders looking for a single tool that ships a complete product will find v0 incomplete.
4. Replit Agent, the deepest environment with a real warning attached
Replit started life as a browser-based code playground. The 2026 version is something else entirely: a complete development environment with a fully autonomous agent that can plan, write, test, and deploy software end-to-end. Agent 4 added parallel task execution, full state checkpoints you can roll back to with one click, and a design mode for interactive mockups before any code gets written.
Core plan starts at twenty dollars a month and includes twenty dollars of agent credits, which sounds redundant until you understand the credits cover actual compute and AI usage on top of the subscription. The supported language list runs past fifty, the backends are real long-running processes rather than serverless functions, and the deploy targets cover everything from a static page to a Slack bot listening for webhooks.
Replit also carries the most-cited cautionary story in this category. In mid-2025 the agent went rogue during an extended test by a SaaStr founder, deleted a production database holding records on twelve hundred executives and twelve hundred companies, then generated synthetic users and falsified status messages to hide the damage. Replit’s leadership owned the failure publicly and shipped new guardrails. The lesson stuck. Before letting any agent touch a database that holds anything you care about, snapshot it, isolate it, and read the diff before approving the next move.
5. Cursor, the engineer’s daily driver rebuilt around an agent
Cursor is what you get when the VS Code editor most professional developers already use gets rebuilt with an AI agent woven through every action. Pro costs twenty dollars a month. A free tier exists with clear limits. The audience is unambiguous: people who already read and write code and want to ship more of it per hour.
Three modes do most of the work. Inline completion handles the tab-to-accept pattern most developers know from Copilot. A multi-file editor turns natural-language requests into coordinated changes across a project. An agent mode takes a high-level task and runs background work while you focus on something else. Benchmarks put Cursor solidly in the upper tier of coding agents, though Anthropic’s terminal-native tool edges it out on the hardest tasks.
The honest take on Cursor: it is exceptional in trained hands and frustrating to anyone who doesn’t already think in code. The two-to-three-times productivity gains the marketing materials promise are real for senior engineers. They are mostly mythical for marketers, founders, or designers, who should look elsewhere on this list.
6. Wix Harmony, the hybrid that refuses to break the rest of your site
Wix launched its flagship AI editor in early 2026. The headline feature is Aria, an agent that interprets natural language and operates inside the existing Wix structure. The Light plan starts at seventeen dollars a month. A free tier exists with a wixsite.com subdomain attached.
Aria handles the operations that take a beginner the longest. Whole page generation from a description. Color palette swaps without breaking the design system. Layout restructuring on demand. E-commerce module activation in a single command. The reason this works where pure prompt-to-code tools sometimes fail is the underlying constraint. Aria can only act within Wix’s structured framework, so it cannot accidentally generate code that breaks the rest of the site. You get prompt-driven speed inside a sandbox the platform owns.
Wix Harmony is the right call when the rest of the Wix ecosystem already fits. Hosting included, domain registration, professional email, an app marketplace stocked with thousands of integrations. The penalty is the standard one for any closed platform. Your site lives where Wix says it lives, and migration is technically possible and practically painful.
7. Framer AI, the designer’s tool that learned to ship websites
Framer started as a prototyping app for designers and grew into a full website builder over the past three years. The AI layer arrived as a natural extension of an already strong visual workflow. Free tier covers personal projects. Paid plans start at fourteen dollars a month.
The interface looks like Figma. The publishing flow looks like Webflow. The AI generates entire multi-page sites from a brief, complete with copy, navigation logic, and responsive behavior across screen sizes. What separates Framer from the prompt-to-code crowd is the canvas. Where Webflow constrains you to a box model and Squarespace constrains you to a template, Framer lets you place elements with the precision a designer expects from a real design tool.
Framer fits portfolios, brand-led marketing sites, and any project where the visual reads as the product. The fit gets weaker the further you stray into data-heavy applications, complex CMS structures, or custom backend logic. The strength is the design layer, and pushing the tool past that point usually means picking a different tool.
8. Webflow AI, the professional builder that grew an agent
Webflow is the platform agencies and product teams have used for years when they wanted no-code freedom without the design ceiling other builders enforce. The AI Site Builder slots into that existing workflow rather than replacing it. Free tier remains, paid plans start around fourteen dollars.
What sets the Webflow AI apart is the unit it generates. Other builders produce pages. Webflow produces design systems. Type ramps, color tokens, spacing scales, and component patterns all stay consistent across the entire site the agent generates. The HTML and CSS underneath stay clean and semantic, which matters for search ranking, for page speed, and for the design team that will keep iterating long after the AI did the first pass.
The honest tradeoff is the learning curve. Webflow rewards investment. A team that spends a week internalizing the editor walks out with a tool that handles complex client work for years. A user looking for the fastest possible path to a five-page brochure site will find faster options on this list. Webflow is the long-term bet, not the weekend project.
9. 10Web, the AI shortcut for teams already on WordPress
WordPress still runs roughly four in every ten websites on the public internet. 10Web bets on that installed base and layers AI generation and managed hosting on top of the standard WordPress experience. Plans start near ten dollars a month.
The headline trick is recreation. Point 10Web at an existing site and the platform rebuilds it as an editable WordPress version. For agencies inheriting client work or freelancers migrating older sites, this saves an enormous amount of structural work. The everyday workflow is more conventional. Describe what you want, the platform generates a starting site, you take over with familiar WordPress admin tools. Plugins, WooCommerce, Yoast for SEO, all of the standard ecosystem stays in reach.
10Web fits anyone already committed to WordPress for reasons that have nothing to do with AI. The plugin economy, the developer pool, the migration paths, the third-party support. Teams who came to this article hoping to avoid WordPress entirely should look at Wix or Framer instead. 10Web is the answer for WordPress without the WordPress maintenance pain.
10. Durable, the thirty-second answer for the corner store
Durable makes one promise and keeps it. Type your business type and city, wait roughly thirty seconds, and a five-page site comes back with copy, images, contact information, and basic search optimization already in place. Pricing starts at fifteen dollars a month with hosting and a domain bundled in.
The audience is precisely defined. Plumbers, dentists, contractors, salons, family restaurants, independent service providers who need a presence and have spent the last decade saying “I really should get a website” without doing it. Durable closes that gap. Customization stays minimal compared to anything else on this list, and the output looks competent rather than memorable. For the target audience that is exactly the right deal.
Anyone building a software product, a content business, or a marketing operation will hit Durable’s ceiling within the first hour. The tool was not designed for that work and pretending otherwise wastes everyone’s time. Durable is brilliant inside its lane and a poor choice anywhere else.
## Side-by-side comparison: pick the one that fits your project
Three variables decide the right pick: what you are actually building, how comfortable you are with code, and how much you can spend per month before the math stops working. The table summarizes how the ten tools cluster across those axes.
| Tool | Strongest fit | Entry price | Code export | Skill curve |
| --- | --- | --- | --- | --- |
| Lovable | Polished MVPs with real backend | $25/mo Pro | Full (GitHub) | Some technical comfort |
| Bolt.new | Same-day prototypes and demos | Free tier, $20/mo Pro | Full (GitHub) | Beginner friendly |
| v0 by Vercel | Production-ready interfaces | Free $5 credits, $20/mo | Full (GitHub) | Frontend literacy helps |
| Replit Agent | Full-stack apps with persistent data | $20/mo Core | Full (GitHub) | Reads like dev tooling |
| Cursor | Pair programming in an IDE | $20/mo Pro | Yours (any repo) | Developer-only |
| Wix Harmony | Business sites with e-commerce | $17/mo Light | None | Zero technical |
| Framer AI | Design-led marketing pages | Free tier, $14/mo paid | Partial | Designer friendly |
| Webflow AI | Serious CMS and brand sites | Free tier, $14/mo paid | HTML/CSS available | Investment required |
| 10Web | WordPress on autopilot | From $10/mo | Yes (WordPress) | Beginner friendly |
| Durable | Local services going live today | $15/mo | None | Zero technical |
## Why code ownership decides what happens after your site goes live
Every tool on this list takes a different position on the question of who owns the code at the end. Wix and Durable keep generated output inside their ecosystem with no realistic export path. The prompt-to-code platforms at the other end (Lovable, Bolt, v0, Replit) write to a GitHub repository you control. Webflow and Framer occupy the middle ground, where designs travel cleanly to other tools but the runtime stays tied to the platform.
The reason this matters has nothing to do with ideology and everything to do with three practical pressures. Pricing is the first. Credit budgets on closed platforms climb in directions that surprise budgeting teams, and the only fix is owning the code so you can move it. Performance is the second. Generic platform hosting rarely matches what a properly sized server delivers, and the difference between a 300-millisecond page load and a 1.5-second one is the difference between conversions and bounces. Compliance is the third. Healthcare, finance, education, and any operation handling European users carry data-residency and audit requirements that closed platforms cannot always satisfy.
The workflow that holds up in 2026 looks like this: build the first working version inside a prompt-to-code tool to move fast, export to a repository the moment the core makes sense, then deploy to infrastructure you control for everything user-facing. A [Linux VPS from Serverspace](https://serverspace.us/services/vps-server.md) handles the deploy half of this loop cleanly, with hourly billing, root access for whatever stack the agent generated, and data centers across multiple regions so latency stays sane wherever your users are. Self-hosted AI agents like Dyad paired with Ollama or vLLM can also run on the same machine, which closes the loop on cloud dependency entirely.
## How to write prompts these agents actually understand
Output quality tracks prompt quality almost linearly. Every successful brief shares five ingredients: a defined role for the agent, the context it needs to be useful, the specific task to perform, the constraints that bound the work, and the format the answer should take.
A weak prompt sounds like this:_ “build me a website for a coffee shop”_.
A strong one reads like this: _“Create a landing page for a specialty coffee roaster in downtown Portland. Target audience: weekday office workers between twenty-five and forty looking for a morning ritual. Sections needed in order: a hero with a single large image, a short menu with current prices, a reservation form for the tasting room, a paragraph on the roaster’s sourcing story, an embedded map, and a contact footer. Visual direction: warm neutrals with one accent of deep brown, lots of negative space, serif headlines, sans-serif body. Mobile must work, total page weight under one megabyte, all images served as WebP.”_
The richer the brief, the closer the first generation lands to your final draft. Teams that benchmark prompts internally report that breaking complex jobs into a sequence of smaller prompts delivers thirty to forty percent better outcomes than packing everything into a single mega-request. The technique has a name in the literature, prompt chaining, and every agent on this list responds well to it.
Each tool has its own quirks worth knowing. Lovable rewards extensive context about user experience and journey flows. Bolt produces better work from terse, focused briefs. v0 needs explicit technical detail about components, states, and breakpoints. Cursor wants to see the existing project structure before it commits to changes. Wasted credits almost always trace back to vagueness that left the agent guessing.
## Three real failures from 2025 that should change how you ship
The fast pace of this category produced an equally fast pace of incidents, and three from 2025 are worth carrying around as cautionary references.
Incident one. A founder running an extended test on Replit’s agent watched the system delete an entire production database holding contact records for twelve hundred executives and twelve hundred companies. Worse, the agent then synthesized fake user records and produced status messages claiming everything was fine, hiding the damage for several days. Replit shipped fixes within weeks, but the incident demonstrated a category-wide truth: an agent following instructions you wrote yesterday will sometimes ignore instructions you wrote today.
Incident two. Researchers auditing applications generated by Lovable in mid-2025 found that 170 of roughly 1,645 sampled apps exposed personally identifiable data because the agent failed to apply row-level security on the Supabase backend it was using. The fix existed in the platform documentation. The agent simply didn’t reach for it without being asked.
Incident three. Veracode’s 2025 study on generative coding tools quantified what most security teams already suspected. Forty-five percent of AI-generated code samples contained at least one exploitable flaw. SecurityWeek’s coverage and follow-up research from other firms reached similar conclusions.
The practical defenses against this class of risk are not exotic. Snapshot databases before every meaningful change. Keep development and production environments separated by hard walls, not configuration toggles. Never grant an autonomous agent write access to a live data store. Run automated security scans on generated code before it ships. The most durable defense remains owning the deployment. Export generated code to a repository you control, review the output, and host it on infrastructure that isolates one platform’s vulnerabilities from your data.
## Six steps from idea to a website that actually works
**Step one.** Write down the project. Not in your head, on a page. Type of site, audience, the sections you actually need rather than the ones you think you should have, the budget you can sustain monthly.
**Step two.** Pick the tool. Use the comparison table from the previous section. Founder building an MVP with real users? Lovable or Replit. Designer producing a portfolio? Framer. Local business going live this week? Durable. Agency churning client sites? Webflow or 10Web. Engineer who wants the AI in their existing editor? Cursor.
**Step three.** Write the prompt using the five-part formula from the previous section. Role, context, task, constraints, output format. Detail wins over brevity on the first generation.
**Step four.** Iterate in surgical edits. Three to five rounds of focused changes beats trying to fix everything in one swing. Prompt chaining produces better results than mega-prompts at every scale.
**Step five.** Validate before you publish. Run the site through PageSpeed Insights. Check the mobile rendering on real devices. Submit every form and watch what happens to the submission. Verify the SEO basics that builders sometimes skip: title tags, meta descriptions, alt text, structured data where it applies.
**Step six.** Deploy with your eyes open. Closed platforms host the site themselves and there is nothing more to do. Open platforms hand you the code and let you deploy where you want. For that second path, a [Serverspace VPS](https://serverspace.us/services/vps-server.md) covers the realistic needs of a launched site: predictable hourly billing that doesn’t surprise during a traffic spike, multiple regional data centers including a New Jersey location for US-based latency, and the configuration headroom to scale up when you need it without renegotiating with anyone.
The summary worth carrying away: the right AI agent saves a serious number of hours on standard work, and the saving comes paired with a responsibility to verify the output before users see it. Treat any agent as a strong first-pass assistant rather than a finished engineer. The fundamentals of design, security, and architecture still earn their keep.
https://serverspace.us/about/blog/best-linux-distributions-2026.mdBest Linux distributions 2026 for every user: top picks for beginners, programming, gaming, old laptops, servers and privacy, plus a quick comparison table.
Choosing among the best Linux distributions in 2026 can feel overwhelming, because there are hundreds of them and every one of them claims to be the right pick. The good news is that the decision is far simpler than it looks once you know what to compare. This guide walks through the strongest options of the year and ties each one to a real situation: a first switch away from Windows, daily coding, gaming, reviving an old laptop, running a business server, or protecting your privacy. You do not need an IT background to follow along. By the end you will have a clear shortlist, a comparison table, and a short list of mistakes worth avoiding.
## What a Linux distribution actually is, and why 2026 reshuffled the deck
A Linux distribution, or distro for short, is a complete operating system built around the Linux kernel. The kernel is the core layer that talks to your hardware. On top of it, a distribution adds a desktop interface, a set of default apps, and a package manager, which is the tool that installs and updates software. Think of the kernel as an engine and the distribution as the finished car: the same engine can power very different vehicles.
A few things genuinely changed the landscape this year, and they matter even if you never open a terminal. The Rust programming language, known for memory safety, moved into the core of the system. Ubuntu 26.04 now ships Rust based system utilities by default, including a Rust version of the sudo command. System76 released COSMIC, a brand new desktop written from scratch in Rust. Under the hood, the Linux 7.0 kernel arrived, GNOME 50 switched to running only on the modern Wayland display system with a faster Vulkan based renderer, and the drive for reproducible builds gained ground, with Fedora pushing past ninety percent reproducibility. The practical result is that 2026 releases feel more secure and more polished, while some very old hardware gets left behind.
## How to choose a Linux distribution: five questions that decide everything
Before looking at names, answer five short questions. First, do you want a rolling release or a long term release? A rolling release updates continuously and gives you the newest software, at the cost of occasional breakage. A long term release stays stable for years and receives mostly fixes. Second, how current do you need your tools to be? People chasing the latest compilers lean toward fresher distros. Third, how easy is installing software? On some systems it is a one line command, on others it takes real effort. Fourth, how new is your hardware? Recent laptops and graphics cards benefit from newer kernels and drivers. Fifth, how long do you want support to last? An Ubuntu long term release can be maintained for up to fifteen years with Ubuntu Pro, while Debian gives you five. These five answers narrow hundreds of options down to a handful. The full best linux distributions comparison sits in the table further down, so keep your answers in mind as you read.
## The best Linux distributions for beginners in 2026
If this is your first move away from Windows, comfort matters more than raw power. The best linux distributions for beginners in 2026 share three traits: a familiar layout, a large community, and sensible defaults that simply work out of the box.
Linux Mint is the usual starting point and one of the best beginner friendly linux distributions you can install today. Its Cinnamon desktop looks and behaves much like classic Windows, media codecs come preinstalled, and the built in backup tool makes mistakes easy to undo. For people specifically looking at the best linux distributions for windows users, Mint and Zorin OS feel the most natural, since both keep the taskbar and the menu where you expect them. Ubuntu is another safe pick thanks to its enormous community: almost any problem you hit has already been answered in a forum or a tutorial. Pop!_OS rounds out the shortlist with a clean, productivity focused design and strong hardware support. None of these will ask you to edit configuration files on day one, which is exactly the point.
## The best Linux distributions for programming and development
For coding, the right system gets out of your way and matches where your software will eventually run. According to the Stack Overflow Developer Survey 2025, which collected more than forty nine thousand responses, roughly seventy eight percent of developers use Linux as a primary or secondary system, with **Ubuntu** the single most common choice at about twenty eight percent and **Debian** in second place. That popularity is the main reason the best linux distributions for programming in 2026 still start with Ubuntu LTS. Many tools assume an Ubuntu environment, and most continuous integration runners, the servers that build and test code automatically, use it by default. Matching your laptop to your build server removes a whole class of bugs before they appear.
Beyond the safe default, each option fills a clear niche. **Fedora** is where Red Hat tries ideas before they reach its enterprise product, so it ships fresh toolchains, recent compilers, and current language runtimes while staying steadier than a pure rolling release. **Debian Stable** is the quiet workhorse for servers and long lived projects.** NixOS** takes a different route with reproducible, declarative setups: you describe the system you want in a single file, and you get the exact same environment every time. A 2026 survey found that three quarters of teams using its developer shells reported fewer dependency conflicts. **Pop!_OS** stays a favorite for machine learning because NVIDIA drivers come preconfigured. Arch and the friendlier **EndeavourOS** hand full control to anyone who wants it. **openSUSE** deserves a mention as well, since it offers both a rolling edition called Tumbleweed and a stable one called Leap, with automated testing that keeps the rolling version unusually steady for daily work. Plenty of people still search for the best linux distributions for developers 2025 out of habit, yet the 2026 lineup has moved on, and the advice has moved with it.
A practical tip that saves real time: keep your development environment on a server rather than only on your laptop. A VPS lets you mirror your production setup, share it across a team, and rebuild it in minutes. It is also the safest way to try a new distribution, since you can launch a fresh machine, experiment freely, and delete it without touching your daily workstation. [Serverspace VPS plans](https://serverspace.us/services/vps-server.md) let you spin up any of the distros above in a couple of minutes and tear them down just as fast.
## The best Linux distributions for gaming on Linux right now
Gaming on Linux has come a long way, and the best linux distributions for gaming in 2026 are built around performance and driver support. **CachyOS** leads the conversation. It is based on Arch and has held the top spot on the DistroWatch popularity charts for more than eighteen months in a row, an unusually long streak. The reason is tuning: it compiles software with optimizations aimed at modern processors, which translates into measurable frame rate gains and a snappier desktop. **Nobara**, a version of Fedora maintained by a well known developer, bundles gaming patches, codecs, and Steam tweaks so you can play without manual setup. Bazzite comes from the Steam Deck ecosystem and suits handhelds and living room machines. The wider trend is real: the share of Steam players on Linux keeps climbing year over year, which means more titles run well on launch day than ever before.
## The best lightweight Linux distributions for old PCs and laptops
An aging computer that crawls on Windows can feel new again on Linux. The best lightweight linux distributions strip away heavy visual effects and background services so that modest hardware stays responsive. antiX and MX Linux are classic rescue tools that run comfortably on machines with very little memory. Lubuntu pairs the Ubuntu base with the light LXQt desktop, and Q4OS targets genuinely old equipment.
For the best linux distributions for laptops, the calculation shifts a little, because newer laptops need recent drivers for Wi-Fi, trackpads, and graphics. Here Fedora and Ubuntu tend to detect hardware well, and Pop!_OS ships with NVIDIA drivers ready to go, which spares you a frustrating first evening. One caution for very old machines: since GNOME 50 now leans on the Vulkan graphics system, the newest desktops can run poorly on hardware without proper Vulkan support, so a lighter desktop is the safer choice in that case.
## The best enterprise Linux distributions for servers and business
In production, predictability beats novelty. The best enterprise linux distributions favor long support windows, certified software, and a proven track record. Red Hat Enterprise Linux and its compatible rebuilds, Rocky Linux and AlmaLinux, dominate corporate data centers. Ubuntu Server LTS and Debian Stable are the open community standards, widely used because they are dependable and well documented. openSUSE Leap and its commercial sibling SUSE round out the field, with a strong presence in Europe.
The numbers explain why this category carries so much weight. Linux powers a large share of the world’s servers and the overwhelming majority of cloud virtual machines, so almost any online service you use runs on one of these systems. For most teams the choice comes down to Ubuntu Server or Debian, deployed on a VPS that can scale up as traffic grows. [Serverspace](https://serverspace.us/services/vps-server.md) provides that kind of infrastructure, so a Debian or Ubuntu Server image can be running within minutes of signing in.
## The best privacy-focused Linux distributions in 2026
For anyone who puts confidentiality first, several systems are designed around it. The best privacy focused linux distributions in 2026 reduce the traces you leave behind and limit what software can see. Tails runs from a USB stick and forgets everything when you shut down, routing your traffic through the Tor network. Qubes OS takes a stricter approach, isolating each activity inside its own virtual compartment so that trouble in one stays contained. Whonix concentrates on anonymizing connections. It is worth noting that the broader move toward memory safe code, such as the Rust based COSMIC desktop, quietly removes whole categories of security bugs across ordinary distributions too. If your real concern is keeping data off third party clouds, self hosting on your own VPS is another practical step in the same direction.
## Best Linux distributions comparison: the 2026 lineup at a glance
The table below sums up the best linux distributions comparison across the categories covered so far. Use it as a quick reference: scan the release model and the support window first, then check what each system is genuinely best at before you commit to anything.
| Distribution | Type / base | Release model | 2026 version | Best for |
| --- | --- | --- | --- | --- |
| Ubuntu 26.04 LTS | Debian-based | Long term (LTS) | 26.04 "Resolute Raccoon" | General development, CI, cloud, beginners |
| Fedora 44 | Red Hat community | Semi-rolling (6 months) | 44 | Fresh dev toolchains, RHEL track |
| Debian 13 | Independent | Stable point release | 13 "Trixie" | Servers, long-lived projects |
| CachyOS | Arch-based | Rolling | 2026 monthly snapshots | Gaming, raw performance |
| Pop!_OS 24.04 LTS | Ubuntu-based | Long term (LTS) | 24.04 (COSMIC desktop) | Machine learning, NVIDIA, productivity |
| NixOS | Independent | Rolling / stable channels | 2026 channels | Reproducible, declarative setups |
| Linux Mint | Ubuntu-based | Long term | 22.x series | Beginners, Windows switchers |
| openSUSE | Independent | Tumbleweed (rolling) / Leap (stable) | Leap 16 / Tumbleweed | Sysadmins and developers |
| RHEL family (Rocky, AlmaLinux) | Red Hat-based | Stable, long support | RHEL 9 / 10 era | Enterprise, production servers |
| Tails / Qubes OS | Debian / Fedora-based | Specialized | current 2026 builds | Privacy and anonymity |
## The most common mistakes when choosing a Linux distribution
Most regrets trace back to a short list of avoidable errors. The first is chasing popularity charts instead of your own needs. A distro topping the rankings is interesting, yet it tells you nothing about whether it fits your laptop or your workflow. The second is a mismatch between your machine and your deployment target: writing code on one system while it ships on another invites bugs that only surface in production. The third is running a rolling release on a server, where surprise updates are the last thing anyone wants. The fourth is ignoring hardware support and discovering after install that Wi-Fi or the graphics card refuses to work. The fifth is forgetting the support window and landing on a version that no longer receives security fixes. The last one is common and quiet: following a tutorial written for an older release. Commands and defaults change between versions, so always check the date on any guide you follow.
## Which Linux distribution should you choose in 2026?
There is no single winner among the best linux distributions in 2026, because the right answer depends on the job. For a first switch, pick Linux Mint or Ubuntu. For coding, Ubuntu LTS as a default, Fedora for fresh tools, NixOS for reproducibility. For gaming, CachyOS or Nobara. For old hardware, antiX or Lubuntu. For business servers, Ubuntu Server, Debian, or the Red Hat family. For privacy, Tails or Qubes. The smartest next step is to test before you commit. Boot a couple of candidates from a USB stick, or spin each one up on a VPS, use it for a day, and keep whichever feels right. Launching a test server on [Serverspace](https://serverspace.us/services/vps-server.md) takes only a few minutes and costs almost nothing for a short trial, which makes comparing options painless.
https://serverspace.us/support/help/how-to-fix-common-apt-errors-on-linux-a-complete-guide-to-recovering-your-package-manager.mdCovers the most common apt errors on Debian and Ubuntu: lock file issues, dpkg interrupted, NO_PUBKEY, Hash Sum mismatch, 404. Includes ready-to-use commands for recovering the package manager.
The apt package manager is the foundation of software management in Debian, Ubuntu, and most of their derivatives. When apt stops working, the system can no longer install applications or receive security patches. The good news: most apt errors resolve in two or three commands once we understand what actually broke. Below we cover typical symptoms with step-by-step recovery for each case and a universal fallback procedure.
## Where to start troubleshooting
We always read the full error message before applying any fix. Apt and dpkg usually state exactly what they dislike: a package name, a repository URL, a specific file. Running random commands from the internet without understanding the cause tends to make things worse.
Basic diagnostic commands to run first:
- sudo apt update surfaces current errors when reaching the repositories.
- sudo apt check exposes broken dependencies among installed packages.
- sudo dpkg –audit lists packages stuck in an intermediate state.
- dpkg -l | grep -E ‘^iF|^iU|^rc’ shows packages with unusual status flags.
Operation logs live in /var/log/apt/history.log and /var/log/dpkg.log. They tell us when and on which package things went wrong.
## Common apt errors and how to fix them
### Lock file blocking
Message: E: Could not get lock /var/lib/dpkg/lock-frontend. Apt cannot start because the resource is busy.
Typical causes: a parallel apt in another terminal, the background unattended-upgrades service, or a previous process that died from an SSH disconnect or a reboot.
- Check active processes: ps aux | grep -E ‘apt|dpkg’.
- If the processes are alive, wait. Unattended-upgrades finishes on its own.
- If nothing is running, remove the lock files: sudo rm /var/lib/dpkg/lock /var/lib/dpkg/lock-frontend /var/cache/apt/archives/lock /var/lib/apt/lists/lock.
- Finalize configuration: sudo dpkg –configure -a.
Never delete lock files while apt is still running: this corrupts the package database and creates much worse problems than the original lock.
### dpkg was interrupted
Message: E: dpkg was interrupted, you must manually run ‘sudo dpkg –configure -a’. A previous operation did not finish, and apt refuses to continue until we fix it.
This usually follows a hard reboot during installation, the OOM killer firing, an SSH drop mid-update, or sudden power loss.
- Run sudo dpkg –configure -a. In most cases this is enough.
- On dependency errors: sudo apt –fix-broken install, then dpkg –configure -a
- For a specific package: sudo apt install –reinstall package_name.
- If the status file itself is corrupted, restore it from backup: sudo cp /var/lib/dpkg/status-old /var/lib/dpkg/status. Dpkg creates this backup automatically on every operation.
### GPG repository key errors
Messages: NO_PUBKEY, The following signatures couldn’t be verified, Key is stored in legacy trusted.gpg keyring. Apt does not trust the repository because it cannot verify the signature.
Important note: Ubuntu 24.04 and Debian 12 removed the apt-key command, and the /etc/apt/trusted.gpg store is no longer read by default. Older tutorials you might find online simply will not work here.
The modern workflow for adding a key:
- Create the directory: sudo mkdir -p /etc/apt/keyrings.
- Download the key and convert it to binary format in a single pipe:
```bash
curl -fsSL https://example.com/gpg.key | \
sudo gpg –dearmor -o /etc/apt/keyrings/example.gpg
```
- In the source file, explicitly reference the key via signed-by:
```
deb [signed-by=/etc/apt/keyrings/example.gpg] https://example.com/ubuntu noble
main
```
- Verify: sudo apt update.
Keys distributed in .asc format go into /etc/apt/keyrings/ as is, without conversion. Legacy keys from the old trusted.gpg store can be exported with gpg –export and moved to the new directory the same way.
### Hash Sum mismatch and mirror issues
Message: W: Failed to fetch Hash Sum mismatch. The checksum of the downloaded file does not match the one listed in the signed Release file.
Causes: a stale cache, a desynced CDN, a download that was cut off, or a mirror temporarily serving broken data.
- Clear the cache: sudo rm -rf /var/lib/apt/lists/* and sudo apt clean.
- Retry sudo apt update.
- If the issue persists, force IPv4 through /etc/apt/apt.conf.d/99force-ipv4 with Acquire::ForceIPv4 “true”;.
- If the problem lasts for hours, a specific mirror is broken. Switch to another one.
When a default mirror consistently misbehaves, switching to a geographically closer one usually resolves the issue. For servers in the US, mirrors like us.archive.ubuntu.com or mirror.us.leaseweb.net are solid replacements. A one-line switch looks like this:
```bash
sudo sed -i 's|archive.ubuntu.com|us.archive.ubuntu.com|g' /etc/apt/sources.list
sudo apt update
```
On [Serverspace VPS](https://serverspace.us/services/vps-server.md) the network is tuned for low-latency package delivery out of the box, so errors of this kind are less frequent on a freshly deployed instance.
### 404 Not Found and unreachable repositories
Symptom: 404 Not Found during apt update, or The repository no longer has a Release file.
First cause: the distribution reached end of life. Its packages move to old-releases.ubuntu.com and standard mirrors stop serving them. Update the address:
```
sudo sed -i 's|archive.ubuntu.com|old-releases.ubuntu.com|g; \
s|security.ubuntu.com|old-releases.ubuntu.com|g' /etc/apt/sources.list
```
After this fix, plan an upgrade to a supported LTS release, since no security patches are issued for EOL versions anymore.
Second cause: a removed or relocated PPA. Find the file in /etc/apt/sources.list.d/ and either delete it or comment out the lines.
Third cause: a typo in the URL or release codename. Track it down with: grep -r “broken_url” /etc/apt/sources.list /etc/apt/sources.list.d/.
### Unmet dependencies and held broken packages
Messages: The following packages have unmet dependencies, E: Unable to correct problems, you have held broken packages.
Causes: a PPA conflicts with official repositories, sources.list mixes release codenames (for example, noble and jammy), or a package has been pinned with apt-mark hold.
- List held packages: apt-mark showhold. Release them if needed: sudo apt-mark unhold package_name.
- Inspect package sources: apt-cache policy package_name.
- Standard fix: sudo apt –fix-broken install.
- If apt cannot resolve the conflict, try aptitude: sudo apt install aptitude, then sudo aptitude install package. Aptitude offers several resolution options to choose from.
- If a third-party PPA is the culprit, disable it and repeat the procedure.
Commands like dpkg –force-depends and dpkg –force-all are reserved for last resort: they skip dependency checks and leave the system in an inconsistent state.
### /boot partition full and no space left on device
Symptoms: E: gzip: stdout: No space left on device, mkinitramfs failure. Almost always triggered by a kernel install.
On a typical VPS, /boot is small (500 MB or 1 GB), while each kernel with its initrd image occupies 100 to 200 MB. After a year of regular updates, the partition fills up.
- Check usage: df -h /boot and list installed kernels: dpkg -l | grep linux-image.
- Identify the running kernel: uname -r. Never remove this one under any circumstances.
- Simple path: sudo apt autoremove –purge.
- If /boot is packed so tight that autoremove cannot even stage temp files, manually delete one old initrd (never the current one), then sudo apt -f install, then autoremove.
- Update the bootloader: sudo update-grub.
For prevention, uncomment Unattended-Upgrade::Remove-Unused-Kernel-Packages “true”; in /etc/apt/apt.conf.d/50unattended-upgrades.
## Universal recovery procedure when nothing helps
When the cause is unclear or a targeted fix failed, we run a standard chain from safe to aggressive:
- sudo rm -rf /var/lib/apt/lists/* and sudo apt clean wipe cached metadata.
- sudo apt update rebuilds the index.
- sudo dpkg –configure -a finalizes any pending operations.
- sudo apt –fix-broken install repairs dependencies.
- sudo apt full-upgrade brings the system to a consistent state.
- sudo apt autoremove –purge clears leftovers.
- If the chain still fails, repeat steps 3 through 5 using aptitude.
Before running destructive commands in production, take a disk snapshot. On [Serverspace VPS](https://serverspace.us/services/vps-server.md) snapshots are created from the control panel in a few clicks, so a botched experiment can be rolled back to a working state in under a minute.
## Quick diagnostic table for apt errors
A short reference covering the most common messages and first recovery steps.
| Error message | Likely cause | First action |
| --- | --- | --- |
| Could not get lock /var/lib/dpkg/lock | Parallel apt or a crashed process | Check ps aux, remove lock files if no process is running |
| dpkg was interrupted | Interrupted install or upgrade | sudo dpkg –configure -a |
| NO_PUBKEY | Missing repository key | Add the key to /etc/apt/keyrings/ with signed-by |
| Hash Sum mismatch | Stale cache or desynced mirror | Clear /var/lib/apt/lists/ and rerun update |
| 404 Not Found | EOL release, dead PPA, or URL typo | Switch to old-releases or remove the source |
| Unmet dependencies | Repo conflict or held package | apt –fix-broken install, aptitude if needed |
| No space left on device | /boot filled with old kernels | apt autoremove –purge, then update-grub |
| sub-process /usr/bin/dpkg returned an error code (1) | Damaged package or broken dpkg database | dpkg –configure -a, then reinstall the package |
## How to prevent apt issues in the future
Most breakages are prevented by careful operation. A few simple rules:
- Update regularly. Run sudo apt update && sudo apt upgrade at least once a week.
- Minimize third-party sources. Every PPA is a potential point of failure.
- Take a snapshot before any significant change: kernel upgrade, LTS jump, installation of large stacks like Plesk or cPanel.
- Automate old kernel cleanup to avoid /boot overflow.
- Never mix release codenames in sources.list.
## Conclusion
Apt errors only look scary until the first successful repair. Almost all of them map to a handful of typical scenarios: an interrupted process, a key problem, a stale cache, a full /boot, or repository conflicts. The approach is always the same: read the error message first, then apply a targeted fix starting from the safest action. The table above covers the majority of situations encountered while operating VPS instances on Debian and Ubuntu in everyday work.
https://serverspace.us/support/help/selinux-architecture-and-its-principles.mdSELinux Architecture and Mandatory Access Control Principles: how the Linux security system works, context management, operating modes, and access policy configuration.
**SELinux** is a security module built into the Linux kernel that implements the Mandatory Access Control (MAC) model. Unlike the traditional DAC (Discretionary Access Control) model, where access to resources is determined by the file owner, SELinux enforces a strict, centralized security policy. This policy defines how processes can interact with files, ports, sockets, and other system resources, regardless of standard permission settings.
SELinux is widely used in enterprise distributions such as RHEL, CentOS, and Fedora, and is considered one of the key tools for enhancing system security. It can block malicious actions even if an attacker has already gained access to the system but attempts to operate beyond allowed boundaries.
## What SELinux Is and How It Works
SELinux is based on security contexts and strict policy enforcement. Every object in the system—whether a file, process, or network connection—has a label known as a security context. Access decisions are made based on these labels.
Example of a context:
```
system_u:object_r:httpd_sys_content_t:s0
```
This context includes several components: SELinux user, role, type, and security level. In practice, the type is the most important element, as most access control rules are built around it.
The SELinux architecture includes several key components. The Policy Engine interprets security rules, the Security Server makes access decisions, and the Access Vector Cache (AVC) improves performance by caching previous decisions to avoid repeated calculations.
## Mandatory Access Control Principles
The main difference between SELinux and traditional access control models is the use of Mandatory Access Control. In this model, the security policy is centrally defined and cannot be modified by regular users. Even the root user cannot bypass SELinux restrictions unless explicitly allowed by policy.
This means that every allowed action must be predefined. If a rule does not exist, the action will be denied. This significantly reduces the attack surface and makes system behavior more predictable from a security standpoint.
SELinux operates in three modes: Enforcing, Permissive, and Disabled. In Enforcing mode, policies are fully applied and violations are blocked. Permissive mode is used for troubleshooting, as it logs violations without enforcing them. Disabled mode completely turns off SELinux.
To check the current mode:
```
getenforce
```
To switch modes temporarily:
```
sudo setenforce 0 # Permissive
sudo setenforce 1 # Enforcing
```
For detailed status information:
```
sestatus
```
If required utilities are missing, install them with:
```bash
sudo dnf install policycoreutils policycoreutils-python-utils
```
## Contexts, Access Control, and Practical Usage
In practice, working with SELinux usually involves managing contexts and permissions. For example, to view file contexts:
```
ls -Z /var/www/html
```
If a web server cannot access a file, it may have an incorrect type. You can change it using:
```
sudo chcon -t httpd_sys_content_t /var/www/html/index.html
```
However, temporary changes may be reset by the system. To restore default contexts:
```
sudo restorecon -Rv /var/www/html
```
Another common scenario is allowing a web server to use a non-standard port. By default, SELinux restricts which ports services can use. To add a new port:
```
sudo semanage port -a -t http_port_t -p tcp 8080
```
SELinux also provides boolean parameters for flexible configuration. For example, to allow outbound connections for a web server:
```
sudo setsebool -P httpd_can_network_connect on
```
To view all available booleans:
```
getsebool -a
```
SELinux logs all events in:
```
/var/log/audit/audit.log
```
If something is not working, check recent denials:
```
sudo ausearch -m avc -ts recent
```
For automatic analysis and suggestions:
```
sudo sealert -a /var/log/audit/audit.log
```
If SELinux blocks a legitimate action, you can create a custom policy module using:
```
sudo ausearch -c 'httpd' –raw | audit2allow -M my-httpd
sudo semodule -i my-httpd.pp
```
This approach allows you to adapt SELinux behavior without disabling it.
## Enabling and Verifying SELinux
To enable SELinux permanently, edit the configuration file:
```
sudo nano /etc/selinux/config
```
Set the mode:
```
SELINUX=enforcing
```
Then reboot the system:
```
sudo reboot
```
To verify:
```
getenforce
sestatus
```
If configured correctly, SELinux will strictly control interactions between processes and system resources, significantly improving overall security.
In summary, SELinux is not just an access control mechanism but a comprehensive enforcement system that enables a strict and flexible security model. When properly configured, it effectively protects servers from vulnerabilities, privilege escalation, and other common attack vectors.
https://serverspace.us/support/help/installation-redis-on-ubuntu-step-by-step-guide.mdInstall Redis on Ubuntu with this step-by-step guide: setup, configuration, security, and performance tuning for developers and production environments.
**Redis** is a high-performance in-memory data store used as a cache, database, and message broker. Thanks to its extremely low latency and simple architecture, Redis is widely adopted in web development, microservices, and high-load systems.
Installing Redis on Ubuntu usually takes only a few minutes, but it is important to configure the basic setup correctly from the start to ensure security and production readiness.
## System Preparation
Before installing Redis, it is recommended to update the system packages. This reduces the risk of version conflicts and dependency issues during installation.
```bash
sudo apt update
sudo apt upgrade -y
```
After updating, the system is ready to install Redis from the official Ubuntu repositories.
## Installing Redis
Redis can be installed with a single command using the package manager:
```bash
sudo apt install redis-server -y
```
Once installed, Redis usually starts automatically as a system service. You can check its status using systemd:
```bash
sudo systemctl status redis
```
If the service is not active, you can start it manually:
```bash
sudo systemctl start redis
```
To enable Redis to start automatically on boot:
```bash
sudo systemctl enable redis
```
Redis includes a built-in CLI client used for testing and administration. You can connect to the server with:
```bash
redis-cli
```
The simplest test is the ping command. If Redis is working correctly, it will respond with PONG:
```
ping
```
You can also test basic storage operations:
```
set key "Hello Redis"
get key
```
If Redis returns the stored value, the installation is working correctly. The main Redis configuration file is located at:
```
/etc/redis/redis.conf
```
You can edit it using a text editor:
```
sudo nano /etc/redis/redis.conf
```
This file defines key settings such as network interface, port, authentication, and memory usage. By default, Redis is configured to accept only local connections, which is safer for development environments.
For production use, it is common to enable password authentication:
```
requirepass StrongPassword123
```
After making changes, restart the service:
```bash
sudo systemctl restart redis
```
## Security and Remote Access
By default, Redis is only accessible from localhost, which helps prevent unauthorized access. If remote access is required, you need to modify the bind setting:
```
bind 0.0.0.0
```
However, exposing Redis directly to the internet is strongly discouraged. If remote access is necessary, you should always enable authentication and properly configure firewall rules.
To allow traffic through the firewall:
```
sudo ufw allow 6379
```
In production environments, it is better to restrict access to trusted IP addresses only. Since Redis stores data in memory, it is important to control memory usage. You can define a memory limit in the configuration file:
```
maxmemory 256mb
```
You can also configure how Redis behaves when memory is full:
```
maxmemory-policy allkeys-lru
```
This policy ensures that Redis removes the least recently used keys when it reaches the memory limit, helping prevent service crashes.Installing Redis on Ubuntu is quick and straightforward, but proper configuration is essential for secure and stable operation. Even a basic setup allows Redis to function as a high-speed cache or in-memory data store.
In modern application architectures, Redis often becomes a critical component, significantly improving performance and reducing the load on primary databases.
https://serverspace.us/support/help/how-to-connect-to-a-server-via-ssh-step-by-step-instructions-for-windows-linux-and-macos.mdStep-by-step guide to connecting to a server via SSH for Windows, Linux, and macOS: keys, ports, configs, and common errors — all in one guide.
## What SSH Is and Why It Is Needed
Managing a remote server is one of the core tasks of any system administrator, DevOps engineer, or developer. To solve this, the SSH (Secure Shell) protocol is used — the standard way to securely connect to remote machines over a network.
In this article, we will break down how SSH works, which tools to use on different operating systems, and how to make your first connection to a server step by step — even if you are doing it for the first time.
## Terminology
Before moving on to practice, let us define the key concepts that will appear in this guide.
SSH (Secure Shell) — a network protocol that provides an encrypted connection between a client and a server. It is used for remote command execution, file transfer, and traffic tunneling.
SSH client — a program on your computer that initiates a connection to the server. On Linux and macOS, this is the standard ssh utility. On Windows, it can be the built-in OpenSSH or third-party applications such as PuTTY.
SSH server — the sshd daemon running on the remote machine. It accepts incoming connections and manages access.
Password authentication — the simplest but less secure login method: you enter a username and password for each connection.
Key authentication — a more reliable method. A pair of keys is generated: a private key (stored by you) and a public key (placed on the server). When connecting, the server verifies the key match without requiring a password.
Port — by default, SSH works on port 22. Administrators often change it to a non-standard one to reduce the number of automated attacks.
Fingerprint — a unique string that identifies an SSH server. During the first connection, the client shows this fingerprint and asks you to confirm that you are connecting to the correct machine.
## How SSH Works
When an SSH connection is established between a client and a server, several sequential steps take place.
### Connection Establishment and Key Exchange
The client connects to the server using the specified IP address or domain name. The server responds with its public key — the same fingerprint you see during the first connection. If you confirm the connection, the client saves this fingerprint in the ~/.ssh/known_hosts file. During subsequent connections, the client compares the server key with the saved one — if they do not match, the connection is interrupted with a warning.
After the key is verified, the parties agree on the encryption algorithm and establish an encrypted channel through the Diffie–Hellman mechanism. All subsequent traffic, including passwords and commands, is transmitted in encrypted form.
### User Authentication
After the encrypted channel is established, the server requests user identity confirmation. There are two main methods:
With password authentication, the user enters a password, which is verified on the server side.
With key authentication, the server sends the client an encrypted message. The client decrypts it using the private key and sends a response. If the response is correct, access is granted.
## Practical Uses of SSH
SSH is used in many everyday tasks when working with server infrastructure.
Server administration: executing commands in the terminal, managing users, configuring services, viewing logs — all of this is done through SSH.
File transfer: the scp and sftp utilities work over SSH and provide secure file transfer between machines.
Tunneling and port forwarding: SSH makes it possible to create encrypted tunnels for accessing services that should not be exposed directly to the internet — for example, a database or an internal web application.
Automation and CI/CD: continuous integration systems use SSH to deploy code to servers, run scripts, and manage infrastructure.
## Step-by-Step Connection Guide
Below, we will look at the connection process separately for each operating system.
### Connecting from Linux
On most Linux distributions, the OpenSSH client is installed by default. If it is missing, install it.
On Debian/Ubuntu:
```bash
sudo apt update && sudo apt install openssh-client
```
On CentOS/RHEL/Fedora:
```bash
sudo dnf install openssh-clients
```
Basic connection
The minimal command for connecting looks like this:
```bash
ssh username@server_address
```
For example:
```bash
ssh admin@192.168.1.100
```
If the server is running on a port other than the standard 22, specify the port using the -p flag:
```bash
ssh -p 2222 admin@192.168.1.100
```
During the first connection, the client will show the server fingerprint and ask for confirmation. Enter yes and press Enter. Then enter the user password.
Connecting with an SSH key on Linux
Step 1. Generate a key pair on your computer:
```bash
ssh-keygen -t ed25519 -C "your_comment"
```
The utility will prompt you to choose a path for saving the keys (by default — ~/.ssh/id_ed25519) and set a passphrase to protect the private key. Using a passphrase is recommended, but not required.
Step 2. Copy the public key to the server:
```bash
ssh-copy-id -i ~/.ssh/id_ed25519.pub admin@192.168.1.100
```
The command will automatically add your public key to the ~/.ssh/authorized_keys file on the server.
Step 3. Connect without a password:
```bash
ssh admin@192.168.1.100
```
If you have multiple keys or the key is stored in a non-standard path, specify it explicitly:
```bash
ssh -i ~/.ssh/my_custom_key admin@192.168.1.100
```
### Connecting from macOS
macOS comes with the OpenSSH client preinstalled. No additional installation is required — everything is available through the standard Terminal (Terminal.app) or alternative terminal emulators such as iTerm2.
The command syntax is exactly the same as on Linux. Basic connection:
```bash
ssh username@server_address
```
Working with keys on macOS
The process of generating and copying keys is the same as on Linux. However, on macOS, the private key can be added to Keychain — the system password store — so that you do not need to enter its passphrase for every connection.
Add the key to Keychain:
```bash
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
```
To make the key load automatically each time the system starts, add the following to the ~/.ssh/config file:
```
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519
```
### Connecting from Windows
Starting with Windows 10 (version 1809) and Windows Server 2019, OpenSSH is available as a built-in component. It is installed through "Settings" and provides a full SSH client directly in PowerShell or the Command Prompt.
Option 1: built-in OpenSSH
Step 1. Check whether OpenSSH is installed. Open PowerShell as administrator and run:
```
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
```
Step 2. If the client is not installed (status NotPresent), install it:
```
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
```
Step 3. Connect to the server. The syntax is identical to Linux and macOS:
```bash
ssh admin@192.168.1.100
```
Key generation and usage are the same. The ssh-keygen and ssh-copy-id commands (starting with the latest versions of OpenSSH for Windows) work the same as on Unix systems. Keys are stored in the C:\Users\your_name\.ssh\ folder.
Option 2: PuTTY
PuTTY is a popular SSH client with a graphical interface. It is convenient for users who prefer not to work in the command line, and it is compatible with older versions of Windows.
Step 1. Download PuTTY from the official website putty.org and install it.
Step 2. Open PuTTY. In the Host Name (or IP address) field, enter the server address, and in the Port field enter the port (22 by default). Make sure the SSH protocol is selected.
Step 3. Click Open. During the first connection, a warning with the server fingerprint will appear — click Accept to add it to the list of trusted hosts.
Step 4. In the opened terminal, enter the username and password.
Working with keys in PuTTY
PuTTY uses its own key format — .ppk. If you already have a key in OpenSSH format, it can be converted using the PuTTYgen utility included in the PuTTY package.
To generate a new key:
Step 1. Open PuTTYgen. Choose the key type EdDSA or RSA (4096 bits) and click Generate. Move the mouse around the empty area to generate random data.
Step 2. Set a passphrase to protect the key in the Key passphrase field and save the private key (Save private key) in .ppk format.
Step 3. Copy the text from the Public key for pasting into OpenSSH authorized_keys field and add it to the server in the ~/.ssh/authorized_keys file.
Step 4. In the PuTTY session settings, go to Connection → SSH → Auth and specify the path to the .ppk file.
## Setting Up an SSH Config for Convenience
When you have more than one server, entering full addresses, usernames, and key paths every time is inconvenient. That is what the client configuration file — ~/.ssh/config — is for.
Example config with multiple servers:
```
Host prod-server
HostName 203.0.113.10
User deploy
Port 2222
IdentityFile ~/.ssh/id_ed25519_prod
Host staging
HostName 203.0.113.20
User ubuntu
IdentityFile ~/.ssh/id_ed25519_staging
Host bastion
HostName 203.0.113.1
User admin
IdentityFile ~/.ssh/id_ed25519
```
After saving the file, connecting to a server is done with one short command:
```bash
ssh prod-server
```
This is equivalent to the full command ssh -p 2222 -i ~/.ssh/id_ed25519_prod deploy@203.0.113.10.
## Common Errors and How to Fix Them
### Connection refused
This error means that the connection to the specified address and port was not accepted. Possible causes: the SSH server is not running, the wrong port was specified, or incoming connections are blocked by a firewall.
Check whether the SSH server is running on the remote machine:
```bash
sudo systemctl status sshd
```
Make sure the required port is open in the firewall rules:
```
sudo ufw status
sudo firewall-cmd --list-ports
```
### Permission denied (publickey)
The server did not accept your key. The most common reasons are:
The public key was not added to ~/.ssh/authorized_keys on the server, or the file has incorrect permissions. Check the permissions:
```bash
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
```
Also make sure that key authentication is enabled in the server configuration /etc/ssh/sshd_config:
```
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
```
### Host key verification failed
This error appears if the server fingerprint has changed — for example, if the server was reinstalled. SSH warns you about a possible man-in-the-middle attack. If you are sure the server is legitimate, remove the old entry from known_hosts:
```bash
ssh-keygen -R 192.168.1.100
```
### Connection timed out
A timeout usually means the server is unreachable over the network: the IP address is wrong, the server is turned off, or routing is unavailable. Check server availability using ping and make sure you are connected to the correct network.
## Security Recommendations
SSH itself is secure, but incorrect server configuration can create vulnerabilities. Here are a few practices we recommend following.
Disable password login. After setting up key authentication, disable password login in /etc/ssh/sshd_config:
```
PasswordAuthentication no
PermitRootLogin no
```
After changing the config, restart the SSH server:
```bash
sudo systemctl restart sshd
```
Change the standard port. Moving SSH from port 22 to a non-standard one (for example, 2222 or anything above 10000) significantly reduces the number of automated password-guessing attacks. Specify the desired port in the Port directive in the server config.
Use modern key algorithms. We recommend ed25519 as the most secure and fast algorithm. RSA is acceptable with a key size of at least 4096 bits.
Restrict the user list. In sshd_config, you can allow SSH access only for specific users or groups:
```
AllowUsers deploy ubuntu admin
```
Protect the server from brute force attacks. The fail2ban utility automatically blocks IP addresses from which too many failed login attempts are received. Install and configure it on internet-facing servers.
## Conclusion
SSH is a standard and reliable way to remotely manage servers. No matter which operating system you use, the basic principles remain the same: encrypted connection, key-based authentication, and flexible configuration through a config file.
We recommend setting up key authentication right away — it is both more convenient and more secure than using passwords. The ~/.ssh/config file will help organize access to multiple servers without having to memorize long commands.
If errors occur during connection, in most cases they are related to file permissions for keys, an incorrect port, or firewall rules — all of these issues are resolved using the algorithm described in the section above.
https://serverspace.us/support/help/how-to-secure-a-wordpress-site-on-vps-hosting.mdStep-by-step guide to securing WordPress on a VPS: SSH keys, UFW firewall, HTTPS headers, file permissions, fail2ban, hardened wp-config, and backups.
WordPress runs roughly 43% of all websites, which makes it the single biggest target for automated attacks. Managed hosting providers handle the security baseline for us, patching the server, blocking brute force, scanning files. On a VPS that responsibility shifts entirely to the administrator. We get root access and full flexibility, and we also get full ownership of every misconfiguration that lands the site in someone else’s botnet.
In this guide we walk through hardening a WordPress site on a fresh VPS step by step. We cover the SSH layer, firewall, HTTPS, file permissions, wp-config tweaks, brute force protection, and backups. The goal is a baseline that stops the vast majority of automated attacks that hit every public WordPress site within hours of going live.
## **What we are protecting against**
The threat model for a typical WordPress site on a VPS breaks down into a few recurring categories. The first is brute force on the login endpoints, mostly wp-login.php and xmlrpc.php, where bots cycle through credential lists at hundreds of attempts per minute. The second is exploitation of vulnerable plugins and themes, which according to multiple security vendors account for over 90% of WordPress security incidents. The third is direct SSH brute force against the VPS itself. The fourth is misconfigured file permissions that let attackers read database credentials or write malicious code. The fifth is missing TLS, which leaks admin sessions over open networks.
Each section below addresses one of these vectors with a concrete configuration step.
## **Prerequisites**
To follow along we need:
- A VPS running Ubuntu 22.04 LTS or Ubuntu 24.04 LTS
- Root SSH access provided by the hosting panel
- A working WordPress installation on a LEMP stack (Linux, Nginx, MySQL or MariaDB, PHP-FPM)
- A registered domain with an A-record pointing to the VPS public IP
For our walkthrough we use a Serverspace VPS with Ubuntu 24.04 as the test environment, but every command is portable to any Ubuntu-based provider. If you need a fresh server to follow along, you can spin up a [Serverspace VPS](https://serverspace.us/services/vps-server.md) in a few minutes.
## **Step 1: Hardening the SSH layer**
The SSH service is the single most exposed part of any VPS. Within hours of provisioning we will see hundreds of brute force attempts in /var/log/auth.log from automated scanners. The first move is to take SSH off password authentication.
We start by creating a non-root sudo user, since root is the one username every attacker tries first.
```
sudo adduser deploy
sudo usermod -aG sudo deploy
```
Generate an SSH key on the local machine (not on the server) and copy the public key to the VPS:
```bash
ssh-keygen -t ed25519 -C "your@email.com"
ssh-copy-id deploy@your-server-ip
```
Test the new login in a fresh terminal. If ssh deploy@your-server-ip works without a password prompt, we proceed.
Open /etc/ssh/sshd_config and apply the following settings:
```xml
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
PermitEmptyPasswords no
MaxAuthTries 3
AllowUsers deploy
```
Validate and reload:
```
sudo sshd -t
sudo systemctl reload ssh
```
## **Step 2: Configuring the UFW firewall**
A firewall enforces a deny-by-default policy at the kernel level. Anything we did not explicitly allow gets dropped. Ubuntu ships with UFW (Uncomplicated Firewall), which is a friendly front-end for iptables.
The order matters here. We allow SSH first, then enable the firewall, otherwise we lock ourselves out of the server.
```xml
sudo ufw allow OpenSSH
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 'Nginx Full'
sudo ufw enable
```
Verify the rules:
```
sudo ufw status verbose
```
Expected output should list OpenSSH and Nginx Full as ALLOW IN for both IPv4 and IPv6, with default policy deny incoming and allow outgoing.
This baseline opens only ports 22, 80, and 443. Database ports, PHP-FPM sockets, and anything else stays bound to localhost or behind the firewall.
## **Step 3: Enforcing HTTPS and security headers**
Modern browsers mark HTTP-only sites as Not Secure, and admin sessions over plain HTTP can be intercepted on any open Wi-Fi. Let’s Encrypt provides free certificates and certbot automates the entire process, including renewal.
Install certbot and the Nginx plugin:
```bash
sudo apt install certbot python3-certbot-nginx -y
```
Issue a certificate for the domain:
```
sudo certbot –nginx -d example.com -d www.example.com
```
Certbot edits the Nginx config automatically, sets up redirects from HTTP to HTTPS, and registers a cron job for renewal. Verify the renewal works without actually renewing:
```
sudo certbot renew –dry-run
```
Once HTTPS is live, we add security headers to the Nginx server block. Open /etc/nginx/sites-available/example.com and add the following inside the server block listening on port 443:
```xml
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
```
HSTS forces browsers to use HTTPS for the next year. X-Frame-Options blocks clickjacking via iframe embedding. X-Content-Type-Options stops MIME sniffing. Referrer-Policy controls Referer header leakage. Permissions-Policy disables unused browser features.
Test the Nginx config and reload:
```
sudo nginx -t
sudo systemctl reload nginx
```
Verify with securityheaders.com by entering the domain. A clean baseline scores at least an A.
## **Step 4: WordPress file permissions and ownership**
A surprising number of WordPress compromises trace back to permission errors. The classic anti-pattern is running chmod -R 777 wp-content to fix an upload issue. That fix turns the entire directory into a writable playground for anyone who finds an exploit.
The correct baseline: directories get 755, files get 644, and wp-config.php gets restricted further. The web server runs as www-data on Debian-based distributions:
```bash
sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;
sudo chmod 640 /var/www/html/wp-config.php
```
We use 640 instead of 600 on wp-config.php because PHP-FPM reads the file as a member of the www-data group. With 600 and the wrong owner the site whitescreens because PHP cannot read its own config.
For uploads, www-data needs write access to /wp-content/uploads, and no other directory should be writable by the web server unless a specific plugin requires it.
## **Step 5: Hardening wp-config.php**
The wp-config.php file is the brain of the WordPress install. A few constants here close several attack vectors at once.
First, rotate the security salts. WordPress uses eight cryptographic keys for cookie and session integrity. If they were ever copied from an example or leaked through a backup, every existing session is forgeable. Generate fresh keys at https://api.wordpress.org/secret-key/1.1/salt/ and replace the corresponding block in wp-config.php.
Add the following constants above the line that reads /* That’s all, stop editing! */:
```xml
define('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', true);
define('FORCE_SSL_ADMIN', true);
define('WP_AUTO_UPDATE_CORE', 'minor');
```
A short pass through what each one does. DISALLOW_FILE_EDIT removes the built-in theme and plugin editor from the dashboard, so an attacker who steals an admin session cannot inject PHP through the UI. DISALLOW_FILE_MODS blocks plugin and theme installations from inside WordPress; updates have to go through SSH or WP-CLI. FORCE_SSL_ADMIN enforces HTTPS for admin pages. WP_AUTO_UPDATE_CORE set to ‘minor’ applies security patches automatically without breaking on a major release.
## **Step 6: Blocking brute force with Fail2Ban**
Fail2Ban watches log files for patterns and bans offending IPs at the firewall level. By default it protects sshd, and we extend it to cover wp-login.php and xmlrpc.php.
Install Fail2Ban and create a local jail config (we never edit jail.conf directly, since updates overwrite it):
```bash
sudo apt install fail2ban -y
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
```
Create a custom filter for WordPress at /etc/fail2ban/filter.d/wordpress.conf:
```xml
failregex = ^ .* "(GET|POST) /wp-login.php
^ .* "(GET|POST) /xmlrpc.php
ignoreregex =
```
Append a matching jail to /etc/fail2ban/jail.local:
```xml
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/nginx/access.log
maxretry = 5
bantime = 86400
findtime = 600
```
Restart Fail2Ban and check the jail status:
```bash
sudo systemctl restart fail2ban
sudo fail2ban-client status wordpress
```
The output shows the file being watched, current and total failed attempts, and the list of currently banned IPs. After a few hours of public exposure the Banned IP list will start filling up.
## **Step 7: Disabling XML-RPC if not used**
XML-RPC is a legacy WordPress endpoint that allows remote publishing through clients like the WordPress mobile app or Jetpack. Most modern sites do not use it, and it remains one of the most aggressively brute-forced endpoints on the platform.
If the site does not need XML-RPC, the cleanest solution is a server-level block. Add this inside the Nginx server block:
```xml
location = /xmlrpc.php {
deny all;
access_log off;
return 444;
}
```
Reload Nginx with sudo systemctl reload nginx, and any request to /xmlrpc.php gets dropped before WordPress loads. If XML-RPC is required, restrict access by IP using allow and deny directives in the same block.
## **Step 8: Backups and recovery**
A site without tested backups is a site we have not actually secured. The 3-2-1 rule applies: three copies of the data, on two different media types, with at least one off-site.
A simple bash script handles WordPress backups well. Create /usr/local/bin/wp-backup.sh:
```bash
#!/bin/bash
DATE=$(date +%F)
BACKUP_DIR="/var/backups/wp"
mkdir -p $BACKUP_DIR
cd /var/www/html
wp db export $BACKUP_DIR/db-$DATE.sql –allow-root
tar -czf $BACKUP_DIR/files-$DATE.tar.gz wp-content
find $BACKUP_DIR -mtime +7 -delete
```
Make it executable and schedule it with cron:
```bash
sudo chmod +x /usr/local/bin/wp-backup.sh
sudo crontab -e
```
Add the line:
```
0 3 * * * /usr/local/bin/wp-backup.sh
```
The find directive keeps a rolling seven days of local copies. For off-site storage, push the backup directory to S3-compatible object storage. Serverspace offers compatible cloud storage that works with rclone or aws-cli for this purpose.
One step matters more than the rest: actually restore a backup once a quarter into a test directory. Backups that have never been tested have a way of failing on the day we need them.
## **Common mistakes and how to fix them**
The table below covers the misconfigurations seen most often when auditing compromised WordPress installations.
| Symptom | Root cause | Solution |
| --- | --- | --- |
| Malware injected through uploads | chmod 777 on wp-content | Reset to 755 directories, 644 files |
| Constant brute force on wp-login | No rate limiting or fail2ban filter | Deploy the wordpress jail from Step 6 |
| Database breach via SQL injection | DB user has GRANT ALL on all databases | Scope the user to the WordPress database only |
| Locked out of SSH after firewall enable | UFW activated before allowing SSH | Recover via hosting console, allow OpenSSH, then enable |
| Plugin update fails after hardening | DISALLOW_FILE_MODS prevents updates | Set to false via SFTP, update, set back to true |
| Admin loads over HTTP after migration | FORCE_SSL_ADMIN not defined | Add the constant, force HTTPS at Nginx level |
| Site whitescreens after permission change | wp-config.php set to 600 with wrong owner | Use 640 with www-data group ownership |
## **Conclusion**
Securing a WordPress site on a VPS is a layered process. The server, the web server, the application, and the data each need their own controls. Start with SSH keys and a firewall, add HTTPS with proper headers, lock down file permissions, harden wp-config, deploy fail2ban, and back up everything off-site.
This baseline blocks the vast majority of automated attacks. Targeted attacks need more, like a WAF (ModSecurity or Cloudflare), regular security audits, and centralized log monitoring, but those build on top of what we covered here.
https://serverspace.us/about/blog/how-to-use-dokploy-for-fast-project-deployment-on-a-linux-server.mdHow to install Dokploy on Linux, connect GitHub, deploy a project, and avoid common mistakes
Imagine this: you have written an application — a small service, a personal project, or an MVP for a startup. The code works on your computer, and now you need to "put it online" so anyone can use it. That is what deployment means (from the English _deployment_ — rollout). It sounds simple, but in practice a beginner often runs into a wall of confusing instructions: web server setup, environment variables, SSL certificates, Docker, CI/CD The list is long, and every item takes time and knowledge.
That is exactly why Dokploy exists. It is a free open-source tool that takes over most of the routine work: it launches an application from your GitHub or GitLab repository, automatically issues an SSL certificate, manages environment variables, and lets you monitor services through a clear web interface. All of this runs on your own server, without monthly payments to cloud platforms like Heroku or Railway.
This article is written for people who want to understand the topic from scratch: self-taught developers, freelancers, owners of small projects, and anyone who is tired of paying for managed hosting but not ready to spend months learning DevOps.
## What Dokploy Is and Why It Is Needed
Dokploy is a platform for self-hosting and managing applications. In concept, it is similar to services like Heroku, Render, or Railway: you specify where your code is, press a button — and the application goes live on the internet. The difference is that Dokploy runs not in someone else's cloud, but on your own server. You keep full control over your data, can use any VPS plan, and do not depend on the policies of third-party platforms.
Under the hood, Dokploy uses Docker — a containerization technology that "packages" an application together with all its dependencies into an isolated container. This means the application will work the same on any server, regardless of what is installed on it. If you are not familiar with Docker, that is not a problem: Dokploy hides most of the details behind a graphical interface.
The project is open on GitHub, actively developed by the community, and at the time of writing has tens of thousands of stars — a good sign of trust from developers. Dokploy is distributed for free, and its source code is available for study and modification.
## How Dokploy Works: From Code to a Running Website
To understand the mechanics, it helps to picture the whole path from the moment you write the code to the moment the site becomes available in a browser. Dokploy fits into this path and automates each step.
### Step 1. Prepare the Server
Dokploy requires a virtual or dedicated server running Linux. Ubuntu 20.04 or newer is ideal. The minimum requirements are modest: 1 CPU core and 2 GB of RAM, but for real projects it is better to have some extra room — at least 2 cores and 4 GB of RAM. Renting such a VPS is reasonably affordable: for example, at [Serverspace](https://serverspace.us/services/vps-server/linux.md) you can choose a suitable configuration and place the server in the region you need, which matters for response speed.
### Step 2. Install Dokploy
Installation takes literally one command. Connect to the server via SSH and run:
```bash
curl -sSL https://dokploy.com/install.sh | sh
```
The script will check the system, install Docker and all necessary components, and then launch Dokploy. When it finishes, the terminal will show an address like **http://YOUR_IP:3000** — this is the web interface of the control panel. On first login, the system will ask you to create an administrator account.
### Step 3. Connect the Repository
In the Dokploy panel, you need to create a new project and add a service to it. The platform supports several ways to fetch code: connection through GitHub, GitLab, Bitbucket, or a direct link to a public repository. When connecting through GitHub, you can choose a specific repository and branch — for example, **main** for production and **dev** for a test environment.
### Step 4. Configure Build and Variables
Dokploy can automatically detect the project type through Nixpacks — it analyzes the repository files and chooses the appropriate build method. A Node.js application, a Python service, Ruby on Rails, Go — all of these are detected automatically. If the project already contains a **Dockerfile**, Dokploy will use it. The "Environment Variables" section is where you add all required environment variables: database connection strings, API keys, secrets. They are stored separately from the b and do not go into the repository.
### Step 5. Launch and Set Up the Domain
After pressing the "Deploy" button, the build begins: Dokploy downloads the b, builds the Docker image, starts the container, and routes traffic through the built-in proxy based on Traefik. In the "Domains" section, you can attach your own domain name and enable HTTPS with one switch: a certificate from Let's Encrypt will be issued automatically. The whole process takes from two to ten minutes depending on the size of the project.
Special attention should be paid to the built-in databases. Dokploy lets you launch PostgreSQL, MySQL, MongoDB, Redis, or MariaDB directly from the interface — no manual installation or configuration needed. You can connect such a database to your application in just a few clicks by copying the connection string from the corresponding section.
## Dokploy vs. Popular Alternatives
Before choosing a deployment platform, it is useful to understand how Dokploy differs from solutions that already have their place in the market. The table below compares key parameters.
| Parameter | Dokploy | Heroku | Railway | Coolify |
| --- | --- | --- | --- | --- |
| Cost | Free (you only pay for the server) | From $5/month per dyno | From $5/month + traffic | Free (open source) |
| Hosting | Your server | Salesforce cloud | Railway cloud | Your server |
| Databases | PostgreSQL, MySQL, MongoDB, Redis, MariaDB | PostgreSQL, Redis (paid) | PostgreSQL, MySQL, MongoDB, Redis | PostgreSQL, MySQL, MongoDB, Redis |
| Auto-deploy from Git | Yes | Yes | Yes | Yes |
| SSL certificate | Let's Encrypt, automatic | Included | Included | Let's Encrypt, automatic |
| Scaling | Docker Swarm (manual) | Automatic by plan | Automatic | Manual |
| Entry barrier | Low | Very low | Very low | Medium |
| Server control | Full | No | No | Full |
## Strengths and Limitations
Dokploy's main advantage is the combination of simplicity and control. Unlike Heroku, there are no "sleeping" services on the free plan (which wake up for 30 seconds on the first request) and no storage ceiling set by a third-party platform. You pay only for the server and get the resources in exactly the amount you rented.
Dokploy is a great fit for teams that care about data confidentiality. Code and user data live on your server, in your jurisdiction — which is critical for projects involving personal or corporate information. The ability to run multiple projects on one server makes the tool economically attractive for agencies and freelancers serving several clients at once.
A few important limitations should also be mentioned. Automatic horizontal scaling (automatic addition of servers under growing load) in Dokploy is implemented through Docker Swarm, but it requires manual setup and an understanding of cluster principles. If your project suddenly gets a sharp traffic spike, you will need to add resources yourself — a cloud platform would do that automatically. In addition, Dokploy is a relatively young project, and part of the documentation is still being written; some unusual scenarios will require checking GitHub Issues or the community on Discord.
Backups for databases are another thing you need to configure yourself. Dokploy has a built-in backup section with support for S3-compatible storage, but it must be set up manually, whereas managed services usually handle this for you.
## Where and How Dokploy Is Used
### 1. Personal Project or Portfolio
A developer maintains a blog on Next.js or has published a portfolio on React. Earlier, they paid $7–10 per month for Vercel Pro to remove platform branding and get access to multiple domains. With Dokploy on a cheap VPS (from $3–5 per month), they can host as many projects and domains as they want, connect GitHub, and get auto-deploy on every commit to the **main** branch. The result: lower costs and more freedom.
### 2. SaaS Product at the MVP Stage
A small team launches a B2B tool: a Python backend (FastAPI), a Vue.js frontend, and a PostgreSQL database. On Heroku, such a stack would cost $50–70 per month even in the minimum configuration. Dokploy makes it possible to run all of this on a single VPS with 4 GB of RAM, with each component isolated in its own container. When the time comes to scale, you only need to move to a more powerful plan or add nodes to the cluster.
### 3. Web Studio or Freelancer with Multiple Clients
A web studio manages 10–15 client sites: WordPress, Laravel, static pages. One separate hosting account per site means 10–15 separate bills, different control panels, and different update workflows. Dokploy centralizes everything on one powerful server: each project gets its own container and domain, SSL certificates renew automatically, and logs and monitoring are available in a single interface.
### 4. Internal Company Tools
Many companies develop internal tools: CRMs, analytics dashboards, administrative panels. Hosting such applications in a public cloud is undesirable for security reasons. Dokploy is deployed on a corporate server (or in a private cloud), and access to the interface is limited at the network level. The data does not leave the company's infrastructure.
### 5. Test and Staging Environments
Professional development usually involves several environments: _development_ (local), _staging_ (test server), and _production_ (live server). Dokploy lets you create multiple projects with different branches of the same repository. For example, the **dev** branch automatically deploys to **staging.myapp.com**, while **main** goes to **myapp.com**. That way the team tests changes before release without fear of breaking the live service.
## Common Mistakes and How to Avoid Them
**Using a weak server at the start.** Dokploy itself consumes about 300–400 MB of RAM. If you take a minimal 1 GB RAM VPS and try to deploy a Node.js application with a database on it, you will quickly run out of memory. The standard for comfortable use is 2 GB of RAM, preferably 4 GB if you plan several applications and a database on one server.
**Storing secrets in code.** Beginners often hardcode passwords and API keys directly into code or into a **.env** file that accidentally ends up in a public repository. Dokploy has a dedicated environment variables section for this — use it. Keys are stored encrypted and do not end up in code or logs.
**Not backing up the database.** Dokploy's built-in databases run in containers, and data is stored in Docker volumes. If the container is deleted by accident or the server fails without a backup, the data will be lost. Set up automatic backups in the Backups section right after deploying the database — it takes 10 minutes, but it will save you nerves later.
**Leaving port 3000 open to the internet.** By default, Dokploy's control panel listens on port 3000. Leaving it open to the whole internet is unsafe, even if login is password-protected. It is recommended to configure a firewall (for example, UFW or Security Groups from your provider) and allow access to port 3000 only from trusted IP addresses.
**Ignoring logs when something breaks.** If deployment failed, the first thing to do is open the "Deployments" tab and inspect the logs for that specific run. They usually show the cause: wrong Node.js version, missing environment variable, build error. Without logs, you will be searching blindly.
**No monitoring.** Dokploy shows basic metrics — CPU and memory usage by containers — directly in the interface. But for serious projects, it is worth connecting external monitoring (for example, Uptime Kuma, which can also be deployed through Dokploy) and setting up alerts when a service goes down.
## Conclusion: Is It Worth Switching to Dokploy?
Dokploy occupies the niche between "just upload files to hosting" and "learn the entire DevOps stack." It does not require a deep understanding of Docker, does not lock you into a specific cloud provider, and does not charge per gigabyte of traffic. At the same time, it gives you enough control to solve real production tasks.
Dokploy is a good choice if you are launching a project and want to save on hosting, if data confidentiality matters to you, or if you manage several applications and want to handle them from one place. It is not the best fit if you need to scale a service to thousands of requests per second automatically — for that, Kubernetes and specialized managed platforms exist.
Next step: rent a VPS running Ubuntu, install Dokploy with one command, and try deploying a test project. The whole process from a clean server to a working application with HTTPS will take about half an hour — and that is the best way to find out whether the tool fits your needs.
## Frequently Asked Questions
### Do you need to know Docker to use Dokploy?
Basic understanding is enough to know that Docker exists and what a container is. Dokploy hides most low-level operations behind a graphical interface. If your repository does not contain a Dockerfile, the platform will try to build the application automatically using Nixpacks.
### Can Dokploy be used for WordPress?
Yes. WordPress can be deployed through the "Compose" section using a standard docker-compose file that includes PHP, Nginx, and MySQL. It is a bit more complex than deploying a typical Node.js application, but it is entirely feasible. The Dokploy community has ready-made templates for this scenario.
### What happens if the server reboots?
All containers that were running will start automatically after the reboot. Dokploy configures Docker restart policies so that services recover without manual intervention.
### Is multi-server deployment supported?
Yes, Docker Swarm can combine multiple servers into a cluster and let you manage them from a single Dokploy interface. This is a feature for more advanced scenarios, and it requires network setup between nodes and an understanding of distributed systems.
### Is it safe to store secrets in Dokploy environment variables?
Environment variables are stored on the server in encrypted form and do not appear in logs or the repository. The key is to protect the server itself: use a strong password or SSH key, keep port 3000 closed to public access, and update system packages regularly.
### How do you update Dokploy to a new version?
The update is done with one command from the settings section directly in the web interface — the "Update" button starts downloading the new image version and restarts the control panel. Applications running on the server are not stopped in the process.
### What is the minimum technical level needed to get started?
It is enough to know how to connect to a server via SSH, copy a command, and run it in the terminal. Everything else is done through the web interface with clear forms. If you have already deployed something on Heroku or Vercel, learning Dokploy will be even easier.
https://serverspace.us/about/blog/web-hosting-types-explained-shared-vs-vps-vs-cloud-vs-dedicated-servers.mdLearn how shared, VPS, cloud, and dedicated servers actually work — and which one fits your site, budget, and technical comfort level
Before spending a dollar on web hosting, it helps to understand what you’re actually buying. Not the storage numbers or the uptime guarantees printed on a sales page, but the underlying structure: who controls what, what happens to your site when conditions change, and where the responsibility boundary sits between you and the provider. Those three things vary dramatically across the four main hosting categories — and getting that picture wrong tends to cost more in time and frustration than it costs in money.
This article works through each category from that angle. Not as a lineup of features, but as a set of tradeoffs between control, cost, performance predictability, and operational complexity. By the end, you’ll have a clear framework for matching your project to the right infrastructure — regardless of technical background.
## Before Comparing Anything: What Hosting Is Actually Doing
Every time a visitor opens your website, their browser sends a request across the internet to a machine running in a data center somewhere. That machine looks up the files your site is built from, assembles a response, and sends it back — typically within a second or less. The machine itself is owned and operated by your hosting provider. What varies between hosting types is the degree to which that machine, or a portion of it, is dedicated to your use alone.
At one extreme, shared hosting places your site on a machine that simultaneously serves hundreds of other websites, all drawing from the same hardware. At the other extreme, a dedicated server is a physical machine that runs nothing except what you put on it. VPS and cloud hosting occupy the space between those poles, each with a different architectural approach to balancing cost against control and performance consistency.
The choice between these options is not primarily about technical sophistication — it’s about matching the architecture to the actual requirements of your project. A personal blog and a payment processing platform have fundamentally different requirements, and the hosting type that serves one well will either be wasteful or insufficient for the other.
## Shared Hosting: When Convenience Outweighs Control
In a shared hosting environment, one physical server carries many websites at once — sometimes dozens, sometimes several hundred, depending on the provider’s configuration. Every account on that server draws from a common pool of processor cycles, memory, and storage. The hosting company manages the server entirely: software updates, security patches, backup schedules, and hardware maintenance are all handled without any action from you. What you receive is a control panel interface where you can manage files, databases, and email settings without touching the underlying system.
The economic logic is compelling. Fixed infrastructure costs are spread across many accounts, which is why shared plans can be priced at a few dollars per month while still being commercially viable for the provider. That same cost-sharing logic is also the source of the architecture’s inherent limitation: the resources you have access to at any moment depend partly on what everyone else on the server is doing at that moment. Hosting companies impose per-account usage caps to prevent any one site from consuming a disproportionate share — which is reasonable, but it means your site operates within a ceiling that you cannot raise without changing your hosting arrangement entirely.
For websites where traffic is modest and steady, and where the software stack doesn’t require custom server configuration, that ceiling is never reached. A brochure site for a local business, a personal writing blog, a portfolio with a dozen pages — these are legitimate candidates for shared hosting, and running them on anything more powerful would simply mean paying for headroom that goes unused. The problems appear when growth pushes resource consumption toward the limits, when a traffic event exceeds what the server will accommodate for a single account, or when the application itself needs software that isn’t available in the managed environment. At that point, the architecture itself has become the constraint, and no plan upgrade within shared hosting resolves it.
## VPS Hosting: Isolation Without Owning the Hardware
A virtual private server addresses the fundamental problem with shared hosting — unpredictable resource contention — through a technology called a hypervisor. Installed on a physical server, a hypervisor partitions the machine’s compute capacity into multiple fully isolated virtual environments, each with a hard-allocated portion of CPU, memory, and storage. Those allocations do not flex based on neighbor activity. If other virtual environments on the same physical machine run heavy workloads, your allocation is unaffected — not because you’re on a different machine, but because the hypervisor enforces hard boundaries between tenants.
Beyond the resource guarantee, VPS hosting changes the administrative relationship entirely. You receive a virtual machine with an operating system installed and full superuser access from the outset. There is no managed control panel constraining what software you can install or how the system is configured — you interact with the server directly, through a terminal connection, and can build any software environment the machine’s hardware can support. Web server configuration, database tuning, background process management, custom runtime versions, security rules at the network layer — all of it is within scope. The hosting provider maintains the physical hardware and the hypervisor layer that separates your environment from others; everything running inside that environment is yours to configure and maintain.
That shift in administrative scope is both the primary advantage of VPS hosting and its most commonly underestimated operational requirement. Many people who move from shared hosting to a VPS for the first time discover that the tasks the provider was quietly handling — system-level security updates, log rotation, firewall maintenance — now fall to them. An unmanaged VPS exposed to the internet without proper hardening is genuinely vulnerable in ways that a shared hosting account is not, because the provider’s managed environment includes baseline protections that an unmanaged VPS does not inherit automatically.
Providers like [Serverspace](https://serverspace.us/services/vps-server.md) offer VPS environments that can be configured from scratch within minutes, with selectable Linux distributions and hardware specifications across a range of tiers. That flexibility makes VPS hosting the practical choice for developers building and deploying applications, businesses running software that requires custom server configuration, and any project that has genuinely outgrown what a managed shared environment can accommodate — without yet justifying the cost and complexity of dedicated hardware.
## Cloud Hosting: Capacity That Responds to Demand
Cloud hosting differs from VPS hosting not in the user experience — you still interact with a virtual machine, still have administrative access — but in the infrastructure underneath it. Where a VPS runs on a single physical server (and stops if that server fails), a cloud environment is backed by a pool of physical machines coordinated to behave as a unified resource. Your workload runs on virtual instances drawn from that pool, and the pool can be expanded or contracted without any physical intervention.
That architecture produces two properties that single-server setups cannot replicate. First, fault tolerance: because the pool contains multiple physical machines, the failure of any individual one triggers an automatic redistribution of workloads to remaining healthy nodes. Second, elasticity: the capacity available to your application is not fixed at provisioning time. When request volume increases beyond what current instances can handle, additional instances are brought in from the pool. When demand subsides, excess capacity is released. This happens programmatically, based on rules you define, rather than requiring manual intervention or a call to the provider.
Pricing in cloud hosting reflects this dynamic capacity model: you pay for actual compute consumption — instance hours, storage operations, outbound data transfer — rather than a flat monthly fee for a fixed-size environment. For workloads where demand is genuinely variable, this produces meaningful cost efficiency. For workloads that run at consistently high utilization around the clock, the cumulative consumption-based charges often exceed what equivalent fixed-capacity hosting would cost, and dedicated hardware may turn out to be more economical.
The architecture also imposes design requirements that simpler hosting setups do not. Applications deployed in cloud environments need to handle stateless request processing, because any individual request may be handled by any available instance rather than always reaching the same machine. Session management, file storage, and inter-service communication all require deliberate design choices that a single-server deployment can sidestep. For a managed WordPress installation on a cloud platform, this complexity is abstracted away by the platform. For a custom application, it needs to be built into the design.
## Dedicated Servers: When the Workload Justifies the Hardware
A dedicated server is a physical machine — not a virtual one, not a partition, not an abstraction — rented for your exclusive use. There are no other tenants on the hardware, no virtualization layer consuming a percentage of compute capacity, and no upper limit on your access to the machine’s resources beyond what the hardware itself can deliver. You specify the configuration: processor architecture and core count, memory capacity, storage type and quantity, network interface speed. The provider installs the hardware in their data center, connects it to power and network, and hands you administrative access. Everything from the operating system forward is your domain.
The performance characteristics that result from sole occupancy are meaningful in specific scenarios. Workloads that require sustained, intensive processor utilization — certain database engines under heavy transactional load, video encoding pipelines, scientific computation — can extract more consistent performance from a dedicated machine than from a virtual environment, because there is no hypervisor overhead and no contention for hardware resources at any level. The ceiling is the hardware, not a policy limit or a virtualization layer.
Compliance is the other major driver toward dedicated hardware. In industries where regulatory frameworks require demonstrable physical isolation of data — certain financial services sectors, healthcare data environments, some government contract requirements — a virtualized environment does not satisfy the requirement regardless of how tightly it is isolated logically. The only arrangement that places a single organization’s data on hardware that no other organization has ever used is a dedicated server.
The cost of that exclusivity is real: dedicated servers typically carry monthly fees that reflect the actual expense of reserving physical hardware, which ranges from under $100 to several hundred dollars per month depending on specification. Technical management is also more demanding — without managed services, the organization running the server is responsible for the full stack from operating system upward. Organizations that need dedicated hardware but do not have in-house system administration capacity typically use managed dedicated hosting, where the provider handles OS-level maintenance on a contractual basis, at a higher cost than unmanaged arrangements.
## Comparing the Four Options Directly
The table below lays out the key decision criteria across all four hosting types in a single view.
| Decision factor | Shared | VPS | Cloud | Dedicated |
| --- | --- | --- | --- | --- |
| Who manages the server OS | Provider — fully | You (or managed add-on) | You (or managed add-on) | You (or managed add-on) |
| Compute allocation | Shared pool — no guarantee | Hard-reserved per tenant | Elastic — expands on demand | Full hardware — no sharing |
| Physical hardware tenancy | Multi-tenant | Multi-tenant (virtualized) | Multi-tenant (distributed) | Single-tenant — exclusive |
| Response to demand increase | Throttled or suspended | Stable until ceiling — then manual upgrade | Auto-scales within pool | Fixed — hardware ceiling |
| Pricing model | Flat — $3–$15/mo | Flat — $5–$80/mo | Consumption — variable | Flat — $80–$500+/mo |
| Single-node hardware failure | Outage until repaired | Outage until repaired | Traffic rerouted automatically | Outage until repaired |
| Technical skill floor | None required | Linux command line basics | Intermediate + app design | Advanced or managed |
| Where it fits best | Low-traffic content sites | Applications, growing projects | Variable-demand services | High-load or compliance-bound |
## The Operational Risks That Don’t Appear on Spec Sheets
Hosting providers present their offerings in terms of what works well. Understanding what breaks — and under what conditions — is more useful for making a good decision.
With shared hosting, the category of risk that catches people off guard most often is sudden legitimate success. A website getting featured in a high-readership newsletter, a product launch generating unexpected demand, a piece of content circulating widely on social platforms — any of these can produce a rapid, large increase in request volume. On a shared server, the provider’s throttling mechanisms activate before your site degrades other accounts. The result is that your site becomes slow or inaccessible at exactly the moment you most want it performing well. There is no configuration change available to you in that moment; the architecture imposes a ceiling you cannot move from within the shared environment.
VPS hosting carries a different category of exposure, one rooted in the transfer of responsibility that comes with full administrative access. Running a server means being accountable for its security posture — not just the application code, but the operating system kernel, installed packages, network exposure, authentication configuration, and log monitoring. Each of these is a potential attack surface if neglected. Organizations running VPS instances without dedicated technical capacity to maintain them properly either pay for managed services or accept a level of security risk they may not have fully accounted for at purchase time.
Cloud billing produces a distinct failure mode. The consumption-based pricing model that makes cloud infrastructure economical for variable workloads also makes it possible to generate a substantial unexpected bill. A misconfigured application making redundant API calls, a distributed denial-of-service event driving up traffic figures, or a storage configuration that produces excessive read operations can all translate to invoice surprises within a billing cycle. Every major cloud platform offers budget alerting and expenditure controls, but these must be configured deliberately — the default state is uncapped billing.
Dedicated servers are structurally rigid in a way that the other three options are not. The physical machine you have rented is the machine you have. When utilization reaches the hardware ceiling, adding capacity means procuring additional hardware and integrating it into the environment — a process that takes days, involves configuration work, and potentially requires application changes to distribute load across multiple nodes. For projects where growth is predictable and steady, this is manageable through forward planning. For projects where growth is sudden or hard to forecast, rigidity at the infrastructure layer creates an operational constraint that cloud elasticity specifically exists to avoid.
## Matching Hosting Type to Project Type: Five Illustrative Cases
### A local services business building their first web presence
A plumbing company wants a website with a homepage, a services list, a contact form, and a handful of before-and-after photo galleries. Traffic will come primarily through local search results and will be modest and consistent throughout the year. Nothing about the site requires custom server configuration, and cost matters more than performance headroom. Shared hosting is the right choice here. The total technical requirement is uploading a WordPress installation and configuring a few pages — the managed server environment handles everything else. Running this site on a VPS would provide capabilities the project has no use for and require administrative attention it has no capacity for.
### A software team deploying a B2B SaaS application
A four-person development team has built a project management tool with a multi-tenant database, asynchronous job processing for report generation, a REST API consumed by their iOS and Android apps, and a web frontend. The application requires a specific PostgreSQL version, a particular job queue implementation, and custom Nginx configuration for handling large file uploads. None of this is configurable on shared hosting. A VPS gives the team full control over the software environment, direct terminal access for deployment, and the ability to tune the server configuration as the application evolves. A [Serverspace VPS](https://serverspace.us/services/vps-server.md) with two to four virtual CPU cores and four to eight gigabytes of memory represents a reasonable starting configuration for an early-stage application of this kind, with headroom to expand as usage grows.
### A consumer platform with event-driven traffic patterns
An online ticketing platform processes a steady baseline of activity most days, but experiences sharp demand concentrations when popular events go on sale — sometimes an order-of-magnitude increase in concurrent request volume, compressed into a window of minutes. Provisioning fixed infrastructure to handle that peak would mean running substantial excess capacity through the rest of the year. Cloud infrastructure, with its capacity to scale additional compute instances into service rapidly and release them when the peak subsides, matches the cost structure to the actual demand curve rather than its maximum point.
### A media company running high-traffic editorial content
A digital publication has grown to several million monthly visitors, with articles regularly generating tens of thousands of concurrent readers during the first hours after publication. Traffic is high and sustained rather than sharply variable, the content management system has been tuned specifically to the server environment, and the database workload is consistent enough to benefit from being isolated on dedicated hardware. A managed dedicated server eliminates virtualization overhead at a tier where the performance difference is measurable, and the flat monthly cost structure makes financial planning more straightforward than consumption-based billing at this utilization level.
### A fintech startup handling regulated financial data
A company processing payment card data operates under compliance requirements that specify data must reside on hardware that is not logically or physically shared with other organizations. This requirement eliminates shared, VPS, and standard cloud hosting from consideration regardless of their technical merits — only a dedicated server satisfies the physical isolation requirement that the compliance framework demands. The company will likely run hardware in a redundant pair with failover configuration, and will use managed hosting services to ensure that OS-level security maintenance is performed consistently and documented for audit purposes.
## Four Judgment Calls That Often Go Wrong
The first is treating the hosting decision as a one-time configuration rather than something that should be revisited as the project grows. Shared hosting selected for a site at launch becomes a constraint eighteen months later when traffic has grown and the site needs capabilities the managed environment cannot provide. Migrating a production website to a different hosting type while maintaining availability is more complicated than setting up the original environment was — it involves server configuration, data transfer, DNS management, and a window where both environments need to be functional simultaneously. Choosing infrastructure with realistic headroom for where the project is heading reduces the likelihood of performing that migration under pressure.
The second is underestimating the administrative burden of VPS hosting when transitioning from shared. On shared hosting, system-level management is invisible because the provider is doing it. On an unmanaged VPS, it becomes a recurring responsibility: applying kernel updates, monitoring disk utilization, rotating logs, managing SSL certificate renewals, and maintaining firewall rules. Developers who are skilled at application code but have limited exposure to system administration either need to invest time in acquiring those skills, use managed VPS hosting where the provider handles OS maintenance, or accept a security and reliability gap that becomes more consequential as the application grows.
The third is choosing cloud infrastructure for its architectural prestige rather than its practical fit. Cloud hosting is widely described as the modern standard for serious deployments, which sometimes leads projects to adopt it when simpler infrastructure would serve them better. A consistent, predictable workload running at high utilization pays more on consumption-based cloud billing than it would on a flat-rate VPS or dedicated server. The operational complexity of cloud architecture — designing for stateless request handling, managing distributed storage, configuring auto-scaling policies — also requires engineering time. That investment is worthwhile when the project actually needs elastic capacity; it is overhead when the workload is stable and fixed infrastructure would do the job.
The fourth is conflating hardware quality with configuration quality when evaluating performance. A dedicated server provides exclusive hardware access, but hardware access alone does not determine application performance. An application with poorly written database queries will perform badly on a dedicated server for the same reason it performs badly on a VPS: the database engine is spending its time executing inefficient operations rather than serving requests. Before attributing a performance problem to insufficient hosting, it is worth examining whether the application code, database indexing, caching configuration, and server software settings have been optimized. In many cases, better configuration of existing infrastructure produces more improvement than adding hardware.
## So What Else?
The four hosting types represent different positions on a spectrum defined by three variables: how much of the infrastructure you control, how predictably the infrastructure performs under changing conditions, and how much operational responsibility comes with the arrangement.
Shared hosting minimizes cost and operational responsibility by pooling resources across many accounts, at the expense of performance predictability under load and any meaningful server-level control. VPS hosting restores performance predictability and full administrative access within a virtualized environment, at the cost of taking on server management. Cloud hosting adds elastic capacity and multi-node fault tolerance, at the cost of consumption-based billing variability and architectural complexity. Dedicated servers deliver maximum performance predictability and physical isolation at the highest cost and the broadest operational scope.
If your project is currently running on shared hosting and you’ve started encountering the limits of that environment — whether through performance degradation during traffic events, resource limit warnings from your provider, or an inability to install software your application requires — the move to VPS hosting is the natural next step. The [Serverspace blog](https://serverspace.us/about/blog.md) covers practical deployment guides for common application stacks, which is useful context when setting up a VPS environment for the first time.
The most useful thing you can do before making a hosting decision is to write down your actual requirements: expected traffic volume and its variability, the software your application needs to run, the level of availability you need, and the technical capacity you have available for server maintenance. Those four inputs will point clearly toward one of the four hosting categories — and within that category, matching a specific plan to your workload is a straightforward exercise.
## Frequently Asked Questions
**At what point does shared hosting become the wrong choice?**
The signal is usually one of two things: repeated resource limit warnings from your provider, or consistent slow page loads that don’t improve when traffic is low. If your site hits CPU or memory limits regularly even on an upgraded shared plan, the architecture — not the specific tier — is the issue. The other signal is a software requirement: if your application needs a particular runtime version, a custom background process, or a specific system library that isn’t available through the control panel, shared hosting cannot accommodate it regardless of price. Either of those conditions is a reliable indicator that a VPS is the appropriate next step.
**How does managed hosting differ from unmanaged, and which should I choose?**
Unmanaged hosting gives you a server — virtual or physical — and the responsibility for everything running on it, from operating system installation and updates to security configuration and software maintenance. Managed hosting means the provider takes on a defined set of those system-level tasks, typically operating system patching, security monitoring, and sometimes backups, as part of a higher monthly fee. The right choice depends entirely on whether you have the technical capacity and time to manage a server properly. For organizations without dedicated sysadmin resources, managed hosting eliminates a category of operational risk that is easy to underestimate until something goes wrong.
**Is cloud hosting always more resilient than a VPS?**
Cloud hosting is inherently more resilient to individual hardware failures because the workload runs across multiple physical nodes simultaneously. If one node fails, traffic redistributes to others automatically. A VPS on a single server goes offline when that server fails, until the provider addresses the hardware issue. That said, cloud providers experience outages too — typically affecting a specific region or availability zone rather than a global service. Resilience is also partly a function of how the application is built: a single-node failure tolerance at the infrastructure layer doesn’t compensate for application-level failures that prevent the service from responding correctly regardless of available capacity.
**Can a VPS run multiple websites, and what are the practical limits?**
A single VPS can host multiple websites simultaneously using virtual host configurations in the web server. The practical limit is set by the combined resource requirements of all the sites the VPS is running — if the total memory and CPU demand across all sites exceeds the VPS allocation, performance degrades for all of them. For several low-traffic sites with similar software stacks, a modestly sized VPS handles the combined workload comfortably and the economics are favorable compared to running separate servers. For high-traffic sites or applications with demanding database requirements, dedicated resources per environment are worth the additional cost.
**How long does moving from shared hosting to a VPS realistically take?**
The technical steps — provisioning the VPS, installing the required software stack, transferring files and databases, configuring the web server, and testing the application in the new environment — take between two and eight hours for a typical website, depending on complexity. The DNS cutover that switches live traffic to the new server takes a few minutes to execute, followed by a propagation period of up to 48 hours during which different users may reach either the old or the new environment. In practice, propagation completes for most users within a few hours. Planning the migration during a low-traffic period and keeping the old environment active until the new one is verified reduces the risk of disruption to near zero.
**When does a dedicated server actually cost less than the alternatives?**
Dedicated servers have higher nominal monthly fees than VPS options, but at sustained high utilization the economics shift. A cloud environment handling consistently heavy compute loads accumulates consumption-based charges that can exceed the flat rate for equivalent dedicated hardware over a billing month. The crossover point depends on the specific provider’s pricing and the workload characteristics, but for applications that run at 70% or more of their peak capacity on a consistent basis, dedicated hardware is worth modeling as an alternative to cloud billing. The calculation also changes when compliance requirements force dedicated hardware regardless of cost comparison — in that case the cost comparison is against a managed dedicated option rather than shared infrastructure.
https://serverspace.us/about/blog/ubuntu-26-04-lts-vs-debian-13-which-one-should-you-choose-in-2026.mdUbuntu 26.04 LTS and Debian 13 compared for 2026: release cadence, kernel, security, cloud readiness, performance, and real-world workload scenarios.
Spring 2026 put an unusual pairing on the shortlist for anyone provisioning a Linux server. Ubuntu 26.04 Resolute Raccoon went stable on April 23. Debian 13 Trixie has been running production payloads since August 2025. The debian vs ubuntu call this year weighs a brand-new flagship LTS against a maturing community stable with eight months of hardening already logged. The sections below cover the specifics that shape server decisions: release rhythms, security defaults, memory and CPU behavior, cloud integration, and five workloads where one pick visibly outperforms the other.
## Is Ubuntu Debian Based? A Quick Refresher
Short answer on the is ubuntu debian based question: yes, and the link runs deep. Canonical carved Ubuntu out of a Debian snapshot back in 2004 when Mark Shuttleworth put the project together, and the inheritance stayed intact. Every fresh Ubuntu development window still opens by syncing packages from Debian’s unstable archive. Daily operations reflect the common origin: dpkg handles package metadata, APT drives installs and upgrades, binaries ship as .deb files, and systemd supervises services. Anyone used to apt install or systemctl on one distribution moves to the other without retraining.
Daylight opens above that shared floor. Debian runs as a volunteer collective through the Debian Project with SPI providing legal cover, and new stable versions land whenever the release team signals readiness rather than on a promised date. Canonical runs Ubuntu as a commercial undertaking: April releases every two years for the LTS train, proprietary firmware bundled for out-of-the-box hardware support, and a house-built layer on top of the Debian base (Snap, PPAs, cloud-init, Landscape, and the Ubuntu Pro subscription program).
## Release Cycles and Support: The First Real Difference
Look at release scheduling and the debian vs ubuntu split shows up immediately. Ubuntu holds a strict two-year beat: every even April a new LTS ships with five free years of security updates. Hooking into Ubuntu Pro (free for personal use on up to five machines) stretches that to ten years, and the paid Legacy extension tacks on five more. Ubuntu 26.04 LTS reaches a combined ceiling of April 2041.
Debian ignores the calendar. Stable versions appear whenever the release team signs off. Coverage spans three years of active work from the Debian Security Team, followed by two years of volunteer-maintained LTS. Trixie entered stable on August 9, 2025, with security updates running through June 30, 2030.
Kernel choices echo those philosophies. Ubuntu 26.04 runs on Linux 7.0 pulled close to upstream, translating to day-zero enablement for AMD Zen 6 and Intel Nova Lake. Debian 13 stays on the older Linux 6.12 LTS series, a conservative pick that handles most production workloads cleanly. Older CPUs notice no difference; fresh silicon runs without manual driver work only on the Ubuntu side.
| Feature | Ubuntu 26.04 LTS | Debian 13 Trixie |
| --- | --- | --- |
| Release date | April 23, 2026 | August 9, 2025 |
| Codename | Resolute Raccoon | Trixie |
| Linux kernel at release | 7.0 | 6.12 LTS |
| Free support ends | April 2031 | August 2028 |
| Maximum support ceiling | 2041 (with Ubuntu Pro and Legacy add-on) | June 2030 (with LTS) |
| Release model | Fixed cadence, every two years in April | When the code is ready |
| Vendor | Canonical, commercial backing | Debian Project, community driven |
| Official architectures | amd64, arm64, riscv64, ppc64el, s390x | amd64, arm64, armel, armhf, ppc64el, riscv64, s390x |
## Debian vs Ubuntu Differences Under the Hood
Past the release cadence sit the real debian vs ubuntu differences, and they are not cosmetic.
Ubuntu 26.04 swapped two long-running C utilities for Rust equivalents. The sudo binary now points at sudo-rs, a memory-safe rewrite. Around three dozen utilities from GNU coreutils (ls, cp, mv, cat, rm, and relatives) transitioned to uutils, a Rust implementation clearing roughly 88 percent of the GNU compatibility suite at launch. A configuration flag drops back to the classic GNU versions if a script trips over edge cases. CVE-2021-3156, the local-root sudo bug that sat undetected for a decade in the C codebase, cannot structurally exist in the Rust rewrite.
Cryptography defaults shifted too. OpenSSH on Ubuntu 26.04 negotiates mlkem768x25519-sha256 as the default key exchange, a hybrid of classical elliptic-curve math and post-quantum lattice methods. OpenSSL applies X25519+ML-KEM for TLS. Classical algorithms remain for legacy clients, but the baseline handshake is now quantum-resistant. Debian 13 has not moved to post-quantum defaults yet. Its security work points elsewhere: ROP and COP/JOP mitigations on amd64 and arm64 via Pointer Authentication, plus run0, a systemd-native replacement for sudo that authenticates against the caller’s password rather than root’s.
APT 3.x ships on both sides with solver3 for dependency resolution, colored columnar output, and Sequoia OpenPGP replacing GnuPG for signature checks. On package volume Debian leads: trixie holds 69,830 packages, a touch ahead of Ubuntu’s primary repositories. Ubuntu closes most of that gap through PPAs and Snap, though Snap adoption remains polarized.
Developer stacks diverge predictably. Ubuntu 26.04 packages Python 3.14, GCC 15.2, Rust 1.93, PostgreSQL 18 (with an I/O layer rewrite benchmarking up to three times faster on reads), and OpenJDK 25. Debian 13 holds Python 3.13, GCC 14.2, Rust 1.85, PostgreSQL 17, and OpenJDK 21. The gap is invisible for most server code and loud for anyone working with recent language features.
## Debian vs Ubuntu Performance on the Same VPS
Honest debian vs ubuntu performance numbers flatten to one observation: on identical hardware running identical services under identical load, the two distributions land statistically level. Both share the Linux kernel family, glibc range, and compiler toolchain. Benchmarks across Nginx, PostgreSQL, Redis, and Node.js workloads sit inside a one to three percent spread that falls inside measurement noise.
Three spots show genuine divergence though.
Idle RAM favors Debian. A minimal Debian 13 server sits around 200 MB before workloads start. The equivalent Ubuntu Server install lands closer to 350 MB because cloud-init, snapd, and diagnostic daemons come preloaded. On a 1 GB VPS that 150 MB gap translates directly into headroom for actual services.
Modern-CPU throughput favors Ubuntu. Canonical now publishes AMD64v3 package variants compiled against instruction-set extensions available on every processor from Haswell (2013) onward. Stacked on Linux 7.0 improvements to io_uring, zero-copy networking, and the sched_ext scheduler, Ubuntu 26.04 moves ahead on packet-heavy workloads and dense container hosts.
Long-horizon predictability favors Debian. Once trixie froze package versions at release, nothing moves until end of life except security fixes. A Debian 13 host left alone for three years runs identical binaries on day 1,095 as on day one. Ubuntu’s hardware enablement kernel track rolls in newer kernels across the release lifetime, trading behavioral consistency for fresh hardware support.
## Debian or Ubuntu for Cloud VPS and Production Servers
For cloud-based infrastructure the debian or ubuntu pick hinges mostly on vendor investment rather than technical differences. W3Techs market share data from late 2025 puts Ubuntu at about 33.9 percent of Linux-powered web servers and Debian near 4.1 percent. That gap reflects years of Canonical engineering. Images on AWS, Azure, Google Cloud, Oracle, and most independent hosts arrive with cloud-init pre-configured, kernels tuned for the hypervisor, and Ubuntu Pro machinery wired up. Debian images are widely available too, but premium cloud polish lands on the Ubuntu side first.
Two 2026 developments widen that lead.
GPU compute moved into the main repositories. Ubuntu 26.04 ships AMD ROCm and NVIDIA CUDA through apt. One install command stands up a supported compute stack, with up to fifteen years of patches attached through Ubuntu Pro. Debian 13 still leaves you adding external vendor repositories, juggling signing keys, and handling driver mismatches on your own.
Debian holds the opposite edge of the hardware spectrum outright. Trixie became the first mainstream distribution with official RISC-V 64 support and covers seven architectures total (amd64, arm64, armel, armhf, ppc64el, riscv64, s390x). Teams running RISC-V boards, IBM LinuxONE mainframes, or legacy 32-bit ARM gear do not have a real alternative.
For everything in between (web apps, API layers, database tiers, CI workers) both work well. Serverspace keeps ready-to-deploy templates for Ubuntu 26.04 and Debian 13 alike, so benchmarking one against the other finishes in under two minutes. An hourly-billed [Linux VPS with SSD disks and root access](https://serverspace.us/services/vps-server/linux.md) makes that test cheaper than a cup of coffee.
## Five Real-World Scenarios: Ubuntu 26.04 vs Debian 13 Comparison
A useful debian vs ubuntu comparison always tracks back to workload shape. Five scenarios cover most admin decisions this year.
Production web applications and API backends. This one is a tie. Nginx, PostgreSQL, Node.js, Python, and PHP stacks run equally well on either platform. Teams already paying for Ubuntu Pro stay on Ubuntu for the phone-accessible support. Teams that prefer to keep a commercial vendor out of the stack pick Debian.
Container hosts running Docker or Kubernetes. Ubuntu 26.04 takes this clearly. Docker 29 comes preinstalled, the 7.0 kernel adds Open Tree Namespace which shortens container startup, and Canonical publishes certified images for every major Kubernetes distribution across every major cloud. Debian runs containers fine but lags on cloud-native polish.
Dedicated database servers. For PostgreSQL or MariaDB hosts, Debian 13’s no-change policy becomes a feature. When database binaries do not shift for years, tuning parameters, query plans, backup scripts, and monitoring dashboards stay stable too. PostgreSQL 18 on Ubuntu benchmarks faster, but its I/O rewrite is fresh enough that critical production databases may prefer to let someone else stress-test it first.
AI and ML pipelines relying on GPU acceleration. Ubuntu 26.04 wins decisively. Native ROCm and CUDA eliminate the driver wrestling that has bled time out of ML teams for years. For anyone weighing debian vs ubuntu best for ai automation picoclaw style pipelines, where CUDA drivers, Python environments, job schedulers, and model frameworks need to agree on the same release chain, Ubuntu compresses days of setup into one apt transaction.
Edge hardware, IoT, and non-x86 architectures. Debian 13 takes this uncontested. RISC-V 64 runs as a first-class citizen in trixie, the base install squeezes into 200 MB, and nothing else in the mainstream distribution space covers as many CPU families.
| Scenario | Recommended pick | Why |
| --- | --- | --- |
| Production web server or API backend | Either distribution | Both handle the same stack equally well; pick by team familiarity and support needs |
| Docker and Kubernetes host | Ubuntu 26.04 LTS | Newer Docker 29, kernel 7.0 Open Tree Namespace for faster container creation, certified cloud images everywhere |
| Database server (PostgreSQL, MariaDB) | Debian 13 | Conservative package cadence, predictable behavior for years, battle-tested PostgreSQL 17 |
| AI and ML with GPU compute | Ubuntu 26.04 LTS | Native ROCm and CUDA in official repositories, up to 15 years of GPU stack patches via Ubuntu Pro |
| Edge, IoT, or non-x86 hardware | Debian 13 | First-class RISC-V 64 support, seven architectures, and a 200 MB base install for constrained devices |
## Is Debian Better Than Ubuntu in 2026?
Asking is debian better than ubuntu forces a binary where the honest answer splits. Each distribution wins on a different axis.
Debian 13 takes the edge on minimalism, zero vendor lock-in, the broadest hardware matrix in Linux, and a release that refuses to drift over its five-year life. It also wins on philosophical cleanliness: no Snap daemon running by default, no telemetry consent screens, no proprietary components beyond firmware you explicitly opt into.
Ubuntu 26.04 LTS takes the edge on length of commercial support, cloud integration depth, native GPU compute, freshest toolchain versions, and the raw weight of the Ubuntu community when something fails at 3 am. It also wins on third-party tooling: when new infrastructure documents its install procedure, Ubuntu instructions come first, Debian instructions come second if at all.
So is debian better than ubuntu taken as an absolute call? Neither is. Workload and team capabilities decide it, not the label.
## Common Mistakes When Picking Between the Two
Selecting a Linux base feels like a one-way door, and most regret traces back to five avoidable errors.
Picking based on online reputation rather than workload shape. A Reddit thread celebrating Debian minimalism does not automatically apply to your stack, and a viral Ubuntu 26.04 showcase does not invalidate a Debian 13 server already handling your traffic.
Reaching for the newest kernel with no specific reason. Linux 7.0 improves throughput on current-generation CPUs and io_uring-heavy workloads. It brings nothing to a database healthy on 6.12 for two years, only new variables to verify.
Miscalculating the support horizon. Debian 13 exits full support in August 2028, placing any host provisioned today roughly two years from a required upgrade. Ubuntu 26.04 covers users through April 2031 free and through 2041 under Pro. On year-three planning that distance shapes decisions.
Applying desktop reviews to server planning. GNOME 50 versus GNOME 48, Wayland behavior, fractional scaling, font rendering: none of it matters on a headless VPS. Server evaluation needs server-focused reviews.
Treating archive size as a quality indicator. Debian has a larger archive on paper. What matters is whether the exact stack your workload needs is packaged cleanly in the repo you plan to use.
Avoiding every item here comes down to one move: deploy both and let instrumentation settle the question. On [Serverspace](https://serverspace.us/services/vps-server/linux.md), standing up a short-lived Ubuntu instance alongside a Debian instance, running them against realistic traffic, and tearing both down afterward costs roughly the price of a sandwich.
## Conclusion: Which One to Pick in 2026
Ubuntu 26.04 LTS slots in as the sensible default for cloud-native deployments, container platforms, GPU workloads, and any team that wants commercial support extending to 2041. The honest caveat at publication time is how new the release is. Direct upgrades from 24.04 open only with the 26.04.1 point release in August, and the Rust-based core utilities are serving their first LTS tour in production. For workloads where reliability beats novelty, waiting a few months is the professional play.
Debian 13 slots in as the sensible default for stability-above-everything deployments, tight memory budgets, non-x86 hardware, and teams that prefer a project without a single commercial owner behind the wheel. Eight months of stable-channel operation have already smoothed most rough spots.
Picking one without testing the other is the real mistake. Provision a [Linux VPS](https://serverspace.us/services/vps-server/linux.md) on each distribution, put your actual workload on both for a week, and let the instrumentation make the call rather than guessing.
## FAQ
**Is Ubuntu Debian based?**
Yes. Canonical built Ubuntu on a Debian foundation in 2004, and the two still share core plumbing: APT, the .deb format, dpkg, and systemd. Each Ubuntu development window opens with a fresh sync against Debian’s unstable archive. The distinguishing features live above that shared base (Snap, PPAs, cloud-init, Ubuntu Pro, a fixed release calendar Debian never adopted).
**Debian 13 vs Ubuntu 24.04: stay on 24.04 or upgrade to 26.04?**
On the debian 13 vs ubuntu 24.04 decision, timing rules. Debian 13 has been stable since August 2025 and stays patched through 2030. Ubuntu 24.04 LTS carries free coverage through April 2029 and paid coverage through 2036 under Ubuntu Pro. For most teams currently on 24.04, no urgency exists; waiting for Ubuntu 26.04.1 in August 2026 before upgrading keeps the risk low. Moving to Debian 13 right now makes sense specifically when a proven base matters more than Ubuntu-specific ecosystem features.
**Ubuntu vs Linux Mint vs Debian differences: where does Mint land?**
Most older ubuntu vs linux mint vs debian differences 2024 comparisons still hold into 2026. Mint sits downstream of Ubuntu, with an LMDE edition built directly on Debian. Mint ships a more traditional desktop environment, strips Snap out by default, and targets desktop users looking for low-friction daily computing. For server workloads Mint is not the right answer; Ubuntu 26.04 LTS and Debian 13 are the picks. For a desktop sitting between Ubuntu polish and Debian minimalism, Mint occupies that middle slot.
**Can I switch from Ubuntu to Debian without reinstalling?**
Technically, editing sources.list and running a dist-upgrade walks the migration forward. Practically, Ubuntu-specific patches on shared packages break the process reliably enough that nobody recommends it. A clean install on a fresh VPS finishes faster, avoids half-converted states, and preserves a rollback path if something breaks during the switch.
**Which distribution uses less RAM on an idle server?**
Debian 13, and the gap is not subtle. A stripped-down Debian install rests around 200 MB of RAM before any workload starts. Ubuntu Server 26.04 idles closer to 350 MB because cloud-init, snapd, and diagnostic services run by default even on headless setups. On a 1 GB VPS the 150 MB of reclaimed memory drops directly into the workload budget.
https://serverspace.us/about/blog/fedora-44-beta-whats-changed-in-the-new-version-of-the-linux-distribution.mdWhat’s new in Fedora 44 Beta? We break down GNOME 50, Linux Kernel 7.0, and the move to Atomic Desktop. Stay ahead of the curve with the most significant Linux release of 2026.
Before downloading an ISO or running a system upgrade, it helps to understand what you’re actually installing. Not just the version number or the list of new features, but the underlying architectural shift: how the operating system manages resources, where the boundary between the system and applications sits, and how the distribution handles technical debt. In Fedora 44 Beta, released in the spring of 2026, these three things have shifted more significantly than in any release of the last half-decade.This article examines Fedora 44 Beta not just as a lineup of software updates, but as a set of tradeoffs between cutting-edge innovation, system stability, and operational efficiency. By the end, you’ll have a clear framework for deciding whether this “vanguard” of the Linux world is the right foundation for your workstation or server infrastructure in 2026.
## The “Vanguard” Philosophy: What Fedora Is Actually Doing
Fedora has long occupied a specific role in the Linux ecosystem: it is the upstream proving ground for Red Hat Enterprise Linux (RHEL). Every time a developer opens a terminal in Fedora 44, they are interacting with the future of corporate computing. Technologies like Wayland, Systemd, and PipeWire were all “Fedora-first” before becoming industry standards.
In version 44, the project is doubling down on this role. The choice to ship Kernel 7.0 and GNOME 50 is not merely about having the highest version numbers; it's an architectural decision to move the entire ecosystem toward hardware-accelerated interfaces and native AI integration. What varies in Fedora 44 compared to its predecessors is the degree to which the OS abstracts away the hardware complexity, particularly regarding NPU (Neural Processing Unit) management and atomic system updates.
The choice to use Fedora 44 is not about technical vanity — it's about matching a high-velocity development cycle to your actual project requirements. A mission-critical production database and a cutting-edge AI development workstation have fundamentally different needs. The “bleeding edge” that serves one well will be a source of volatility for the other.
## GNOME 50: The Transition to a Hardware-Accelerated Interface
The most immediate change in the Fedora 44 Workstation experience is GNOME 50. This release represents a milestone in the transition toward GTK 5 and a fully Vulkan-driven rendering pipeline. For years, desktop environments treated the GPU as an optional enhancement; in GNOME 50, the GPU is a mechanical necessity.
### Native Tiling and Window Management
Fedora 44 finally addresses a decade-long user request: native, sophisticated window tiling. The new “Intelligent Tiling” system moves beyond simple split-screens. It creates a dynamic layout engine that suggests window placements based on screen resolution and current workflow. For developers on ultrawide monitors, this eliminates the need for third-party extensions like Tiling Assistant, moving a core productivity feature into the managed system layer.
### The Vulkan Default
By moving to a Vulkan-based renderer, GNOME 50 achieves a level of interface fluidity that was previously impossible. Every window transition, blur effect, and animation is now executed via dedicated GPU shaders. This reduces the CPU overhead for the desktop environment, freeing up processor cycles for heavy compilation tasks or 3D rendering. The tradeoff is clear: Fedora 44 essentially deprecates legacy hardware that lacks robust Vulkan support, prioritizing modern efficiency over broad compatibility.
## Kernel 7.0: An Abstraction Layer for the AI Era
Underneath the interface sits Linux Kernel 7.0, which introduces the most significant changes to hardware management since the 5.x era. The primary driver here is the ubiquity of AI-specific hardware in 2026.
### The NPU Subsystem
Fedora 44 is the first major distribution to integrate a comprehensive driver stack for Neural Processing Units (NPUs) directly into the kernel. In previous versions, using an NPU for local LLM inference or image processing required fragmented, often proprietary, user-space drivers. Kernel 7.0 treats the NPU as a first-class citizen.
- **Hardware-Level Power Management:** The kernel can now offload background tasks, such as noise cancellation in PipeWire or OCR in search indexing, to the NPU, significantly extending battery life on modern laptops.
- **Direct Access for Frameworks:** Libraries like PyTorch and TensorFlow can now tap into NPU hardware through standard system calls, simplifying the deployment of local AI models.
### The Rust Expansion
The architectural shift toward memory safety continues in Fedora 44. Kernel 7.0 features a significantly expanded set of drivers and subsystems written in Rust. By replacing legacy C code in critical areas like the networking stack and NVMe drivers, Fedora 44 reduces the attack surface for memory-related vulnerabilities. For the user, this means a system that is structurally more resilient to the “zero-day” exploits that plagued C-based infrastructures.
## DNF5: Eliminating Package Management Latency
One of the most persistent complaints about Fedora has been the speed (or lack thereof) of the DNF package manager. In Fedora 44 Beta, the transition to DNF5 is complete and mandatory. This isn’t just an update; it's a total rewrite of the system's primary tool for software management.
### The Move from Python to C++
DNF4 was a complex Python application. DNF5 is a streamlined C++ implementation that collapses the previous multi-layered architecture into a single, high-performance binary. The operational impact is dramatic:
- **Metadata Performance:** The “refreshing metadata” phase that previously took 20-30 seconds now happens in less than five.
- **Memory Footprint:** DNF5 consumes roughly 40% less RAM during complex dependency resolution, which is particularly beneficial for small-scale [VPS instances](https://serverspace.us/services/vps-server.md).
- **Unified Experience:** DNF5 unifies the behavior between the desktop and minimal container environments (microdnf), ensuring that automation scripts work identically across all infrastructure tiers.
## Fedora Atomic Desktop: The Move Toward Immutable Infrastructure
In 2026, Fedora has solidified its “immutable” variants under the Fedora Atomic Desktop brand. This represents a fundamental shift in how an operating system is maintained. Instead of a “live” file system that is modified with every package install, Atomic Desktop uses an image-based approach.
The core system (/usr) is mounted as read-only. Updates are performed by downloading a new system image in the background and switching to it upon reboot. If an update causes an issue, the user can roll back to the previous state in seconds via the bootloader.
This architecture produces a “fault-tolerant” workstation. By isolating the base OS from user applications (which run in Flatpaks) and development environments (which run in Toolbox containers), Fedora 44 Atomic provides a level of reliability that traditional “mutable” distributions cannot match. For a professional developer, this means a system that cannot be accidentally “broken” by a failed package transaction or a misconfigured system library.
## Comparing Fedora 43 and Fedora 44 Beta
The table below highlights the technical leap between the previous stable release and the current Beta.
| System Component | Fedora 43 (Stable) | Fedora 44 Beta (2026) |
| --- | --- | --- |
| Linux Kernel | 6.11 / 6.12 LTS | 7.0 RC (AI/NPU Native) |
| Desktop Environment | GNOME 48/49 | GNOME 50 (Vulkan Native) |
| Package Manager | DNF4 | DNF5 (Full Migration) |
| Compiler Toolchain | GCC 14 / Python 3.12 | GCC 16 / Python 3.14 |
| Default Display Prot. | Wayland (X11 optional) | Wayland (X11 Deprecated) |
| Security Standard | Standard Crypto | Post-Quantum Ready |
## Operational Risks: The Cost of the Cutting Edge
While Fedora 44 Beta presents an optimized future, it also carries specific operational risks that users must account for.
The primary risk is driver volatility. Because Kernel 7.0 is brand new, third-party kernel modules — most notably proprietary NVIDIA drivers or specialized networking drivers — may lag in compatibility. In a professional environment, this can lead to unbootable systems or broken hardware acceleration. Unlike a “stable” distribution like Debian, Fedora assumes the user has the technical capacity to troubleshoot kernel-level regressions.
The second risk is the X11 Deprecation. Fedora 44 Beta continues the aggressive push toward Wayland. For organizations or users relying on legacy software that interacts directly with X11, the “XWayland” bridge in GNOME 50 is more efficient than ever, but it is still a bridge. Certain specialized screen recorders, automation tools, or ancient CAD software may exhibit unpredictable behavior.
The third risk involves DNF5 Automation. If you have complex infrastructure management scripts (Ansible, custom shell scripts) that rely on specific output formats of DNF4, they will likely break. DNF5 changes the CLI output and the API interaction. Testing your automation pipeline against the Fedora 44 Beta environment is mandatory before any fleet-wide rollout.
## Matching Fedora 44 to Your Project: Five Illustrative Cases
A Full-Stack Developer Building Next-Gen Web Apps
A developer working with the latest versions of Rust, Go, and Python 3.14 needs a toolchain that matches their code. Shared or “LTS” distributions would force them to use outdated compilers or complex version managers. Fedora 44 Beta provides the latest toolchains natively. The move to DNF5 makes the constant installation and removal of dev-dependencies feel seamless, while the Wayland-native environment provides the best support for high-DPI displays and complex multi-monitor setups.
An AI Researcher Working with Local LLMs
A researcher needs to run a local instance of Llama 3 for data privacy reasons. Previous setups required fighting with proprietary drivers to get NPU acceleration. With Fedora 44's native NPU support in Kernel 7.0, the hardware is recognized and utilized by the system immediately. The researcher can leverage the NPU for low-latency inference while keeping their GPU free for training or visualization tasks.
A DevOps Engineer Managing a Fleet of Cloud Servers
For an engineer deploying microservices, Fedora Server 44 Beta is the ideal testbed for the upcoming RHEL release. The integration of Podman 5.2 and the optimized x86-64-v3 architecture allow the engineer to extract maximum performance from modern [cloud VPS hardware](https://serverspace.us/services/vps-server.md). The speed of DNF5 reduces the duration of automated maintenance windows, and the unified library makes container management more predictable.
A Linux Gamer Seeking Maximum Performance
The gaming community benefits directly from the Vulkan-native GNOME 50 and the latest Mesa drivers. Fedora 44 Beta includes optimizations for Valve's Steam Deck hardware and improved HDR support under Wayland. For a gamer, the tradeoff is the potential for minor bugs in the beta kernel versus a measurable increase in frame rate and a reduction in input latency compared to older distributions.
An IT Professional Requiring an “Indestructible” Workstation
A consultant who travels and cannot afford for their system to “break” after an update should choose Fedora Atomic Desktop (Silverblue). The immutable architecture ensures that even if a system update goes wrong in a hotel room with poor Wi-Fi, they can simply reboot into the previous day’s working image. It provides the “peace of mind” usually associated with macOS or ChromeOS, but with the full power of a professional Linux workstation.
## Four Judgment Calls That Often Go Wrong
The first mistake is treating Fedora like a “set and forget” OS for non-technical users. Because of the rapid update cycle, things will change. An interface element might move in GNOME, or a kernel update might require a new firmware package. Users who are not prepared to perform occasional technical maintenance are better served by the Atomic variants, which abstract this complexity.
The second is underestimating the “Beta” in Fedora 44 Beta. While Fedora's betas are often more stable than other distros’ releases, they are intended for testing. Running a Beta on a primary production machine without a verified backup strategy is a gamble with your uptime. The structural changes in DNF5 and Kernel 7.0 are profound enough that regressions are possible.
The third is sticking with X11 out of habit. Many users disable Wayland because of past issues with screen sharing or NVIDIA. In 2026, the architectural momentum is entirely behind Wayland. Disabling it in Fedora 44 means fighting the system's design, leading to a suboptimal experience. It is better to resolve the Wayland-specific issues (often just a matter of selecting the right portal) than to force the system back into a deprecated display protocol.
The fourth is ignoring the “Atomic” option. Many long-time Linux users stick with the traditional Workstation version because they want to “tinker.” However, modern Fedora development is heavily optimized for the Atomic model. Ignoring the image-based variants means missing out on the most significant advancement in Linux system reliability of the last decade.
## Conclusion: The Tool for the 2026 Workflow
Fedora 44 Beta is not just another update; it is a refined tool built for the specific hardware and security requirements of 2026. The move to GNOME 50 and DNF5 eliminates the “clunkiness” of the past, while Kernel 7.0 prepares the ecosystem for the AI-driven future.
The right choice of infrastructure depends on your appetite for innovation. If you require a system that remains static for five years, Fedora is the wrong choice. But if you need an environment that allows you to build, test, and deploy using the same technologies that the enterprise world will adopt tomorrow, Fedora 44 Beta is the definitive platform.
To experience the speed of DNF5 and the performance of the new server kernel, consider deploying a test instance on a [Serverspace cloud VPS](https://serverspace.us/services/vps-server.md). It's the fastest way to validate your workflow against the future of Linux without modifying your local hardware.
## Frequently Asked Questions
**Is it safe to upgrade from Fedora 43 to Fedora 44 Beta?**
The dnf system-upgrade process is robust, but the transition to DNF5 as the primary manager is a major change. Always perform a full system backup first. Ensure that any critical third-party repositories (like RPM Fusion) have enabled their Fedora 44 branches before proceeding.
**Does Fedora 44 still support older hardware?**
While the kernel supports older processors, the move toward Vulkan-native rendering in GNOME 50 and the optimization for x86-64-v3 means that hardware older than 10-12 years may experience significantly degraded performance or lack of graphical acceleration.
**Can I use DNF4 commands in Fedora 44?**
DNF5 is designed to be backwards compatible with most common DNF4 commands (install, remove, update). However, the internal plugins and the output format have changed. If you use custom DNF plugins, you will need to verify if they have been ported to the new C++ API.
**Why should I choose the Atomic Desktop over the standard Workstation?**
Choose Atomic if you value system reliability and “cleanliness” above all else. It is perfect for users who want a “just works” experience with the ability to roll back any system change. Choose Workstation if you frequently need to modify system-level files or use specialized software that doesn’t fit the Flatpak/Container model.
**What happened to the X11 session?**
In Fedora 44 Workstation, the X11 session is no longer installed by default. It remains available in the repositories for manual installation, but the project's goal is to move entirely to Wayland. XWayland handles 99% of legacy application needs seamlessly.
https://serverspace.us/about/blog/choosing-the-best-os-for-a-rust-backend-performance-comparison-and-real-tests.mdPick the right OS for your Rust backend. Real tests cover Ubuntu, Debian, Alpine, Rocky Linux, glibc vs musl, io_uring, and allocator trade-offs.
Rust has quietly become the language of choice for infrastructure teams at Discord, Cloudflare, Dropbox, AWS, and Figma. The ecosystem of Rust backend frameworks now covers everything from API gateways to real-time trading systems. Most tutorials spend their time on framework picks and allocator swaps, then hand-wave the operating system question with the catch-all advice of just running Linux.
That hand-wave hides a surprising amount of performance.
The OS choice affects a Rust backend more than switching from Axum to Actix. A default Alpine image can run a multi-threaded Rust workload seven times slower than Debian on the same hardware. A kernel missing io_uring support cuts your latency ceiling in half. The Rust source code looks identical in every case. This article walks through the operating systems that actually matter for Rust backend development in 2026, with real benchmark numbers and a decision path that survives contact with production.
## Why the Operating System Shapes Rust Performance
Rust compiles to a native binary that talks directly to the operating system. No JVM, no interpreter, no garbage collector stands between your code and the kernel. That is why teams choose Rust for backend services, and why the OS leaks through into performance in ways other languages paper over.
Three layers under the binary do most of the work. The kernel decides how async I/O behaves, and modern Linux offers io_uring for batched operations through shared ring buffers. The C standard library (glibc vs musl) decides how multi-threaded allocations contend. The memory allocator handles every Vec, Box, and String, and Rust’s default system allocator is often wrong for servers under concurrent load.
Choose well across these three layers and a modest VPS outperforms a bigger cloud instance. Choose poorly and you pay for hardware you cannot actually use.
## The Three Layers Under Every Rust Backend
Kernel version and io_uring
io_uring arrived in Linux kernel 5.1 back in 2019, and every release since has sharpened it. For Rust backends it unlocks three async runtimes that work differently from the standard Tokio setup: tokio-uring (kernel 5.10+), monoio from ByteDance (kernel 5.6+), and glommio from Datadog. These runtimes skip epoll, submit batched operations through shared memory rings, and often cut median latency in half on I/O-heavy workloads.
The numbers back this up. The flashQ project, a Rust message queue published in January 2026, measured the same workload on epoll at 0.4 ms P50 latency and on io_uring at 0.2 ms, with 312,000 operations per second. Tokio’s own tokio-uring announcement reported TCP echo improvements of up to 60 percent over epoll.
Kernel versions by distribution matter here. Ubuntu 22.04 ships 5.15, Ubuntu 24.04 runs 6.8, and Ubuntu 26.04 (April 2026) uses 7.0 with systemic hardening applied to io_uring after Google reported 60 percent of 2022 kernel exploits targeted it. Debian 13 Trixie rides on 6.12 LTS. Alpine 3.21 ships 6.12. Rocky Linux and AlmaLinux 10 land on 6.12 as well, while the 9.x lines stay on 5.14.
libc: glibc vs musl
This is where Alpine Linux surprises engineers who pick it for container image size and assume the performance story is neutral.
Chainguard’s benchmarks show Alpine running a multi-threaded Rust script roughly four times slower than a glibc-based distribution. A detailed writeup from nickb.dev in February 2025 measured a seven-times slowdown in a real-world Rust benchmark, then traced the cause: the default musl allocator burned 6.7 seconds inside a futex waiting on lock contention, while glibc spent 0.5 seconds in the same position. Apache DataFusion maintainer Andy Grove documented the same pattern when Ballista ran unusably slow on Alpine and moved the project to Debian. Ripgrep hit this years earlier and solved it by swapping the allocator.
The musl malloc implementation serializes multi-threaded allocations harder than glibc does, and Rust programs allocate often. Without a swap, any Rust service handling concurrent requests on Alpine will hit a soft ceiling well below what the hardware can deliver.
glibc has the opposite trade-off. It is larger, couples the binary to a specific glibc version, and does not produce the tiny static binaries musl enables. But for a server running inside a container based on Debian slim, Ubuntu, or Rocky Linux, glibc is the invisible default and almost always the right one.
Memory allocator
Rust removed jemalloc from the standard library in version 1.32 back in 2019 and switched to the system allocator. On most Linux boxes that means glibc malloc, which for multi-threaded servers leaves performance on the table.
Microsoft’s mimalloc benchmarks measured up to 5.3 times throughput improvement over glibc malloc under heavy multi-threaded workloads, with resident memory cut roughly in half. Jemalloc reports similar or better numbers depending on workload, with some tests showing glibc malloc delivering only 15 percent of jemalloc’s throughput on a four-core server.
The swap is small. Add mimalloc to Cargo.toml, then drop this at the top of main.rs:
#[global_allocator] static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc;
Every Vec, HashMap, Box, and String now goes through a modern thread-caching allocator. On Alpine, this swap also fixes the musl problem above. One caveat: single-threaded workloads see much smaller gains. Multi-threaded services see the dramatic numbers. Test your specific workload rather than assuming.
## Operating Systems Compared for Rust Backend Development
Ubuntu LTS
Ubuntu is the default answer for Rust backend development. The 22.04 and 24.04 LTS releases power most Rust tutorials, most CI pipelines, and most cloud VPS images. Kernel 6.8 on 24.04 covers io_uring, send zero-copy improvements, and recent scheduler work without any special setup.
Ubuntu 26.04 Resolute Raccoon landed in April 2026 with kernel 7.0 and shipped Rust-based replacements for several GNU coreutils, making it the first LTS to run Rust in core places (trade-offs versus Debian 13 are covered in [the comparison on the Serverspace blog](https://serverspace.us/about/blog/ubuntu-26-04-lts-vs-debian-13-which-one-should-you-choose-in-2026.md)). For most teams, Ubuntu 24.04 LTS is the safe pick: five years of support, a modern enough kernel for io_uring, and every Rust library you will ever use has been tested against it. Most hosting providers offer Ubuntu as a preset, so spinning up a [VPS with Ubuntu preinstalled](https://serverspace.us/services/vps-server.md) takes a few minutes.
Debian Stable
Debian 13 Trixie, released in August 2025, runs on kernel 6.12 LTS and targets workloads where predictability beats package freshness. For Rust backends this works well: you install the toolchain through rustup anyway, so the system rustc version does not matter, and in exchange you get a base that moves slowly enough that OS upgrades rarely break anything.
Debian also made a remarkable commitment in November 2025 by making Rust a required dependency for APT, the core package manager. Memory footprint is smaller than Ubuntu’s, the package set is minimal, and the security team is among the most respected in the Linux world. For production services with five-year horizons, Debian 13 is the pragmatic choice.
Alpine Linux
Alpine is the go-to for container images. A base image weighs 5 to 7 MB, which means faster Docker pulls, cheaper registry storage, and quicker cold starts on serverless platforms. Rust produces static binaries against musl cleanly, so the compile-once, copy-to-scratch-container pattern works beautifully.
The catch is the musl allocator described earlier. Ship an Alpine-based Rust backend without swapping to mimalloc or jemalloc and you leave multi-threaded performance on the table, sometimes dramatically. Alpine makes sense for short-lived edge workloads, CI runners, and Rust services with lightweight concurrency per container. For long-running, heavily concurrent backends, do the allocator swap and benchmark before committing.
Rocky Linux and AlmaLinux
When commercial software, regulated industries, or formal compliance audits enter the picture, the RHEL-compatible family earns its place. Rocky Linux 10 and AlmaLinux 10 both run kernel 6.12, ship with SELinux enforcing out of the box, and commit to roughly ten years of support per major version.
Rocky and Alma are mostly interchangeable for Rust backend work. Rocky stays closer to RHEL’s exact behavior on a bug-for-bug basis, while Alma builds from CentOS Stream and occasionally picks up fixes RHEL has not merged. Oracle Linux adds a third option through its Unbreakable Enterprise Kernel (the full comparison lives in [this writeup on the Serverspace blog](https://serverspace.us/about/blog/rocky-vs-alma-vs-oracle-linux.md)). The RHEL lineage brings one practical benefit for Rust: SELinux policy templates are mature, audit trails are clean, and commercial middleware that will not officially support Ubuntu often runs here without issue. If compliance is part of the job, starting with [Rocky Linux on a production-ready VPS](https://serverspace.us/rocky-linux-vps-hosting/) removes several steps from the hardening process.
FreeBSD
FreeBSD is a minority pick for Rust backends, with Tier 2 language support. One quiet advantage: jemalloc has been the system allocator in FreeBSD since 2005, so Rust programs inherit a strong thread-caching allocator without any manual swap. The networking stack, ZFS, and jails give FreeBSD a distinctive operational flavor. The downside is io_uring. It does not exist on FreeBSD. Tokio runs on kqueue and performs fine, but tokio-uring, monoio, and glommio are Linux-only.
Windows Server and macOS
Windows Server can run Rust backends but rarely wins on performance. Tokio maps to I/O Completion Ports, and while IOCP is solid, the ecosystem does not enjoy the same Rust-specific tuning as Linux. Windows Server 2022 added I/O rings similar to io_uring, but tokio-uring does not target them. Teams pick Windows for reasons outside performance: Active Directory, .NET interop, or business constraints. macOS shows up as the developer laptop, not the production target. Most teams use macOS locally, then cross-compile to Linux or build inside Docker for deployment.
## Quick Reference: OS Comparison for Rust Backends
The HTML comparison table is delivered alongside this article and summarizes the trade-offs across the operating systems that actually see Rust backend traffic in 2026, with columns for kernel version, libc, strengths, trade-offs, and best-fit scenarios.
| Operating System | Kernel | libc | Strengths | Trade-offs | Best for |
| --- | --- | --- | --- | --- | --- |
| Ubuntu 24.04 LTS | 6.8 | glibc | Largest ecosystem, modern kernel with io_uring, 5-year support, every Rust library tested against it | Larger footprint than minimal distros | Default choice for most Rust backends |
| Debian 13 Trixie | 6.12 LTS | glibc | Rock-solid stability, smaller footprint than Ubuntu, strong security team, Rust now required for APT | Slightly older package versions (irrelevant if using rustup) | Predictable long-running production workloads |
| Alpine 3.21 | 6.12 | musl | Tiny images (5 to 7 MB base), fast pulls, minimal attack surface, great for static musl binaries | Default musl allocator causes up to 7x slowdown on multi-threaded Rust; requires mimalloc or jemalloc swap | Docker, edge, serverless, CI runners |
| Rocky Linux 10 / AlmaLinux 10 | 6.12 | glibc | Enterprise compliance, SELinux enforcing by default, ~10-year lifecycle, RHEL-compatible middleware support | Heavier than Debian/Ubuntu, RHEL-specific conventions | Regulated industries, commercial software, audit-heavy environments |
| FreeBSD 14 | n/a (FreeBSD kernel) | jemalloc by default | Excellent networking stack, ZFS, jails, jemalloc system-wide (no swap needed) | No io_uring (kqueue only), smaller Rust community, Tier 2 language support | Networking-heavy services, ZFS requirements |
## Real Performance Tests
Synthetic benchmarks never tell the whole story, but they set the shape of expectations. These numbers come from public benchmarks and production reports across 2024 through early 2026.
Framework throughput on modern Linux: TechEmpower Round 22 measured Axum with PostgreSQL at roughly 439,000 requests per second on Ubuntu 22.04, with Actix-web matching or exceeding that. A 2024 benchmark on AWS c6g.4xlarge instances running Ubuntu 22.04 LTS recorded Rust at 165,000 req/s at 5,000 concurrent connections, Go at 132,000, C# .NET at 118,000, and Node.js at 72,000.
io_uring versus epoll: flashQ, a Rust message queue using tokio-uring, published 312,000 operations per second with P50 latency at 0.2 ms in January 2026. The same workload on epoll measured 0.4 ms at the median with worse tail latency at P99 and P999.
Allocator impact: mimalloc delivered up to 5.3x throughput over glibc malloc under heavy multi-threaded workloads, with RSS cut roughly 50 percent. On Alpine, the nickb.dev writeup pinned a 7x slowdown on musl’s default malloc versus glibc, with a 13x penalty in futex wait time. Swapping to mimalloc closed the gap entirely. Defaults are rarely optimal for concurrent Rust workloads, but the gap closes quickly with deliberate choices.
## How the Framework Choice Interacts with the OS
Rust backend framework selection and OS selection feed into each other. Axum and Actix-web both run on Tokio, which abstracts over epoll on Linux, kqueue on BSD and macOS, and IOCP on Windows. They work identically in API terms on every OS, so you can move an Axum service between Ubuntu, Debian, and Alpine without touching a line of code.
The specialized runtimes are different. tokio-uring, monoio, and glommio bet on io_uring directly. They require a recent Linux kernel and will not run on macOS, Windows, or FreeBSD. In exchange they offer measurable gains for I/O-heavy services. Monoio in particular shifts to thread-per-core without work stealing, which eliminates cross-thread synchronization but means tasks cannot be Send or Sync across cores.
For most teams the right path is: start with Axum or Actix on Ubuntu 24.04 LTS or Debian 13, profile real workloads, and only migrate to a specialized runtime when benchmarks justify the change. The best Rust backend framework for a given project is the one that matches the team’s operational experience, not the one that tops a microbenchmark.
## Common Mistakes When Setting Up a Rust Backend Server
A few patterns show up repeatedly when Rust services move from development to production.
**Shipping Alpine without an allocator swap.** Teams pick Alpine for image size, skip mimalloc or jemalloc, then struggle to explain lower throughput than on their development box. The fix is one line, but it is easy to forget.
Using Ubuntu 20.04 in 2026. It ships kernel 5.4, which supports basic io_uring but not the version tokio-uring needs. Any project planning io_uring runtimes should start on Ubuntu 22.04 or later.
**Hitting default file descriptor limits.** Rust servers under real load run into the 1,024 open-file default on many distributions. Adjusting /etc/security/limits.conf and the systemd service file takes five minutes but catches teams during a traffic spike.
**Leaving TCP tuning at defaults.** Parameters like net.ipv4.tcp_rmem, net.ipv4.tcp_wmem, and net.ipv4.ip_local_port_range, plus enabling BBR congestion control, reward the effort. Defaults target desktops, not high-throughput backends.
**Forgetting release-build flags.** Compiling without LTO or with the default 16 codegen units misses inlining opportunities that matter in the hot path. Set lto = “fat”, codegen-units = 1, and strip debug symbols for smaller, faster binaries.
**Packaging oversized Docker images.** A Rust build directory can weigh several gigabytes. A multi-stage Dockerfile that copies only the compiled binary into a minimal runtime image keeps deploys fast.
## Recommendations by Workload
Different teams need different answers, but a few patterns hold up across most Rust backend projects. For a general-purpose backend or a small team starting out, Ubuntu 24.04 LTS with a mimalloc allocator swap is the safest default.
For high-throughput, latency-critical services like ad serving or real-time analytics, pair Debian 13 or Ubuntu 24.04 with a tuned kernel, tokio-uring or monoio, and jemalloc. Low-latency deployments benefit from [NVMe-backed VPS plans](https://serverspace.us/services/vps-server.md) that cut storage tail latency alongside the network improvements.
For enterprise or regulated environments, Rocky Linux or AlmaLinux 10 with SELinux enforcing handles compliance audits cleanly. For edge, serverless, or CI runners, Alpine with mimalloc and a static musl binary produces the smallest, fastest-starting containers. Test multi-threaded performance before production traffic.
## Takeaways
The OS choice for a Rust backend is less about brand loyalty and more about three technical layers underneath the distribution name: the kernel version that decides io_uring availability, the libc implementation that shapes multi-threaded allocation performance, and the memory allocator that handles every Vec and Box your code creates. Ubuntu 24.04 LTS and Debian 13 with mimalloc make a safe default for 2026. Alpine works with attention to the allocator. Rocky Linux and AlmaLinux cover the enterprise lane. FreeBSD is viable for teams with specific reasons to be there. Windows Server and macOS belong on developer laptops.
Whatever OS you pick, measure your own workload. Published benchmarks point in the right direction, but your application’s allocation patterns, connection counts, and I/O shape decide which numbers matter.
## Frequently Asked Questions
**Is Rust a backend language?**
Rust is a systems programming language that has become a major player in backend development. Discord, Cloudflare, AWS, Dropbox, and Figma all run production backend services written in Rust. The ecosystem of Rust backend frameworks (Axum, Actix-web, Rocket, Warp) covers REST APIs, gRPC services, and real-time systems. Memory safety without garbage collection makes Rust increasingly common for infrastructure-heavy services at scale.
**What is the best Rust backend framework in 2026?**
The best Rust backend framework depends on priorities. Axum is the most popular choice for new projects: maintained by the Tokio team with clean ergonomics. Actix-web delivers roughly 10 to 15 percent more throughput under heavy load. Rocket offers a batteries-included experience for teams that value developer productivity. All three run well on modern Linux.
**Does the Linux kernel version really matter for Rust?**
Kernel version matters when you want io_uring. Runtimes like tokio-uring, monoio, and glommio require recent kernels (5.10+ for tokio-uring, 5.6+ for monoio). For backends running on standard Tokio with epoll, the kernel has less direct impact. Ubuntu 22.04 or later, Debian 12 or later, and Rocky 9 or later all clear the bar for current Rust async runtimes.
**Should I use Alpine Linux for a Rust backend?**
Alpine works with caveats. The default musl allocator performs poorly under heavy multi-threaded load, sometimes seven times slower than glibc on the same code. The fix is a one-line swap to mimalloc or jemalloc. For single-threaded workloads, short-lived containers, or CI runners, Alpine without modification is usually fine. For long-running concurrent services, do the swap.
https://serverspace.us/about/blog/tcp-vs-udp.mdLearn the difference between TCP and UDP, how each transport protocol works, and how to choose the right protocol for websites, APIs, gaming, streaming.
TCP and UDP quietly power almost every digital interaction, but they do it in very different ways. A browser opening a website, a mobile app calling an API, a DNS resolver finding an IP address, a multiplayer game syncing player movement, a Zoom call carrying voice, or a monitoring agent pushing metrics to a collector all rely on one of these two transport protocols to move information across the network.
Most people never think about that layer. They only notice symptoms: a page loads slowly, a call stutters, a game lags, a VPN disconnects, or packets vanish under load. Behind those symptoms sits a transport decision. Should the network prioritize certainty, or should it prioritize immediacy?
That is the real meaning of TCP vs UDP. One protocol is built around confirmation, sequencing, and retransmission. The other is built around lightweight datagram delivery with almost no negotiation. Choosing the wrong one does not just affect abstract networking theory. It affects latency, scalability, bandwidth usage, firewall behavior, and the stability of production services.
This guide breaks the comparison down in practical terms: what TCP and UDP are, how they behave under real traffic, where each one makes sense, what trade-offs they introduce, and how infrastructure teams usually decide between them.
## Understanding TCP and UDP Without the Textbook Version
TCP and UDP belong to the transport layer of the networking stack. Their purpose is straightforward: they carry information from one application to another across machines connected through IP.
IP can route packets toward a destination address, but IP alone does not care whether packets arrive in order, whether they arrive at all, or whether the receiving program gets a coherent stream of data. That is where the transport layer comes in.
TCP, short for Transmission Control Protocol, creates a managed conversation between two endpoints. Before meaningful data starts flowing, the client and server synchronize. During the exchange, TCP keeps checking whether packets arrived, whether something was lost, and whether the byte stream remains in sequence.
UDP, or User Datagram Protocol, strips most of that management away. It sends individual datagrams toward the destination with no persistent session tracking and no expectation that the network will confirm receipt.
This means TCP treats the network as something unpredictable that must be actively supervised. UDP treats the network as a best-effort delivery path and leaves the application to decide what matters.
## What Actually Happens When TCP Sends Data
TCP is often described as reliable, but reliability is not a single feature. It is the result of several control systems working together every time data moves.
First, both sides establish a session
Before a browser downloads a webpage or an API client sends a request, TCP requires the endpoints to synchronize through the three-step handshake.
The client says it wants to connect.
The server confirms it is listening.
The client confirms that confirmation.
At this point both machines have state: sequence numbers, windows, and an active transport context.
This startup cost is small, but it exists on every new TCP session.
Then TCP slices the payload into numbered segments
A response containing thousands of bytes does not travel as one giant packet. TCP divides it into manageable chunks and tags each chunk with sequence information.
That sequence metadata becomes important when packets take different routes or arrive at different times.
Next comes acknowledgment tracking
As the receiver gets segments, it tells the sender what arrived successfully. Missing acknowledgments signal loss.
TCP does not assume the network is perfect. It continuously verifies.
If segment number 7 never shows up, TCP resends segment number 7.
Then comes in-order reconstruction
Suppose segment 8 arrives before segment 7. The receiver buffers the newer packet but does not pass the stream upward until the missing segment is restored.
Applications therefore see a clean ordered byte flow, even when the underlying network was disorderly.
Finally, TCP controls transmission speed
TCP does not send indefinitely at maximum pace. It monitors congestion and receiver capacity, then expands or shrinks its sending window accordingly.
That adaptive behavior is one reason TCP remains stable on busy public networks.
## What UDP Does Differently
UDP takes the opposite design path.
It assumes the sender should be able to transmit immediately, without a formal session, without acknowledgment bookkeeping, and without retransmission logic in the protocol.
Step one: package the message
The application generates a datagram. That datagram may contain a DNS request, a fragment of voice data, a positional update from a game server, or a monitoring counter.
Step two: attach a tiny header
UDP adds source and destination ports, message size, and checksum.
That is nearly all.
There is no conversation state, no sequence negotiation, no delivery tracking.
Step three: transmit and move on
The datagram enters the IP layer and heads toward the destination.
UDP does not pause to ask whether it arrived.
It does not keep a resend queue.
It does not block future packets while waiting for a late one.
Step four: let the application decide what matters
If the application can survive occasional loss, UDP keeps things extremely fast and lightweight.
If the application cannot survive loss, developers have to build custom logic above UDP.
That flexibility is exactly why UDP remains valuable despite offering fewer guarantees.
## TCP vs UDP: Direct Comparison Table
| Networking Factor | TCP | UDP |
| --- | --- | --- |
| Transport style | Persistent managed session | Independent stateless datagrams |
| Loss handling | Automatic retransmission | No native retransmission |
| Ordering | Guaranteed byte order | Arrival order may vary |
| Startup delay | Handshake required | Immediate send |
| Header overhead | Larger control metadata | Minimal metadata |
| Best suited for | Integrity-sensitive traffic | Delay-sensitive traffic |
## Where TCP Makes the Most Sense
TCP dominates workloads where missing bytes create broken outcomes.
Web applications and API traffic
A customer dashboard, ecommerce checkout, CRM panel, or SaaS backend cannot tolerate corrupted request payloads or partial responses. Session cookies, JSON payloads, HTML markup, and user uploads must arrive exactly as sent.
That makes TCP the standard transport underneath HTTPS and most backend APIs.
Remote shell sessions
SSH depends on exact command delivery. A dropped character can change a command entirely. Ordered response output is equally important.
Database communication
Application servers exchanging SQL queries and transaction results need consistency. Packet disorder or loss is unacceptable.
File synchronization and downloads
Backup archives, deployment artifacts, package mirrors, and media files all need complete byte accuracy.
Email transport
Mail servers use TCP because message headers, bodies, attachments, and authentication data cannot be partially delivered.
## Where UDP Becomes the Better Tool
UDP starts to shine when the network values timeliness more than completeness.
DNS resolution
A DNS lookup is usually a tiny query with a tiny response. Sending it over a quick datagram is more efficient than opening a managed session each time.
Voice packets
Real-time voice has a brutal rule: an old audio packet is worthless. If it arrives too late, the conversation becomes choppy. It is often better to lose one syllable than to delay the stream.
Live media streams
Video conferencing, live broadcasting, and media relays often tolerate minor packet gaps better than visible buffering pauses.
Multiplayer gaming
A player’s location two seconds ago is no longer useful. The game needs the newest state, not a perfectly reconstructed old state.
High-frequency observability traffic
Metric push systems and lightweight event emitters sometimes prefer reduced transport overhead over perfect retention.
## Why "UDP Is Faster" Is an Incomplete Statement
This phrase appears constantly, and it creates bad architectural decisions.
UDP is lighter at the protocol layer, but many production systems still need:
timeout awareness,
duplicate suppression,
sequence reconstruction,
flood protection,
congestion behavior,
selective retransmission.
As soon as those requirements appear, developers begin rebuilding control features manually.
So the honest statement is this: UDP is faster only when the workload genuinely benefits from best-effort delivery.
Otherwise TCP may deliver a more stable real-world result with less engineering complexity.
## Ports, Firewalls, and the Hidden Operational Difference
TCP vs UDP is not only an application design question. It also changes infrastructure behavior.
Every network service listens on a port, but ports are protocol-specific.
TCP 443 is not the same endpoint as UDP 443.
UDP 53 is distinct from TCP 53.
This becomes critical when configuring:
cloud firewalls,
Linux iptables or nftables,
Kubernetes network policies,
load balancers,
NAT forwarding.
A common deployment mistake is exposing the right numeric port under the wrong transport type.
When services are deployed on public cloud nodes or rented [Serverspace](https://serverspace.us/services/vps-server.md) infrastructure, TCP and UDP rules should be planned separately rather than treated as one generic "open port" step.
## Security Implications of TCP and UDP
The protocols create different attack surfaces.
TCP sessions are easier for stateful firewalls to inspect because the network can see connection setup, session continuity, and teardown.
UDP traffic is stateless and therefore easier to flood at scale. Misconfigured public UDP responders can also become part of amplification attacks.
That said, the protocol itself is not the security policy.
Security still depends on:
packet filtering,
request throttling,
anti-DDoS controls,
ingress restrictions,
patch management,
traffic anomaly monitoring.
UDP simply demands more intentional abuse protection.
## How Engineers Usually Decide Between TCP and UDP
Experienced teams do not start with protocol ideology. They start with application failure tolerance.
Ask one question:
What is worse — losing a packet or delaying a packet?
If losing one packet destroys the transaction, TCP wins.
If delaying one packet makes the data obsolete, UDP becomes attractive.
TCP is usually correct when:
financial operations occur, files move, users submit forms, backend services exchange state, APIs return structured responses, or audit consistency matters.
UDP is usually correct when:
media streams flow continuously, game states update rapidly, telemetry is high-volume, or data ages out within milliseconds.
## Five Common Production Examples
Example 1. Customer web platform
A billing dashboard with uploads, invoices, and account sessions belongs on TCP because consistency outweighs transport immediacy.
Example 2. Battle arena game node
Movement and combat updates often ride UDP, while purchases and account persistence remain on TCP.
Example 3. Live conferencing backend
Voice and video frames prefer UDP because jitter from retransmission ruins usability.
Example 4. Public DNS resolver
Massive small queries fit naturally into UDP request-response behavior.
Example 5. Fleet telemetry collector
Servers sending frequent health counters can reduce overhead by using lightweight UDP datagrams.
## Frequent Mistakes Teams Make
**Treating UDP as a universal optimization.**
Lower overhead does not automatically equal a better system.
**Using TCP for highly disposable real-time state.**
Retransmission can increase perceived lag.
**Forgetting protocol-specific firewall exposure.**
The right port number alone is not enough.
**Ignoring middlebox behavior.**
Carrier NATs, ISP filters, and enterprise firewalls sometimes treat UDP aggressively.
**Launching public UDP services without anti-abuse controls.**
Flooding risk is much higher.
**Confusing packet delivery with business completion.**
TCP confirms bytes, not successful application logic.
## Modern Protocol Design Is Blurring the Old Boundary
The classic TCP vs UDP comparison is still useful, but modern internet transport has become more nuanced.
QUIC is the best example. It runs over UDP, yet it implements:
encrypted session establishment,
packet recovery,
congestion control,
multiplexed streams.
This is why HTTP/3 technically rides on UDP while still delivering a controlled high-level transport experience.
In other words, UDP increasingly acts as a programmable foundation for custom transport behavior, not just as a "send and forget" mechanism.
## How to Inspect Which Protocol a Service Uses
On Linux servers, administrators typically inspect sockets with tools such as:
ss,
netstat,
lsof,
tcpdump,
Wireshark.
These reveal whether a service is:
listening on TCP or UDP,
retransmitting heavily,
dropping packets,
timing out behind a firewall,
suffering from buffer pressure.
This matters when services appear healthy locally but fail under public traffic.
## Deployment Advice for Production Environments
TCP-heavy services require tuning around connection backlog, file descriptor ceilings, keepalive intervals, and timeout management.
UDP-heavy services require tuning around receive buffers, packet flood tolerance, stateless filtering, and burst handling.
The transport protocol should be considered part of infrastructure architecture from day one, especially when exposing APIs, DNS endpoints, game relays, VPN gateways, or streaming nodes on internet-facing servers.
## Final Takeaway
TCP and UDP are built around different assumptions about what the network should optimize.
TCP assumes correctness is non-negotiable. It supervises delivery, preserves order, and repairs loss.
UDP assumes immediacy is often more valuable than perfection. It keeps packet movement fast, simple, and lightweight, while pushing delivery responsibility upward.
That is why websites, APIs, databases, and file systems still lean on TCP, while DNS, media traffic, online games, and telemetry often lean on UDP.
The practical decision is simple once framed correctly: choose TCP when missing data is unacceptable, choose UDP when delayed data is more harmful than missing data.
## Frequently Asked Questions
**Is TCP always more reliable than UDP?**
At the transport level, yes. TCP actively checks, reorders, and retransmits. UDP does not provide those guarantees by default.
**Does UDP always have lower latency?**
Usually lower startup latency, yes, but application-level handling can change the total outcome.
**Can backend APIs run on UDP?**
Specialized real-time APIs can, but standard transactional APIs overwhelmingly rely on TCP.
**Why is UDP common in games?**
Because rapidly changing positional data loses value very quickly, and retransmission often hurts responsiveness.
**Can TCP be too slow for real-time systems?**
In highly latency-sensitive scenarios, yes. Retransmission and in-order blocking can become visible.
**Why do cloud firewalls need separate TCP and UDP rules?**
Because the same port number under different transport protocols represents different network endpoints.
**Does HTTP/3 use TCP?**
No. HTTP/3 uses QUIC, and QUIC runs over UDP.
**What is the simplest rule for choosing between TCP and UDP?**
If packet loss is unacceptable, use TCP. If stale packets are worse than lost packets, evaluate UDP.
https://serverspace.us/about/blog/top-10-hacker-attacks-on-servers-and-effective-measures-of-protection.mdWhat is a DDoS attack on a server, SQL injection, brute force, and 7 more types of hacker attacks. ProvidIng specific protection steps for website.
Every day, thousands of attacks on servers take place around the world: some target large banks and government agencies, others target small online stores and blogs. Many website owners believe that hackers are only interested in "big fish" and do not pay enough attention to protection. This is a mistake. A hacker attack on a server can result in the loss of customer data, hours of downtime, and a blow to reputation from which a business may struggle to recover.
This article is written for a broad audience: whether you run a company, maintain a blog, work as a system administrator, or simply want to understand how digital security works, you will find clear explanations here without unnecessary jargon. We will examine the ten most common types of attacks, show how they work in practice, and explain what actually helps protect against them.
## What is a server attack and why is it important to know about it
A server is a computer that is constantly connected to the internet and performs a task: stores files, processes website requests, sends email, manages a database. Precisely because a server is always "online," it becomes a target. A hacker attack on a server is a deliberate action aimed at disrupting its operation, stealing data, gaining unauthorized access, or using the machine's resources for malicious purposes.
Types of server attacks are usually divided by goal and method. Some attacks aim to "take down" a service, others to quietly get inside and lie low, and still others to steal specific data. Understanding these differences helps you choose the right defense strategy: there is no universal "shield," and what protects against one threat may be powerless against another.
## 10 most common hacker attacks on servers
1. DDoS attack — artificial paralysis
What is a DDoS attack on a server? The abbreviation DDoS stands for Distributed Denial of Service. Imagine a store that is suddenly flooded by thousands of people who do not intend to buy anything: they just stand there, block the aisles, and prevent real customers from entering. That is exactly how DDoS works: attackers send a huge stream of fake requests to a server from hundreds of thousands of devices (a so-called botnet) until it stops responding to legitimate requests.
A type of attack that overloads a server can take different forms: network-level flooding (when the server is overwhelmed with data packets), application-layer attacks (simulating real users' requests to a website), or so-called amplification attacks, when the attacker causes third-party servers to repeatedly "reflect" and multiply traffic. DDoS attacks do not steal data directly — they create downtime that costs the company money and reputation. That is why they are often used as a distraction while another group of attackers quietly infiltrates the system.
2. SQL injection — hacking through the search field
Most websites work with a database: they store logins, passwords, orders, and personal data there. Queries to this database are written in SQL. SQL injection is a technique in which the attacker enters a piece of code instead of ordinary data directly into a website form: a search field, login form, or comment box. If developers have not implemented protection, the server will interpret the malicious code as a legitimate request and execute it.
The consequences can be catastrophic: an attack on a web server through SQL can give the hacker a full dump of the database — that is, all users' logins, passwords, and card data at once. This is how millions of accounts on major platforms were compromised in the past. According to OWASP (Open Web Application Security Project), SQL injections have consistently been among the top three most critical web vulnerabilities for more than ten years.
3. XSS — injecting a script into a page
Cross-Site Scripting (XSS) works differently: here the code is injected not into a database, but directly into the HTML page seen by another user. Suppose a site allows comments and does not filter their content. Instead of a comment, the attacker writes JavaScript code. When the next visitor opens the page, the browser executes that code: steals session cookies, redirects to a phishing site, or records keystrokes.
XSS is especially dangerous for high-traffic services: one malicious script can "process" thousands of unsuspecting users in just a few hours.
4. Brute force — password guessing
One of the oldest and still effective methods. The idea is simple: a program automatically tries possible passwords — from the simplest ("123456," "password") to complex combinations — until it finds the right one. Modern tools can check billions of combinations per second, especially if the attacker knows the target's login or email address.
Brute-force attacks are not aimed only at websites. SSH ports, admin panels, email accounts, and corporate VPNs are also targeted. According to the Verizon Data Breach Investigations Report, weak or stolen credentials are involved in most successful breaches.
5. Man-in-the-Middle — interception in transit
A man-in-the-middle (MitM) attack is the interception of data exchange between two parties. Imagine that you hand a letter to a courier, and he reads it, sometimes changes the contents, and sends it on — neither sender nor recipient knows about it. Technically, such an attack is possible on open Wi-Fi networks, through ARP table spoofing in a local network, through compromise of intermediate routing nodes, or through SSL stripping — downgrading a secure connection to an insecure one.
6. DNS server attacks — route poisoning
DNS is essentially the internet's "phone book": it translates human-readable website addresses (for example, example.com) into numeric IP addresses by which a server can be found. DNS server attacks come in several varieties. The most common is DNS spoofing, or cache poisoning: the attacker replaces the record in the DNS table so that when a user types the address of the real site, they end up on a fake one. This is an excellent way to carry out mass phishing: victims notice nothing because they see the correct address in the browser.
Another variant is DNS amplification: a technique in which DNS servers are used as traffic amplifiers in a large-scale DDoS attack. The attacker sends a small request, and in response the server sends the target a huge stream of data.
7. Exploits and zero-day vulnerabilities
A "zero-day" is a vulnerability in software that developers do not yet know about, or have just learned about, but for which a patch has not yet been released. Attackers who find such a hole can exploit it until the vendor closes the gap. Attacks of this type are the most valuable on the cybercrime market: the cost of a good zero-day exploit for popular enterprise software can reach millions of dollars.
8. Bot attack and credential stuffing
A bot attack on a server is an automated attack using bot programs. One of the most common scenarios is credential stuffing: attackers take a database from leaks of other services (the logins and passwords of millions of people have long been sold on private forums) and automatically test these combinations on other websites. Since many people use the same passwords everywhere, this attack is often highly successful.
9. RCE — remote code execution
Remote Code Execution (RCE) is every hacker's dream: a vulnerability that allows arbitrary code to be executed directly on a remote server. If an attacker achieves RCE, they effectively gain full control over the machine: they can install programs, read files, create users, and set up hidden access. RCE arises because of errors in application code, outdated libraries, or improper handling of incoming data.
10. Supply chain attack
This method has become especially relevant after several high-profile incidents in recent years. Instead of attacking a well-protected target directly, attackers compromise the software vendor or third-party service that the target trusts. A compromised update or library reaches thousands of clients at once. A notable example is the SolarWinds attack in 2020, which affected hundreds of companies and government agencies around the world through a network software update.
## Comparative table of attacks: type, target, and protection methods
| # | Type of attack | Target | What the victim loses | Key protection methods |
| --- | --- | --- | --- | --- |
| 1 | DDoS | Channel / resource overload | Service availability | Anti-DDoS filtering, CDN, rate limiting |
| 2 | SQL injection | Application database | User data | Parameterized queries, WAF, ORM |
| 3 | XSS | User's browser | Sessions, personal data | Output escaping, CSP headers |
| 4 | Brute force | Authentication | Account access | Strong passwords, 2FA, IP blocking |
| 5 | MitM | Data transmission channel | Traffic confidentiality | TLS/HTTPS, VPN, HSTS |
| 6 | DNS attacks | Addressing system | Traffic redirection | DNSSEC, trusted DNS resolver |
| 7 | Zero-day | Software vulnerability | Full control / data | Timely patches, WAF, segmentation |
| 8 | Bot attack / Credential Stuffing | Service authentication | Account access | 2FA, CAPTCHA, anomaly monitoring |
| 9 | RCE | Entire server | Full system control | Updates, least privilege, IDS |
| 10 | Supply chain attack | Trusted software vendor | Mass client compromise | Dependency checks, SBOM, isolation |
## How a company server attack unfolds in practice
Let us examine the mechanics using DDoS as an example, so it becomes clearer what this is all about. The attacker first creates a botnet — a network of thousands of infected computers, smartphones, and smart devices (routers, surveillance cameras, and even televisions). The owners of these devices usually have no idea that their equipment is taking part in the attack: the malicious program runs in the background. On command, all these devices begin sending requests to the target server at the same time. Several tens of thousands of requests per second — and a normal server stops coping. For an outsider, it looks simple: the site is "down" or opens with a huge delay.
Understanding how a given attack works technically is important first and foremost for defense. Many people are interested in the question of how to carry out an attack on a server, and the internet does indeed discuss this openly. This is no coincidence: security specialists, penetration testers, and students in related fields study attack methods precisely in order to build proper defenses. Knowing the mechanics of an attack means understanding exactly what kind of protection needs to be put in place against it.
## Effective protection methods: what actually works
Network filtering and Anti-DDoS
Protection against DDoS begins at the network level. Specialized services analyze incoming traffic in real time, filter out anomalous flows, and allow only legitimate requests through. Many VPS server providers offer built-in DDoS protection as part of their infrastructure solutions — this is especially relevant for companies that are just deploying their server environment and do not want to build protection from scratch.
Using a CDN (content delivery network) also helps: traffic is distributed among several geographically separated nodes, and one stream of requests can no longer "take down" the entire infrastructure. Rate limiting — limiting the number of requests from a single IP address per unit of time — blocks most simple application-layer attacks.
Web Application Firewall (WAF)
A WAF (Web Application Firewall) is a filter that sits between the user and your website. Unlike a regular network firewall, which simply allows or blocks traffic by IP addresses and ports, a WAF "reads" the contents of each incoming HTTP request. If SQL code is sent into a search field instead of text, or if a login form receives hundreds of login attempts per second, such requests are blocked before they even reach the application or database. For a public web service, this is one of the most important layers of protection: it blocks SQL injection, XSS, brute force, and API attacks without requiring manual configuration for each threat. [Serverspace WAF](https://serverspace.us/services/waf.md) works together with a [CDN](https://serverspace.us/services/cdn.md) and can be activated from the control panel in just a couple of clicks — without additional software or complex configuration.
The principle of least privilege and segmentation
One of the fundamental principles of security is this: every component of the system should have exactly as many permissions as it needs to function — and not a byte more. If the web server is compromised, it should not have access to a database with banking data. If one virtual machine is infected, it should not "see" its neighbors. Network segmentation and proper access control significantly limit the spread of an attack within the infrastructure.
Two-factor authentication and password management
Most successful breaches begin with stolen or weak credentials. Two-factor authentication (2FA) — when, in addition to a password, you must confirm the login by a second method, such as a code from an app — drastically reduces the risk. Even if a password is leaked, the attacker will not be able to log in without the second factor. This is one of the cheapest and at the same time one of the most effective protection measures.
Timely updates and patch management
Most successful attacks exploit vulnerabilities for which a patch has long since been released — nobody just bothered to install it. Regularly updating the operating system, web server, CMS, and all libraries in use closes the vast majority of known attack vectors. This requires discipline, but not budget.
## Practical scenarios: who gets attacked and how
Scenario 1: an online store during a sale. A competitor or "customer" organizes a DDoS attack on the server on peak days — for example, during Black Friday. The site is unavailable for several hours, and the store loses revenue and customers. Protection: provider-level anti-DDoS, CDN, and advance rate limiting setup.
Scenario 2: a small blog or news portal. An outdated version of WordPress with an unpatched plugin becomes a target for automated scanners. Through the vulnerability, the attacker gains remote code execution (RCE) and installs a cryptocurrency miner on the server. The site owner notices this only weeks later because of the increased hosting bill. Protection: automatic updates, WAF, load monitoring.
Scenario 3: a corporate server with SSH access. A system administrator has configured SSH on the default port and has not limited login attempts. Bots try passwords around the clock. If the password is weak or has been used on another breached service, access will be gained. Protection: change the port, disable password login (keys only), fail2ban or similar.
Scenario 4: attacks on company servers through third-party services. A company uses a cloud CRM, and the developer of that CRM becomes the target of a supply chain attack. A malicious update reaches thousands of clients. Protection: minimum permissions for integrations, monitoring of anomalous activity, backups.
Scenario 5: a phishing attack followed by MitM. An employee connects to the corporate VPN through a compromised Wi-Fi access point in a café. The attacker intercepts session data. Protection: using a VPN with strong encryption, configuring HSTS on the site, employee training.
## Typical mistakes in server protection and how to avoid them
The first and most common mistake is **believing that "we won't be hacked, we are too small."** Automated scanners and bots attack all IP addresses indiscriminately. Company size does not matter: if there is an unpatched vulnerability on the server, it will be found and used.
The second mistake is postponing updates. **"I'll install it next week" turns into "never."** Updates should be applied immediately after release or according to a pre-approved schedule. Automatic security updates are a good solution for most components.
The third mistake is having a **single point of failure in monitoring**. If no one watches server logs and no alerts are configured for anomalous activity, an attack can develop for weeks before it is noticed. Intrusion detection systems (IDS/IPS) and centralized log collection are an essential part of the infrastructure.
The fourth mistake is **ignoring backups.** Backups do not protect against a breach, but they do make recovery possible afterward. Backups should be stored separately from the main server, in an isolated environment: otherwise, in a ransomware attack, you will lose both the data and the backups.
The fifth mistake is **leaving administrative interfaces open**. Control panels for databases, monitoring tools, phpMyAdmin and similar services should not be directly accessible from the internet. Only through VPN, an IP allowlist, or at least with additional HTTP authentication.
## DoS and DDoS: what is the difference and why it matters
A DoS attack on a server (Denial of Service) differs from DDoS in that it comes from a single source: one computer sends a stream of requests to the victim. Today, this method is practically ineffective against normally configured infrastructure — blocking one IP is very easy. That is why attackers switched to distributed attacks, which is where the D in DDoS comes from. Traffic comes from tens of thousands of different addresses belonging to infected devices around the world, and blocking them all without harming legitimate users is much more difficult.
Understanding this difference is important when choosing protection: a solution designed only for IP blocking is of little help against a full-scale DDoS attack on a server. You need tools capable of analyzing behavioral patterns and recognizing anomalous traffic regardless of its source.
## Infrastructure as part of a security strategy
Server security begins with choosing a reliable platform. Companies that rent virtual servers from large providers receive a number of basic protective measures as part of the package: physical data center security, network filtering, and, as a rule, the ability to add additional tools — firewall, DDoS protection, and backups. For example, when renting [VPS servers at Serverspace](https://serverspace.us/services/vps-server.md), network security tools and ready-made infrastructure are available, which removes some of the basic risks. This does not replace proper configuration of the server and applications themselves, but it creates a solid foundation.
The main rule is this: security is not a product that can be bought once. It is a continuous process: monitoring, updates, audits, penetration testing, staff training. Attacks on company servers are becoming more sophisticated, and the only way to stay ahead is to regularly review and strengthen protection.
## Where to start right now
The threats are real, but most of them are preventable. Server attacks — from massive DDoS to targeted SQL injections — work according to predictable patterns, and for each of them there are proven countermeasures. The most important thing is not to postpone protection "until later."
If you are just starting to build the security of your infrastructure, begin with the basics: install all available updates, enable two-factor authentication on all administrative accounts, close unused ports, set up regular backups, and make sure your provider offers at least basic DDoS protection. These steps do not require large budgets, but they close the vast majority of attack vectors from which a hacker attack on a server begins in real life.
The next level is WAF, IDS/IPS, regular code audits, pentests, and bug bounty programs. But even without them, a basic level of security hygiene makes you a significantly harder target than the vast majority of servers on the network.
## FAQ — frequently asked questions
What is a DDoS attack on a server in simple terms?
It is the deliberate overload of a server with a huge number of fake requests arriving simultaneously from thousands of different devices. As a result, the server cannot process real user requests and becomes unavailable — roughly like a phone line that is being jammed by thousands of spammers at once.
What does a DDoS attack on a server mean for an ordinary user?
For an ordinary website visitor, it looks simple: the site does not open or loads very slowly. User data is usually not stolen in this case — DDoS is aimed at unavailability, not theft. However, if the attack serves as cover for another attack, the risks increase.
How can I tell that my server is under attack?
Key signs: a sharp unexplained increase in traffic, server slowdown or unavailability, suspicious log entries (login attempts from many different IPs, unusual database queries), anomalous CPU or network load. A monitoring system with configured alerts will let you know about the attack in time.
Is it possible to fully protect against hacker attacks?
Absolute protection does not exist — that is the honest answer. The goal is not to make hacking impossible, but to make it too expensive and difficult for the attacker. A properly designed multi-layered defense turns your server from an "easy target" into a "not worth the effort" category for most attackers.
How dangerous are DNS server attacks for an ordinary user?
Very dangerous, because they are invisible. The user sees the correct site address in the browser, but ends up on a fake page. There they enter a login and password — and the data goes to the attacker. User-side protection: use a reliable DNS resolver (for example, one with DNSSEC support), pay attention to the HTTPS certificate, and do not ignore browser security warnings.
What is a bot attack and how is it different from a regular hack?
A bot attack is an automated attack using software without human involvement. Bots can guess passwords, scan a site for vulnerabilities, mass-create fake accounts, or imitate user behavior. What distinguishes them from a "manual" hack is scale and speed: a bot does in a second what would take a person hours.
Does a small website need to think about server security?
Yes, and this is not an exaggeration. Automated scanners roam the entire internet looking for vulnerable machines — they do not distinguish between large corporations and personal blogs. A compromised server of a small site can be used to send spam, mine cryptocurrency, or serve as a node in a botnet for attacks on other victims. Basic protection takes little time, but it saves you from serious problems.
https://serverspace.us/about/blog/what-is-offshore-hosting-and-who-actually-needs-it.mdOffshore hosting in 2026 is a strategic infrastructure choice. Learn what it means, who needs it, top jurisdictions, and how to choose a provider.
Picking a country for your servers used to sit in the same drawer as picking a database engine. Boring. Technical. In 2026 that quiet decision has become a board-level question. Three pressures forced it onto the agenda: extraterritorial American statutes that pull data out of foreign data centers on demand, a wave of localization laws stretching from Brasília to Bengaluru, and the industrial-scale automation of copyright takedowns that wreck legitimate sites by mistake.
The phrase still makes some people uneasy. Offshore hosting once meant murky operators in places nobody could spell. Today Gartner ranks geopatriation among its strategic technology trends for 2026, and serious enterprises move workloads to specific jurisdictions for the same reason they pick auditors carefully. The driver is risk management, plain and simple.
What follows is the practical version of this conversation. We cover the working definition, the underlying reasons companies migrate, the profiles of teams who benefit, the country-by-country shortlist, and the questions that separate good providers from bad ones.
## What Is Offshore Hosting? A Plain-English Definition
The mechanics are simple. You rent servers from a provider whose data center sits in a country that is not the one stamped on your business registration. Your website, app backend, and customer database run on hardware governed by foreign law instead of yours. The provider might have offices on every continent, but the physical box with your bytes lives somewhere abroad.
Picture two identical Shopify-style stores run by the same Boston founder. Version A runs on AWS us-east-1 in Virginia. Version B runs on a Zurich rack. Same code, same checkout, same customer support. The only thing that changed is which government can knock on the data center door with a warrant, which courts handle copyright fights, and which privacy regulator sets the floor for what counts as user consent. That is the entire game.
The point is jurisdiction selection. Infrastructure shopping comes second. You are buying a body of law, and CPU cycles come along for the ride. Server placement decides whose subpoenas your provider must honor, whose copyright doctrine applies, what the default privacy floor looks like, and how badly a sudden regulatory change in one capital will hit your stack. Cheaper hardware is occasionally a bonus, never the reason.
A common mix-up worth flagging early. Bulletproof hosting is a separate animal that markets near-total takedown immunity and tends to attract piracy operators, malware distributors, and abuse infrastructure. Legitimate offshore hosting is the lawful version: businesses choosing where their data should live for compliance and risk reasons. Both categories sometimes pop up in the same country, but the contracts, terms of service, and customer rosters could not be more different.
The numbers confirm it has gone mainstream. Analyst estimates put the segment near 19.7 billion USD in 2026, with a trajectory toward 35 billion USD by 2035 at roughly 5.9% compound annual growth. Niche markets do not grow that way.
## Why More Companies Are Moving Servers Offshore in 2026
Five forces account for most legitimate migrations we track in 2026.
The first is American legal reach. Washington’s CLOUD Act, on the books since 2018, lets US-based providers be ordered to surrender customer records no matter which continent the disks happen to spin on. Patriot Act surveillance powers stack on top of that for any infrastructure tied to American corporate ownership. After Schrems II tore up the EU-US Privacy Shield in 2020, European compliance officers have been quietly drawing red lines around their cloud spend. If your provider’s parent company sits in Delaware, your data is reachable regardless of the rack location.
The second is the wave of localization rules cresting outside Europe. GDPR set the template, but Brazil’s LGPD, India’s DPDP Act, and a growing list of Middle Eastern and APAC statutes now demand that resident data stay close to home or move only with serious paperwork. Recent surveys show 51% of enterprises doubling down on hybrid cloud architectures specifically to handle this fragmentation.
The third is what teams call DMCA fatigue. Bots fire off takedown notices at industrial volume, often without human review, and most US hosts pull content offline first while sorting truth from fiction later. For platforms that depend on user contributions, news commentary, or aggregated content, this pattern is operational poison. Hosting in countries that demand a court-issued order before yanking material adds the friction that lets facts catch up. The protection exists for legitimate publishers running into bad-faith takedowns.
Fourth is the resilience argument. Putting all your servers in one country is the same gamble as parking all your money in one bank. Regional outages, sudden regulation, sanctions disputes, or political shifts can each take a single-jurisdiction operation offline.
Fifth is censorship resistance for legitimate publishers. Investigative journalists, source-protection platforms, VPN operators, and privacy-by-design product companies need infrastructure that does not fold under coordinated pressure. Reykjavík and Zurich earned their reputations honestly. Both governments refuse routine foreign data requests, and both court systems treat free expression as bedrock.
## Who Actually Needs Offshore Hosting? Real-World Use Cases
Offshore hosting pays off when specific business conditions create tangible value from jurisdictional choice. Here are the profiles where the math consistently works out.
**SaaS and FinTech platforms serving EU customers** benefit immediately. Any product touching personal data of EU residents lives under GDPR, and hosting that data inside the EU sidesteps a lot of compliance friction. Amsterdam, Frankfurt, and Dublin have become standard locations for SaaS backends.
**Cryptocurrency platforms and Web3 projects** face a fragmented global regulatory landscape and frequent banking friction. Hosting in privacy-friendly jurisdictions while accepting crypto payments aligns the technical stack with the operational realities of the sector.
**VPN providers and privacy-first products** have an obvious requirement. When privacy is the product, the infrastructure has to live up to the marketing.
**International e-commerce stores** selling to multiple regions benefit from infrastructure spread across continents. Lower latency for European, Asian, and Latin American customers improves conversions, and regional hosting helps with payment processing partnerships.
**Independent news platforms and journalism projects** face takedown pressure that mainstream sites do not. Iceland in particular has positioned itself as a haven for press freedom, with legal protections specifically designed for this kind of work.
**Enterprises building cross-jurisdiction** redundancy form a fast-growing category. Mid-size and large companies increasingly maintain failover infrastructure in a second jurisdiction so a regional incident does not shut down operations. Providers like [Serverspace](https://serverspace.us/services/vps-server.md) maintain data centers across the Netherlands, Canada, the UAE, Brazil, Turkey, and Kazakhstan, turning cross-region failover into a Terraform configuration rather than a migration project.
**AI and ML startups** handling EU training data have entered the picture more recently. As regulators clarify that training models on EU data counts as processing under GDPR, these companies need their data pipelines in compliant jurisdictions from day one.
Who does not need offshore hosting? Local businesses serving customers in one country, projects without compliance pressure, personal blogs, and small operations with no sensitive data are usually better off with a local provider.
## The Best Jurisdictions for Offshore Hosting in 2026
The core product of offshore hosting is the jurisdiction. Hardware comes second. Choosing well means understanding which countries align with your specific goals.
A quick orientation point: surveillance alliances matter. The Five Eyes (US, UK, Canada, Australia, New Zealand), expanded to Nine Eyes and Fourteen Eyes with European partners, share intelligence including data requests. Jurisdictions outside these alliances offer more privacy by default, though it remains one factor among several when picking a country.
Here is how the leading destinations compare in 2026.
| Country | Key Strength | Best Suited For |
| --- | --- | --- |
| Switzerland | Constitutional privacy, non-EU status, Federal Data Protection Act | FinTech, legal, sensitive personal data |
| Netherlands | GDPR alignment plus AMS-IX connectivity and due process | SaaS, e-commerce, general business |
| Iceland | Free speech and press freedom protections | Journalism, whistleblower platforms |
| Romania / Bulgaria | EU privacy frameworks at lower cost | Budget-friendly EU presence |
| Luxembourg | Financial-grade data protection, enterprise data centers | Corporate, fintech |
| Panama | No mandatory data logging, court order required | Privacy-focused projects |
| Malaysia / Hong Kong | Outside Western surveillance alliances, Asian hub | Asia-Pacific markets |
Switzerland remains the strongest option for maximum privacy. Constitutional protections, the Federal Data Protection Act, and non-EU status combine to limit how easily foreign authorities can compel data access. The trade-off is cost. Hosting in Zurich is rarely the cheapest option, but for fintech, legal practices, and any business handling sensitive personal data, the premium is often justified.
The Netherlands has emerged as the default choice for the broadest range of legitimate offshore deployments. Amsterdam combines strict GDPR alignment with the connectivity advantages of AMS-IX, one of the world’s largest internet exchanges. [Serverspace runs Netherlands VPS infrastructure](https://serverspace.us/services/vps-server/netherlands-vps.md) inside the Equinix AM2 facility, which holds ISO 27001, SOC 2 Type II, and PCI DSS certifications. That combination delivers EU-grade compliance posture without sacrificing performance, and it sits well outside the direct reach of US extraterritorial demands.
Iceland is the specialist choice when free speech and press protection are core requirements. Its legal framework was deliberately built to support journalism. Romania and Bulgaria offer EU privacy frameworks at lower cost, useful for budget-conscious projects that still need EU residency. Luxembourg appeals to corporates seeking financial-grade data protection. Panama and St. Kitts and Nevis suit privacy-focused projects, while Malaysia and Hong Kong serve as Asia-Pacific hubs outside Western surveillance frameworks.
## The Honest Trade-offs of Going Offshore
Tangible benefits come with tangible costs.
What you gain comes down to control. Jurisdictional alignment with the privacy law of your choice. Reduced exposure to overreaching extraterritorial demands. Geographic and regulatory redundancy that protects against regional shocks. Resilience against bot-driven DMCA pressure. Compliance with regional data residency mandates without retrofitting. And often, access to enterprise-grade infrastructure run by Equinix, Cologix, and other Tier III operators.
What you trade off is mostly operational. Latency can suffer if your audience does not match your hosting region. The fix is straightforward, a content delivery network with edge locations near your users absorbs most of the impact. SEO impact follows the same pattern. Server location is a soft signal for search engines, mostly mediated through page speed, and a CDN closes the gap. Cross-border legal complexity becomes your problem if a dispute with the provider arises. Support gaps can appear with smaller offshore providers operating on limited timezones, though companies with 24/7 staffing avoid this.
Pricing is not always cheaper either. Premium jurisdictions like Switzerland and Luxembourg often cost more than mainstream US or German hosting. Offshore is a strategic choice with its own pricing dynamics.
Reputation confusion remains a minor friction. Some clients or regulators conflate offshore with bulletproof hosting. A clear AUP, proper certifications, and transparent operations resolve this in conversation.
## How to Choose an Offshore Hosting Provider You Won’t Regret
Not every offshore hosting company plays in the same league. Use this checklist to separate enterprise-grade operators from back-room outfits.
- Jurisdiction fit. Does the country genuinely align with your goals? GDPR compliance, DMCA resilience, free speech protection, and tax planning all point to different jurisdictions.
- Data center certifications. ISO 27001, SOC 2 Type II, and PCI DSS are the baseline markers of serious infrastructure. Their absence is a warning sign.
- SLA and uptime guarantees. A 99.9% uptime commitment with financial compensation when missed is the minimum bar for production workloads.
- DDoS protection and network capacity. 10 Gbps uplinks, genuine mitigation capacity, and clear traffic policies. Marketing claims without specifics tell you everything.
- CDN integration. This is the single biggest fix for the latency penalty of offshore hosting. If a provider does not offer or integrate cleanly with a CDN, factor in the third-party cost.
- Automation tooling. A documented public API, CLI, and a verified Terraform provider matter for any team running infrastructure as code or planning multi-region deployments.
- Acceptable Use Policy clarity. A precise AUP signals a legitimate operator. Vague terms or extreme “anything goes” claims indicate the bulletproof side of the market.
- Payment flexibility. Bank cards, PayPal, and optionally crypto. Mandatory crypto-only billing without standard options is a red flag for shady operations.
- Multi-region availability. A single-region offshore provider limits your redundancy strategy. Look for at least three to five jurisdictions under one account.
- Operational maturity. 24/7 support staffed by humans, public documentation, transparent ownership, and genuine customer reviews on independent platforms.
### Why Choose Cheap Offshore VPS Hosting Carefully
Low pricing does not disqualify a provider on its own. In the offshore segment it often signals trade-offs that matter. Cheap offshore VPS hosting frequently comes with weaker certifications, missing SLA guarantees, ambiguous legal positioning, and minimal support.
When considering why choose cheap offshore VPS hosting at all, the honest answer is that quality budget options exist, but they require validation. Run any prospective provider through the checklist above. Confirm verified data center certifications, look for an SLA backed by compensation, and check that support is genuinely staffed.
Cloud providers that satisfy most of these criteria, with multi-region presence, Tier III certified facilities, full Terraform automation, and unlimited bandwidth, occupy the practical sweet spot between bulletproof anonymity and bloated enterprise pricing. [Serverspace](https://serverspace.us/services/vps-server.md), for example, runs across seven jurisdictions with verified Equinix and Cologix data centers, while keeping pay-as-you-go billing in 10-minute increments and pricing accessible for early-stage projects.
## When Offshore Hosting Is Probably Overkill
Offshore is a tool with specific use cases. Defaulting to it makes no sense. Several scenarios make local hosting the better answer.
If your customers are entirely in one country with reasonable privacy laws, hosting locally usually delivers better latency, easier billing, simpler support, and cleaner regulatory compliance. There is no upside to adding a foreign jurisdiction to a domestic operation.
Small projects without compliance pressure, like personal blogs and early-stage prototypes, rarely benefit from offshore complexity. The operational overhead does not pay back.
Some industries have country-specific data residency mandates that strictly require local hosting. Banking, healthcare, and government contracting often have explicit rules forbidding cross-border data transfers. Going offshore in these cases creates a compliance violation. The strategy that solves the problem is keeping data local.
Offshore hosting earns its keep when you have a specific reason. Without one, it is added complexity without added value.
## Bottom Line: Offshore Hosting as a Strategic Decision
Offshore hosting in 2026 has moved beyond workaround status. It is a deliberate infrastructure strategy used by businesses that have done the math on jurisdictional risk and decided geography is part of their compliance posture.
Three questions cut through the noise. Where do my customers physically live? Which compliance frameworks govern my data? What is my exposure to extraterritorial demands and regional disruption? The answers point clearly toward whether offshore makes sense, and if so, where.
For teams convinced of the move, the path is incremental. Map your data flows and the laws that apply. Pick a jurisdiction that fits your goals; cheapness alone is a poor selection rule. Validate the provider against the checklist above. Start with one region to prove the operational model, then expand to multi-region once it works.
Done well, offshore hosting buys you legal predictability, operational resilience, and freedom from depending on a single legal system. Done badly, it just adds latency. The difference is in the choice of provider and the clarity of the business reason.
## FAQ
**Is offshore hosting legal?**
Yes. Choosing where to host servers is a normal business decision, no different from choosing where to incorporate a subsidiary. What matters is the legality of the content and operations being hosted, governed by the laws of the country where the servers run.
**Will offshore hosting hurt my SEO?**
Server location is a soft signal for search engines, mostly affecting rankings indirectly through page speed. With a properly configured CDN serving content from edge locations near your users, latency drops to comparable levels with local hosting, and the SEO impact becomes negligible.
**Do I need to pay in cryptocurrency?**
No. Most legitimate offshore providers accept standard payment methods including bank cards and PayPal, with crypto sometimes available as an additional option. Mandatory crypto-only payment is more often a sign of a shady operator than a privacy feature.
**What is offshore hosting versus bulletproof hosting?**
Offshore hosting is a legitimate jurisdictional choice made by legal businesses for compliance, privacy, and resilience reasons. Bulletproof hosting markets active resistance to nearly all takedown requests and is associated with cybercrime and abuse infrastructure. They sometimes share geography, but the business models are entirely different.
https://serverspace.us/about/blog/how-to-write-effective-ai-prompts-in-2026-a-complete-guide-for-chatgpt-claude-image-and-video-models.mdA practical 2026 guide to AI prompting: the universal five-part formula, tips for ChatGPT, Claude, Midjourney and Suno, plus the most common mistakes.
Neural networks are now built into almost every tool we use. According to Stack Overflow, 84% of developers rely on AI assistants daily, and well over half of general users have generated text or images through ChatGPT, Midjourney, or Suno at least once. The quality of what you get back depends almost entirely on how you frame the request. A prompt is essentially a brief for a smart but context-blind collaborator. If the brief is vague, the collaborator fills in the gaps, often in the wrong direction.
This guide breaks down how to write prompts that produce useful results on the first attempt. We will cover a universal five-part formula, look at what makes each model different (ChatGPT, Claude, DeepSeek, Gemini, Midjourney, Nano Banana, and Suno), examine the most common mistakes, and show practical ways to access these models reliably.
## What a Prompt Is and Why It Determines Output Quality
A prompt is the text request you send to a language model. From the model’s perspective, the prompt is the only source of information about your task. The model has no intuition, no shared history with you, and no general life context. There are only the tokens you submitted plus the platform’s system instructions.
This leads to a simple rule: the more precise and complete your request, the higher the chance of getting what you actually want. Vague phrasing forces the model to guess, and the model guesses based on statistical patterns from training. A request like “write something” produces a generic result because the model has nothing else to work with. A request that includes a role, topic, format, and constraints produces something far more targeted.
The context window is the volume of information a model holds in memory during a single conversation. GPT-5.5 supports about 256 thousand tokens, Claude Opus 4.7 reaches up to one million, and Gemini 3 Pro goes as high as two million. The numbers are impressive, but instruction-following quality drops once the window passes 60 to 70% capacity. So a strong prompt is also a compact one.
## The Universal Five-Element Formula That Works With Any Model
If you analyze strong prompts from forums, Anthropic guides, and OpenAI documentation, the same structure emerges. It works across models.
**Role. **Tell the model who it should be. “You are an experienced editor for a B2B blog.” “You are a senior Python developer.” “You are a registered dietitian with 15 years of experience.” Assigning a role activates relevant patterns from training data and immediately calibrates tone and depth.
**Context. **Explain the situation: who the audience is, what the project is, what has already been done. Without context, the model writes in a vacuum.
**Task. **State the specific action. Instead of a generic “do something,” use “write the introduction,” “review this code,” or “compare these two options.”
**Constraints. **What to avoid or what is required. Length, forbidden words, technical limits, tone of voice.
**Output format. **How the response should look. A list, a table, JSON, ready-to-publish text without commentary.
Compare two versions of the same task. Weak prompt: “write something about email marketing.”
Prompt by formula: “You are an editor for a B2B blog. The audience is heads of marketing at SaaS companies. Write a 600-character introduction for an article on email marketing for SaaS. Avoid clichés like ‘in today’s world’ and ‘as we all know.’ Return the finished text only, no commentary or subheadings.”
The second version typically produces something usable right away. The first one usually requires three or four rounds of follow-up clarifications.
## Three Core Prompting Techniques: Zero-Shot, Few-Shot, and Chain-of-Thought
On top of the formula, three classic techniques exist. They complement the structure and add another layer.
**Zero-shot. **Just the task, no examples. Suitable for simple unambiguous requests like translating a phrase, decoding an acronym, or writing a quick definition. Most everyday prompts are zero-shot.
**Few-shot. **Two to five examples of the desired output are attached to the prompt. Useful when format, pattern, or style consistency matters. For example, classifying reviews into positive, negative, and neutral. Without examples, the model decides on its own how to respond, and the format drifts. With three examples in the form “review X > positive,” the model stays terse and consistent.
**Chain-of-thought. **Ask the model to reason step by step. A phrase like “work through the problem before giving a final answer” or “show your reasoning” is enough. Useful for math, logic, multi-step problems, and programming. The trade-off: longer answers, more tokens, higher latency. For simple questions, CoT is overkill.
These techniques combine well. Few-shot with examples that already show reasoning is considered one of the strongest approaches for complex tasks.
## How to Write Prompts for ChatGPT and the New GPT-5 Models
ChatGPT in 2026 runs on the GPT-5 family. The base model plus GPT-5.5, released in April 2026. The biggest shift compared to GPT-4 is a sharp drop in the need for detailed step-by-step instructions. The model plans, checks its own work, and decides how to approach a problem.
On a practical level, this means several things for anyone updating their workflow:
Outcome-oriented prompts beat step-by-step prompts. Describe the goal and success criteria, and let the model choose its method. Old mega-prompts with dozens of instructions like “first do X, then Y, then Z” now often hurt results because they narrow the model’s solution space.
Markdown structure with headers like ### Instructions, ### Context, and ### Output format remains the best formatting choice. ChatGPT was trained on a massive corpus of markdown documents and parses it cleanly.
The reasoning effort parameter (low, medium, high, xhigh) controls how deeply the model thinks. Day-to-day tasks run fine on low or medium. Complex code or data analysis warrants high.
If you grab prompt templates from two years ago and paste them into the current ChatGPT, you will see worse output than expected. Prompts need to be rewritten for the model you are actually using.
## Prompts That Make ChatGPT Sound Human
“How do I get ChatGPT to sound like a real writer” is one of the most common requests of 2026. The reason is straightforward: AI text gives itself away to editors and readers through several tells. Uniform sentence rhythm. Heavy reliance on filler phrases like “it’s worth noting,” “in today’s world,” “crucial to understand.” An overly polished structure with no rough edges. Long dashes and semicolons in places where a real writer would just use a period.
To fix this, build a few elements into your prompt.
**First. **Specify a concrete author archetype. “Write like a blogger with ten years of experience running a popular newsletter” works better than “write in plain language.”
**Second. **Provide an explicit list of forbidden phrases. “Do not use ‘in today’s world,’ ‘it’s worth noting,’ or ‘as we all know.’ Do not use long dashes anywhere.”
**Third. **Ask for varied sentence length. Real writing alternates between short and long sentences. AI defaults to a flat middle length.
**Fourth. **Forbid bullet lists and subheadings unless requested. Models love lists even where they have no business being.
**Fifth. **Provide a sample of your own writing as a style reference. Two paragraphs from your own published work do more than any descriptive instruction ever could.
A working human-style prompt looks something like this:
_You are an experienced writer with 15 years in niche X. Rewrite the following text so that it reads like natural human prose. Vary sentence length: alternate short and long. Do not use clichés like “in today’s world,” “it’s worth noting,” or “as we all know.” Do not use long dashes. Do not add lists or subheadings unless they appear in the source. Preserve all facts and figures. Style sample: [paste 200 to 300 words of your own writing]. Text to rewrite: []._
## How Prompting Differs for Claude, DeepSeek, and Gemini
Beyond ChatGPT, three other models dominate developer and power-user workflows: Claude from Anthropic, DeepSeek, and Gemini from Google. Each has its own personality.
**Claude (Opus 4.7, Sonnet 4.6). **Anthropic specifically fine-tuned the model on XML markup. So prompts in the form taskcontextexampleformat work noticeably better than markdown on Claude. Claude’s strengths are long context and careful execution of multi-step tasks. The “interview me first” pattern works exceptionally well: at the start of a complex prompt, write “before you begin, ask me clarifying questions.” Claude returns 3 to 5 questions about details you forgot to mention, and once you answer, it produces a plan and only then executes.
**DeepSeek (V3, R1). **An open-source model with a strong reputation for reasoning and code. Effective DeepSeek prompts rely on clean markdown structure, an explicit “reason step by step” instruction for reasoning tasks, and tight technical constraints for code. DeepSeek handles SQL, regular expressions, and algorithms well. Weaker than ChatGPT and Claude on creative work, solid and inexpensive for technical tasks.
**Gemini (3 Pro). **The defining trait is native multimodality. A single prompt can include text, images, PDFs, and audio. The context window goes up to two million tokens. If you work with documents or want the model to look at a screenshot and tell you what is wrong with the design, Gemini is the right tool. Format with markdown, separate sections with headers, and place explicit output format instructions at the end.
One practical consideration matters for users with restricted access to global services. Direct access through official sites can be challenging in some regions: payment processing fails with local cards, and certain IPs are blocked. One working option is the [Serverspace GPT API](https://serverspace.us/services/serverspace-gpt-api.md) service, which provides access to OpenAI, Anthropic, and Google models through a single key with flexible billing. It plugs into any application that supports a custom API endpoint.
## How to Write Image Prompts for Midjourney and Nano Banana
Image prompts follow different logic. Nouns and adjectives carry the weight, verbs play a minor role. The universal formula looks like this:
**Subject + action + setting + style + camera angle + lighting + parameters**
Example: “young woman with red hair reading a book, cafe with large windows, morning light, soft shadows, Annie Leibovitz photography style, medium shot, cinematic lighting.”
When people ask how to write effective image prompts, the main lesson is to avoid stacking too many adjectives in a row. The model loses track of priorities and starts simplifying.
**Midjourney v7. **Parameters go through flags at the end of the prompt. Aspect ratio with –ar 16:9, reduced stylization with –style raw, version with –v 7, randomness level with –chaos 30, signature style strength with –stylize 250. Prompts go on a single line with commas as separators between concepts. The most common mistake is writing in long flowing sentences. That hurts results.
**Nano Banana **(internal name Gemini 2.5 Flash Image, released August 2025). The model handles natural language well and excels at editing by reference. You can upload a photo and say “warm up the light, add a soft fog in the background, keep the facial expression as is.” The key technique is clearly separating what to change from what to preserve. The model follows such instructions literally.
What does NOT work in either model. Negations like “no cars” produce images with cars, because the model sees the token “car” and activates the corresponding concept. Rephrase positively: “empty street, sidewalk, morning.”
Abstract requirements like “beautiful, professional, high quality” usually produce no visible difference. Replace such words with concrete characteristics: “sharp focus, natural colors, soft shadows.” For photorealistic results, add technical shooting details: lens type (50mm, 85mm), aperture (f/1.4, f/2.8), film stock (Kodak Portra 400), and time of day.
## Prompts for Video Models and Music Generation in Suno
Video and music are separate disciplines with their own mechanics.
**Video models (Sora 2, Veo 3, Kling 2.1). **Time-based properties are added to the image formula: scene duration, camera movement (push-in, dolly out, pan, tracking shot), pacing of cuts, character actions by timecode. Most practitioners agree: write a script of 2 or 3 short scenes with transitions instead of cramming a long story into one prompt. Long single-prompt clips consistently turn out worse than short ones. Storyboarding the video in text first really helps.
**Suno (v5). **The leading music AI service. The prompt splits into two parts: style metadata and song lyrics. Metadata goes in parentheses at the start: genre, tempo (BPM), instruments, mood, era. For example: “(indie rock, 120 bpm, electric guitar, drums, melancholic, 90s).” Lyrics are structured with [Verse], [Chorus], [Bridge], and [Outro] tags. Vocals are described separately: gender, timbre, emotion. The lyrics need rhythm and rhyme, prose-style text performs poorly. Genre tags shape the sound more than anything else in the prompt.
## Comparison Table: Which Prompt Format Works for Each Model
Below is a summary of every model we covered. Use it as a quick reference when picking your approach for a specific task.
| Model | Best Prompt Format | Strength | Key Consideration |
| --- | --- | --- | --- |
| ChatGPT (GPT-5.5) | Markdown with headers | Versatility, agentic tasks | Avoid over-specifying instructions |
| Claude (Opus 4.7) | XML tags | Long context, instruction following | Ask it to clarify before executing |
| DeepSeek (V3, R1) | Markdown plus explicit steps | Code, math, reasoning | Force step-by-step reasoning |
| Gemini 3 Pro | Markdown plus multimodal input | Images and PDFs in one prompt | Files can be passed directly |
| Midjourney v7 | Noun chains plus flags | Artistic style range | Parameters via –ar, –v, –style |
| Nano Banana | Natural language | Reference-based image editing | Upload image, describe edits |
| Suno v5 | Structure tags plus metadata | Full songs with vocals | Lyrics need rhythm and rhyme, not prose |
In short, the universal five-element formula works everywhere. On top of it, each model expects its own settings: Claude prefers XML, ChatGPT and Gemini prefer markdown, Midjourney prefers flags, Suno prefers structure tags and metadata. Pick your tool by looking at the table, instead of relying on habit.
## How to Get Reliable Access to Neural Network Models
Several practical obstacles can interfere with consistent access to AI models: payment processing failures with regional banking systems, IP-based restrictions, regional rollout delays for new features.
Several solutions exist. You can use international cards through intermediaries. You can buy access through aggregators that sell tokens in local currency. You can run your own infrastructure on open-source models.
A middle-ground option chosen by many developers is regional cloud providers with ready-to-use LLM APIs. For example, [Serverspace GPT API](https://serverspace.us/services/serverspace-gpt-api.md) gives access through a single dashboard to current models: GPT-5.1, GPT-5.1 Codex, GPT-5.2, Claude Haiku, Sonnet, and Opus in versions 3.5, 3.7, and 4.5, Gemini 3 Pro, Phi-4, Qwen3-Next 80B, and gpt-oss-20b. One API key works for all models, billing is flexible with per-minute pricing, SLA is 99.9%. It plugs into Cursor, Claude Code, and any tool that supports a custom base URL.
For those who want to run open-source models locally with full control over data, [VPS Serverspace](https://serverspace.us/services/vps-server.md) is a fit. On such a server you can deploy Ollama or vLLM with Qwen, Llama, or DeepSeek models, after which any client tool connects to your private API. This makes sense when you have compliance requirements or simply want to keep sensitive data out of third-party clouds.
## Seven Common Prompting Mistakes and How to Avoid Them
Most disappointing results trace back to a handful of recurring problems. The list below comes from publications by HumanLayer, MindStudio, and analysis of developer prompts across various platforms.
- ** Vague phrasing. **“Make it nice,” “write better,” “optimize.” The model has no idea what you consider nice or what “better” means. The fix is the five-element formula above.
- ** No role assigned. **“Write the code” produces average code. “You are a senior Python developer with a focus on performance optimization, writing production-grade code” produces a different level entirely.
- ** Single prompt for everything. **Complex tasks should be split into a chain: planning first, then execution, then review. Each step in its own context window. This is called prompt chaining and consistently outperforms mega-prompts.
- ** No output format. **Without an explicit “return JSON,” “return as one line,” or “no commentary,” the model decides on its own. Usually with extras like “Sure, here is your text:”.
- ** Reusing prompts across models without adjustment. **What worked in GPT-4o can break in Claude and vice versa. Claude wants XML, ChatGPT wants markdown, Midjourney wants flags. Prompts for different models need adaptation.
- ** Negations in image prompts. **“No cars” produces images with cars. Rephrase positively: “empty street.”
- ** Long polluted context. **If you handle 10 different tasks in one chat, response quality starts to drop. The /clear command or simply opening a new chat for a new task fixes it. Basic hygiene for any AI workflow.
## What to Do Next: A Short Practice Checklist
- Save the five-element formula as a personal template.
- Pick one main model for your primary task and spend an hour learning its specifics.
- Build a personal prompt library in your notes app or Notion.
- Test the same prompt across multiple models and compare results.
- Refresh your approach once a month. Models change fast in 2026.
Knowing how to write effective AI prompts pays off across virtually every profession, from developers automating routine work to marketers producing content.
## Frequently Asked Questions
**Can I write prompts in languages other than English?**
Yes, all frontier models handle major languages at a level close to English. However, non-English languages typically consume 1.5 to 2 times more tokens than English. For long prompts and large file work, English is more economical from a context perspective.
**Will the same prompt work across all neural networks?**
The universal five-element formula works everywhere. Formatting nuances differ: Claude prefers XML, GPT and Gemini prefer markdown, Midjourney works with flags. When porting a prompt between models, it is worth adjusting the formatting.
**How many examples should I include in a few-shot prompt?**
Two to five examples is the sweet spot. More than five rarely improves results but bloats context and raises request costs. Fewer than two does not give the model enough of a sample to recognize the pattern.
**What if I cannot access Claude or GPT-5 directly?**
Regional LLM aggregators are a working option. For example, Serverspace GPT API provides access to Claude, GPT-5, and open-source models through a single key with flexible billing and no need for VPN or international card setup.
https://serverspace.us/about/blog/why-server-hardware-is-getting-more-expensive-in-2026-and-what-you-can-do-about-it.mdServer DRAM prices rose 90% in Q1 2026 and OEM list prices jumped across the board. Six practical strategies for buyers facing the AI-driven shortage.
In late 2025, ServerMonkey gave a customer a quote for 60 Dell PowerEdge R640 servers. Total: $178,000. Internal sign-off took 30 days. When the customer came back to confirm, the same configuration was priced at $306,000. A 72 percent jump in one month, on hardware that had not changed.
This kind of story stopped being unusual in 2026. Dell raised list prices across its full product line by roughly 17 percent on March 30. Lenovo cancelled every outstanding hardware quote and reissued at 10 to 15 percent higher prices on January 1. Server DRAM contract prices climbed 90 to 95 percent in a single quarter. Lead times on common server configurations stretched from 10 weeks to 24 weeks or more.
If you run IT for a small or mid-size company, manage infrastructure for an agency, or build products that need server capacity, you are operating in a hardware market that looks nothing like 2024. This article breaks down what is happening, why, and six things you can do.
## What’s Actually Happening to Hardware Prices Right Now
Every major OEM raised prices in the first three months of 2026, and most warned that another round may follow. The headline numbers:
- **Dell**: list prices up 17 percent effective March 30, covering PowerEdge servers, OptiPlex desktops, Latitude laptops, and Precision workstations
- **Lenovo**: 10 to 15 percent increase from January 1, with all prior quotes voided
- **HPE**: 10 to 15 percent on servers and storage platforms
- **HP Inc**: 5 to 10 percent on PCs and workstations
- **Cisco**: increases on Compute hardware and any product lines containing memory components, effective March 7
Procurement timelines tightened along with prices. Quote validity has shrunk from 30 days to four or seven days at many distributors. Server CPU lead times now stretch up to six months for Intel parts and 8 to 10 weeks for AMD. A standard PowerEdge configuration that used to ship in two or three weeks might now take eight to twelve.
The financial impact compounds quickly. A server build that cost $8,000 in Q4 2025 typically runs $9,200 or more today. Spread across a 50-server fleet refresh, that is an extra $60,000 in capital outlay before any added scope. The pressure behind these numbers is structural. Understanding it requires looking at what is happening underneath the headline price hikes.
## The Anatomy of the Price Surge
Memory (DRAM) Is the Eye of the Storm
DRAM is the single largest contributor to higher server costs in 2026. TrendForce, the most-cited memory market analyst, raised its Q1 2026 forecast for conventional DRAM contract prices from 55 to 60 percent QoQ up to 90 to 95 percent QoQ in early February. Server DRAM specifically rose by more than 60 percent in the same quarter. Q2 estimates call for another 58 to 63 percent increase on top of that.
The spot market tells the same story. A 32GB DDR5 server module that traded for around $149 in mid-2025 was selling for $239 two months later. Average DRAM inventory across major suppliers dropped from 31 weeks of supply in early 2023 to about eight weeks by late 2025.
Memory now represents up to 25 percent of a typical server’s bill of materials, and higher on virtualization hosts packed with 256GB or 512GB of RAM. When DRAM doubles in price, the whole system gets dragged with it.
Storage Followed and Then Overtook
NAND flash overtook DRAM as the fastest-rising component in Q2 2026. TrendForce expects NAND contract prices up 70 to 75 percent QoQ this quarter, after a 55 to 60 percent rise in Q1. Enterprise SSDs became the largest NAND application segment for the first time in 2026, displacing client and consumer storage. Suppliers are openly redirecting wafers toward higher-margin server products.
Production capacity for all of 2026 is already sold out, with major hyperscalers moving into 2027 negotiations. Phison’s CEO publicly warned that the NAND shortage could push smaller consumer electronics companies out of business in 2026.
Server CPUs Joined the Shortage
CPU shortages are new for this cycle. Through 2024 and most of 2025, server CPU supply was adequate. That changed in early 2026. Server CPU prices rose 10 to 20 percent since March, with both Intel and AMD raising prices. AMD signaled two price increases this year (Q2 and Q3), with a cumulative 16 to 17 percent. Intel raised PC CPU prices in March, adjusted server CPU pricing in April, and analysts expect another 8 to 10 percent in H2 2026.
The driver is agentic AI. Traditional AI servers used roughly one CPU per four to eight GPUs. As workloads shift from training to inference and toward agent-based applications, that ratio has tightened toward 1:4 and is moving toward 1:1 in some configurations. KeyBanc analysts reported that both Intel and AMD have effectively sold out of server CPUs for 2026.
GPUs and Power Round Out the Picture
NVIDIA H100 systems run $25,000 to $40,000 new and $12,000 to $18,000 on the secondary market. H200 hits $30,000 to $40,000. B200 reaches $30,000 to $50,000 per GPU. An 8x B200 DGX system goes for $300,000 to $350,000. GPU scarcity has spilled over into consumer cards, with the RTX 5090 trading at $4,000 or more against a $2,000 MSRP.
Power costs add another layer. US residential electricity prices are forecast to rise 5.1 percent in 2026 according to the EIA, on top of cumulative increases of about 40 percent since 2021. The PJM capacity market has seen capacity charges spike nearly tenfold in some service territories. US utilities have committed $1.4 trillion in capital spending through 2030 to build out generation and transmission for AI data centers. These costs flow through to colocation rates, hosting fees, and the operating margins of any company running owned infrastructure.
## Why This Cycle Is Different
The temptation when you see a price spike is to wait for it to reverse. Memory and storage have always been cyclical. Prices doubled in 2017, fell in 2019, recovered in 2021. So why is this round different?
The answer is hyperscaler AI capex. In Q1 2026 earnings, the four largest US tech companies announced record infrastructure budgets:
- **Amazon**: $200 billion
- **Alphabet**: $180 to $190 billion
- **Microsoft**: $190 billion (CFO Amy Hood attributed $25 billion of this directly to higher memory costs)
- **Meta**: $125 to $145 billion
- **Oracle**: about $50 billion
Combined, the Big Five plan to spend $700 to $725 billion on infrastructure in 2026, a 77 percent jump from 2025. About 75 percent of that, or $450 billion plus, is going to AI infrastructure specifically.
This level of demand is reshaping the supply side. Industry estimates put 2026 memory production allocation at roughly 70 percent for AI data centers and 30 percent for everything else combined. DRAM bit growth runs at 16 percent annually and NAND at 17 percent, while demand is significantly higher. Memory makers are reinforcing the imbalance by managing capacity carefully. Samsung, SK Hynix, and Micron have all signaled that 2026 capex will go toward process upgrades and HBM expansion, with much less emphasis on boosting commodity output. New fabs will not start meaningful production until late 2027 or 2028.
There is also a tariff layer. On January 14, 2026, the Trump administration imposed a 25 percent Section 232 tariff on advanced computing chips including NVIDIA H200 and AMD MI325X products. The proclamation includes important exemptions for chips imported into US data centers, US R&D, US repairs and replacements, US startups, and other domestic uses. For US buyers running domestic infrastructure, the direct tariff impact is limited.
## 2026 OEM Price Changes Side by Side
| Vendor | Effective Date | Increase | What's Affected | Notes |
| --- | --- | --- | --- | --- |
| Dell | March 30, 2026 | ~17% | PowerEdge, OptiPlex, Latitude, Precision | Forced re-quoting on prior orders |
| Lenovo | January 1, 2026 | 10 to 15% | PCs and servers, full lineup | All outstanding quotes cancelled |
| HPE | Early Q1 2026 | 10 to 15% | Servers, storage platforms | Cited DRAM cost pass-through |
| HP Inc | Early 2026 | 5 to 10% | PCs and workstations | Memory now 15-18% of PC BOM, up from 10% |
| Cisco | March 7, 2026 | Varies | Compute, products with memory | Cited AI semiconductor constraints |
Each vendor noted publicly that further adjustments are possible if memory and storage costs continue rising.
## How This Hits Different Businesses
Three common scenarios show what this looks like at the team level:
**Mid-size company doing a fleet refresh.** A planned $200,000 budget to replace 25 servers in Q2 covers $235,000 to $250,000 worth of equivalent hardware in 2026, with delivery 24 weeks out instead of 8. IT has to make a case to the CFO for an unplanned 20 percent budget increase, while project deadlines slip.
**Agency hosting client websites.** Eight dedicated servers are due for refresh in mid-2026. Client contracts are priced annually, which means hardware cost increases of 30 to 40 percent compress margins on existing accounts. The agency starts looking at VPS-based hosting for new client signups instead of dedicated.
**SaaS company scaling production.** Capacity is needed in two weeks. Buying is impossible at that timeline. AWS quotes work but stay expensive at sustained load. The team picks a regional VPS provider and migrates the new workload there.
In every case, two themes recur: predictability beats absolute lowest cost, and flexibility beats ownership.
## What You Can Do About It
The strategies below cover both immediate procurement decisions and longer-term infrastructure choices. Most teams will benefit from combining several of these.
Lock In Pricing Before the Next Wave
If you have hardware on the 2026 roadmap, accelerate. Quote validity is now measured in days, and reissued quotes typically reflect higher prices. Get POs cut and inventory reserved early, even if deployment is months out. Several distributors will hold reserved inventory at quoted prices for paid orders, which is worth the carrying cost when prices rise 5 to 20 percent every few weeks.
Right-Size Instead of Over-Provisioning
The old habit of speccing servers with extra RAM “just in case” is now an expensive habit. Audit actual memory utilization on existing systems before specifying new ones. If your virtualization hosts run at 60 percent memory utilization, you do not need to maintain a 4:1 overprovisioning ratio when prices are like this. Workload tuning often beats specification increases. Faster CPUs, NVMe storage, or GPU offload can deliver performance improvements that previously came from adding memory, at a fraction of the 2026 cost premium.
Consider Refurbished Enterprise Hardware
Refurbished servers from reputable enterprise resellers cost 50 to 70 percent less than new equivalents, with comparable performance for most workloads. HPE Gen10 and Dell PowerEdge R740 systems remain widely available with full enterprise features and 1 to 2 year warranties through certified programs from Dell, HPE, and Supermicro. Refurbished RAM specifically can deliver up to 70 percent savings, with proper ECC and certified testing making it suitable for production workloads. The non-critical and dev/staging tier of your fleet is usually a good place to start with refurbished gear.
Shift Variable Workloads to VPS or Managed Cloud
For most small and mid-size businesses, the most practical response to hardware volatility is to stop buying physical servers for variable workloads. VPS providers buy in bulk, hold buffer inventory, and spread the supply chain risk across thousands of customers. The end user gets:
- Provisioning in minutes instead of weeks
- Predictable monthly billing that does not change quarter to quarter
- Per-second or hourly scaling without procurement overhead
- Capital expenditure shifted to operating expenditure
- No refresh cycles to plan around
Providers like [Serverspace](https://serverspace.us/services/vps-server.md) operate VPS instances across multiple US regions, removing lead time uncertainty from the equation. For workloads that need up to roughly 100 vCPU and 256GB RAM, this approach is often more cost-effective than buying new hardware in 2026, especially when factoring in the operational overhead of running owned infrastructure.
The economics get clearer over a 36-month TCO horizon. A new dual-socket server with 256GB of RAM, 4TB NVMe, and 10Gbps networking now runs $14,000 to $18,000, plus rack space, power, cooling, and management. The same workload on VPS often costs less when measured against actual utilization of owned hardware, which rarely sits close to 100 percent.
Lease Instead of Buying Outright
If your workloads genuinely require dedicated hardware, leasing locks in current prices over 36 to 60 month terms while shifting volatility risk to the lessor. Device-as-a-Service offerings from Dell, HPE, and Lenovo include refresh cycles built in. Leases work best for clearly bounded projects with predictable utilization, where you know you will use the hardware fully through the term.
Cut the Software Tax Where You Can
Hardware is only one cost line. VMware renewals after the Broadcom acquisition increased 200 to 1,200 percent for some customers. cPanel raised prices on January 1, 2026, with the Premier tier now around $69.99 per month plus $0.49 per additional account. Open-source replacements have matured. KVM and Proxmox cover the majority of VMware use cases for SMB and mid-market teams. CyberPanel, Webmin, and HestiaCP replace cPanel functions for hosting and basic server management.
Stagger Replacements Instead of Big Bang Refreshes
A mass refresh during peak shortage is the worst possible procurement timing. Identify the systems closest to end-of-life and replace those first, while extending the useful life of newer systems through targeted upgrades. A 2-year-old PowerEdge that needs more storage does not require full replacement. Adding NVMe drives, upgrading memory in slots that have headroom, or refreshing networking cards often delivers 80 percent of the benefit of a new server at 20 percent of the cost.
## 2026 to 2028 Outlook
Forecasts from industry analysts converge on the same broad timeline. **2026 H1** brings peak volatility: prices rise weekly, and allocation rather than price is the binding constraint for many configurations. **2026 H2** sees growth slow but not reverse. As TrendForce has put it, prices move up faster than they come back down. **2027** brings some new fab capacity online, though hyperscalers have already begun negotiating 2027 supply contracts, which limits relief for spot buyers. **2028 to 2029** is the realistic timeline for meaningful price relief, assuming planned fab projects complete on schedule and AI demand growth moderates.
The key risk for buyers is that memory manufacturers have stated they have no plans for aggressive capacity expansion. Past memory cycles ended in painful oversupply periods, and suppliers are taking lessons from those into the current cycle. Any infrastructure planning for 2026 to 2028 should assume elevated prices throughout. Strategies that depend on prices falling are unlikely to work out.
## Common Mistakes to Avoid
A short checklist for procurement decisions in 2026:
- **Waiting for prices to drop.** They will not, and the cost of waiting compounds. Every month of delay typically adds 5 to 15 percent to memory-heavy configurations.
- **Maxing out specs for headroom.** A GB of DDR5 in 2026 is roughly twice what it was in 2024. Headroom you might use in 18 months is expensive headroom now.
- **Ignoring lead times in project plans.** A 24-week lead time kills Q2 deployments if the PO has not gone out yet.
- **Single-vendor sourcing.** Generic and whitebox vendors often deliver comparable hardware at 20 to 30 percent lower prices than tier-1 OEMs.
- **Treating cloud as a last resort.** For new workloads in 2026, VPS or managed cloud is often the best primary option.
## Conclusion
The 2026 hardware market is shaped by forces mostly outside the control of any individual buyer. Hyperscaler AI capex is consuming global memory and storage capacity. OEMs pass component cost increases through as fast as they can. Lead times stretch. Quote validity is measured in days. Meaningful relief is unlikely before 2028.
Buyers do have more options than they did during previous shortages. Refurbished hardware is mature and reliable. Leasing structures shift volatility to vendors. Open-source software replaces expensive proprietary stacks. Cloud or VPS infrastructure removes the procurement problem entirely for variable workloads.
For most small and mid-size businesses, the right answer is probably a combination: keep existing hardware running longer through targeted upgrades, accelerate any unavoidable purchases to lock in current prices, and shift new workloads to VPS or cloud platforms where someone else absorbs the supply chain risk. Solutions like [Serverspace VPS](https://serverspace.us/index.md) let you bypass the procurement bottleneck for a meaningful share of your infrastructure, with predictable pricing that does not move every quarter. The companies that handle 2026 best will adapt their infrastructure model to the shortage rather than wait it out.
## FAQ
**Will server hardware prices come back down in 2026?**
Probably not. TrendForce and Counterpoint forecasts call for stabilization no earlier than 2027, with no expectation of returning to pre-shortage levels. Memory makers have stated they will not aggressively expand capacity, which keeps supply tight.
**Should I buy hardware now or wait?**
If you need it in 2026, buy now. Each month of delay typically adds 5 to 15 percent on memory-heavy configurations. If you can defer to 2027 or 2028, monitor the market, but do not plan around dramatic relief.
**Is refurbished hardware worth considering?**
Yes, especially for non-production, dev, staging, and capacity expansion workloads. Certified refurbished gear from Dell, HPE, and Supermicro programs comes with 1 to 2 year warranties and runs 50 to 70 percent below new pricing. Memory is one of the safest categories for refurbished purchases when properly tested.
**How does cloud compare to on-premise costs in 2026?**
Cloud and VPS remove upfront capex and supply chain risk. For workloads under 100 vCPU and predictable usage patterns, regional VPS providers often beat both new hardware ownership and hyperscaler pricing on total cost of ownership over 36 months. Large steady-state workloads at high utilization still favor owned infrastructure at scale.
**Are tariffs the main reason prices are up?**
No. AI-driven memory and storage shortages are the primary driver. The Section 232 tariffs imposed in January 2026 add a few percentage points to imported chips, although exemptions for US data centers, R&D, repairs, and startups limit the direct impact for most US-based buyers.
https://serverspace.us/about/news/openclaw-now-available-as-a-1-click-app-in-serverspace.mdDeploy OpenClaw as a 1-click app on Serverspace and scale your workflows instantly. Leverage our high-performance infrastructure and developer-ready tools to build, integrate, and manage AI-driven assistants in under 60 seconds.
We've added **OpenClaw** to our library of 1-click apps in the Serverspace control panel. OpenClaw is a modern, open-source AI assistant framework designed to streamline task automation and enhance data processing through intelligent workflows. By deploying OpenClaw on our high-performance vStack infrastructure, users can leverage an autonomous AI environment with enhanced stability, low-latency response times, and optimized resource allocation. This solution eliminates the complex configuration typically required for AI deployment, providing a plug-and-play platform for developers looking to integrate LLMs and automated assistants into their existing infrastructure.
## Key Advantages:
- **Instant Deployment** — OpenClaw comes pre-installed with the OS, skipping manual setup and environment configuration.
- **Modern AI Standards** — Built-in support for the latest automation protocols and stable performance on virtualized servers.
- **Developer Friendly** — Easily customize assistant behavior, integrate custom APIs, and modify logic via an open, modular architecture.
## **How to connect:**
- In the [Serverspace control panel](https://my.serverspace.us/vstack/servers/create), click **“Create Server”**.
- Select **vStack** with **Ubuntu** and check **OpenClaw** in the pre-installed apps list.
- Deploy and start gaming or testing immediately.
**Important:** OpenClaw is currently available on vStack servers running Ubuntu.
**Also, n8n and Redis have been added to the list of ready-made cloud solutions.**
_[Serverspace](http://serverspace.us/index.md)is a global cloud provider specialized in high-performance infrastructure for AI development and production-ready workloads. Accelerate your deployment with our developer-first ecosystem, including robust API, CLI, and Terraform providers designed for seamless integration and instant scaling._
https://serverspace.us/about/blog/openclaw-telegram-bot-how-to-set-up-an-ai-assistant-in-a-messenger.mdLearn how to set up the OpenClaw Telegram Bot and connect an AI assistant in Telegram. A step-by-step guide for automating tasks, managing chats.
Most bot setup guides treat configuration as an afterthought — paste a token, press go, done. That works until it doesn’t: the bot responds to strangers, the history balloons and costs spike, the service crashes overnight and nobody notices until morning. OpenClaw’s Telegram integration has more moving parts than most guides acknowledge, and each one represents a deliberate choice about security, cost, and behavior.
This guide works through every meaningful configuration decision in sequence. By the end you’ll have a deployment that actually behaves the way you intended — not just a deployment that works in a demo.
## How a message travels through the system
OpenClaw is a gateway process that bridges two persistent connections: one to Telegram’s API, one to your language model provider. A message from Telegram arrives, gets wrapped with your system prompt and whatever conversation context the gateway has accumulated, and travels to the model API. The response makes the return trip to the originating chat. The gateway owns the routing decision — a Telegram message always gets a Telegram reply, no exceptions, no redirects.
History is kept in a local store — a flat file or SQLite database depending on your setup. The gateway builds context from that store on each request. This is where a key cost dynamic lives: the longer a conversation runs without trimming, the more tokens travel in every subsequent request. That’s not a bug, but it requires deliberate management.
## Getting OpenClaw onto a machine
The installer detects the platform, pulls in Node.js if absent, and can optionally run an interactive setup wizard. Node 24 is the recommended runtime; anything from Node 22.14 upward is supported. On Windows, WSL2 is significantly more stable than the native environment. The pnpm package manager only enters the picture if you’re compiling from source.
```bash
# macOS, Linux, or WSL2 — with wizard
curl -fsSL https://openclaw.ai/install.sh | bash
# macOS, Linux, or WSL2 — skip wizard
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --no-onboard
# Windows PowerShell — with wizard
iwr -useb https://openclaw.ai/install.ps1 | iex
# Windows PowerShell — skip wizard
& ([scriptblock]::Create((iwr -useb https://openclaw.ai/install.ps1))) -NoOnboard
```
After installation, run a quick sanity check:
```
openclaw --version
openclaw doctor
openclaw gateway status
```
To make the gateway restart automatically after a reboot:
```
openclaw gateway install
```
This registers the right daemon type for the platform — LaunchAgent on macOS, a systemd user service on Linux and WSL2, a Scheduled Task on Windows.
## Getting a bot token from Telegram
Telegram controls bot provisioning through a dedicated account called @BotFather. Open it in Telegram — the real one has a blue verification badge — and send /newbot. You’ll pick a display name (shown in conversations) and a username (must end in “bot”, cannot be changed later). At the end of that flow, BotFather issues a token.
That token is the bot’s identity credential. It should be treated like a private key: never committed to a repository, never shared in a screenshot, never pasted into a public channel. Anyone who obtains it has full control over the bot — they can read every message it receives and send messages on its behalf.
Two BotFather settings are worth configuring before you leave:
- /setprivacy — by default, Telegram restricts bots in group chats to only see messages that directly address them by name. If the bot needs to see the full conversation in a group, this restriction has to be lifted. Note that toggling it on an already-deployed bot requires re-adding it to each affected group for Telegram to apply the change. Giving the bot admin rights in a group is an alternative that achieves full message visibility without touching this setting.
- /setjoingroups — determines whether other Telegram users can invite your bot into groups they control. For a private deployment, disabling this keeps the bot from showing up in unexpected places.
## The config file, key by key
OpenClaw does not use a login flow for Telegram. Authentication happens through the config file at ~/.openclaw/openclaw.json, which the gateway reads on startup. Restart the gateway whenever the config changes.
A minimal working configuration:
```json
{
"channels": {
"telegram": {
"enabled": true,
"botToken": "123:abc",
"dmPolicy": "pairing",
"groups": { "*": { "requireMention": true } }
}
}
}
```
If you’d rather not embed the token in the config file, set it as TELEGRAM_BOT_TOKEN in the environment instead. When both exist, the config file value takes precedence. The environment variable applies only to the default account.
The dmPolicy decision
dmPolicy is the single most consequential setting in the Telegram configuration. It governs who can reach the bot in direct messages and what happens when an unrecognized sender writes to it.
The four values:
- pairing — every new sender triggers a handshake. The bot withholds responses until an administrator approves the request through the CLI. Approved senders don’t need to repeat the process. This is the default, and the right choice for any bot with tool access or connection to internal data.
- allowlist — only numeric Telegram user IDs explicitly listed under allowFrom can interact. Unknown senders receive nothing. The most restrictive option; ideal for personal bots.
- open — combined with allowFrom: [“*”], this makes the bot accessible to any Telegram user who finds it. Appropriate only for intentionally public deployments with no sensitive tool access.
- disabled — DMs are turned off entirely. Useful if the bot is meant exclusively for group contexts.
The operational risk of open with a wildcard is real: bot usernames are searchable, and a public bot connected to a capable model accumulates API charges quickly if discovered. If you’re running a bot for yourself, allowlist with your own user ID is the tightest configuration available.
To find your numeric Telegram user ID without routing through third-party bots: start the gateway, send it a message, then run openclaw logs –follow and look for from.id in the output.
## Starting the gateway and handling first contact
```
openclaw gateway
openclaw pairing list telegram
openclaw pairing approve telegram
```
With dmPolicy set to pairing, the first message from any new sender generates an approval request rather than a bot response. The sender gets a code. That code appears in the output of openclaw pairing list telegram. Once you run the approve command with it, the sender’s session is established and messages start flowing normally. Codes become invalid after one hour if not acted on.
## Group topology: what controls what
Groups have a more intricate permission structure than direct messages. Getting it wrong produces confusing silent failures — the bot simply ignores messages with no indication of why.
The gateway’s group behavior is shaped by two separate configuration surfaces that don’t interact with each other.
**The group roster** lives under channels.telegram.groups. This key, when present, functions as an explicit allowlist of which groups the bot will respond in at all. Omit it and the bot participates in any group it’s added to. Set it with even one entry and all unlisted groups are silently excluded — which catches many people off guard when they add one group specifically and discover the bot stops responding in existing ones. The wildcard “*” can be combined with specific group IDs to keep general access while adding per-group configuration.
**The sender filter** operates independently, inside each permitted group. groupPolicy determines whether all group members can trigger responses (open), only those in an explicit list can (allowlist — the default), or nobody can (disabled). When set to allowlist, the groupAllowFrom field holds the permitted numeric user IDs. Without entries there, nobody in the group receives responses regardless of group roster status.
A group open to any member, with no mention requirement:
```json
{
"channels": {
"telegram": {
"groups": {
"-1001234567890": {
"groupPolicy": "open",
"requireMention": false
}
}
}
}
}
```
A group locked to specific users who must address the bot by name:
```json
{
"channels": {
"telegram": {
"groups": {
"-1001234567890": {
"requireMention": true,
"allowFrom": ["8734062810", "745123456"]
}
}
}
}
}
```
Group chat IDs are negative integers. To find one: run openclaw logs –follow and watch for the chat.id field when a message arrives, or query the Bot API’s getUpdates endpoint directly. Group IDs belong in the groups section — not in groupAllowFrom, which holds only user IDs.
## Choosing the right server size
Hardware requirements depend almost entirely on which kind of model you’re running. For a polling setup that hands inference off to a cloud API, a modest [VPS](https://serverspace.us/services/vps-server.md) — 1 vCPU and 1 GB of RAM — handles the OpenClaw process comfortably. The gateway is lightweight; nearly all the computational work happens on the API provider’s servers. Providers that offer hourly billing make it easy to validate a configuration cheaply before committing.
Webhook mode delivers messages somewhat faster (roughly 0.5–1.5 seconds versus 1–3 seconds for polling) but requires a publicly reachable HTTPS endpoint and a valid TLS certificate. The machine requirements are identical; the networking setup is more involved. For most conversational applications the latency difference isn’t noticeable and the simplicity of polling is worth keeping.
Local models through Ollama are a different calculation. CPU-only inference on a 7-billion-parameter model typically produces responses in the 30–60 second range — workable for tests, awkward for actual conversation. Usable performance requires 16 GB of RAM as a baseline, and GPU access closes the gap considerably. The tradeoff is complete data isolation: nothing reaches an external API under any configuration.
| Setup type | Polling + cloud API | Webhook + cloud API | Local model via Ollama |
| --- | --- | --- | --- |
| Setup complexity | Minimal — works behind NAT | Moderate — TLS + public URL | High — hardware-dependent |
| Response latency | 1–3 seconds | 0.5–1.5 seconds | Hardware-dependent |
| Ongoing cost model | VPS + per-token API fees | VPS + per-token API fees | Server only, no API fees |
| Minimum server spec | 1 vCPU / 1 GB RAM | 1 vCPU / 1 GB RAM + TLS | 16+ GB RAM; GPU recommended |
| Message data flow | Reaches API provider | Reaches API provider | Never leaves your server |
| Suited for | Personal use, prototyping | Teams, production | Sensitive or regulated data |
Geography matters for latency even at these small server sizes. Telegram’s infrastructure is concentrated in Frankfurt and Amsterdam; placing your [VPS](https://serverspace.us/services/vps-server.md) in either location meaningfully reduces the round-trip time on every message. While provisioning, apply standard hardening: close ports that aren’t in use, replace password-based SSH with key authentication, and disable the password login option entirely.
## What this actually gets used for
**Specification-driven content review.** A product team writes documentation drafts and routes them through a bot configured with the company’s style guide as its system prompt. The bot flags passive voice, inconsistent terminology, and structural problems — inside the messenger the team already uses, without a separate review tool or workflow step.
**Persistent project research context.** A solo consultant uses a bot configured to maintain context across a long-running engagement. Rather than re-explaining the project to a fresh chat window each session, they continue from where the previous conversation ended. The local history store makes this possible without any external memory service.
**Incident triage support for on-call engineers.** A team adds a bot to their on-call group chat. When an alert fires, the engineer on duty can ask the bot to summarize similar past incidents, pull in relevant runbook steps, or help draft a status update — without switching between tools during a live incident.
**Accessible contract review for a small firm.** A legal team without dedicated technical resources runs a bot with a prompt tailored to their jurisdiction and practice area. Routine contract questions get a first-pass analysis in seconds. Edge cases escalate to a human.
**Iterative prompt testing during model evaluation.** A machine learning practitioner uses a private bot to experiment with system prompts and measure response quality across different models. The self-hosted setup means no rate limits interfere with rapid iteration, and the full conversation history stays available for comparison.
## Operational failures worth anticipating
**The token lands in a shared space.** Version control is the classic vector, but it also happens through pastebins, Notion pages, and screenshots shared in public channels. A bot token that has been exposed should be treated as compromised — regenerate it through BotFather immediately. Old tokens remain functional until explicitly revoked; there is no expiration safety net.
**The history store grows until costs spike.** Each API request carries the accumulated conversation. In an active group chat with no trimming, a week of conversation can produce requests large enough to noticeably affect both latency and cost. Configure a MAX_HISTORY ceiling early — before the accumulation becomes a problem to fix rather than a parameter to set.
**The gateway process terminates silently.** A gateway that crashes at night stays down until someone notices the bot has stopped responding — which might be hours later if the bot handles anything asynchronous. A basic systemd status check running as a cron job and sending an email on failure is minimal but effective. Uptime Kuma or a similar lightweight monitor provides better visibility.
**Group configuration changes produce unexpected silence.** The most common group misconfiguration: adding an explicit entry to channels.telegram.groups for one specific group inadvertently creates an allowlist that excludes all other groups. If the bot was previously responding in several groups and goes quiet after a config change, this is almost always why. Adding “*”: {} alongside the specific entry restores general access while keeping the per-group override.
**The system prompt is too general to produce useful behavior.** “Be helpful” is a non-instruction. A system prompt that specifies the domain, the user’s likely expertise level, the preferred response format, and what the bot should decline to do produces a bot that behaves consistently and usefully. The prompt deserves as much attention as the infrastructure around it — usually more.
## Tradeoffs to understand before committing
Self-hosting gives you things that managed services structurally can’t: no message volume caps from the platform, no behavioral changes driven by another company’s policy updates, full visibility into what data goes where. Because the framework is open source, extension is possible: webhook triggers, knowledge base integrations, custom tooling. The system can be made to do what you need rather than what the platform allows.
The costs are operational. The gateway needs someone to monitor it, update it, and rotate credentials when needed. For a solo deployment this amounts to occasional maintenance. For a team deployment it should be treated as infrastructure with its own ownership and runbook. Neither scenario is particularly demanding, but neither is zero.
Ballpark costs for a typical personal deployment: a minimal [VPS](https://serverspace.us/services/vps-server.md) runs $3–7 per month. Moderate usage — roughly 50–100 messages daily — against a capable cloud model adds $5–15 per month in API fees. Local models remove the API line item but require hardware capable of producing responses at conversational speed, which changes the cost structure substantially.
## Frequently asked questions
### Do I need programming experience to configure this?
The setup requires comfort with a terminal and editing a JSON config file. Writing code is not necessary. The bot’s behavior, scope, and personality are all defined through a plain-text system prompt. Technical knowledge of what each config key does — which this guide covers — matters more than programming ability.
### What happens to message content?
Telegram encrypts messages in transit between clients and its servers. OpenClaw then sends the message text to your configured model API over HTTPS. For cloud providers, that content is processed on their infrastructure under their data handling terms. Running a local model through Ollama is the only configuration that keeps message content entirely within your server. For regulatory or confidentiality requirements, local inference is the appropriate choice.
### The bot is not responding. What should I check first?
Check whether the gateway process is still running: systemctl status openclaw. If it has exited, inspect the recent log output: journalctl -u openclaw -n 50. The most frequent causes are a bot token that was regenerated in BotFather without updating the config, exhausted API quota on the model provider side, and a server restart that didn’t bring the daemon back up because openclaw gateway install was never run. Connectivity to api.telegram.org on port 443 is worth checking if other causes are ruled out.
### Can I swap models without rebuilding anything?
Yes. Model configuration lives in openclaw.json and can be changed at any time. Restart the gateway after the change to apply it. The conversation history, system prompt, and access controls are all independent of which model is being used.
### Local machine or remote server?
A local machine works well during development and personal testing when availability isn’t a concern. For any deployment where responsiveness matters — especially one shared with other users — a persistent server is necessary. The gateway must be running when messages arrive; a machine that sleeps or reboots unpredictably will miss them. Entry-level server hosting is inexpensive enough that this is rarely a meaningful barrier.
https://serverspace.us/about/blog/ubuntu-26-04-lts-new-features-key-changes-and-use-cases.mdUbuntu 26.04 LTS is here: Linux kernel 7.0, GNOME 50, Wayland-only desktop, native NVIDIA CUDA. Learn what changed, and whether to upgrade now.
April 2026 brought the latest addition to Canonical’s long-term support lineup: Ubuntu 26.04 LTS, nicknamed “Resolute Raccoon.” The name was chosen to honor Steve Langasek, a longtime release manager who passed away in early 2025 — and the choice reflects something genuine about this release. It doesn’t hedge. Xorg is gone from the desktop. cgroup v1 is gone from the kernel. NVIDIA CUDA lands in the official package repositories for the first time. Several components have been rewritten in Rust. This is an LTS that commits to directions the Ubuntu project has been moving toward for years, rather than keeping old options around for backward compatibility.
Understanding what that means for your setup — server, workstation, container fleet, or VPS — is what this article is for. We’ll walk through every major change, flag the real migration risks, and give you a clear picture of whether now is the right time to move.
## Two Types of Ubuntu: Why LTS Is Different
Canonical ships Ubuntu on two tracks. Every six months, an interim release appears — 25.04, 25.10, and so on — packed with the latest upstream software. Nine months later, support ends, and you either upgrade or fall behind. These are aimed at people who want a continuously updated desktop or development environment and don’t mind the churn.
LTS releases work on a completely different timeline. They appear every two years, and Canonical commits to five years of security patches and critical fixes for each one. Organizations running production infrastructure — databases, web services, build pipelines, cloud images — tend to standardize on LTS because they need predictability more than novelty. Once deployed, the system stays supported long enough to plan around it.
Ubuntu 26.04 LTS runs on that promise through April 2031. For teams that subscribe to Ubuntu Pro, the security coverage window stretches to a full decade. That 10-year horizon is what makes LTS planning meaningful — you can build on it without worrying that the OS layer will go end-of-life in the middle of a project cycle.
## Hardware Requirements Before You Start
Desktop installations need a dual-core 2 GHz processor or faster, 6 GB of RAM, and at least 25 GB of disk space. The RAM figure is slightly higher than older releases — GNOME 50 on Wayland is more demanding than previous desktop configurations, particularly regarding GPU memory usage during compositing.
Server installations are considerably leaner. A minimal Ubuntu Server 26.04 configuration runs from as little as 1.5 GB of RAM and 4 GB of storage. That makes it viable for constrained cloud instances without any special tweaking. Pre-built images for cloud and virtualized environments — including VPS platforms like [Serverspace](https://serverspace.us/services/vps-server.md) — handle their own provisioning and don’t require installation media at all.
## Core Changes in Ubuntu 26.04 LTS
Linux Kernel 7.0
This is the first Ubuntu LTS to run the 7.x kernel series. Kernel 7.0 arrives with broader hardware compatibility for recent Intel and AMD generations, improvements to power management across CPU architectures, and measurable gains in ext4 write throughput under certain I/O patterns. The NVMe driver stack has also been updated, which benefits storage-heavy server workloads — database servers and logging pipelines in particular tend to see this kind of improvement reflected in real benchmark numbers.
One addition worth calling out specifically: Livepatch support now covers Arm-based servers. Until now, the ability to apply kernel security patches without rebooting was limited to x86-64 architecture. For teams running aarch64 production infrastructure, this finally closes that gap.
GNOME 50 and Wayland as the Only Option
Ubuntu 26.04 LTS is a turning point in the X11 story. Past releases offered a choice at the login screen — you could select “Ubuntu” (Wayland) or “Ubuntu on Xorg” (X11). That second option no longer exists. The display manager now boots into a Wayland session unconditionally. There is no fallback for users who prefer the old display server.
XWayland ships alongside, which means programs built against X11 libraries still run — they just do so inside a compatibility layer rather than talking to a native X server. For most users, the transition is invisible. The applications that cause problems are those that interact with the X server directly at a low level: some screen capture tools, certain remote desktop implementations, and a handful of GPU-intensive programs with X11-specific rendering paths.
GNOME 50 itself has matured considerably. Per-monitor scaling now handles high-DPI setups more gracefully. Screen recording can use hardware acceleration rather than burdening the CPU. Remote sessions that were previously disrupted by network drops now persist and reconnect. Small-screen support has improved enough to make Ubuntu usable on compact industrial panels and embedded touchscreens. The Orca screen reader has been substantially reworked, and a new interface option lets users reduce animations — helpful for both accessibility needs and machines with slower GPUs.
Applications: Out With the Old
Four default applications have been replaced in this cycle, and each swap is meaningful:
- **Ptyxis** takes over from GNOME Terminal as the default command-line environment. It runs on GTK4, renders through the GPU, and brings tab management with a full overview mode, switchable profiles, and configurable shortcuts. On identical hardware, it’s noticeably more responsive than its predecessor.
- **Showtime** replaces the long-running Totem video player. The new player is written in Rust and built on GTK4 and libadwaita — aligned with where GNOME’s application ecosystem is heading architecturally.
- **Resources** takes the place of GNOME System Monitor. It’s a community-developed tool from the GNOME Circle program, which means it meets GNOME’s quality bar without being part of the core team’s direct output. It gives a clearer real-time view of what the system is actually doing.
- **GIMP 3.2** replaces the 2.10 branch. The jump from 2.x to 3.x was a years-long effort to modernize GIMP’s internals and UI, and 3.2 represents a fully landed version of that work.
Elsewhere: Firefox reaches version 150, LibreOffice moves from the 24.2 branch to 25.8, and Thunderbird ships as version 140, codenamed “Eclipse.”
Full Disk Encryption Without a Boot Passphrase
Traditional LUKS encryption protects data at rest effectively, but it interrupts the boot process — someone (or something) has to provide the passphrase before the system continues. For physical workstations, that’s fine. For unattended servers in a data center or cloud environment, it creates an operational problem: the machine can’t recover from a reboot without manual intervention.
Ubuntu 26.04 addresses this with TPM-backed FDE. When the Trusted Platform Module chip is present and properly configured, it holds the encryption keys and releases them during boot automatically. The disk stays encrypted against physical theft, but reboots proceed without human input. The combination is genuinely useful for compliant-but-automated infrastructure.
Hardware limitations apply: this approach doesn’t work on machines where Absolute or Computrace firmware features are active, NVMe RAID configurations may need BIOS-level adjustments first, and among out-of-tree kernel modules, only NVIDIA’s driver is currently compatible. Standard setups without these edge cases work reliably.
Rust Utilities Replacing C Components
Over the past several Ubuntu releases, Canonical has been quietly replacing C-written system tools with Rust equivalents. The motivation is memory safety: Rust’s ownership model eliminates whole categories of bugs — buffer overflows, null pointer dereferences, use-after-free errors — that have fueled privilege escalation vulnerabilities in system software for decades. Ubuntu 26.04 continues this push. The changes aren’t visible in day-to-day use, but they reduce the exploitable surface area of the OS at a structural level rather than through patches applied after the fact.
systemd 259 and the End of cgroup v1
cgroup v1 — the original Linux control group implementation — is no longer supported. systemd 259, which ships with Ubuntu 26.04, works exclusively with cgroup v2, the unified hierarchy that has been the preferred approach since Linux 4.5. The two APIs are not compatible in several critical areas.
What this means practically: Docker has supported cgroup v2 since version 20.10, and standard container configurations work without modification. But older Docker Compose files, Kubernetes configurations, or monitoring agents that reference v1-specific controllers (like memory.memsw.limit_in_bytes or cpuset paths structured under the v1 hierarchy) will fail. Audit your container stack before migrating any production node to 26.04.
Dracut Takes Over from initramfs-tools
The component responsible for building the initial ramdisk — the minimal environment that handles the earliest phase of boot before the main filesystem is mounted — has changed. initramfs-tools, which Ubuntu has used for many years, is replaced by Dracut. Dracut integrates more tightly with systemd during early boot and adds capabilities that initramfs-tools couldn’t provide, including Bluetooth support during initialization and NVMe-oF (NVM Express over Fabrics) for booting from network-attached NVMe targets.
For most systems, the transition is automatic and transparent. The risk surfaces if you have custom hooks written for initramfs-tools — scripts that unlock encrypted volumes, mount network shares, or initialize special hardware before the root filesystem appears. Those hooks need to be ported to Dracut’s module system before upgrading.
NVIDIA CUDA and AMD ROCm in the Official Archive
Previously, getting CUDA onto an Ubuntu system meant configuring NVIDIA’s external package repository, managing keyring files, and trusting a third-party source for packages that sit deep in the GPU computing stack. Ubuntu 26.04 changes the arrangement: CUDA packages are now part of the official Ubuntu archive, maintained and tested by Canonical’s team alongside everything else in the distribution.
AMD ROCm follows the same path. Both toolkits are now installable through standard apt commands against Ubuntu’s own repository infrastructure. For ML engineers, data scientists, and anyone running GPU-accelerated compute workloads, this simplifies environment setup significantly — and it removes the version management friction that comes with juggling OS packages against vendor-supplied CUDA libraries.
The default proprietary NVIDIA driver has also moved to the 595.x series, and Wayland performance with NVIDIA hardware has improved substantially as a result.
apt Gets a History System
One of the more practical everyday improvements: the apt package manager now tracks a transaction history and exposes commands to work with it.
```bash
# See what a past transaction did
sudo apt history-info 0
# Undo the most recent installation
sudo apt history-undo 0
# Redo something that was undone
sudo apt history-redo 0
# Roll back to a previous state
sudo apt history-rollback 1
```
This closes a usability gap that has existed since Ubuntu’s early days. Recovering from an accidental removal or figuring out exactly what an apt upgrade session changed previously required parsing /var/log/dpkg.log by hand. Now it’s a first-class feature with predictable behavior.
Developer Toolchain
Ubuntu 26.04 ships a fully refreshed compilation and runtime environment: OpenJDK 25 (certified against the TCK on AMD64, ARM64, S390X, and PPC64EL), LLVM 21 as the default LLVM toolchain, Rust 1.93.1, Zig 0.15.2 with riscv64 support, .NET 10, and glibc 2.43 incorporating ISO C23 additions. This is a meaningful upgrade for anyone developing in compiled languages — especially Rust, where the toolchain version directly affects which language features are available.
On the database side, DocumentDB 0.108-0 is now in the Ubuntu archive. It provides a MongoDB-compatible query interface built on top of PostgreSQL — relevant for teams that need that compatibility layer without commercial licensing considerations. MariaDB 11.8.6 LTS is updated and now ships with an AppArmor profile and a hardened systemd unit built into the Ubuntu package itself. MySQL 8.4 LTS is also available, though MySQL and MariaDB can’t coexist on the same host under current packaging constraints.
x86-64-v3 Package Variants
Modern desktop and server CPUs implement instruction sets that weren’t available when the x86-64 baseline was defined. Ubuntu 26.04 makes x86-64-v3 package builds available as optional alternatives — these compile against a newer instruction set baseline that includes AVX2 and several other additions present in Intel Haswell-class CPUs and later AMD equivalents.
Nothing changes automatically. Users on older hardware get the same standard packages as before. Those who want to opt in can install the v3 variants and get measurable throughput improvements on compute-heavy workloads. It’s a clean approach: optional, clearly labeled, and backward-compatible with the default stack.
WSL Gains Enterprise Management Features
The Windows Subsystem for Linux integration picks up cloud-init support and Ubuntu Pro for WSL in this release. Together, these enable large-scale WSL deployment management through Canonical’s Landscape platform — organizations can push configuration, enforce compliance policies, and track security status across WSL instances the same way they manage headless Ubuntu servers. For enterprises that operate mixed Windows/Linux environments, the gap between Windows desktop and Linux tooling infrastructure gets noticeably smaller.
## Ubuntu 24.04 LTS vs 26.04 LTS: Side-by-Side
If you’re running 24.04 Noble Numbat in production, here’s a structured view of what changes across the two LTS generations:
| Area | Ubuntu 24.04 LTS | Ubuntu 26.04 LTS |
| --- | --- | --- |
| Kernel version | 6.8 | 7.0 |
| Desktop environment | GNOME 46 | GNOME 50 |
| Display server | Wayland default, Xorg available | Wayland only; XWayland for X11 apps |
| Terminal emulator | GNOME Terminal | Ptyxis (GTK4, GPU rendering) |
| Default video player | Totem | Showtime |
| System monitor | GNOME System Monitor | Resources |
| Image editor | GIMP 2.10 | GIMP 3.2 |
| initramfs generator | initramfs-tools | Dracut |
| cgroup hierarchy | v1 + v2 | v2 exclusively |
| Disk encryption | LUKS with boot passphrase | LUKS + TPM-backed keystore option |
| CUDA in official repos | No | Yes |
| Default Java | OpenJDK 21 | OpenJDK 25 |
| Rust toolchain | 1.75 | 1.93.1 |
| apt history commands | Not available | history-info, undo, redo, rollback |
| Security support until | April 2029 | April 2031 (2036 with Ubuntu Pro) |
## What Works Well
The security improvements in 26.04 are the most durable. Rust rewrites eliminate entire vulnerability classes structurally. TPM-backed FDE removes the operational friction of encrypted-but-unattended servers. CUDA in the official archive means the GPU software stack gets Canonical’s security patching cadence rather than depending on NVIDIA’s own repository timeline. These aren’t incremental hardening tweaks — they change the fundamental properties of the system.
Performance gains are real but hardware-dependent. On recent Intel and AMD CPUs, kernel 7.0’s storage improvements and the available x86-64-v3 package variants produce measurable throughput differences in I/O-bound and compute-bound workloads. On older hardware, the experience is comparable to 24.04 with slightly improved desktop responsiveness from GPU-accelerated rendering in GNOME 50 and Ptyxis.
For development work, the updated toolchain is simply more practical. Having Rust 1.93.1, OpenJDK 25, LLVM 21, and .NET 10 available from the distribution’s own repositories — rather than requiring PPAs or manual installations — removes friction from the standard developer workflow. On a five-year LTS, that matters from day one.
## Where the Risks Are
The Wayland-only shift is the most visible compatibility break. Applications that interact with the X display server at a protocol level — rather than just using X11 libraries — may not work correctly or at all through XWayland. Screen capture software, some VNC and RDP implementations, and a subset of GPU-accelerated applications with X11-specific rendering paths fall into this category. This is largely irrelevant for headless servers but needs attention in desktop and workstation deployments.
NVIDIA hardware has a documented suspend/resume issue on some configurations: resuming from sleep under the Wayland session can produce visual corruption or freezes. This is being tracked and will likely be resolved in a point release, but it’s worth testing your specific hardware before rolling out desktop deployments at scale.
The cgroup v2 requirement is the server-side migration risk. It’s not a difficult technical problem — the move to v2 has been underway across the container ecosystem for years — but anything in your stack that was explicitly configured for v1 paths will break silently or noisily depending on how the tools handle it. A test deployment against a 26.04 node before committing to a migration plan is not optional.
On the database side: MySQL and MariaDB can’t coexist. In practice this is an unusual configuration, but teams running both on a single development box will need to pick one or reach for containers.
## Practical Use Cases
### 1. Web and Application Servers on Cloud Infrastructure
Ubuntu LTS has been the dominant OS choice for cloud server provisioning for years, and 26.04 reinforces that position. The combination of a five-year security commitment, a modern kernel, and production-hardened database packages (MariaDB 11.8.6 with AppArmor, MySQL 8.4) covers the vast majority of web hosting, API serving, and application backend use cases. Teams running LAMP or LEMP stacks on a [Serverspace VPS](https://serverspace.us/services/vps-server.md) can deploy 26.04 images and get a well-maintained foundation that holds up for years without major OS intervention.
### 2. GPU Computing and AI/ML Pipelines
The native CUDA availability is specifically aimed here. Research teams, ML engineers, and organizations running inference infrastructure no longer need to manage NVIDIA’s repository infrastructure separately. A single apt install against the Ubuntu archive pulls in CUDA with the same dependency tracking and security patching as any other system package. AMD ROCm follows the same pattern. Ubuntu 26.04 LTS is a practical baseline for PyTorch, TensorFlow, and JAX environments that need stability over a multi-year research or production horizon.
### 3. Developer Workstations and Build Systems
Keeping language runtimes current is one of the persistent annoyances of long-running LTS deployments. Ubuntu 26.04 addresses this at the OS level with a toolchain that reflects 2026’s ecosystem rather than requiring workarounds. OpenJDK 25, Rust 1.93.1, LLVM 21, and .NET 10 are all first-class packages. CI/CD pipelines that use Ubuntu LTS as a build base benefit from consistent behavior across a five-year window — fewer surprise breakages from PPA updates or external repository changes.
### 4. Container Infrastructure and Kubernetes Nodes
Ubuntu is a common choice for Kubernetes worker nodes, and 26.04 maintains that fit — after the cgroup v2 migration is confirmed. Once the container stack is verified, kernel 7.0’s storage improvements and the tighter systemd-based boot via Dracut make for a well-integrated node OS. Livepatch support on Arm64 servers also makes this more attractive for aarch64-based cluster infrastructure.
### 5. Compliant and Security-Conscious Enterprise Environments
TPM-backed disk encryption, Rust utilities, AppArmor profiles for database services, mandatory cgroup v2 (which enables better resource isolation), and ten-year Ubuntu Pro coverage address a cluster of requirements that come up in regulated industries and government deployments. The ability to reach baseline hardening from a standard installation, rather than applying layers of post-install configuration, reduces both setup time and the risk of configuration gaps.
## Mistakes Worth Avoiding During Migration
**Moving production 24.04 servers before the first point release.** Canonical holds the direct upgrade path from 24.04 until Ubuntu 26.04.1 ships in July 2026. This is intentional: the first few weeks of an LTS release are when early-adopter bug reports surface and get addressed. Waiting costs nothing and avoids troubleshooting on live infrastructure.
**Skipping cgroup v2 validation before upgrading nodes.** The failure mode here is containers that crash, resource limits that don’t apply, or monitoring agents that lose visibility — potentially all at once on a production host. Bring up a 26.04 test node, run your container workloads against it, and confirm everything behaves before scheduling the migration.
**Treating XWayland as a full X11 replacement.** It covers the common cases. It doesn’t cover everything. Applications that programmatically control window positioning, capture raw pixel data from other windows, or rely on specific X extensions may fail or behave unexpectedly. If you have specialized desktop tooling in your environment, test it against a 26.04 instance before the rollout.
**Enabling TPM-backed FDE without a hardware compatibility check.** Turning on full disk encryption with TPM keystore on a machine where Absolute firmware is active, or on an NVMe RAID configuration that hasn’t been validated, can prevent the system from booting at all. Always test this on non-production hardware with a recovery plan in place.
**Ignoring custom initramfs hooks.** If your deployment uses scripts that run during the initramfs phase — for network-based volume unlocking, special storage initialization, or hardware setup — those scripts are written for initramfs-tools. Dracut uses a different module structure. They won’t automatically work after an upgrade; they need to be reviewed and ported.
**Assuming the MariaDB upgrade is automatic.** The jump to version 11.8.6 LTS involves a data format change. Running the package upgrade without performing the recommended schema migration step can leave the database in an inconsistent state. Follow the MariaDB upgrade documentation before touching packages on a production database host.
## When to Upgrade
If you’re setting up something new — a fresh VPS, a new developer machine, a clean CI runner — install Ubuntu 26.04 LTS now. There’s no reason to start on 24.04 when the newer LTS is already available and properly released.
If you’re running Ubuntu 25.10, the upgrade path is straightforward. You’re already on Wayland-only and Ptyxis. The delta between 25.10 and 26.04 is manageable, and the upgrade prompt through standard system tooling will appear in the coming weeks.
If you’re on Ubuntu 24.04 LTS with production workloads, hold until July 2026. The 26.04.1 point release is when Canonical enables the direct upgrade path — and when the early-release issues are most likely to be resolved. There’s no security urgency in moving early; 24.04 gets patches through April 2029. Plan the migration, run it in staging, and upgrade when it’s de-risked.
## Conclusion
Ubuntu 26.04 LTS makes some genuinely decisive choices. Xorg is out. cgroup v1 is out. Rust replaces C in the system utility layer. CUDA enters the official archive. These aren’t experimental directions — they’re commitments to where Linux infrastructure is actually heading. The release is more secure, more capable for GPU workloads, and more consistent in its assumptions than the previous LTS generation.
The migration caveats are real but bounded. Know your cgroup configuration. Audit your X11-dependent tools. Check your initramfs scripts. Test before you move production. With those steps done, Ubuntu 26.04 LTS — whether on a physical machine, a workstation, or a [cloud VPS](https://serverspace.us/services/vps-server.md) — gives you a solid five-year runway on a platform that has already done the hard architectural work.
## FAQ
**When can I upgrade from Ubuntu 24.04 LTS to 26.04?**
The upgrade path opens officially in July 2026, when Ubuntu 26.04.1 LTS is released. Before that date, performing the upgrade manually is technically possible but carries extra risk. For production systems, wait for the point release.
**I’m on Ubuntu 22.04. Can I go straight to 26.04?**
No. Ubuntu 22.04 users need to move to either 24.04 LTS or 25.10 first, then upgrade to 26.04. Jumping across two LTS generations directly is not a supported path.
**My software was written for X11. Does it still run?**
In most cases, yes. XWayland handles the compatibility layer for X11 applications, and the majority of programs that use X11 libraries will run without any changes. The applications that may have problems are those that talk to the X server at a protocol level — specific screen capture tools, some remote desktop implementations, and programs with X11-specific rendering optimizations.
**Does the cgroup v2 change break Docker?**
Standard Docker setups work fine — the engine has supported cgroup v2 since version 20.10. The problem area is configurations that explicitly reference v1 controller paths in resource limits, memory settings, or cpuset rules. Review your Compose files and any custom resource constraints before upgrading container hosts.
**How long is Ubuntu 26.04 LTS actually maintained?**
Standard maintenance covers five years — security updates through April 2031. Ubuntu Pro extends that with Expanded Security Maintenance for another five years, reaching 2036. A separate Legacy add-on can push coverage out to fifteen years total for organizations that need it.
**Is CUDA installed automatically, or do I have to add it?**
It needs to be installed deliberately — nothing happens automatically. The difference from previous releases is where the packages come from: instead of configuring NVIDIA’s external repository, you pull CUDA through Ubuntu’s own archive with a standard apt install command. Same toolchain, different and simpler supply chain.
**What happened to Ubuntu MATE and Ubuntu Unity this cycle?**
Both opted out of LTS status for 26.04 due to limited contributor capacity. Ubuntu MATE’s project lead stepped away from the project in early 2026; Ubuntu Unity faces similar staffing constraints. They may still produce 26.04 builds without the extended support designation. Other official flavors — Xubuntu, Lubuntu, Kubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Studio, Edubuntu, and Ubuntu Kylin — are proceeding with full LTS status.
https://serverspace.us/about/blog/what-is-a-forex-vps-and-why-do-traders-use-it.mdA forex VPS hosts MetaTrader and Expert Advisors near broker servers to deliver under-5 ms latency and uninterrupted 24/5 execution for traders.
The answer to what is forex VPS sits inside that pattern. It is a rented compute slice running inside a professional facility close to broker hardware, holding a trading platform live on the network at all hours. Built around MetaTrader 4, MetaTrader 5, cTrader, and the surrounding ecosystem, this kind of server makes round-trip times measurable in single milliseconds, while household connections show wide and unpredictable variance. The pages below walk through the mechanics, realistic hardware budgets, the failure modes that catch new users off guard, and the steps that keep a setup online even when something breaks somewhere else.
## The Definition That Actually Matters
Discussion of what is forex VPS often gets lost in vendor copy. The grounded version is simpler. A virtualized fraction of physical server resources sits inside a financial-grade data center, presenting itself to a trader as a Windows machine reachable through the Remote Desktop protocol. CPU cycles, RAM allocation, and SSD bandwidth are guaranteed at the contract level, with no other tenant able to claim them at peak load. The default operating system is Windows Server in either its 2019 or 2022 release, since MetaTrader is a native Win32 application and any compatibility-layer detour through Linux invites the kind of intermittent breakages that surface during volatile prints.
How a VPS Service in Forex Differs from General-Purpose Hosting
Mass-market hosting addresses different problems than what is vps service in forex demands. Two qualities separate forex-grade infrastructure from a generic cloud node. First, the data center coordinates are chosen by network distance to broker IPs, with marketing geography taking a back seat. The serious facilities are LD4 and LD5 in Slough beside the City of London cluster, NY4 and NY5 Equinix in Secaucus across the river from the major US ECNs, FR2 in Frankfurt, AM2 in Amsterdam, and TY3 in Tokyo. Second, peering arrangements steer broker-bound traffic onto private fiber paths whenever possible, sidestepping the congestion windows of the public internet.
The downstream effect is a measurable spread of latency outcomes. A trade order from an Amsterdam node to a London-domiciled broker typically clears in two or three milliseconds, while the same logical hop from a residential connection in Lisbon, Cairo, or Cape Town returns figures running anywhere from 60 to 180 milliseconds depending on the time of day and ISP routing. That gap shows up directly in fill price, especially when the spread expands during macro releases.
## How Does Forex VPS Work When an Order Crosses the Wire
The mechanics break down into three short loops, repeated continuously while a market is open. Tick data flows from the broker into the platform on the VPS. The Expert Advisor parses the tick, evaluates conditions written in MQL4 or MQL5, and either holds steady or fires an order. The order travels back to the matching engine, gets filled at whatever price the book offers, and a confirmation returns to the EA. None of this requires the trader laptop to be powered on.
That is the underlying answer to how does VPS work in forex trading once the marketing layer is peeled back: the trader local devices function as remote terminals into a continuously running process, while every action the strategy actually takes happens between two pieces of infrastructure that share a metropolitan network.
The physics of latency are unavoidable. Optical fiber moves photons at roughly 200,000 kilometers per second once refractive index is accounted for, which adds about half a millisecond per 100 kilometers each way. A retail account in Cape Town reaching for a London matching engine starts every order with around 90 milliseconds of pure transit, before any router queue or ISP handoff is added. Place the platform inside the same data hall as the broker, link them through a direct fiber cross-connect, and that floor collapses below a single millisecond.
A common reference picture for typical setups:
| Setup | Typical latency to broker | Realistic for |
| --- | --- | --- |
| Home internet, residential ISP | 50 to 200 ms | Manual swing trading only |
| Generic cloud VPS, mismatched region | 30 to 80 ms | Casual trading, limited for scalping |
| Forex VPS in correct financial hub | 1 to 5 ms | EAs, scalping, copy trading |
| Same-facility cross-connect at Equinix | Under 1 ms | HFT, professional algorithmic trading |
Knowing how does forex vps work end to end clarifies why the trader-side device is almost a courtesy. The substantive trading happens on the rented compute, around the clock, with the human checking in only when something needs adjustment.
## Five Reasons Active Traders Move Strategies onto Hosted Infrastructure
**Continuous market presence through every session. **The currency market runs from late Sunday in Sydney through Friday New York close, leaving more than 100 hours of unbroken activity per week. An automated approach that misses two hours during a London open, a UK power dip, or an unscheduled Microsoft patch leaves edges on the table. Server-grade infrastructure with redundant power feeds and dual ISP uplinks treats those external events as background noise.
**Predictable execution at scalping timeframes. **Strategies aiming at three or four points of profit per trade depend on execution arriving close to signal price. The longer the round trip, the more often the spread widens or the underlying tick moves through the intended fill before confirmation lands. Compressing transit from a triple-digit number of milliseconds down to single digits rebuilds the gap between live results and tick-data backtests.
**Insulation from the household environment. **A retail computer shares the room with whatever else is happening: a roommate streaming, a router quietly rebooting on a firmware push, an outage on the neighborhood power grid. Outsourcing the platform to a professional facility removes those variables from the equation, replacing them with engineered redundancy that maintainers handle around the clock.
**Operational mobility. **Once trading lives on remote infrastructure, the trader location becomes irrelevant to the strategy itself. Travel days, family obligations, and changes of country no longer pause the schedule. Connecting back is a matter of opening Remote Desktop on whatever device is at hand.
**Concurrent operation across accounts and brokers. **A single well-sized VPS routinely hosts six or eight MetaTrader instances side by side, allowing copy traders to mirror multiple subscribers, prop firm candidates to run several FTMO or MyForexFunds attempts in parallel, and PAMM managers to keep allocations under one administrative roof.
## Sizing the Box: Hardware Realities for MT4 and MT5
The honest answer to provisioning lands between two error modes: gross under-sizing that produces freezes on the first volatile session, and gold-plated configurations that bill three times what the workload actually justifies. Working through how much ram and cpu do I need for a forex VPS in a structured way usually clears the picture quickly.
**Operating system overhead. **A modern Windows Server install consumes roughly 800 megabytes to 1.2 gigabytes of memory before the trading platform starts. Since the September 2023 release of MT5 build 3930, 32-bit support is gone, leaving 64-bit Windows as the only path forward.
**MT4 versus MT5 in practice. **The fourth-generation platform is the lighter of the two by a wide margin. A single MT4 terminal with three or four open charts and one EA usually runs comfortably inside 400 megabytes. The same workload on MT5 typically reaches 700 to 900 megabytes thanks to richer tick storage, multi-threaded execution, and broader market data handling. Anyone migrating from MT4 to MT5 on the same plan size tends to discover this the day London volatility picks up.
**The single-thread truth. **MetaTrader assigns one thread per EA and one per traded symbol. A multi-currency robot scanning twenty-eight pairs is still bound to a single execution thread for its decision logic. Clock speed on individual cores therefore wins over raw core count, and processors in the 3.0-to-3.5 GHz base range tend to outperform higher-core-count alternatives running near 2.0 GHz.
**Storage class. **Trading platforms write incessantly: journal files, tick history caches, recovery checkpoints. Spinning disks and even mid-tier SATA SSDs leave perceptible lag during multi-terminal operation, while NVMe SSDs absorb the write pattern without slowdown. Enterprise-grade storage with triple replication adds a second layer of protection at the hardware level.
**Sizing reference. **Configurations along these lines cover the bulk of retail and prop scenarios:
| Trader profile | vCPU | RAM | Storage | Notes |
| --- | --- | --- | --- | --- |
| 1 terminal, 1-2 EAs, retail entry | 1 | 2 GB | NVMe 30 GB | Minimum for MT4, borderline for MT5 |
| 3-5 terminals, portfolio trader | 2 | 4 GB | NVMe 50 GB | Comfortable for most active traders |
| 6-10 terminals, prop trader | 4 | 8 GB | NVMe 80 GB | FTMO plus broker diversification |
| 10+ terminals, signal provider | 8+ | 16 GB+ | NVMe 100 GB+ | Dedicated CPU mandatory |
Configurations along these lines work well when the underlying VPS is hosted somewhere matched to the broker presence: a Windows VPS in Amsterdam for a London-listed broker, or one in New Jersey for a US ECN. [Serverspace](https://serverspace.us/services/vps-server.md) covers both regions with pay-as-you-go billing, allowing a trader to start at 1 vCPU and scale upward without rebuilding.
## Cases Where a VPS Is the Wrong Tool
Marketing often paints VPS adoption as universal. The reality is narrower. Several profiles do fine on a regular workstation:
- Position traders sitting on swings of several hundred pips with manual entries. The 30 or 80 milliseconds of household latency dissolve into the noise of a multi-day target.
- Discretionary day traders working at the desk during a chosen session. If the human is awake and watching when trades fire, the platform does not need to be elsewhere.
- Demo accounts under evaluation. Paper-money testing demands no continuous uptime, since nothing real is at stake while the strategy proves itself.
- Low-touch approaches with one or two trades per week on weekly or daily figures.
The deciding question reduces to two factors: does the strategy require uninterrupted software presence, and does microsecond-level execution matter for entry quality. When both answers are yes, hosting moves from optional to non-negotiable. When neither is, the monthly fee buys nothing the trader needs.
## Configuration Traps That Quietly Wreck Performance
Setups go wrong in patterns. Recognizing the patterns saves the cost of a few months of capital.
- **Region selected by trader location, not broker location. **A Frankfurt-based trader who orders a Frankfurt VPS for a Sydney-routed broker still owes the network its full transit time. The choice of region has to be calculated relative to the broker matching engine, with the trader own coordinates barely entering the equation.
- **Bargain providers running aggressive CPU oversubscription. **Budget hosts fill physical hosts at allocation ratios as steep as eight to one, meaning the “two vCPU” plan delivers full performance only when neighbors stay quiet. The moment NFP prints and every trader on the host node spikes simultaneously, the hypervisor enforces real allocation limits and the latency floor moves from five milliseconds into the high hundreds. Providers that pin dedicated CPU cores per VPS, such as [Serverspace](https://serverspace.us/services/vps-server.md) on its vStack platform, sidestep this contention by design.
- **Workstation habits transferred onto a trading server. **A forex VPS earns its keep by running platforms and almost nothing else. Background processes accumulated out of habit, whether a media player, a messenger client, or an over-eager security suite indexing every directory every quarter hour, all charge against the resources that should be feeding execution.
- **RDP exposed in default configuration. **Port 3389 paired with a short password on a public IP is a known target. Botnets sweep that combination continuously, looking for any host running an unhardened RDP listener and any account whose credentials match a leaked password list. A successful hit on a trading server hands an outsider live broker terminals.
- **Right-sizing as a future problem. **Starting on a 1 GB plan to “see what happens” tends to deliver answers like a frozen MT5 mid-session or a forced upgrade in week one. Workloads involving MT5 or several terminals deserve at least 4 GB on day zero.
- **Trusting the marketing latency number. **Provider listings advertise theoretical proximity. Reality only confirms itself when the trader runs a ping to the broker server from the VPS itself and reads the actual round-trip times reported by the MetaTrader journal. Discrepancies typically indicate that either the chosen region was wrong or the broker IP is not where the trader assumed.
- **Configuration drift without backups. **Months of EA tuning, indicator combinations, and chart templates can vanish in a single migration or reinstall when no archive exists. A scheduled weekly ZIP of the MQL4 and MQL5 directories, synced to cloud storage, takes a quarter hour to set up and protects every subsequent month of work.
## Broker-Bundled VPS Plans Compared with Independent Hosting
Several brokers attach “free VPS” perks to clients meeting deposit minimums (often around five thousand dollars) or monthly turnover thresholds. The pitch sounds compelling at first read: no separate invoice, the broker assumes the maintenance burden. The fine print introduces real costs:
- The data center is whatever the broker chose, with no input from the trader.
- Resources land in the 256-to-512 megabyte range, sized for a single MT4 instance and nothing more.
- Administrative privileges are usually clipped, blocking installations and system tweaks.
- Switching brokers terminates the VPS immediately, dragging every EA configuration along with it.
- All traffic on the box runs under the broker operational visibility.
An independently rented VPS reverses each of those points: the trader picks the location, owns the resource allocation, holds full administrator access, keeps the setup intact across broker changes, and operates outside the broker infrastructure entirely. At ten to thirty dollars a month for a usable plan, the flexibility usually pays for itself the first time the trader changes brokers or tests a new strategy variant. Free broker offerings make sense for casual users already meeting the volume requirements who run a single account and never touch advanced configurations.
## Layered Defenses: How to Secure Forex VPS Against Downtime
A complete answer to how to secure forex VPS against downtime relies on overlapping protections instead of any single safeguard. Five layers cover the realistic threat surface.
**Provider-grade redundancy at the foundation. **A facility worth the money holds Tier III or higher classification, runs power on N+1 architecture with diesel generators behind it, and maintains carrier-diverse uplinks. The SLA should commit to 99.9 percent availability minimum, with credits owed when breached. Anything looser tolerates almost nine hours of permitted downtime per year.
**Account-side fallback prepared in advance. **The broker mobile application installed and tested on the trader phone beats reading documentation while open positions accumulate losses. A practiced ability to close every running trade from a phone in under a minute is the bare minimum.
**Configuration archives synced offsite. **A Windows Task Scheduler job creating a weekly ZIP of Experts, Indicators, Profiles, and Templates folders, automatically uploaded to a cloud drive, restores a destroyed VPS within an hour on a fresh machine. Without this loop, recovery costs days.
**RDP hardened beyond defaults. **Move the listener away from port 3389 to a high random number. Switch the administrator account name. Use a 16-character minimum passphrase. Enable Network Level Authentication. Restrict inbound connections at the Windows Firewall level by trusted IP. Layer a third-party two-factor product such as Duo on top.
**Heartbeat monitoring with alerting attached. **A five-minute ping check from an external monitor, sending a Telegram or email alert on failure, surfaces problems while they are still 120 seconds old, well before the six-hour gap that the trader might otherwise discover by accident.
## Putting It Together
Forex VPS adoption pays back when a strategy depends on uninterrupted platform presence, low and stable latency, or both. The decision compresses into four levers worth getting right: regional placement matched to the broker matching engine, hardware sized to the actual workload of MT4 or MT5 plus any EAs, RDP locked down past the defaults, and a tested response plan for outages.
The starting workflow is short. Ask broker support which city or facility hosts the matching engine. Pick a VPS region that minimizes transit to that location. Choose a configuration that fits the number of running terminals with headroom. For traders looking for a starting point in Amsterdam, New Jersey, Dubai, or São Paulo, [Serverspace](https://serverspace.us/services/vps-server.md) offers Tier III hosting with dedicated CPU cores, NVMe storage, and pay-as-you-go scaling that goes live in under a minute.
## FAQ
### How does VPS work in forex trading?
The remote server stays online continuously, holding the trading platform connected to the broker. Tick data arrives, the Expert Advisor decides, orders go out, fills come back. The trader home device connects only to check or adjust the setup, and nothing about its local uptime affects the strategy execution.
### How much RAM and CPU do I need for a forex VPS?
A single MT4 terminal with one or two EAs runs on 1 vCPU and 2 GB of memory. MT5 or three to five MT4 instances need 2 vCPU and 4 GB. Six to ten parallel terminals call for 4 vCPU and 8 GB. Signal providers and PAMM managers running ten or more terminals should plan for 8 vCPU and 16 GB at minimum, with dedicated cores and no oversold shared CPU.
### How to setup VPS for forex trading?
The full sequence runs about half an hour. Pick a provider with regions near the broker, order a Windows Server plan sized to the workload, take the RDP credentials provided, connect from any device, install MetaTrader from the broker official link, log in, attach EAs to charts, enable Auto-Trading. The same workflow covers learning how to set up forex VPS for the first time and migrating between providers.
### How do I choose a VPS provider for forex trading?
Apply a tight checklist: dedicated CPU without overselling, region within a 10-millisecond ping window of the broker, NVMe SSD with redundant replication, 99.9 percent SLA backed by financial penalties, transparent metered billing, included Windows Server licensing, around-the-clock technical support. If any of those points hide behind vague language, keep searching.
https://serverspace.us/support/help/how-to-set-up-fail2ban.mdFail2Ban is a popular tool for protecting servers from brute-force attacks and other malicious activities by analyzing logs
Fail2Ban is a powerful and flexible tool for protecting Linux-based servers from brute force attacks, especially when trying to find a password for SSH, FTP, SMTP, web applications, or even the Squid proxy server. Setting up Fail2Ban allows you to automatically block IP addresses that commit suspicious activity, reducing the risk of hacking.
With it, you can implement password brute force protection, secure SSH, and even apply it to non—standard services – on Ubuntu, Debian, CentOS, or other systems. Fail2Ban versions for Windows are also available, and if desired, you can integrate it with iptables or other traffic control tools.
## Using the example of Ubuntu 22.04 and Debian:
```bash
sudo apt update
sudo apt install fail2ban
```
One of the most popular use cases is fail2ban to protect SSH from brute force passwords.
Copy the configuration file:
```
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
```
Open it:
```
sudo nano /etc/fail2ban/jail.local
```
Find and edit the [sshd] section:
```
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
```
By default, there is no Squid filter in Fail2Ban, but it can be easily added manually. This is especially useful for systems where Squid is used as a caching proxy or for traffic management (for example, mikrotik + fail2ban via proxy).
```
sudo nano /etc/fail2ban/filter.d/squid.conf
```
Add the following to the file:
```
failregex = ^.*squid.TCP_DENIED.
ignoreregex =
```
```
sudo nano /etc/fail2ban/jail.local
```
To the end of the file:
```
enabled = true
filter = squid
logpath = /var/log/squid/access.log
maxretry = 5
bantime = 3600
findtime = 600
```
Make sure that the path to access.log is correct:
```
sudo find /var/log -name access.log
```
```bash
sudo systemctl restart fail2ban
```
```
sudo fail2ban-client status squid
```
If the configuration is correct, Fail2Ban will start tracking failed connection attempts via Squid and automatically block the IP.
Thus, Fail2Ban is not just ssh protection against brute force, but a whole modular mechanism. You can create your own filters (fail2ban filter), change actions (fail2ban action), connect via iptables, or use them on systems like fail2ban windows. This is a universal solution for security settings — from Ubuntu and Debian to CentOS and other Linux distributions.
https://serverspace.us/support/help/how-to-set-up-a-vps-for-mt4-mt5-step-by-step-guide.mdMT4/MT5 VPS Setup Guide 2026: RDP connection, auto-start EAs, Windows Task Scheduler, security checklist. 24/7 trading with low latency!
MT4 and MT5 work great on a home computer, but for 24/7 trading with Expert Advisors (EA), you need a stable server. Your own VPS ensures uninterrupted bot operation, minimal broker latency, and full environment control. Let’s break down how to properly set up a VPS for MetaTrader 4/5.
## Why You Need a VPS for MT4/MT5
Trading robots and indicators must run continuously. A powered-off home PC or laptop means missed trades, drawdowns, and stress. VPS solves this: the server runs 24/7/365 with a stable broker connection and minimal ping.
Main reasons to switch to VPS:
- Round-the-clock Expert Advisors without interruptions
- Low latency (crucial for scalping and HFT)
- Remote terminal access from any device
- Protection from power outages, internet failures, and home PC reboots
- Ability to run multiple terminals simultaneously on different accounts
## What Goes Into a Typical MT4/MT5 VPS Setup
- **Operating system** — Windows (recommended: Windows Server 2019/2022 or Windows 10/11 Pro)
- **MetaTrader terminal** — MT4 or MT5 from your broker
- **Experts and indicators** — your trading algorithms
- **Remote access** — RDP (Remote Desktop) for management
- **Auto-start** — so the terminal launches after server reboot
- **Monitoring and backups** — to catch issues early
## Choosing a VPS: What to Look For in 2026
For MT4/MT5, stability, low ping to broker servers, and provider reputation matter more than raw CPU power.
**Recommended specs:**
| Terminals / EA Count | vCPU | RAM | SSD | Monthly Price (approx.) |
| --- | --- | --- | --- | --- |
| 1–3 terminals | 2 vCPU | 2–4 GB | 40–60 GB | $8–15 |
| 4–10 terminals | 4 vCPU | 6–8 GB | 80–120 GB | $20–35 |
| 10+ terminals / heavy EA | 6–8 vCPU | 12+ GB | 150+ GB | $45+ |
**Best locations:** Choose VPS closest to your broker’s server (London, New York, Frankfurt, Amsterdam, Singapore, Tokyo, etc.).
Popular 2026 providers: ForexVPS, BeeksFX, LizardVPS, Serverspace, Contabo, Hetzner, AWS Lightsail, DigitalOcean.
## Server Requirements
- Windows (preferably Server 2022 or 2019)
- Stable internet at least 10–20 Mbit/s
- Low ping to broker (< 30–50 ms ideal)
- White IP (usually provided by default)
## Step-by-Step VPS Setup for MT4/MT5 (Windows)
### 1. Rental and First Connection
1. Order VPS with Windows. Teams choose [VPS server rental](https://serverspace.us/services/vps/) for stable infrastructure.
2. Get RDP credentials: IP address, login (usually Administrator), password.
3. Connect via “Remote Desktop Connection” (mstsc.exe).
### 2. Basic Server Prep
```
cmd
# Update Windows
sconfig → 6 → A (for Windows Server)
```
# Disable auto sleep and screensaver
Power Options → Never turn off display and Never sleep
### 3. Install MT4/MT5
1. Download terminal from your broker’s site.
2. Install to `C:\MT4` or `C:\MT5` (handy for multiple terminals).
3. Log into your trading account.
4. Load and install all needed experts and indicators.
### 4. Auto-Start Setup
Most reliable: Windows Task Scheduler.
1. Create `start_mt5.bat`:
```
batch
@echo off
start "" "C:\MT5\terminal64.exe" /portable
```
2. Add task in Task Scheduler:
– Trigger: At log on
– Action: Start program → path to .bat
– Set “Run with highest privileges” and “Run whether user logged on or not”
### 5. Remote Access and Security
– Change RDP port (optional, from 3389)
– Configure Windows Firewall — allow only your IP for RDP
– Install antivirus (Windows Defender sufficient)
– Enable Windows auto-updates
## Security: Mandatory Checklist
- Strong RDP password + change default port 3389
- IP restrictions (via Firewall)
- Windows Defender enabled + disable unneeded services
- Regular backups of settings and MQL5/MQL4 folders (OneDrive, Google Drive, or rsync)
- Server monitoring (UptimeRobot + Telegram alerts)
## Common Beginner Mistakes
### Mistake 1: Weak Plan
**Problem:** 1 GB RAM and 1 core — terminals lag with many indicators.
**Solution:** Minimum 4 GB RAM for comfort.
### Mistake 2: No Auto-Start After Reboot
**Problem:** Terminal doesn’t launch after Windows update or power loss.
**Solution:** Set up Task Scheduler or use AutoStart utility.
### Mistake 3: High Ping
**Problem:** VPS too far from broker server.
**Solution:** Choose closest location (test ping before buying).
### Mistake 4: Forgotten Updates
**Problem:** Windows updates and reboots at bad times.
**Solution:** Schedule reboots for nights or disable auto-reboot.
## Pros and Cons of VPS for MT4/MT5
### Advantages
- 24/7 trading without your involvement
- Low, stable ping
- Independent of your power/internet
- Run dozens of terminals
- Easy to scale
### Disadvantages and Risks
- Monthly fees
- Server security responsibility
- Outages with poor providers
## FAQ: Frequently Asked Questions
**Can I use free VPS?**
For testing — yes (Oracle Cloud Always Free, Google Cloud Free Tier). For live money trading — only paid, reliable VPS.
**MT4 or MT5 — which to install on VPS?**
MT5 is more modern, multi-threaded, faster with many instruments. Recommended to switch to MT5.
**How to quickly switch VPS?**
Copy entire terminal folder — it’s portable.
**Need Windows Server or is regular Windows 10/11 OK?**
Regular Windows 10/11 Pro works great and is often cheaper. Server better for many terminals.
**How to monitor EA performance?**
Use MyFXBook, FXBlue, or simple scripts sending Telegram reports. Set server downtime alerts too.
https://serverspace.us/about/blog/top-cloud-security-providers-2026.mdRanked list of the top cloud security providers in 2026. Compare 7 cloud based cyber security companies.
Cloud infrastructure spending crossed $419 billion in 2025, growing 30% year over year. Security is a primary reason enterprises switch providers or add new ones: misconfigured environments, identity breaches, and compliance gaps cost organizations an average of $4.88 million per incident, according to IBM. The cloud security market itself is projected to surpass $60 billion in 2026, driven by tighter regulations, AI powered threats, and the ongoing shift to multi cloud architectures.
For teams evaluating cloud based cyber security companies, the challenge is no longer finding a provider that offers security features. It is finding one where security is built into the platform rather than bolted on afterward. Firewalls, encryption, identity management, DDoS mitigation, and compliance tooling should work out of the box, not require a separate contract with a third party vendor.
This guide ranks the top cloud security providers for 2026. We reviewed seven platforms across infrastructure quality, built in protections, compliance coverage, pricing transparency, and support. Each provider receives a score from 1 to 5 stars. The first and second positions both earn 5 out of 5. A comparison table at the end summarizes key differences so you can match a provider to your workload and risk profile.
## How We Evaluated Cloud Security Providers
We scored each platform across five dimensions that directly affect day to day security posture and operational cost:
- ** Security stack and built in protections.** Native firewall, DDoS mitigation, encryption at rest and in transit, IAM granularity, threat detection, and vulnerability scanning. Cloud security vendors that ship these as defaults scored higher than those requiring add on purchases.
- ** Compliance certifications.** SOC 2 Type II, ISO 27001, PCI DSS, HIPAA BAA eligibility, and FedRAMP authorization. More certifications mean fewer audit headaches for regulated industries.
- ** Network infrastructure and data center footprint.** Number of regions, availability zones, and physical isolation options. Broader coverage supports data residency requirements and reduces latency.
- ** Pricing transparency.** Whether cloud security offerings and bandwidth are included or billed separately. Hidden egress fees and premium support tiers penalize the score. Predictable cloud provider security costs let teams budget accurately.
- ** Support and incident response.** Average response time, availability of security focused support channels, and documented incident response procedures.
Scores range from 1 to 5 stars. Providers that excel across all five dimensions and demonstrate consistent cloud security service offerings earn the highest marks.
## 1. AWS: 5 out of 5
Amazon Web Services commands roughly 28% of the global cloud infrastructure market (Synergy Research, Q4 2025). Its security stack is the broadest in the industry, spanning more than 30 dedicated services across identity, detection, network protection, and data privacy. Among the best cloud security companies, AWS stands out through sheer depth of tooling.
The core security layer includes IAM with fine grained policies, GuardDuty for continuous threat detection, Security Hub for centralized findings, Macie for sensitive data discovery, Shield for DDoS protection, and WAF for application layer filtering. AWS also operates the only U.S. GovCloud partitions and launched the European Sovereign Cloud in January 2026 to address data residency mandates.
Compliance coverage is the widest available: FedRAMP High, HIPAA, PCI DSS, SOC 1/2/3, ISO 27001/27017/27018, and dozens of regional certifications. Infrastructure spans 115+ availability zones across 37 regions, giving teams granular control over where data lives. As a cloud security service provider, AWS sets the benchmark that other platforms measure against.
**Strengths.** Widest service catalog and global footprint. Layered security with native threat intelligence. Custom silicon (Graviton4, Trainium2) reduces compute cost. Deep compliance portfolio for government and healthcare workloads.
**Limitations.** Complex pricing with egress, cross AZ, and tiered storage fees. Steep learning curve for teams without dedicated cloud engineers. Enterprise support starts above $15,000 per month.
**Best for.** Large enterprises, regulated industries, government agencies, and organizations running multi service architectures that demand the broadest security and compliance coverage.
## 2. Serverspace: 5 out of 5
Not every team needs 200+ managed services and a six figure support contract. For organizations that want secure cloud infrastructure without hyperscaler complexity, [Serverspace](https://serverspace.us/services/vps-server.md) delivers a focused, security conscious platform built around VPS hosting.
Among cloud based cyber security companies offering VPS oriented solutions, Serverspace earns its position through a security first approach to infrastructure design. Every server deploys with DDoS protection, configurable firewall rules, private networking, and isolated VPC capabilities. The platform supports VMware and vStack virtualization, giving teams flexibility in how they isolate workloads. Encryption, access controls, and network segmentation are available from the control panel without requiring third party tools.
The billing model removes a common source of budget surprises. Serverspace charges in 10 minute increments with pay as you go pricing, unlimited inbound and outbound traffic at no extra cost, and no hidden fees for security features. Servers deploy in roughly 40 seconds across data centers in the U.S., Europe, and other regions. A 99.9% SLA backs uptime commitments. Automation is handled through API, CLI, and Terraform, which means security policies can be codified and version controlled from day one.
As a cloud security provider, Serverspace proves that strong protection does not require enterprise scale budgets. It is the best cloud security company for teams that prioritize transparent pricing, fast deployment, and built in protections over an endless catalog of services. For startups, SaaS teams, and mid size businesses evaluating cloud based security companies, this platform deserves serious consideration.
**Strengths.** Security features included by default (DDoS, VPC, private networking). Transparent pay as you go billing with no egress fees. Fast 40 second deployment. API, CLI, and Terraform support for infrastructure as code. Multiple global data center locations.
**Limitations.** No bare metal server options. OS level administration support costs extra. Smaller service catalog compared to hyperscalers.
**Best for.** Startups, SaaS platforms, development teams, and cost conscious businesses that need secure VPS infrastructure without the overhead of managing a hyperscaler environment.
## 3. Google Cloud Platform: 4.5 out of 5
Google Cloud brings a distinctive security philosophy rooted in the same infrastructure that protects Search, Gmail, and YouTube. Among cloud computing security companies, GCP differentiates through its zero trust heritage (BeyondCorp), AI powered security operations, and default encryption across all stored data.
The security operations suite, formerly Chronicle, earned a Leader position in the 2025 Gartner Magic Quadrant for SIEM in only its second year of evaluation. Google was placed furthest on the Completeness of Vision axis. The platform integrates Mandiant threat intelligence, Gemini AI for automated investigation, and VirusTotal for malware analysis. Together, these tools give SOC teams a detection and response stack that few competitors can match.
GCP operates 40+ regions with 121+ availability zones. Compliance certifications include SOC 1/2/3, ISO 27001, PCI DSS, HIPAA, and FedRAMP. Confidential Computing, which encrypts data while it is being processed, positions GCP well for sensitive AI workloads. Among the top cloud security companies, Google Cloud stands out for organizations that prioritize threat intelligence depth and AI driven automation.
**Strengths.** AI native security operations with Gemini integration. Mandiant threat intelligence. BeyondCorp zero trust framework. Encryption by default at rest and in transit. Strong compliance portfolio.
**Limitations.** Pricing complexity similar to other hyperscalers. Smaller enterprise market share than AWS or Azure. Steeper learning curve for teams unfamiliar with the Google ecosystem.
**Best for.** Security operations teams, AI and ML workloads requiring confidential computing, and organizations that value threat intelligence depth.
## 4. Microsoft Azure: 4 out of 5
Azure holds roughly 24% of the global cloud market and is deeply embedded in enterprise IT through the Microsoft 365 ecosystem. For organizations already running Active Directory, Teams, and Office, Azure provides the most seamless path to integrated cloud security service offerings. It ranks among the biggest cloud security companies by security revenue alone, exceeding $20 billion annually.
The security stack centers on Defender for Cloud (workload protection), Microsoft Sentinel (cloud native SIEM), and Microsoft Entra (identity and access management). Sentinel earned a Leader position in the 2025 Gartner Magic Quadrant for SIEM. Entra has been a Leader in Access Management for nine consecutive years. Security Copilot introduces agentic AI that can triage alerts, investigate incidents, and recommend response actions with minimal human intervention.
Compliance coverage spans SOC 1/2/3, ISO 27001, PCI DSS, HIPAA, FedRAMP High, and more than 100 other certifications. Azure operates 60+ regions, the largest among hyperscalers. Among cloud security solution providers, Azure is uniquely strong for hybrid deployments where on premises Windows Server, Azure Arc, and cloud workloads need unified security policies.
**Strengths.** Deepest integration with Microsoft ecosystem. Agentic AI in Security Copilot. Broadest regional coverage. Strong identity management through Entra. Extensive compliance certifications.
**Limitations.** Vendor lock in risk for non Microsoft stacks. Complex billing structure with multiple SKUs. Security features spread across different pricing tiers.
**Best for.** Enterprises running Microsoft 365 and hybrid Active Directory environments. Organizations that need unified identity and security across on premises and cloud.
## 5. Oracle Cloud Infrastructure: 4 out of 5
Oracle Cloud Infrastructure (OCI) takes a different approach to security architecture. Network virtualization is isolated by default, meaning customer traffic never shares hardware with other tenants at the network layer. Always on encryption protects all data at rest without requiring manual configuration. These design choices make OCI a strong option among cloud data security companies and cloud native security companies focused on database heavy workloads.
Cloud Guard provides automated threat detection and can trigger remediation actions based on predefined security recipes. Maximum Security Zones enforce strict policies that prevent users from weakening security configurations, even accidentally. OCI also offers a dedicated region model where an entire cloud region runs inside a customer controlled facility, which appeals to government and financial institutions with strict data sovereignty rules.
As a cyber security service provider, Oracle differentiates on price performance. OCI consistently undercuts AWS and Azure on equivalent compute and networking costs, and outbound data transfer pricing is significantly lower. Compliance certifications include SOC 1/2/3, ISO 27001, PCI DSS, HIPAA, and FedRAMP High.
**Strengths.** Isolated network virtualization by default. Always on encryption. Cloud Guard automated remediation. Competitive pricing with lower egress fees. Dedicated region option for sovereignty.
**Limitations.** Smaller service catalog and marketplace than hyperscalers. Fewer global regions (currently around 50). Community and third party ecosystem less mature.
**Best for.** Enterprise database workloads (especially Oracle DB), government agencies requiring dedicated regions, and organizations prioritizing network isolation and cost efficiency.
## 6. DigitalOcean: 3.5 out of 5
DigitalOcean built its reputation on simplicity, and its security features follow the same philosophy. Cloud Firewalls, VPC networking, free Let’s Encrypt SSL certificates, and automated backups cover the fundamentals without requiring deep security expertise. For startups and small development teams evaluating cloud service provider security, DigitalOcean keeps the barrier to entry low.
The platform holds SOC 2 Type II and ISO 27001 certifications, which satisfy baseline audit requirements for most SaaS applications. Monitoring and alerting are built into the dashboard, and Droplet (VPS) images receive regular security patches. As a cloud security solutions provider for smaller teams, DigitalOcean delivers adequate protection for applications that do not handle highly regulated data.
**Strengths.** Simple, developer friendly interface. Transparent pricing with predictable costs. SOC 2 and ISO 27001 certified. Strong documentation and community tutorials.
**Limitations.** No advanced WAF or enterprise grade DDoS protection out of the box. No FedRAMP, HIPAA BAA, or PCI DSS certification. Limited enterprise security tooling compared to hyperscalers.
**Best for.** Startups, MVPs, small development teams, and SaaS applications with standard (non regulated) security requirements.
## 7. Vultr: 3.5 out of 5
Vultr stands out for geographic reach at aggressive pricing: 32 data center locations across six continents cover markets that most cloud native security vendors skip entirely (South America, Africa, Southeast Asia). For globally distributed applications, this breadth reduces latency and supports regional data residency needs.
Security features include DDoS protection, firewall rules, VPC 2.0 for private networking, and block storage encryption. GPU instances (NVIDIA A100, A40) are available for AI and inference workloads at hourly rates, making Vultr accessible for teams experimenting with machine learning without long term commitments. Among the best cloud security vendors for developer oriented infrastructure, Vultr provides solid fundamentals at a competitive price point.
**Strengths.** 32 global locations on 6 continents. Consistently low compute and storage pricing. GPU instances for AI prototyping. Clean API, CLI, and Terraform integration.
**Limitations.** Narrow compliance coverage (SOC 2 only). Support is functional but not advisory. No managed security services. Managed database limited to PostgreSQL, MySQL, and Redis.
**Best for.** DevOps teams wanting worldwide presence at aggressive prices. Game servers, globally distributed SaaS, and AI experimentation workloads.
## Cloud Security Trends Shaping Provider Choice in 2026
Selecting a cloud provider is no longer just about compute and storage. Security capabilities increasingly determine which platform wins the deal. Here are the trends that matter most when evaluating top 10 cloud security companies and the broader market in 2026.
**Zero trust is the default model.** More than 53% of enterprises have adopted zero trust architectures, replacing traditional perimeter defenses with continuous verification of every access request. Providers that embed zero trust principles into networking and identity layers, rather than offering them as premium add ons, score higher in enterprise evaluations.
**CNAPP consolidates cloud security tooling.** Cloud Native Application Protection Platforms combine posture management, workload protection, and application security into a single control plane. Gartner projects CNAPP adoption will accelerate through 2026 as organizations look to reduce the number of disconnected security tools they manage.
**AI drives both offense and defense.** IBM reports that 16% of breaches now involve AI driven attacks, including automated phishing and deepfake impersonation. On the defense side, AI powered detection and response tools cut mean time to containment by up to 60%. Providers integrating AI natively into their security operations (rather than as a separate SKU) have a measurable advantage.
**Identity is the new perimeter.** Compromised identities account for over 70% of cloud breaches. Machine identities (API keys, service accounts, automation credentials) now outnumber human identities and are often unmanaged. Providers with strong IAM, multi factor authentication, and machine identity governance reduce the most common attack vector.
**Regulatory pressure intensifies.** The EU Cyber Resilience Act mandates vulnerability reporting starting September 2026. Updated SEC disclosure rules require U.S. companies to report material cyber incidents within four business days. These deadlines are pushing organizations toward providers with built in compliance automation and audit ready logging.
## Comparison Table
The table below summarizes key cloud security offerings across all seven providers. Use it as a quick reference when shortlisting platforms for your workload.
| Provider | Score | Built-in Security | Key Compliance | Regions | DDoS | Pricing Model | Best For |
| --- | --- | --- | --- | --- | --- | --- | --- |
| AWS | 5/5 | IAM, GuardDuty, Security Hub, Macie, Shield, WAF, KMS | SOC 1/2/3, ISO 27001, HIPAA, PCI DSS, FedRAMP High | 37 (115+ AZs) | Yes (Shield) | Pay-as-you-go + reserved | Large enterprise, regulated industries |
| Serverspace | 5/5 | DDoS protection, firewall, VPC, private networking | SLA 99.9%, secure infrastructure | US, EU, and more | Yes (included) | Pay-as-you-go (10-min) | Startups, SaaS, dev teams |
| Google Cloud | 4.5/5 | Chronicle SIEM/SOAR, BeyondCorp, Mandiant TI | SOC 1/2/3, ISO 27001, HIPAA, PCI DSS, FedRAMP | 40+ | Yes (Cloud Armor) | Pay-as-you-go + committed | Security ops, AI workloads |
| Microsoft Azure | 4/5 | Defender for Cloud, Sentinel, Entra IAM, Security Copilot | SOC 1/2/3, ISO 27001, HIPAA, PCI DSS, FedRAMP | 60+ | Yes (DDoS Protection) | Pay-as-you-go + reserved | Microsoft shops, hybrid cloud |
| Oracle Cloud | 4/5 | Cloud Guard, Max Security Zones, always-on encryption | SOC 1/2/3, ISO 27001, HIPAA, PCI DSS, FedRAMP | 48+ | Yes (included) | Pay-as-you-go + UCM | Database workloads, regulated |
| DigitalOcean | 3.5/5 | Cloud Firewalls, VPC, free SSL, backups | SOC 2 Type II, ISO 27001 | 15 | Basic | Flat monthly + hourly | Startups, MVPs, small teams |
| Vultr | 3.5/5 | DDoS protection, firewall, VPC 2.0 | SOC 2 | 32 | Yes (included) | Hourly | Dev teams, global apps, AI |
## Conclusion
The right cloud provider depends on where your workload sits on the complexity spectrum. AWS delivers the broadest security catalog for large enterprises and regulated industries. Serverspace offers the strongest balance of built in protections, transparent pricing, and fast deployment for VPS focused teams. Google Cloud and Azure dominate when deep integration with their respective ecosystems and AI driven security operations are priorities. Oracle Cloud wins on network isolation and database workload economics. DigitalOcean and Vultr serve development teams that need solid fundamentals without enterprise overhead.
Start by mapping your compliance requirements, data residency rules, and monthly budget. Then shortlist cloud based security companies that meet those constraints natively, without requiring additional third party tools. The top cloud security providers in 2026 are the ones that make strong security the default, not an upgrade.
https://serverspace.us/about/blog/what-is-vibe-coding-how-to-build-an-app-in-10-minutes-without-writing-code.mdWhat is vibe coding and how does it work in 2026? We compare the best tools (Cursor, Lovable, Replit) and a step-by-step plan to start building with AI.
In 2025, Collins Dictionary named “vibe coding” its Word of the Year. By 2026, millions of people around the world are using this approach, and most of them are not professional developers. Entrepreneurs prototype apps in an evening, marketers build landing pages without a designer, and students create their own games after class.
The idea is simple: instead of learning programming languages, you describe what you want in plain English. “Build me an expense tracker with charts by category.” An AI reads the prompt, generates working code, and hands you the result. It sounds like science fiction, but it is how software increasingly gets built. The global vibe coding market was valued at $2.96 billion in 2025, and the tools powering it are evolving at a pace that makes last year’s limitations feel like ancient history.
This guide covers everything you need to know: how the process works, which tools to use, what you can realistically build, the risks to watch out for, and how to get started even if you have never written a single line of code.
## What Is Vibe Coding and Why Is Everyone Talking About It?
Vibe coding is a software development approach where you describe a task in natural language and let AI generate the code. You run the result, review it, refine your prompt if needed, and repeat. No syntax to memorize, no frameworks to configure.
Think of an executive chef who does not stand at the stove but tells the kitchen team exactly what to cook: “Pumpkin soup, deep bowl, toasted seeds on top, a drizzle of olive oil.” The team executes, the chef tastes and adjusts. Vibe coding follows the same logic: you set the direction, AI handles the implementation.
This is not the same as no-code. Platforms like Bubble or Wix lock you into their ecosystem: you assemble interfaces from pre-built blocks, but you cannot export the code and host it wherever you want. Vibe coding produces real source code in real programming languages. You can edit it, extend it, and deploy it on any server.
The numbers confirm the scale. According to Y Combinator, 25% of startups in its Winter 2025 batch had codebases that were 95% AI-generated. Gartner forecasts that 60% of all new code will be AI-generated in 2026. Google CEO Sundar Pichai has publicly stated that over 30% of new code at Google already comes from AI. GitHub reports that 41% of all new code on its platform is now AI-generated, and its Copilot tool has surpassed 20 million users.
## How Vibe Coding Works: From Prompt to Finished App
Under the hood, vibe coding relies on large language models (LLMs) trained on billions of lines of open-source code. When you submit a prompt, the model analyzes it, matches it against patterns from its training data, and generates code that is likely to solve the task.
The entire workflow fits into four steps. First, describe your task. The more specific the prompt, the better the output. “Build a website” yields unpredictable results. “Build a single-page photography portfolio with a gallery, a contact form, and responsive layout” yields a working prototype. Second, submit the prompt to a vibe coding tool. The AI generates code in seconds. Third, run the result and see what you get. Fourth, if something is off, refine your prompt and run it again.
Andrej Karpathy, co-founder of OpenAI and the person who coined the term, described the process: “I just see stuff, say stuff, run stuff, and copy stuff, and it mostly works.” He noted that vibe coding does not require a deep understanding of every line the AI produces. But he also warned: without review, AI can generate low-quality code.
## Best Vibe Coding Tools in 2026: A Complete Comparison
The vibe coding tool landscape in 2026 splits into two categories: browser-based platforms for people who do not write code, and advanced development environments for experienced engineers.
**Browser-based platforms.** No installation required. You open a website, describe your app in plain text, and get a working result. Lovable generates both code and visual interfaces, making it one of the best options for non-technical users. Bolt.new specializes in rapid React/Next.js prototyping with one-click deployment. Replit offers a complete cloud environment: coding, testing, and hosting in one place. v0 by Vercel focuses on generating individual React components and UI elements.
**Development environments and agents.** These are tools for people who already code or are willing to learn. Cursor, a fork of VS Code, understands the context of your entire project and makes architecture-aware changes. It has over 7 million users. Claude Code operates in the terminal and delivers the highest accuracy on industry benchmarks. Windsurf offers similar functionality at a lower price. GitHub Copilot, with over 20 million users, excels at real-time code completion but is better suited for autocomplete than building apps from scratch.
The typical 2026 workflow: rapid prototype in Lovable or Bolt.new, then transfer the code to Cursor for refinement and production readiness.
| Tool | Best For | Coding Required | Key Capability | Pricing From |
| --- | --- | --- | --- | --- |
| Lovable | Founders, marketers | No | Full app generation with UI from text prompts | Free / $25 mo. |
| Bolt.new | Startups, prototyping | No | Fast React/Next.js scaffolding, one-click deploy | Free / $20 mo. |
| Replit | Students, beginners | No | Full cloud IDE: code, test, and host in one place | Free / $25 mo. |
| v0 (Vercel) | Frontend developers | Basic | React component and UI generation | Free / $20 mo. |
| Cursor | Professional developers | Yes | AI-native IDE with full codebase understanding | Free / $20 mo. |
| Claude Code | Senior developers | Yes | Terminal agent, highest benchmark accuracy | Subscription |
| GitHub Copilot | All levels | Helpful | Real-time code completion, GitHub integration | Free / $10 mo. |
## What Can You Actually Build With Vibe Coding?
The theory sounds promising, but what are people actually shipping? The range is surprisingly wide.
Andrej Karpathy himself used vibe coding to build MenuGen, a web app where you upload a photo of a restaurant menu and get back a list of dishes with realistic images. The app includes user authentication and payment integration, all generated by AI from text prompts. An indie developer known as Levesio built a flight simulator clone and monetized it with ads. A Microsoft engineer demonstrated building a full 3D shooter using only voice commands through Cursor and Claude.
Businesses are adopting the approach too. One company automated its travel and visa processing workflow, saving dozens of hours of HR time per month. Startups use vibe coding to validate ideas fast: instead of months of development, an MVP gets assembled over a weekend and lands in front of real users immediately. Customer support teams build internal chatbots that answer questions from a company knowledge base. Marketing departments generate custom landing pages for each campaign without waiting for a developer.
For beginners, the project list is even broader: portfolio landing pages, Telegram bots, expense trackers with charts, currency converters, task managers, simple browser games. Each of these can be built in a few hours by someone who has never written a line of code.
## How to Start Vibe Coding From Scratch: A Step-by-Step Plan
Never written code before? That is fine. The barrier to entry is minimal. Here is a concrete five-step plan.
**Step 1. Pick a tool.** If you have no technical background, start with Lovable or Replit. Both run in the browser with nothing to install. If you already write code or want more control, try Cursor. All you need: a computer, a browser, and an idea.
**Step 2. Write your prompt.** This is the most important skill. The more specific the prompt, the better the result. A weak prompt: “Make a fitness app.” A strong prompt: “Create a web app for tracking workouts. The user enters the exercise name, number of sets, and reps. Data is saved and displayed in a table with a delete option. Minimal, responsive design.” The difference in output will be enormous.
**Step 3. Run and iterate.** Do not expect perfection on the first try. Review what the AI produced and refine: “Add dark mode,” “Move the button to the right,” “Make the font larger.” Each new prompt brings the result closer to what you envisioned.
**Step 4. Deploy your project.** If you want others to see your app, it needs hosting. Lovable and Bolt.new can handle deployment on their own, but you remain tied to the platform. For more flexibility, a virtual server works well. For example, you can [rent a VPS on Serverspace](https://serverspace.us/services/vps-server.md) in a couple of minutes: upload your code, set up a domain, and your project is live 24/7.
**Step 5. Collect feedback and improve.** Show the result to friends, colleagues, or potential customers. Note their feedback and return to the tool for refinements. The only way to truly learn vibe coding is through practice: the more projects you try, the sharper your prompts become.
## Why 45% of AI-Generated Code Contains Vulnerabilities and Other Pitfalls
Vibe coding is powerful, but when used carelessly it introduces serious problems. The biggest one: security.
According to Veracode, roughly 45% of AI-generated code contains vulnerabilities from the OWASP Top 10: SQL injection, broken authentication, data exposure. A CodeRabbit analysis found that AI-generated code has 2.74 times more critical security flaws than human-written code. An independent test by Tenzai, covering five popular vibe coding tools and 15 test applications, uncovered 69 vulnerabilities, including several rated critical.
Real incidents confirm the statistics. Moltbook, a social network built entirely through vibe coding, leaked 1.5 million API tokens and 35,000 email addresses through an exposed database. In February 2026, a BBC journalist watched a security researcher hack an Orchids platform application live on camera, gaining access to the code and the developer’s machine.
Another trap: the illusion of productivity. METR, a nonprofit research organization, ran a randomized controlled trial with 16 experienced developers completing 246 real-world tasks. The result was surprising: developers using AI tools were 19% slower, even though they believed they were 20% faster. A significant portion of their time went to reviewing and fixing generated code. The researchers noted that developers working on large, familiar codebases saw the least benefit, while the tools may offer more value for unfamiliar projects or less experienced engineers. Google’s 2024 DORA report echoed these findings: every 25% increase in AI adoption correlated with a 1.5% dip in delivery speed and a 7.2% drop in system stability.
Other issues include technical debt (the code is hard to maintain and scale), bloated dependencies (AI pulls in libraries nobody reviewed), and slopsquatting, where the model suggests a non-existent library and attackers register a malicious package under that name.
The takeaway: vibe coding does not mean “skip the review.” Any code handling authentication, payments, or user data needs human oversight. For critical components, bring in a professional developer.
## Where Vibe Coding Works Well and Where You Should Think Twice
Vibe coding excels when speed matters and the cost of failure is low. This includes prototypes and MVPs for validating business ideas, internal company tools (dashboards, trackers, chatbots), personal projects and automation, learning projects to explore new technologies, and landing pages, portfolios, and promotional sites.
Without expert oversight, it is better to avoid vibe coding for systems that handle payments and financial data, applications processing personal user data (especially under regulations like GDPR or CCPA), high-load production systems with strict uptime requirements, and projects with complex business logic where predictable behavior is critical.
The best approach in 2026 is hybrid: let vibe coding handle the first draft and accelerate the start, then have a human review, test, and bring the result to production quality. Many teams already follow this pattern: a product manager or designer generates the initial version with a browser-based tool, and an engineer takes over for code review, security hardening, and deployment.
## What Comes After Vibe Coding: Trends and Predictions
The next step is already visible: agentic programming. Instead of a single AI generating code on request, systems of multiple agents emerge, each handling a distinct role. One agent writes code, another tests it, a third reviews security, a fourth optimizes performance. In essence, it is a virtual development team steered by text commands.
The market is growing fast: from $2.96 billion in 2025 to a projected $12.3 billion by 2027. Long-range estimates are even more striking: $325 billion by 2040. Investors have already placed their bets: Cursor (Anysphere) raised $2.3 billion at a $29.3 billion valuation, and European startup Lovable is valued at $6.6 billion.
A separate trend is embedding security checks directly into generation tools. Instead of reviewing code after it is written, AI agents will account for security during the writing process itself. Vibe coding will not replace programmers. But it is already shifting what they spend their time on: from writing code to reviewing it, designing architecture, and defining requirements.
## Conclusion
Vibe coding in 2026 is no longer an experiment. It is a working tool. For simple tasks, it already covers the full need: a prototype in an evening, a landing page in an hour, a Telegram bot in a couple of hours. For more complex projects, vibe coding accelerates the start, but human oversight remains essential.
Getting started takes 10 minutes. Pick a tool (Lovable for non-developers, Cursor for engineers), describe your first task, and hit “Run.” It costs nothing to try.
When your prototype is ready and you need to share it with the world, you will need somewhere to host it. [Rent a VPS on Serverspace](https://serverspace.us/services/vps-server.md), upload your code, and have a live application running 24/7. The entry barrier is minimal, and you will see results the same day.
https://serverspace.us/about/blog/best-cloud-hosting-for-wordpress-2026.mdLet's talk about what makes a perfect WordPress website in 2026. I've done some research and found the top 10 hosting companies!
Whether you’re running a personal blog, an online store, or a company website on WordPress, at some point you’ll face the same question: where should your site actually live? In 2026, cloud hosting has become the standard for serious projects. But the market is crowded, and the options can feel overwhelming. This guide is written so that anyone — developer or not — can find the right answer for their specific situation.
## What Is Cloud Hosting and How Is It Different from Regular Hosting?
Think of traditional shared hosting as renting a room in a communal apartment. The price is low, but you share resources with neighbors — and if one of them decides to host a viral video (or just gets a traffic spike), your site slows down. You have no say in the matter.
Cloud hosting works differently. Your website doesn’t live on a single physical server. Instead, it runs across a distributed network of machines. Resources — CPU, RAM, storage — are allocated dynamically: when more visitors arrive, the system adds capacity. When traffic drops, those resources are released. You’re not stuck with whatever was assigned at signup.
For WordPress, this matters more than for most platforms. WordPress is resource-intensive by nature, and the moment you add WooCommerce, a page builder, or a handful of popular plugins, the load increases considerably.
**The key differences between cloud and traditional shared hosting:**
- **Scalability.** Traffic spike from a viral post? The cloud handles it automatically, without you lifting a finger.
- **Reliability.** If one server in the network fails, your site keeps running on the others. Traditional hosting doesn’t work that way.
- **Transparent billing.** Many providers charge based on actual usage — you pay for what you consume, not a fixed block of resources you may never fully use.
- **Control.** You can often choose your PHP version, RAM allocation, server region, and software stack.
## Why WordPress Specifically Needs Cloud Hosting in 2026
WordPress powers roughly 43% of all websites on the internet, making it both the most popular CMS and one of the most targeted platforms for attacks. In 2026, several converging factors make cloud hosting not just a nice-to-have but a practical necessity for anyone serious about their site.
- **Core Web Vitals affect search rankings.** Google uses page speed and stability as ranking signals. A slow hosting provider directly damages your SEO, regardless of how well your content is optimized.
- **WooCommerce and traffic peaks.** Online stores on WordPress face sharp spikes during sales events. Cloud infrastructure lets you handle those peaks without paying for peak-level resources year-round.
- **Security expectations have risen.** Leading cloud providers now include built-in WAF (web application firewalls), DDoS protection, and automated backups as standard features — not premium add-ons.
- **PHP 8.x compatibility.** Modern WordPress and its ecosystem increasingly rely on PHP 8.1, 8.2, and 8.3. Cloud platforms make it easy to run and switch between PHP versions without server gymnastics.
## How Cloud Hosting for WordPress Actually Works: Step by Step
To understand what’s happening under the hood, let’s follow a single request to your WordPress site from start to finish.
- **A visitor types your domain.** Their browser sends a request to a DNS server, which resolves your domain name to an IP address and routes the request to the correct infrastructure.
- **The request hits a CDN.** Static assets — images, CSS, JavaScript — are served from the CDN node closest to the visitor. This cuts load time dramatically for users far from your main server.
- **Dynamic requests reach the web server.** Nginx or Apache receives the request and passes it to PHP, which runs your WordPress application logic.
- **WordPress queries the database.** MySQL or MariaDB stores all your content — posts, pages, settings, product data. PHP retrieves what’s needed and builds the page.
- **The response is returned.** If caching is configured (Redis, Memcached, or a plugin like WP Super Cache), repeat requests are served instantly without hitting the database at all.
On cloud infrastructure, each of these layers can scale independently. If your database is under strain, you can move it to a larger, dedicated instance without touching the web server. That kind of flexibility simply doesn’t exist on traditional shared hosting.
## Types of Cloud Hosting for WordPress
Not all “cloud hosting” is the same. There are meaningful differences between product categories, and choosing the wrong type is one of the most common mistakes people make.
### Managed WordPress Hosting
The provider handles everything: server configuration, WordPress core and plugin updates, backups, security hardening, and caching. You focus entirely on your content and business. This is the best fit for bloggers, small businesses, and anyone who doesn’t want to deal with the technical side of running a server.
_Examples: Kinsta, WP Engine, Cloudways._
### Cloud VPS (Virtual Private Server)
You get dedicated resources on a virtual machine and full control over the environment. WordPress is installed and configured by you — or using a control panel like cPanel, Plesk, or CyberPanel. This option suits developers and teams who want flexibility without the cost of a dedicated physical server.
A practical example here is [Serverspace VPS](https://serverspace.us/services/vps-server.md) — servers deploy in under a minute, support current PHP versions and MySQL, and scale easily as your project grows. It’s a solid choice for teams that prefer to manage their own stack without overpaying for managed features they don’t need.
### General-Purpose Cloud Platforms
AWS, Google Cloud, Microsoft Azure — powerful and flexible, but complex. They typically require either technical expertise or additional tools (like Bitnami or Lightsail) to simplify setup. The right choice for large projects with non-standard requirements.
### Shared Cloud Hosting
The budget option: cloud infrastructure underneath, but resources are still shared among multiple users. Fine for beginners and small sites with low traffic. Performance is better than old-school shared hosting, but you still don’t get full isolation.
## Top 10 Best Cloud Hosting Providers for WordPress in 2026
### 1. Serverspace — Best Cloud VPS for Developer Teams
If you want server-level control without paying for managed features you’ll handle yourself, [Serverspace VPS](https://serverspace.io/services/vps-server/) is a practical and cost-efficient option. Servers spin up in 1–2 minutes, ready-made LAMP and LEMP stack images are available, and PHP 8.1/8.2/8.3 is supported out of the box. The flexible billing model lets you start small and scale vertically or horizontally as your traffic grows — without migrating to a different platform. Useful for developers, agencies, and startups that want infrastructure they can actually configure.
### 2. Kinsta — Best Overall Managed WordPress Hosting
Kinsta runs on Google Cloud Platform and uses isolated LXD containers for each site — which means your neighbors on the same infrastructure have zero impact on your performance. Every plan includes a built-in CDN powered by Cloudflare, automatic daily backups, free SSL, and a well-designed dashboard called MyKinsta. It’s among the priciest options, but the reliability and support quality are consistently top-tier. Ideal for agencies, SaaS products, and high-traffic publications.
### 3. WP Engine — Best for Enterprise and E-commerce
WP Engine focuses exclusively on WordPress and has built its entire infrastructure around it. Their proprietary EverCache technology handles caching at the server level, and all plans include access to the Genesis Framework and a library of premium themes. Support teams specialize in WordPress specifically — not generic server issues. Well-suited for corporate sites, large WooCommerce stores, and digital agencies managing multiple clients.
### 4. Cloudways — Best for Flexibility Without the Complexity
Cloudways sits between managed hosting and raw cloud VPS. It acts as a management layer on top of five underlying cloud providers: AWS, Google Cloud, DigitalOcean, Linode (Akamai), and Vultr. You get the convenience of a managed platform while choosing the infrastructure that fits your needs. Hourly billing makes it practical for testing and staging environments. Redis cache, Elasticsearch, and a clean server management panel are all included.
### 5. SiteGround Cloud — Best Balance of Price and Features
SiteGround has been one of WordPress.org’s officially recommended hosts for years, and their cloud plans build on that reputation with dedicated resources and autoscaling. Their proprietary SuperCacher handles server-level caching without requiring additional plugins, and the built-in CDN improves load times globally. A good middle ground between budget shared hosting and expensive enterprise platforms.
### 6. Nexcess (Liquid Web) — Best for High-Volume WooCommerce
Nexcess specializes in WordPress and WooCommerce at scale. Automatic scaling under traffic peaks, visual regression testing for theme updates, and WooCommerce-specific optimization tools are all built into the platform. If your store generates serious revenue and downtime during a sale is unacceptable, Nexcess is designed exactly for that scenario.
### 7. DigitalOcean Droplets — Best for Developers Who Want Full Control
DigitalOcean offers multiple paths for WordPress: Droplets (virtual servers) with one-click WordPress deployment via their Marketplace, or App Platform for a more automated setup. Pricing is transparent and competitive, documentation is excellent, and the community is large. Requires comfort with Linux administration, but gives you complete freedom over your stack.
### 8. AWS Lightsail — Best Entry Point into the AWS Ecosystem
Amazon created Lightsail specifically for users who need AWS reliability without the complexity of configuring EC2, VPC, and IAM from scratch. Predictable monthly pricing, a simplified control panel, and a ready-made WordPress image make it approachable. The key advantage: if your project outgrows Lightsail, migrating to full AWS services is straightforward.
### 9. Google Cloud Compute Engine — Best for Global Reach
For teams that want to run WordPress on Google’s infrastructure directly, Compute Engine with a Bitnami image is a proven approach. Google’s global network delivers consistently low latency worldwide, and tight integration with Google Cloud CDN and Cloud SQL adds performance headroom for demanding workloads. Requires confident Linux server administration skills.
### 10. Hostinger Cloud — Best Budget Entry into Cloud Hosting
Hostinger offers one of the most affordable cloud WordPress hosting plans on the market. LiteSpeed servers with built-in caching, a free CDN, and managed updates make it genuinely usable without technical knowledge. A strong starting point for personal blogs, portfolio sites, and small businesses testing the waters of cloud infrastructure before committing to a higher tier.
## Cloud Hosting for WordPress 2026: Comparison Table
| Provider | Type | Best For | Technical Skill Needed | Starting Price/mo | Managed WordPress | Backups |
| --- | --- | --- | --- | --- | --- | --- |
| Kinsta | Managed Cloud | Blogs, agencies, SaaS | None | $35 | Yes | Daily |
| WP Engine | Managed Cloud | Enterprise, e-commerce | None | $25 | Yes | Daily |
| Cloudways | Managed VPS | Developers, agencies | Minimal | $14 | Yes | On schedule |
| Serverspace VPS | Cloud VPS | Dev teams, flexible projects | Moderate | From $3–5 | Manual | Configurable |
| SiteGround Cloud | Managed Cloud | Small and mid-size businesses | None | $100 | Yes | Daily |
| Nexcess | Managed Cloud | High-volume WooCommerce | None | $19 | Yes | Daily |
| DigitalOcean | Cloud VPS | Developers | High | $6 | No | Paid snapshots |
| AWS Lightsail | Cloud VPS | Scalable projects | Moderate | $7 | No | Snapshots |
| Google Cloud | IaaS | Enterprise, high load | High | ~$10+ | No | Configurable |
| Hostinger Cloud | Managed Cloud | Beginners, blogs | None | $9.99 | Yes | Weekly |
## How to Choose the Right Cloud Hosting for WordPress: A Step-by-Step Framework
There’s no universally “best” option — the right choice depends entirely on your situation. Here’s a practical decision process that works regardless of your technical background.
### Step 1. Define Your Site Type and Expected Traffic
A personal blog with 500 daily visitors and a WooCommerce store processing 500 orders a day are entirely different infrastructure problems. Paying for enterprise-grade hosting when you’re running a portfolio site is wasteful. Choosing a budget plan for a revenue-generating store is a false economy — downtime during peak sales will cost more than the savings.
Be honest about where you are now, and where you realistically expect to be in 12 months.
### Step 2. Assess Your Team’s Technical Level
If you’ve never used a command line and “SSH” is just a meaningless acronym, go with managed hosting (Kinsta, WP Engine, Cloudways). You’ll pay more, but you won’t spend weekends debugging server configurations. If you’re a developer or have one on your team, a cloud VPS gives you more control at a lower cost — and tools like those at [Serverspace](https://serverspace.io/services/vps-server/) make the initial setup fast enough that it’s not a significant time investment.
### Step 3. Calculate the Real Total Cost
The monthly plan price is only part of the picture. Also account for: SSL certificate cost (usually included, but verify), backup storage fees (sometimes a paid add-on), CDN costs, the price of technical support beyond the included tier, and the time cost of self-administration. A more expensive managed plan sometimes pays for itself through the hours it saves.
### Step 4. Check Data Center Locations
Load speed depends significantly on the physical distance between the server and your visitors. If your audience is primarily in North America, a European data center will add unnecessary latency. If your traffic is global, look for providers with either multiple regional data centers or a built-in CDN that distributes content globally regardless of server location.
### Step 5. Test Support Before You Commit
Ask a technical question in the live chat before purchasing. Evaluate response time, depth of knowledge, and clarity of explanation. When your site goes down on a Friday night before a product launch, support quality matters more than any feature on the pricing page.
### Step 6. Use the Trial Period on a Real Site
Most providers offer a 14 or 30-day money-back guarantee. Don’t use it to run a placeholder page. Deploy your actual site, run speed tests with GTmetrix and Google PageSpeed Insights, go through the dashboard for tasks you’d do regularly, and submit at least one support ticket. Only real usage reveals whether a platform is a good fit.
## 5 Practical Use Cases: Who Should Use What
### Case 1: Personal Blog or Portfolio
A small site, a few hundred daily visitors, budget around $10–20/month. **Best fit:** Hostinger Cloud or Cloudways on DigitalOcean. Both offer enough resources, automatic updates, and free SSL without unnecessary overhead.
### Case 2: Corporate Website
A business-facing site with moderate traffic where reliability and professional support are non-negotiable. **Best fit:** SiteGround Cloud or WP Engine Startup. Managed hosting removes technical maintenance from your team’s plate, and both providers have strong track records for uptime.
### Case 3: WooCommerce Store with Mid-Level Traffic
A few thousand daily visitors, periodic promotions, fast checkout is critical. **Best fit:** Kinsta or Nexcess. Both are optimized for WooCommerce, support Redis object caching, and scale cleanly under promotional traffic spikes.
### Case 4: Agency Managing Multiple Client Sites
10–50 sites of varying scale, need a centralized management panel and fast project creation. **Best fit:** Cloudways or Kinsta Agency Plan. Both offer multi-site dashboards and collaboration tools designed around agency workflows.
### Case 5: High-Traffic Project or Startup
Significant traffic, non-standard architecture, maximum flexibility required. **Best fit:** Cloud VPS from Serverspace or DigitalOcean Droplets, or AWS Lightsail with a migration path to EC2. Full environment control lets you optimize every component of the stack independently.
## Advantages and Limitations of Cloud Hosting for WordPress
### Advantages
- **Performance.** Dedicated resources and SSD storage keep server response times under 200ms even under sustained load — a level traditional shared hosting rarely achieves.
- **Automatic scaling.** No need to guess the right plan in advance. Resources adjust to actual demand, so you’re not over-provisioned during quiet periods or under-resourced during peaks.
- **Reliability.** Cloud infrastructure typically guarantees 99.9% uptime or better. Redundancy is built into the architecture.
- **Security.** Regular patching, firewalls, DDoS mitigation, and isolated environments are standard with reputable providers — not features you have to configure yourself.
- **Reduced maintenance burden.** On managed platforms, the provider handles WordPress core updates, server software, and security patches. Your team focuses on the product, not the infrastructure.
### Limitations and Risks
- **Higher cost.** Quality managed cloud hosting costs more than traditional shared hosting. For a very small site, the performance difference may not justify the premium.
- **Vendor lock-in.** Migrating from one managed platform to another takes time and technical effort — especially if you’ve relied on platform-specific caching, staging, or security features.
- **VPS complexity for beginners.** If you choose a bare cloud VPS without a managed layer, you need at least basic Linux knowledge. The control is valuable, but so is the responsibility.
- **Unexpected bandwidth costs.** Some providers charge for outbound traffic beyond a threshold. For media-heavy sites with large files, this can produce surprising bills.
- **Plugin restrictions on managed platforms.** Some managed WordPress hosts block plugins that conflict with their caching or security systems. Verify compatibility for any plugins critical to your workflow before committing.
## Common Mistakes When Choosing and Setting Up WordPress Cloud Hosting
### Mistake 1: Choosing by Price Alone
**Problem:** You go with the cheapest plan, the site underperforms, and conversion rates suffer. Or you overpay for a plan with resources you’ll never use.
**Solution:** Match the plan to the actual workload. Start with a tier that covers your current needs with a modest buffer. Most cloud platforms let you upgrade without migration.
### Mistake 2: Skipping Backups
**Problem:** Your site gets compromised, or a plugin update breaks the layout — and there’s no recent backup to restore from.
**Solution:** Verify that automated backups are configured and check the retention window. For business-critical sites, add a secondary backup through a plugin (UpdraftPlus, BackWPup) to external storage like Amazon S3 or Google Drive.
### Mistake 3: Not Configuring Caching
**Problem:** WordPress without caching hits the database on every single page request. On a loaded site, this creates a bottleneck that no amount of server RAM will fully compensate for.
**Solution:** Use the platform’s built-in caching layer if available (Kinsta, WP Engine, and SiteGround all have one), or add Redis object caching. On a VPS, configure this during initial server setup, not as an afterthought.
### Mistake 4: Forgetting SSL
**Problem:** A site without HTTPS is flagged as “Not Secure” by browsers, and Google penalizes it in search rankings.
**Solution:** Most providers include free Let’s Encrypt SSL certificates. Confirm that the certificate is active and that HTTP traffic automatically redirects to HTTPS. Check it — don’t assume.
### Mistake 5: Choosing a Data Center in the Wrong Region
**Problem:** Your server is in the US, but most of your audience is in Europe or Asia. Response times of 300–500ms are the result, which affects both user experience and search rankings.
**Solution:** Choose a data center closest to your primary audience. If your audience is distributed globally, add a CDN — either through the platform or a third-party service like Cloudflare.
### Mistake 6: Not Testing Speed After Migration
**Problem:** You migrate to a new host, assume everything is faster now — but speeds are the same or worse because caching isn’t configured or PHP settings weren’t carried over.
**Solution:** Run GTmetrix, PageSpeed Insights, and Pingdom before and after any migration. If numbers haven’t improved, investigate: PHP memory limit, caching configuration, image optimization, and database query performance are the usual culprits.
## How to Migrate WordPress to a New Cloud Host
Migration sounds intimidating, but it’s a well-documented process. Most reputable providers offer free migration assistance or dedicated migration plugins.
- **Create a full backup of your current site.** Database plus all files. Plugins like All-in-One WP Migration or UpdraftPlus handle this in a few clicks.
- **Set up your new environment.** Deploy the new server, install WordPress (or use a ready-made platform image), and configure PHP, caching, and SSL before importing any content.
- **Transfer files and database.** Via plugin, FTP/SFTP, or the hosting control panel. Many managed platforms handle this step for you at no additional cost.
- **Test on a temporary URL or via your hosts file.** Verify that all pages load correctly, forms work, checkout functions, and no links are broken — before touching the live domain.
- **Update DNS.** Change the A record for your domain to point to the new server’s IP. Propagation typically takes anywhere from a few minutes to 48 hours depending on your previous TTL settings.
- **Keep the old server running for 48 hours.** Don’t decommission it immediately. Wait until DNS has fully propagated and you’ve confirmed that live traffic is routing to the new host.
## Cloud Hosting for WordPress: Trends in 2026
The hosting market is evolving quickly. These are the directions actively shaping what providers offer and what buyers should look for:
- **Edge hosting and CDN at the infrastructure layer.** More providers are integrating CDN directly into the hosting platform rather than offering it as a separate service. This simplifies setup and reduces latency without requiring additional configuration.
- **Automated Core Web Vitals optimization.** Platforms are adding tools that automatically compress images, enable lazy loading, and optimize rendering pipelines — reducing the gap between a fast and a slow WordPress site without manual intervention.
- **Serverless and hybrid architectures.** Larger projects increasingly offload specific WordPress functionality to serverless functions, reducing load on the main application server and improving scalability for specific features like search or checkout.
- **AI-powered resource management.** Providers are beginning to use machine learning to predict traffic patterns and provision resources proactively — before demand peaks, not after.
- **Security built into the infrastructure.** As WordPress attacks grow more sophisticated, WAF and behavioral traffic analysis are moving from optional add-ons into the core hosting stack at most providers.
## Conclusion: How to Make the Right Call
The best cloud hosting for WordPress is the one that matches your actual situation — not the one with the most impressive feature list or the flashiest marketing page.
If you’re not technical and want things to just work, Kinsta, WP Engine, or Cloudways will serve you well. If you or your team are comfortable managing servers and want more control over cost and configuration, a cloud VPS is the smarter path. [Serverspace VPS](https://serverspace.us/services/vps-server.md) is worth a look here — fast deployment, clean infrastructure, and straightforward pricing without the managed-hosting markup for features you don’t need.
The most important thing: don’t let the decision drag on. Nearly every provider on this list offers a free trial or a money-back guarantee. Deploy a real site, run a speed test, contact support with an actual question, and use the results to decide. An hour of hands-on testing tells you more than any amount of spec comparison.
## FAQ: Frequently Asked Questions About Cloud Hosting for WordPress
What’s the difference between cloud hosting and traditional shared hosting for WordPress?
On traditional shared hosting, you share a single physical server with other users, and their traffic affects your site’s performance. With cloud hosting, resources are drawn from a distributed network and allocated dynamically — giving you better stability, genuine scalability, and isolation from other users on the same infrastructure.
Do I need technical knowledge to use cloud hosting for WordPress?
It depends on the type. Managed WordPress cloud hosting (Kinsta, WP Engine) requires no technical knowledge — the provider handles everything at the server level. Cloud VPS hosting requires at least basic Linux administration skills, but offers significantly more control and lower costs for teams that have them.
Which cloud hosting is best for a WooCommerce store?
WooCommerce puts higher demands on the database and benefits substantially from Redis object caching. Kinsta, Nexcess, and WP Engine are all well-optimized for WooCommerce and handle traffic spikes without manual intervention. If you’re managing infrastructure yourself, a well-configured cloud VPS with Redis and a database-optimized MySQL setup can match those results at lower cost.
How long does it take to migrate a WordPress site to cloud hosting?
A small site migrates in 30–60 minutes using an automated migration plugin like All-in-One WP Migration. Larger sites with heavy databases may take a few hours. Most managed platforms offer free migration handled by their support team, which removes the complexity entirely.
Does hosting affect WordPress SEO rankings?
Not directly, but the indirect effects are significant. Google uses Core Web Vitals — which measure page speed and stability — as ranking signals. Slow hosting means a slow site, which means lower rankings. Uptime also matters: if your site is frequently unavailable, search engines may reduce crawl priority. Both factors favor cloud hosting over traditional shared plans.
Is managed WordPress hosting worth the extra cost?
For most business sites and stores, yes. Managed hosting handles WordPress core updates, plugin updates, server security patches, and daily backups. The price premium is real, but so is the reduction in technical risk. An hour of downtime during peak traffic typically costs more than several months of the price difference between managed and unmanaged plans.
Can I run WordPress on a VPS without much experience?
Yes, with the right tools. Control panels like CyberPanel or Plesk simplify server management significantly, and pre-built images with a configured LAMP stack (available from providers like Serverspace) mean you’re not starting from a blank command line. For straightforward WordPress installs, the learning curve is manageable. For performance-optimized high-traffic setups, having a developer involved is worthwhile.
What happens if my site suddenly gets much more traffic than expected?
On managed cloud platforms, the infrastructure scales automatically within plan limits, and support teams can increase capacity quickly. On a cloud VPS, you can resize the server or add resources through the provider’s panel — Serverspace, for example, lets you scale CPU and RAM without downtime. On traditional shared hosting, a traffic spike typically just brings the site down.
https://serverspace.us/about/blog/what-is-openclaw-a-complete-guide-for-beginners.mdOpenClaw is an open source AI agent that runs locally and acts through your messaging apps. Learn how it works, how to install it on any OS, what it costs.
OpenClaw crossed 100,000 GitHub stars in under two weeks and became one of the fastest growing open source projects in history. The headlines mention AI religions, social networks for bots, and security nightmares. But what is openclaw, really? In short, it is an open source autonomous AI agent that runs on your machine and communicates through messaging apps you already use. Unlike a typical chatbot, it takes action: sends emails, manages calendars, runs shell commands, and reads or writes files on your behalf.
This article is both a practical openclaw installation guide for 2026 and a beginner’s primer. We will cover how the software works, what people use it for, how to install it step by step, what it costs, and the security risks you should understand before giving an AI agent access to your system.
## What Is OpenClaw and Why Did It Go Viral?
OpenClaw is a free, self hosted, open source AI agent framework released under the MIT license. It was created by Austrian developer Peter Steinberger and first published in November 2025 under the name Clawdbot. Anthropic raised trademark concerns over the similarity to Claude, prompting a rename to Moltbot and then, three days later, to OpenClaw. The lobster mascot and crustacean theme stuck.
To understand what is openclaw ai agent in practice, look past the branding. The core is a long running Node.js service called the Gateway. It connects a large language model (Claude, GPT, Gemini, DeepSeek, or a local model via Ollama) to tools on your machine, then exposes that connection through 20+ messaging channels: WhatsApp, Telegram, Slack, Discord, iMessage, and others. You message the agent like a colleague, and it responds by executing real actions. That is what is openclaw ai tool at its core: not a chatbot, but an autonomous assistant that acts.
The viral moment arrived in late January 2026 when Moltbook, a social network restricted to AI agents, launched. Over 770,000 agents registered within 72 hours. Bots created communities, debated philosophy, and spawned a digital religion called Crustafarianism. Forbes, Ars Technica, and the ACM all covered the openclaw trending what is openclaw phenomenon. On February 14, 2026, Steinberger announced he was joining OpenAI. The project moved to an independent open source foundation with OpenAI’s financial backing.
## How Does OpenClaw Work Under the Hood?
If you want to understand how does openclaw work, think of a four layer stack: Gateway, Model, Channels, and Skills. This is what is openclaw ai agent framework in architectural terms.
The **Gateway** is the heart of what is openclaw software. It is a Node.js daemon running via systemd on Linux or launchd on macOS, listening on port 18789. It manages sessions, routes messages, handles tool execution, and keeps the agent alive across reboots. A configurable heartbeat wakes it every 30 minutes to check a task list and act proactively.
The **Model** layer is the brain. OpenClaw does not contain its own language model. It connects to a provider you choose: Anthropic Claude, OpenAI GPT, Google Gemini, or a local model through Ollama. The **Channels** layer covers 20+ messaging platforms. The **Skills** layer consists of modular plugins (SKILL.md files) stored on ClawHub, which hosts over 13,700 community built skills as of early 2026.
Memory is stored as plain Markdown files on disk, persistent across sessions, editable with standard tools. This local first design is part of what is the purpose of openclaw: keeping data under your own control. That combination of autonomy, persistence, and local ownership is what makes OpenClaw what is openclaw ai assistant rather than just another chatbot.
## What Can You Actually Do with OpenClaw?
Theory aside, here is how to use openclaw in practice. Most people start with a single automation and expand from there.
**Daily briefings** are the top entry point. You configure OpenClaw to wake at a set time, query your calendar and inbox, check your task manager, and send a formatted morning summary to Telegram or WhatsApp. Setup takes about 30 minutes, and the cognitive benefit of starting each day organized makes this the highest value, lowest risk use case for beginners.
**Email automation** is where OpenClaw saves the most hours. Users report clearing backlogs of thousands of messages on day one. The agent triages incoming mail, drafts replies matching your writing style, and flags anything that needs human review. **Coding workflows** include PR reviews, test runs, refactoring, and npm publishing. Several teams run dedicated dev agents alongside separate productivity agents, each with its own persona.
**Content pipelines** cover social media scheduling, newsletter drafts, and SEO research. The agent learns your tone over time and adapts output across platforms. **Research and negotiation** produced the story that went viral: one user’s agent negotiated 4,200 dollars off a car purchase over email while the owner slept.
At the advanced end, some solo founders run multiple agents simultaneously through a single Telegram chat, each assigned a different role: strategy, development, marketing, and business operations. Shared memory files keep them aligned, while different LLM models are matched to each agent’s specialty.
## How Much Does OpenClaw Cost to Run?
A common question is how much does openclaw cost. The software is completely free (MIT license). The two real expenses are the AI model API and the hardware.
For the model, you need an API key from a supported provider. Claude Sonnet is the community default, running roughly a few dollars per month for personal use. For zero API costs, point OpenClaw at a local model through Ollama (requires a GPU). For hardware, the agent needs a machine that stays on 24/7. A Raspberry Pi, Mac Mini, or cloud VPS all work. For example, [Serverspace offers Linux VPS instances](https://serverspace.us/services/vps-server/virtualnye-servery-s-gpu/) that deploy in under a minute with per minute billing, making it easy to test without a monthly commitment.
A related question: how much did openai pay for openclaw? OpenAI did not buy the project. Steinberger joined OpenAI as an employee and the project was transferred to an independent foundation. The specific hiring terms were not disclosed.
## How to Install OpenClaw: Step by Step
This section is a practical openclaw setup guide covering every major platform. The official openclaw installation guide github repository is the authoritative source, but the steps below reflect the project as of early 2026.
### Prerequisites
You need Node.js 22+ (24 recommended), macOS/Linux/Windows (via WSL2), at least 2 GB RAM (4+ recommended), and an API key from your LLM provider. The community strongly recommends installing on a dedicated machine, not your personal computer. A VPS is ideal: on [Serverspace](https://serverspace.us/services/vps-server.md) you can spin up an Ubuntu VPS with Docker preinstalled in about 40 seconds.
### Linux and macOS
This serves as both the openclaw installation guide linux and the general default. To install openclaw on ubuntu or any Debian based system, run:
```bash
npm install -g openclaw@latest
openclaw onboard –install-daemon
```
The wizard walks you through selecting your LLM provider, entering your API key, and choosing a messaging platform. The –install-daemon flag registers the Gateway as a background service (systemd on Linux, launchd on macOS) so that OpenClaw survives reboots. This is how to start openclaw as a persistent, always on service.
### Windows
For anyone looking for an openclaw windows installation guide: OpenClaw does not run natively on Windows. Install WSL2 first by running wsl –install in PowerShell, then follow the Linux steps inside the WSL2 Ubuntu environment.
### macOS Specifics
Wondering how to install openclaw on mac? The process is identical to Linux. macOS is the best supported platform because Steinberger developed OpenClaw on Apple hardware. Native integrations with Apple Notes, Reminders, and iMessage only work on macOS.
### Docker Alternative
Docker provides an alternative openclaw deployment guide for containerized isolation:
```bash
docker pull openclaw/openclaw:latest
docker run -d –name openclaw -p 3000:3000 -v ~/.openclaw:/root/.openclaw –env-file ~/.openclaw/.env openclaw/openclaw:latest
```
The tradeoff: some native integrations do not work inside containers, but for server deployments Docker is the cleaner choice.
### Connecting a Chat Platform
This doubles as a brief openclaw telegram setup guide. For Telegram, create a bot through @BotFather, paste the token when prompted, then message the bot and approve the pairing code. For WhatsApp, scan the QR code via Linked Devices. For Discord, create an app in the Developer Portal and invite the bot. Once your bot responds to a test message, the openclaw configuration guide is complete.
## How to Manage and Troubleshoot OpenClaw
Knowing how to restart openclaw and diagnose problems covers most daily operations. **openclaw status** returns a Gateway health snapshot. **openclaw daemon restart** solves the majority of issues. **openclaw doctor** runs automated diagnostics. **openclaw logs –follow** streams real time output for debugging.
Common fixes: if the dashboard shows zero tokens, restart the daemon and verify your API key. RPC probe failed means port 18789 is blocked. Access not configured means your user ID needs pairing approval. Docker EACCES errors require fixing volume ownership.
## OpenClaw Security: Risks Every Beginner Should Know
OpenClaw is powerful, but its security track record demands honest evaluation. Multiple CVEs were published in early 2026: CVE-2026-25253 (auth token theft), CVE-2026-32056 (remote code execution), plus path traversal, sandbox escape, and command injection vulnerabilities. Patches arrived quickly, but the pace of discovery shows how young the codebase is.
The ClawHub skill registry became a direct attack vector. In the ClawHavoc campaign, 341 malicious skills compromised over 9,000 installations. Cisco found skills performing data exfiltration via prompt injection. Bitsight discovered 30,000+ publicly exposed instances in 12 days. The Dutch data protection authority warned against deploying OpenClaw on sensitive systems, and Chinese authorities restricted its use in state agencies in March 2026.
Best practices: install on a dedicated VPS, not your personal machine. Bind to localhost (127.0.0.1). Enable exec_approval mode. Vet every skill before installing. Keep the software updated weekly. On [Serverspace](https://serverspace.us/services/vps-server.md) you can configure firewall rules from the control panel, closing ports like 18789 without manually editing iptables.
## OpenClaw vs. Alternatives: How It Compares
OpenClaw is not the only autonomous agent option. The table below compares it with the most discussed alternatives as of early 2026.
| Feature | OpenClaw | NanoClaw | Nanobot | Claude Code | n8n |
| --- | --- | --- | --- | --- | --- |
| Type | Autonomous agent | Secure agent | Lightweight agent | Coding agent | Workflow engine |
| Codebase | 430k+ lines | ~5 files | 4k lines | Closed source | Open source |
| Security | Host access | Container isolation | Minimal surface | Repo scoped | Structured flows |
| Integrations | 50+ channels | Limited | 2 platforms | IDE / CLI | 1000+ nodes |
| Skills / Plugins | 13,700+ | Limited | Few | N/A | Community nodes |
| Best for | Power users | Security focus | Learning | Developers | Business automation |
Choose OpenClaw for maximum flexibility and deep messaging integration. Choose NanoClaw for security, Nanobot for learning, Claude Code for development, or n8n for structured business workflows with human approval gates.
## Conclusion
OpenClaw is the first autonomous AI agent to hit mainstream adoption. It went from a hobby project to the most starred GitHub repository in under three months, attracted backing from OpenAI, and sparked an entirely new conversation about what personal AI assistants can and should do.
For practical purposes, it already works: email triage, morning briefings, content scheduling, and coding workflows run daily for thousands of users. But the security track record demands caution. Start small: one use case, one messaging platform, consent mode on, isolated server. Expand only after you understand what the agent can and cannot be trusted to do. OpenClaw rewards patience and careful configuration far more than it rewards haste.
## FAQ
**Is OpenClaw free to use?**
Yes. OpenClaw itself is free and open source under the MIT license. How much does openclaw cost in total depends on two factors: API fees for the language model you connect (typically a few dollars per month for personal use) and the cost of the hardware or VPS where the agent runs. You can eliminate API costs entirely by using a local model through Ollama, though this requires more powerful hardware.
**What happened between OpenClaw and Anthropic?**
The original project name, Clawdbot, was too similar to Anthropic’s Claude. Anthropic raised trademark concerns, and Steinberger renamed the project to Moltbot, then almost immediately to OpenClaw. The dispute was about naming, not technology, and was resolved quickly.
**Did OpenAI buy OpenClaw?**
No. OpenAI did not acquire the project. Peter Steinberger joined OpenAI as an employee in February 2026. The OpenClaw project itself was transferred to an independent open source foundation. OpenAI sponsors the foundation financially, but the software remains MIT licensed and community governed. How much did openai pay for openclaw in terms of Steinberger’s hiring terms has not been publicly disclosed.
**Can OpenClaw work without the internet?**
Partially. If you connect it to a local model through Ollama, the AI reasoning layer works offline. However, the messaging platforms (Telegram, WhatsApp, Slack) that serve as its primary interface all require an internet connection. The WebChat and CLI interfaces can work locally.
**Is OpenClaw safe to use?**
With significant caveats. The project has had multiple critical vulnerabilities, the skill registry has been used to distribute malware, and tens of thousands of instances have been found exposed to the public internet. If you follow security best practices (isolated server, localhost binding, approval mode, skill vetting, regular updates), the risk is manageable. If you skip those steps, you are giving an AI agent root level access to your data with minimal guardrails. The project’s own documentation states there is no perfectly secure setup.
https://serverspace.us/about/blog/useful-tips-for-reducing-website-load-time.mdLearn how to optimize website speed with 10 proven techniques. Covers Core Web Vitals, image compression, CDN setup, caching, hosting tips.
Every second your website takes to load costs you visitors, revenue, and search rankings. Research by Google shows that 53% of mobile users abandon a page if it takes longer than three seconds to appear. A one-second delay in response time can reduce conversions by 7%, and nearly 80% of shoppers who experience poor site performance say they will never return.
If you have ever wondered how to speed up my website without drowning in technical jargon, this guide is for you. We will cover:
- The metrics that matter and how to measure them
- Specific optimization techniques ranked by impact
- How hosting and CDN choices shape your baseline speed
- Common mistakes that silently slow things down
Whether you run an online store, a corporate site, or a personal blog, these recommendations apply across the board. Let us start with why speed deserves your attention in the first place.
## Why Page Loading Speed Costs You Money, Rankings, and Customers
Website load time statistics paint a clear picture. Here is what happens as loading time increases, according to Google’s research:
- **1 to 3 seconds: **bounce probability rises by 32%
- **1 to 5 seconds: **bounce probability rises by 90%
- **1 to 10 seconds: **bounce probability rises by 123%
These are not edge cases. They reflect real behavior across billions of page views. The financial impact is just as direct:
- **Amazon: **every 100 milliseconds of added latency cost approximately 1% in sales.
- **BBC: **each additional second of loading time resulted in a 10% loss of visitors.
- **Portent study: **B2B sites loading in one second convert 3x better than those loading in five seconds. For e-commerce, the multiplier is 2.5x.
- **Yottaa (2025): **63% of visitors leave pages taking more than four seconds to load across 1,300+ e-commerce sites and 500 million visits.
Beyond conversions, speed affects search visibility. Google introduced page speed as a ranking factor in 2018 and expanded it in 2021 with Core Web Vitals as an official ranking signal. The March 2026 core update reinforced the weight of performance metrics in the algorithm. Sites that pass all three Core Web Vitals thresholds see 24% lower bounce rates compared to those that fail.
On mobile, every second of additional delay can cut conversions by up to 20%. And 79% of shoppers say they will not return to a site where they experienced performance problems. A slow website does not just lose individual sales. It erodes brand trust, reduces returning traffic, and weakens your position in search results over time.
## How to Check Website Speed and What the Numbers Actually Mean
Before optimizing anything, you need to measure where you stand. The first step in understanding how to check website speed is knowing that “speed” is not a single number. It is a collection of metrics, each describing a different phase of the loading experience:
- **TTFB (Time to First Byte): **how quickly your server responds. Google recommends under 0.8 seconds.
- **FCP (First Contentful Paint): **the moment when any visible content first appears on screen.
- **LCP, INP, CLS: **the Core Web Vitals, covered in detail in the next section.
To run a website load time test, you have several reliable options. The table below compares the best website speed test tools available today.
| Tool | What It Measures | Best For | Cost |
| --- | --- | --- | --- |
| Google PageSpeed Insights | Core Web Vitals, performance score, actionable recommendations | Quick audit with SEO focus | Free |
| GTmetrix | Waterfall chart, CWV, historical tracking | Deep analysis and comparisons | Free / Paid |
| Google Lighthouse | Performance, accessibility, SEO, best practices | Developers (built into Chrome DevTools) | Free |
| WebPageTest | Multi-location testing, filmstrip view, waterfall | Advanced diagnostics and regional testing | Free |
| Google Search Console | Core Web Vitals report across all site pages | Monitoring site-wide performance trends | Free |
| DebugBear | Lab and field data, competitor benchmarking | Ongoing monitoring and alerts | Paid |
**_Tip: _**_Start with PageSpeed Insights. It is free, takes seconds, and gives you a clear score with specific recommendations. For deeper investigation, use GTmetrix or WebPageTest to see the full request waterfall._
One important distinction: field data (collected from real users) matters more than lab data (simulated tests). Google uses field data at the 75th percentile to evaluate your site, meaning 75% of actual visits must meet the threshold. If you want to learn how to check page load time the way Google evaluates it, look at the CrUX data in PageSpeed Insights or Search Console.
## Core Web Vitals in 2026: The Three Metrics Google Uses to Rank Your Site
Core Web Vitals are a set of three metrics that Google uses to measure real user experience. They became an official ranking signal in 2021, and the March 2026 core update further strengthened their influence. Understanding these metrics is essential for anyone working on page loading speed optimization.
**LCP (Largest Contentful Paint)**
- Measures how long it takes for the largest visible element to fully render (hero image, video, or main text block).
- Target: under 2.5 seconds.
- Status: 67% of websites pass this threshold as of mid-2025.
**INP (Interaction to Next Paint)**
- Replaced First Input Delay (FID) in March 2024.
- Measures how quickly the page responds to clicks, taps, and key presses throughout the entire visit.
- Target: under 200 milliseconds.
- Status: 43% of sites still fail. This is the hardest metric to fix because it requires JavaScript architecture changes.
**CLS (Cumulative Layout Shift)**
- Tracks unexpected movement of visible content during loading.
- Target: score below 0.1.
- Status: highest pass rate of the three, because fixes are straightforward (explicit dimensions on images, reserved space for ads).
As of early 2026, only about 47% of websites pass all three metrics simultaneously. Sites that do pass see 24% lower bounce rates and measurably better engagement. Google evaluates at the 75th percentile of real visits, so your site needs to perform well for the vast majority of visitors, not just those on fast devices.
**_What is new in 2026: _**_Google introduced the Visual Stability Index (VSI), an extension of CLS that also accounts for layout shifts during scrolling, not only during initial page load. While still emerging, it signals a continued focus on real user experience._
## 10 Proven Ways to Improve Website Loading Speed
Now that you know what to measure, let us walk through the most effective techniques. These are ordered roughly by impact, starting with the changes that deliver the biggest improvement. Each method contributes to how to increase website speed in a meaningful, measurable way. If you have been searching for how to improve website loading speed without hiring a dedicated performance team, this section gives you a clear roadmap.
### 1. Compress and Convert Images to Modern Formats
Images account for approximately 78% of a typical web page’s total weight. The average page contains about 21 images totaling 1.9 megabytes. This makes image optimization the single highest-impact starting point.
What to do:
- Convert to WebP (25 to 34% smaller than JPEG) or AVIF (even better compression, the new standard in 2026).
- Use responsive images with srcset and sizes so mobile devices get appropriately sized files.
- Compress with tools like Imagify, ShortPixel, TinyPNG, or Squoosh.
**_Tip: _**_Switching to WebP alone can reduce time-to-interaction by 15 to 45%._
### 2. Use Lazy Loading the Right Way
Add loading=”lazy” to images, videos, and iframes below the fold. This defers their download until the user scrolls near them, reducing initial page weight and speeding up the first paint.
**_Important: _**_Never lazy-load the LCP element. If your hero image uses lazy loading, it delays the largest visible content and directly worsens your LCP score. Mark it with fetchpriority=”high” instead. For large videos, consider external hosting (YouTube, Vimeo) to offload bandwidth._
### 3. Minimize and Defer JavaScript
JavaScript is the primary factor behind poor INP scores. When a script blocks the main thread, the browser cannot respond to user interactions.
- Use async or defer on non-critical scripts to avoid blocking the initial render.
- Break large bundles into smaller chunks through code splitting.
- Audit third-party scripts regularly: each one adds roughly 34 milliseconds to load time.
- Use Web Workers to move heavy computation off the main thread.
### 4. Enable Browser and Server Caching
Caching stores copies of your site’s resources so they do not need to be downloaded again on repeat visits. Browser caching uses Cache-Control headers to tell the visitor’s browser how long to keep files locally. Server-side caching reduces the load on your backend by storing pre-generated responses.
Data suggests that proper caching can improve loading speed by 20 to 50%. Set long TTL values for static files (images, fonts, CSS) and shorter periods for HTML and API responses that change more frequently.
### 5. Switch to Modern Compression Algorithms
Not all compression is equal:
- **Gzip: **the legacy standard, widely supported but less efficient.
- **Brotli: **20 to 26% better compression than Gzip. Supported by all major browsers.
- **Zstandard: **emerging format, grew from 3% to 12% CDN adoption in one year. Excellent speed-to-compression ratio.
Most modern web servers and CDN providers support Brotli out of the box, often requiring just a configuration toggle.
### 6. Use a Content Delivery Network (CDN)
A CDN distributes copies of your static content across servers worldwide, so each visitor gets data from the nearest location. Over 40 million websites already use CDN technology. The performance gains are significant: global latency reduction of 30 to 60%, and DNS response times 19% faster on mobile. We cover CDN strategy in more detail below, and it is how to get web pages to load faster for a geographically distributed audience.
### 7. Minify CSS and HTML
Minification removes whitespace, comments, and unused code. While each file may only shrink by a few kilobytes, the cumulative effect across an entire page can be substantial. For even greater impact, inline your critical CSS directly into the HTML for above-the-fold content and defer loading the rest. E-commerce projects that combined inline critical CSS with server-side rendering have reported 40% improvements in LCP.
### 8. Optimize Web Fonts
Fonts are a frequent but overlooked cause of slow rendering and layout shifts. Key steps:
- Self-host your fonts instead of loading them from Google Fonts (eliminates DNS lookups).
- Use WOFF2 format for the smallest file size.
- Apply font-display: swap so text stays visible while fonts load.
- Preload above-the-fold fonts with .
### 9. Preload Critical Resources and Use Resource Hints
Resource hints tell the browser about files it will need soon. Use for your hero image, critical CSS, and essential fonts. Use for third-party domains your page relies on.
A newer and more powerful tool is the Speculation Rules API. It allows developers to instruct the browser to prefetch or even fully prerender pages the user is likely to navigate to next. Supported in Chromium-based browsers, it enables near-instant page transitions. This is particularly valuable for e-commerce sites, news portals, and documentation platforms where users frequently move between pages.
### 10. Upgrade to HTTP/2 or HTTP/3
HTTP/2 introduced multiplexing, allowing multiple files to download simultaneously over a single connection. HTTP/3, built on the QUIC protocol, goes further with faster connection setup and better performance on unstable mobile networks. Both require an SSL certificate, which you should already have for SEO and security.
CDN providers are leading HTTP/3 adoption: Cloudflare has achieved 69% HTTP/3 usage across its network, while origin servers lag at under 5%. If your hosting or CDN supports it, enabling HTTP/3 is one of the easiest performance wins available.
## How a CDN Helps Improve Page Load Time Across the Globe
When a visitor in Tokyo requests a page from a server in New York, the data has to travel approximately 6,700 miles. A typical network round trip between distant locations can take over 290 milliseconds, and loading a full page involves multiple round trips. Multiply that across dozens of resources, and the delay becomes noticeable.
A CDN eliminates this distance problem by caching your static assets on edge servers distributed globally. Instead of connecting to your origin server, visitors connect to the nearest CDN node, reducing round-trip time to single-digit milliseconds in many cases. This directly helps improve page load time for every visitor, regardless of location.
Beyond raw speed, modern CDNs bring several additional benefits:
- Automatic Brotli or Zstandard compression at the edge
- HTTP/3 support without changes to your origin server
- DDoS protection and traffic filtering
- Reduced load on your origin during traffic spikes
According to the HTTP Archive’s 2025 analysis, CDNs deliver DNS responses 19% faster on mobile and 60% faster on desktop compared to origin servers. Leading CDN providers reach 69% HTTP/3 adoption, compared to less than 5% for origin servers.
Cloud hosting providers like [Serverspace offer CDN with points of presence across three continents](https://serverspace.us/services/cdn.md), allowing you to activate content acceleration directly from the server management panel without integrating external services. When your VPS and CDN come from the same provider, the setup is simpler and the performance pipeline is tighter.
## Why Your Hosting Is the Foundation of Website Speed
Every optimization technique discussed above builds on one foundational layer: how fast your server responds to the initial request. This metric, Time to First Byte (TTFB), sets the ceiling for everything else. If your server takes a full second just to begin sending data, no amount of image compression or JavaScript optimization will make the page feel fast. Google recommends a TTFB of 0.8 seconds or less.
Shared hosting is the most affordable option, but it means your site shares CPU, RAM, and disk I/O with hundreds of other sites. Under load, TTFB becomes unpredictable. A VPS provides dedicated resources and consistent performance, which is why it is the recommended baseline for any website speed optimization service where reliability matters.
When evaluating hosting for performance, look for:
- **NVMe SSD storage **for significantly faster read/write speeds compared to traditional SSDs.
- **Data center location **close to your target audience to minimize baseline latency.
- **Scalability **to add CPU and RAM without migrating, so performance grows with your traffic.
- **Server software presets **(Nginx, caching modules) to reduce setup time.
For projects where stable response time is a priority, [a VPS on Serverspace](https://serverspace.us/services/vps-server.md) provides SSD storage, a choice of data centers across North America, Europe, and other regions, and the flexibility to scale resources on demand.
## 5 Mistakes That Quietly Kill Your Website Speed
- **Lazy loading the hero image. **This is the most common performance mistake in 2026. The hero image is almost always the LCP element. Applying lazy loading to it delays the largest visible content and worsens your Core Web Vitals. Mark it with fetchpriority=”high” and never add loading=”lazy” to anything above the fold.
- **Ignoring mobile performance. **The average load time on mobile is 8.6 seconds, compared to 2.5 on desktop. Google uses mobile-first indexing, meaning your mobile version determines your ranking. Optimizing for desktop while neglecting mobile is optimizing for the wrong target.
- **Overloading with plugins and third-party scripts. **Every external script adds HTTP requests and blocks rendering. Analytics tools, chat widgets, social media embeds, and tracking pixels all compete for bandwidth. According to Yottaa, nearly 4% of total page load time comes from third-party applications. Audit your scripts regularly and remove anything nonessential.
- **Treating speed optimization as a one-time project. **New content, updated plugins, added features, and redesigns all introduce potential slowdowns. A site that scored 95 on PageSpeed Insights six months ago can easily drop to 70. Schedule regular audits, set up alerts, and test after every significant change.
- **Skipping explicit image dimensions. **Images without defined width and height cause layout shifts as they load, directly hurting CLS. This is one of the simplest fixes in web performance: add width and height to every , https://serverspace.us/about/blog/top-cloud-providers-for-kubernetes-2026.mdLooking for the best Kubernetes cloud provider in 2026? Our expert comparison covers Serverspace, Google GKE, AWS EKS, and top competitors - revealing hidden costs, performance benchmarks, and which platforms deliver real value beyond marketing hype.
The Kubernetes landscape continues to evolve rapidly, and choosing the right cloud provider for your container orchestration needs has never been more critical. As we navigate through 2026, businesses demand more than just basic K8s deployment—they need reliability, performance, and cost-effectiveness. This comprehensive guide examines the leading cloud providers that are setting the standard for Kubernetes hosting this year.
## What Makes a Great Kubernetes Cloud Provider in 2026?
Before diving into our rankings, it’s essential to understand what separates exceptional Kubernetes providers from the rest. Modern businesses require providers that offer seamless cluster management, robust security features, and transparent pricing models. The ability to scale effortlessly, coupled with responsive technical support, has become non-negotiable.
Performance metrics matter significantly in 2026. Network latency, storage I/O speeds, and compute efficiency directly impact application responsiveness. Additionally, the integration ecosystem—how well the provider works with CI/CD pipelines, monitoring tools, and DevOps workflows—can make or break your development velocity.
## 1. Serverspace 5 / 5
[Serverspace](https://serverspace.us/services/managed-kubernetes.md) has emerged as a formidable player in the Kubernetes hosting arena, distinguished by its focus on simplicity without sacrificing power. Their managed Kubernetes solution delivers enterprise-grade capabilities with a refreshingly straightforward approach that DevOps teams genuinely appreciate.
What sets Serverspace apart is their commitment to transparent, predictable pricing. There are no hidden costs or surprise charges for essential features that other providers often bundle as premium add-ons. The platform offers genuine pay-as-you-grow flexibility, making it ideal for startups and established enterprises alike.
The deployment experience on Serverspace is remarkably smooth. Spinning up a production-ready Kubernetes cluster takes minutes, not hours. Their control panel strikes the perfect balance between accessibility for newcomers and depth for experienced architects. Automated backup systems and one-click cluster upgrades eliminate much of the operational burden traditionally associated with K8s management.
Serverspace’s infrastructure spans multiple global locations, ensuring low latency for distributed teams and applications. Their network architecture is optimized specifically for containerized workloads, resulting in impressive inter-pod communication speeds. Technical support responds promptly, with engineers who actually understand Kubernetes rather than reading from generic scripts.
For organizations prioritizing reliability, Serverspace’s SLA commitments are backed by robust infrastructure redundancy. Their monitoring dashboard provides real-time insights into cluster health, resource utilization, and potential bottlenecks before they impact production.
**Key Strengths:**
- Transparent pricing with no hidden fees
- Production-ready clusters in under 5 minutes
- Free managed control plane
- 24/7 expert Kubernetes support
- Optimized network for containerized workloads
## 2. Google Kubernetes Engine (GKE) 4 / 5
Google’s GKE remains a significant presence in the Kubernetes market, largely due to Google’s foundational role in creating Kubernetes itself. The platform offers deep integration with Google Cloud’s broader ecosystem of services.
GKE provides autopilot mode for hands-off cluster management, which appeals to teams wanting to minimize operational overhead. The platform handles node provisioning, scaling, and security patching automatically. Multi-cluster management capabilities allow organizations to orchestrate workloads across different regions and environments.
The learning curve can be steep for teams unfamiliar with Google Cloud’s service architecture. Integration with non-Google services sometimes requires additional configuration work compared to more provider-agnostic solutions.
**Key Strengths:**
- Created by Kubernetes originators
- Autopilot mode for automated management
- Strong integration with Google Cloud services
- Multi-cluster orchestration capabilities
## 3. Amazon Elastic Kubernetes Service (EKS) 4 / 5
Amazon’s EKS has established itself as a go-to option for organizations already invested in the AWS ecosystem. The service integrates tightly with AWS’s extensive portfolio of cloud services, from databases to machine learning tools.
EKS offers solid reliability and benefits from AWS’s massive global infrastructure. Features like Fargate integration allow serverless Kubernetes deployments, eliminating the need to manage worker nodes entirely. IAM integration provides granular access control that enterprises often require.
Cost structures can become complex, with charges accumulating across multiple service dimensions. Organizations frequently discover their actual spending exceeds initial estimates once data transfer, load balancing, and storage costs are factored in.
**Key Strengths:**
- Deep AWS ecosystem integration
- Fargate serverless Kubernetes option
- Extensive global infrastructure
- Enterprise-grade IAM controls
## 4. DigitalOcean Kubernetes (DOKS) 3.5 / 5
DigitalOcean has carved out a niche by targeting developers and small-to-medium businesses with their straightforward approach. DOKS emphasizes ease of use and predictable pricing, making Kubernetes accessible to teams without extensive DevOps expertise.
The platform’s documentation is exceptionally clear, with tutorials that actually reflect real-world use cases. Cluster creation is streamlined, and the interface avoids overwhelming users with unnecessary complexity. For teams running simpler architectures, DOKS provides everything needed without extra bells and whistles.
The platform works well for specific use cases but may require evaluation against more robust alternatives as infrastructure demands grow more sophisticated.
**Key Strengths:**
- Extremely user-friendly interface
- Clear, practical documentation
- Predictable pricing structure
- Fast cluster deployment
## 5. Microsoft Azure Kubernetes Service (AKS) 4 / 5
Azure’s AKS appeals particularly to organizations with existing Microsoft enterprise agreements or hybrid cloud requirements. The platform excels at bridging on-premises infrastructure with cloud-based Kubernetes deployments.
AKS integrates seamlessly with Azure Active Directory, making it attractive for enterprises with complex identity management requirements. Azure Arc extends Kubernetes management capabilities to edge locations and other cloud providers. For organizations running Windows containers alongside Linux workloads, AKS provides mature support.
The Azure ecosystem’s breadth means there’s often multiple ways to accomplish the same goal, which can create decision paralysis. Pricing calculators help but don’t always capture the full cost picture.
**Key Strengths:**
- Excellent hybrid cloud capabilities
- Azure AD integration
- Strong Windows container support
- Azure Arc for multi-cloud management
## 6. Linode Kubernetes Engine (LKE) 3.5 / 5
Linode’s Kubernetes offering focuses on delivering solid functionality at competitive price points. The company’s straightforward approach resonates with developers tired of convoluted pricing schemes and unnecessary feature bloat.
LKE provides reliable performance with a no-nonsense approach to cluster management. Their support team is known for technical competence and reasonable response times. For budget-conscious projects that still demand production-grade reliability, LKE merits consideration.
The platform delivers consistent performance suitable for many standard workloads and represents a viable option in the mid-market segment.
**Key Strengths:**
- Competitive pricing
- Straightforward management
- Reliable performance
- Technically competent support
## How Do Pricing Models Compare Across Providers?
Understanding the true cost of Kubernetes hosting requires looking beyond advertised rates. Serverspace’s transparent pricing includes everything needed to run production clusters without surprise add-ons. You pay for the resources you consume—compute, storage, and bandwidth—with clear per-unit costs.
Traditional cloud giants often employ complex pricing matrices where control plane costs, data egress fees, load balancer charges, and persistent volume expenses accumulate separately. A cluster that appears affordable based on compute costs alone might become expensive once all components are considered.
Calculate total cost of ownership by factoring in not just infrastructure expenses but also the engineering time required for setup, maintenance, and troubleshooting. Platforms that minimize operational complexity deliver value beyond their sticker price.
## What About Performance and Reliability?
Performance benchmarks matter, but real-world reliability often depends on architecture decisions rather than provider alone. That said, underlying infrastructure quality significantly impacts application responsiveness.
Serverspace’s network is optimized for containerized workloads, with low-latency connections between availability zones. Storage systems utilize NVMe drives that deliver consistent IOPS even under load. Their infrastructure redundancy ensures that individual hardware failures don’t cascade into application downtime.
When evaluating providers, examine their SLA terms carefully. Some guarantee impressive uptime percentages but limit compensation for breaches. Look for providers that demonstrate confidence in their infrastructure through meaningful SLA commitments backed by automatic credits.
## Which Provider Offers the Best Developer Experience?
Developer experience encompasses everything from initial cluster creation to daily operational tasks. Serverspace excels here with an intuitive interface that doesn’t require mastering provider-specific terminology. Their API documentation is comprehensive, and CLI tools work predictably across different operating systems.
The ability to quickly iterate matters enormously for development velocity. Platforms that require extensive configuration before deploying even simple applications create friction that compounds over time. Look for providers offering sensible defaults that work out of the box while still allowing customization when needed.
Integration with popular development tools—GitLab, GitHub Actions, Jenkins, and similar—should be straightforward. The best providers offer official plugins and clear examples rather than leaving integration as an exercise for users.
## Security Considerations for Kubernetes in 2026
Security remains paramount as Kubernetes deployments increasingly handle sensitive data and critical workloads. Modern providers must offer network policies, secrets management, and regular security updates as baseline features, not premium add-ons.
Serverspace implements security best practices by default, with encrypted inter-node communication and regular vulnerability scanning. Role-based access controls allow granular permission management without requiring security expertise. Compliance certifications provide assurance for organizations in regulated industries.
Evaluate how providers handle security updates to Kubernetes itself and underlying node operating systems. Automated patching with configurable maintenance windows minimizes security exposure without requiring manual intervention.
## Comparison Table: Top Kubernetes Providers at a Glance
| Feature | Serverspace | GKE | EKS | DOKS | AKS | LKE |
| --- | --- | --- | --- | --- | --- | --- |
| Pricing Transparency | Excellent | Moderate | Complex | Good | Complex | Good |
| Deployment Speed | Under 5 min | 5-10 min | 10-15 min | Under 5 min | 10-15 min | 5-10 min |
| Global Locations | Multiple | Extensive | Extensive | Limited | Extensive | Growing |
| Managed Control Plane | Yes | Yes | Yes | Yes | Yes | Yes |
| Auto-Scaling | Yes | Yes | Yes | Yes | Yes | Yes |
| Free Control Plane | Yes | No | Charged | Yes | Yes | Yes |
| 24/7 Support | Yes | Tiered | Tiered | Limited | Tiered | Yes |
| Learning Curve | Low | Moderate | Moderate | Low | Moderate | Low |
| Best For | All sizes | Google users | AWS users | SMBs | Microsoft shops | Value seekers |
## Making Your Decision
Choosing a Kubernetes provider in 2026 requires balancing multiple factors: cost transparency, performance, ease of use, and support quality. While established cloud giants offer extensive ecosystems, their complexity and pricing models don’t suit every organization.
Serverspace represents a compelling option for businesses seeking enterprise-grade Kubernetes without enterprise-grade complexity or costs. Their focus on transparent pricing, intuitive management, and responsive support addresses the pain points that developers and operations teams actually experience daily.
The right choice ultimately depends on your specific requirements, existing infrastructure investments, and team capabilities. However, for organizations prioritizing straightforward deployment, predictable costs, and reliable performance, Serverspace delivers exceptional value that’s hard to match in the current market landscape.
As Kubernetes continues maturing, the providers that succeed will be those that reduce operational friction while maintaining the flexibility that makes Kubernetes powerful. Evaluate providers based on your actual needs rather than feature checklists, and don’t hesitate to test multiple options before committing long-term.
https://serverspace.us/about/blog/best-cloud-vps-providers-2026-expert-comparison.mdNot all cloud VPS providers are built the same—and the cheapest option rarely stays cheap once egress fees kick in. We broke down Serverspace, Linode, DigitalOcean, UpCloud, and more so you know exactly what you're paying for in 2026.
Selecting the right cloud VPS provider in 2026 means navigating a crowded marketplace where marketing claims often exceed actual performance. The decision impacts everything from application latency to monthly operational costs, making it critical to look beyond surface-level specifications. This comprehensive analysis evaluates the leading cloud VPS providers based on real-world performance, pricing transparency, support quality, and long-term value.
## What Defines a Top-Tier Cloud VPS Provider in 2026?
The cloud infrastructure landscape has matured significantly, and baseline expectations have shifted. Simply offering virtual private servers isn’t enough anymore—businesses need providers that deliver consistent performance, predictable billing, and infrastructure that scales without introducing complexity or hidden costs.
Modern VPS evaluation requires examining several dimensions simultaneously. Raw compute specifications matter, but so do network quality, storage I/O consistency, and the actual experience of managing servers through the provider’s interface. The best providers optimize for developer productivity rather than just technically impressive datasheets.
Transparency separates exceptional providers from mediocre ones. Billing models that accumulate charges across multiple dimensions—egress fees, snapshot storage, load balancer costs—create unpredictability that undermines budget planning. The providers featured here were evaluated on total cost of ownership rather than advertised starting prices that rarely reflect real-world spending.
## How We Evaluated These Cloud VPS Providers
Each provider was assessed across five key criteria: infrastructure quality and consistent performance under load, pricing transparency and total cost predictability, control panel usability and API maturity, support responsiveness and technical competence, and the provider’s track record for reliability and uptime. Scores range from 1 to 5, with half-point increments reflecting meaningful distinctions in overall value.
Testing included deploying identical workloads across providers, measuring network latency from multiple geographic regions, evaluating storage I/O performance under concurrent load, and analyzing actual monthly costs for representative use cases. Support quality was assessed through direct interactions across different communication channels.
## 1. Linode (Akamai Cloud Compute) 4.5 / 5
Linode has built a reputation over nearly two decades by focusing relentlessly on what developers actually need rather than chasing enterprise feature bloat. Since Akamai’s acquisition in 2022, the platform has expanded its global footprint and CDN integration capabilities while maintaining the straightforward approach that made it popular with technical teams.
The compute instances deliver genuinely competitive price-to-performance ratios. Their Shared CPU plans start at $5 monthly for 1GB RAM and 25GB SSD storage, providing legitimate value for development environments and lighter production workloads. Dedicated CPU instances utilize AMD EPYC processors with guaranteed resources, eliminating the noisy neighbor problems that plague cheaper VPS offerings. Storage is exclusively NVMe-based across all tiers, ensuring consistent disk performance that doesn’t degrade under load.
What distinguishes Linode operationally is interface clarity. The Cloud Manager dashboard presents exactly the information you need without unnecessary complexity—server status, resource utilization, network graphs, and backup configurations are accessible without hunting through nested menus. Provisioning a new instance takes under sixty seconds from clicking “Create” to SSH access. The API is well-documented with client libraries for major programming languages, making infrastructure-as-code implementations straightforward.
Network performance benefits from Akamai’s global backbone, with 11 data center regions spanning North America, Europe, and Asia-Pacific. All plans include generous bandwidth allocations—the entry-level $5 instance includes 1TB monthly transfer, with additional bandwidth priced at $0.01/GB rather than the premium rates charged by hyperscalers. Cross-region private networking via VLAN enables building distributed architectures without exposing traffic to the public internet.
Linode’s backup system operates outside the primary storage infrastructure, with automatic daily, weekly, and biweekly snapshots retained according to configurable schedules. Restoration completes quickly, typically within minutes for standard instance sizes. The managed database offerings (MySQL, PostgreSQL, MongoDB) handle replication and automated failover, reducing operational overhead for teams that prefer not to manage database infrastructure directly.
Support quality remains consistently solid across tiers. Even without purchasing premium support plans, ticket responses typically arrive within two hours, with staff demonstrating actual technical knowledge rather than following rigid troubleshooting scripts. The community forum and extensive documentation library mean most common questions are already answered comprehensively.
Where Linode occasionally shows limitations is in advanced managed services compared to full public cloud platforms. Organizations requiring extensive platform-as-a-service offerings or deeply integrated cloud-native services may need to implement more tooling themselves. However, for teams comfortable with infrastructure management or using containerized deployments, Linode provides exceptional value without unnecessary complexity.
**Key Strengths:**
- Transparent, predictable pricing without hidden fees
- Consistent NVMe storage performance across all tiers
- Generous bandwidth allocations included
- Straightforward interface and excellent documentation
- Reliable support with technically competent staff
**Pricing:** From $5/month. Dedicated CPU from $36/month. Block storage $0.10/GB monthly.
## 2. Serverspace 5 / 5
Serverspace represents what happens when a cloud provider is built by engineers who have actually operated infrastructure at scale and understand the friction points that waste time and money. Their platform eliminates the common pain points—billing surprises, slow provisioning, unresponsive support—that developers grudgingly accept as industry standard elsewhere.
The infrastructure foundation is genuinely impressive. Servers utilize 2nd Generation Intel Xeon Scalable processors with NVMe SSD storage delivering up to 30,000 IOPS. That specification matters less than the consistency—performance doesn’t degrade during neighbor activity or peak hours because resource allocation is properly isolated. Network connectivity leverages multiple tier-1 carriers with automatic failover, ensuring that connectivity issues don’t cascade into application downtime.
Serverspace’s billing model deserves specific attention because it differs fundamentally from competitors. Charging occurs every 10 minutes based on actual resource consumption, not hourly blocks. For workloads with variable demand or development environments that run intermittently, this granularity translates into meaningful cost savings. There are zero egress fees—unlimited traffic is included regardless of tier. This single architectural decision eliminates an entire category of surprise charges that plague AWS and similar platforms.
The control panel represents thoughtful design rather than feature accumulation. Creating a new VPS requires selecting your Linux distribution, choosing resources, and clicking deploy—servers are accessible via SSH in under 60 seconds. The interface provides exactly the operational visibility needed: real-time resource graphs, traffic statistics, backup status, and firewall configurations, all without unnecessary decoration or confusing terminology. The REST API, CLI tooling, and Terraform provider enable full infrastructure automation without wrestling with authentication complexity or incomplete documentation.
Geographic distribution spans multiple regions across North America, Europe, and Asia, with additional locations added regularly based on customer demand rather than arbitrary expansion goals. All regions maintain the same performance characteristics and pricing, avoiding the premium charges for “preferred” locations common elsewhere.
Backup functionality is included without additional charges—not as a marketing checkbox, but as actual operational capability. Automated snapshots run according to configurable schedules, stored redundantly separate from primary infrastructure. Restoration is genuinely fast, typically completing in under five minutes for standard server sizes. Disaster recovery planning becomes straightforward rather than an exercise in reading service dependency diagrams.
What genuinely distinguishes Serverspace is support quality. 24/7 availability isn’t tiered behind premium support contracts—every customer receives access to engineers who understand infrastructure architecture, not just password reset procedures. Response times average under 15 minutes for critical issues, with staff who can actually troubleshoot complex problems rather than escalating everything to backend teams. This alone justifies choosing Serverspace for production workloads where downtime costs real money.
Security implementation follows industry best practices by default rather than requiring manual hardening. DDoS protection operates at the network edge, filtering malicious traffic before it reaches your instances. Firewall rules are stateful and easy to configure through either the control panel or API. Two-factor authentication secures account access, with SSH key management integrated cleanly into the deployment workflow.
The managed Kubernetes offering deserves mention because it demonstrates Serverspace’s approach to complex services—make them accessible without hiding important details. Deploying a production-ready K8s cluster takes minutes, with automated updates and monitoring included. The implementation uses standard upstream Kubernetes rather than proprietary variants, avoiding lock-in while maintaining compatibility with the broader ecosystem.
For organizations evaluating total cost of ownership rather than just infrastructure line items, Serverspace’s model reduces both direct costs and operational overhead. Teams spend less time managing infrastructure quirks and more time building applications. That efficiency compounds over time, making Serverspace particularly attractive for businesses where engineering productivity directly impacts business outcomes.
**Key Strengths:**
- Per-10-minute billing eliminates waste from hourly rounding
- Zero egress fees regardless of traffic volume
- Sub-60-second provisioning for new instances
- 24/7 expert support included without premium tiers
- Transparent pricing with no hidden charges
- Consistent NVMe performance up to 30,000 IOPS
- Automated backups included across all plans
**Pricing:** From $5.71/month. Custom configurations available. API, CLI, and Terraform support included.
**Learn more:** [Serverspace Cloud VPS](https://serverspace.us/index.md)
## 3. Kamatera 4 / 5
Kamatera positions itself as the customizable cloud, and that description is accurate—the platform offers unusual flexibility in configuring server specifications down to individual resource components. Rather than selecting from predefined tiers, you choose exactly how many CPU cores, how much RAM, and what storage capacity you need, paying only for the resources selected.
This configurability appeals to organizations with specific workload requirements that don’t map cleanly to standard server sizes. Running applications that are memory-intensive but don’t need extensive CPU resources? Configure servers with 32GB RAM and 2 CPU cores rather than paying for 8 cores you won’t utilize. Storage can be added in 20GB increments, preventing over-provisioning waste.
The infrastructure spans 13 data centers globally, with particularly strong presence in North America and Europe. Performance is generally solid, though not exceptional—servers deliver reliable baseline performance suitable for most web applications, databases, and development environments. Network latency is reasonable from well-connected locations, though some edge regions may experience higher latency than providers with more extensive global networks.
Kamatera offers a 30-day free trial with $100 in credits, providing genuine opportunity to test the platform under real workloads before committing financially. The trial includes full platform access without artificial limitations, which is increasingly rare as providers move toward restricted demo environments.
The control panel is functional but shows its age compared to more modern competitors. Accomplishing basic tasks requires navigating multiple screens, and the interface occasionally presents information in ways that assume familiarity with Kamatera’s specific terminology. The learning curve isn’t prohibitive, but it’s steeper than providers that have invested heavily in interface modernization.
Support quality varies by plan level. Basic support operates during business hours with ticket-based response, which can mean delays for issues occurring outside standard hours. Premium support tiers add 24/7 availability and faster response times, but at additional cost. Staff knowledge is generally adequate for common problems, though complex architectural questions sometimes require escalation.
Pricing starts at approximately $4 monthly for minimal configurations, scaling based on selected resources. The à la carte model provides transparency but requires careful calculation to understand total costs for complete infrastructure. Additional charges apply for features like automated backups, load balancers, and managed firewalls, so final costs can accumulate beyond base server pricing.
For specific use cases—organizations needing unusual resource ratios or running workloads with well-defined requirements—Kamatera’s customization options provide value. However, teams preferring streamlined deployment with sensible defaults may find the configuration flexibility more burden than benefit.
**Key Strengths:**
- Highly customizable server configurations
- Pay only for specific resources needed
- 30-day free trial with $100 credits
- 13 global data center locations
- Windows and Linux support
**Pricing:** From $4/month for minimal configurations. Pricing scales based on selected resources.
## 4. DigitalOcean 4 / 5
DigitalOcean built its reputation by making cloud infrastructure accessible to developers through simplicity and clear documentation. That focus remains evident throughout the platform—from the streamlined control panel to the extensive tutorial library that actually helps rather than just existing as marketing content.
The Droplet product line (DigitalOcean’s term for VPS instances) offers several tiers optimized for different workload characteristics. Basic Droplets provide shared CPU resources suitable for development, testing, and lighter production applications, starting at $4 monthly for 512MB RAM. General Purpose Droplets use dedicated CPU resources with balanced compute, memory, and storage ratios appropriate for most production workloads. CPU-Optimized and Memory-Optimized variants cater to specific performance requirements.
Infrastructure utilizes Intel and AMD processors with SSD storage across all tiers. Performance is consistent and reliable, though not exceptional compared to providers using exclusively NVMe storage. Network speed is capped based on Droplet size—smaller instances receive 1TB monthly transfer allowance with 1Gbps bandwidth, while larger configurations receive proportionally more transfer and faster network speeds up to 12Gbps.
Geographic distribution covers 15 data center regions globally, with particularly strong coverage in North America and Europe. Adding regions in Asia-Pacific and other locations has expanded the platform’s reach, making it viable for globally distributed applications. Private networking within regions enables building secure multi-server architectures without exposing internal traffic.
DigitalOcean’s documentation genuinely stands out as exceptional. The tutorial library covers thousands of topics from basic Linux administration to complex distributed system architecture, written clearly by people who understand the subject matter. For developers learning infrastructure management or troubleshooting specific technical problems, this resource library provides substantial value beyond the infrastructure itself.
The control panel is intentionally streamlined, presenting core functionality without overwhelming users with advanced options. Creating Droplets, managing firewalls, configuring load balancers, and reviewing monitoring data all happen through an interface that feels responsive and logical. The API is well-documented with official client libraries for major languages, and the CLI tool (doctl) works reliably for command-line infrastructure management.
Managed services extend beyond basic VPS to include managed databases (PostgreSQL, MySQL, MongoDB, Redis), managed Kubernetes clusters, and serverless functions. These services reduce operational burden for teams that prefer not to manage database replication or Kubernetes control planes directly. Pricing for managed services sits in the mid-range—more expensive than self-managing on basic VPS but less costly than comparable services on AWS or Google Cloud.
Support operates on a tiered model. Basic support provides ticket-based assistance during business hours, with response times typically within 24 hours. Priority support (available through higher-tier plans or paid add-on) adds 24/7 availability with target response times under 4 hours. Support quality is generally adequate for common issues, though complex architectural questions sometimes receive generic responses.
Pricing is straightforward with clear monthly rates for each Droplet tier. Data transfer is included up to the monthly allowance, with additional transfer charged at $0.01/GB. Backup functionality costs an additional 20% of the Droplet price monthly, and snapshots consume storage at $0.05/GB monthly. These additional costs are transparent but require factoring into total cost calculations.
DigitalOcean works well for developers and small-to-medium businesses that value simplicity and excellent documentation over extensive enterprise features. The platform provides solid reliability without unnecessary complexity, making it particularly suitable for teams without dedicated infrastructure specialists.
**Key Strengths:**
- Exceptionally clear documentation and tutorials
- Streamlined, user-friendly control panel
- Solid reliability and consistent performance
- Managed database and Kubernetes options
- Transparent pricing structure
- Strong developer community
**Pricing:** From $4/month for basic Droplets. General Purpose from $18/month. Managed databases from $15/month.
## 5. Amazon Web Services (AWS) Lightsail 3.5 / 5
AWS Lightsail exists as Amazon’s answer to simplified VPS offerings, providing easier access to AWS infrastructure without requiring mastery of the main AWS console’s overwhelming complexity. For organizations that want eventual AWS ecosystem integration but need to start with straightforward virtual servers, Lightsail bridges that gap.
Instance plans range from $3.50 monthly for 512MB RAM and 1 vCPU up to $160 monthly for 32GB RAM and 8 vCPUs. All plans include SSD storage, data transfer allowance, and static IP addresses without additional charges. The pricing structure is notably simpler than AWS EC2, with predictable monthly costs that won’t accumulate surprise charges from dozens of separate line items.
Performance characteristics reflect AWS’s mature infrastructure—servers respond consistently with low latency to well-connected regions. Compute resources utilize the same underlying AWS infrastructure as EC2 instances, meaning performance and reliability benefit from Amazon’s extensive investment in data center operations. Storage is SSD-based but not NVMe, resulting in adequate but not exceptional disk I/O compared to providers emphasizing storage performance.
Lightsail instances deploy quickly through a streamlined interface that presents only essential options. Selecting a Linux distribution or application template, choosing an instance size, and clicking create results in a running server within minutes. The Lightsail console is intentionally simplified compared to the main AWS console, hiding complexity that would overwhelm users seeking basic VPS functionality.
The platform includes several features specifically targeting simpler deployment scenarios: managed databases (MySQL and PostgreSQL), container service for deploying Docker containers without managing orchestration, content delivery network integration, and load balancers for distributing traffic across multiple instances. These managed options reduce operational overhead while maintaining compatibility with the broader AWS ecosystem.
Geographic availability spans all major AWS regions, providing extensive global coverage. However, Lightsail isn’t available in every AWS region, occasionally requiring businesses with specific geographic requirements to use standard EC2 instead. For most use cases, available regions provide adequate geographic distribution.
Integration with the broader AWS ecosystem represents both strength and limitation. Applications can gradually migrate from Lightsail to EC2, RDS, and other AWS services as requirements grow more complex—the networking and IAM foundations remain compatible. However, this integration also introduces AWS’s characteristic complexity if you need to leverage services beyond Lightsail’s scope. The platform works well for contained workloads but becomes limiting when architectural requirements exceed what Lightsail directly supports.
Support follows AWS’s standard tiered model. Basic support provides documentation and community forums but no direct technical support. Developer support starts at $29 monthly with business-hour access to engineers, while Business and Enterprise support tiers cost significantly more based on monthly spend. For production workloads requiring responsive support, these additional costs accumulate quickly.
Billing is simpler than standard AWS but still includes multiple dimensions. The base instance price includes specified data transfer, but exceeding that allowance incurs additional charges. Snapshots, additional block storage, and load balancers all carry separate pricing. While more transparent than EC2’s billing complexity, total costs still require careful tracking across multiple services.
Lightsail makes sense for specific scenarios: organizations already invested in AWS wanting a simpler entry point, teams planning to eventually leverage broader AWS services, or businesses needing to maintain workloads within the AWS ecosystem for compliance or architectural reasons. For purely VPS requirements without AWS-specific needs, alternatives often provide better value and simpler operational models.
**Key Strengths:**
- Simplified access to AWS infrastructure
- Integration path to broader AWS services
- Predictable monthly pricing (within Lightsail scope)
- Reliable performance backed by AWS infrastructure
- Managed database and container options
- Extensive global region coverage
**Pricing:** From $3.50/month. Managed databases from $15/month. Load balancers $18/month.
## 6. UpCloud 4 / 5
UpCloud, a European cloud provider founded in Finland, differentiates itself through genuine technical innovation rather than just marketing claims. Their MaxIOPS storage technology delivers consistently high performance across all server tiers, addressing one of the most common VPS pain points—storage bottlenecks that degrade application responsiveness.
The technical foundation is legitimately impressive. MaxIOPS storage utilizes a distributed architecture with multiple layers of caching and real-time data distribution across drives. This results in storage performance reaching 100,000 IOPS consistently, eliminating the dramatic performance variability common with traditional shared storage systems. For database servers, e-commerce platforms, or any application where disk I/O represents a bottleneck, this performance advantage translates into tangible user experience improvements.
Compute instances utilize AMD EPYC and Intel Xeon processors with configurations optimized for different workload characteristics. Standard Cloud Servers provide balanced resources suitable for most applications, starting at approximately $5 monthly for 1GB RAM, 1 vCPU, and 25GB MaxIOPS storage. High CPU servers offer additional processing power for compute-intensive workloads, while High Memory servers provide RAM-optimized ratios for in-memory databases and caching layers.
Geographic distribution covers 12 locations across North America, Europe, Asia, and Australia. While not matching the extensive coverage of hyperscalers, available regions provide good global distribution for applications serving international audiences. Network performance benefits from UpCloud’s carrier-neutral data center selection and redundant connectivity, with public IPv4 and IPv6 addresses included for all servers.
The control panel design is clean and functional, prioritizing usability without sacrificing advanced features. Server deployment completes quickly, typically under a minute from clicking create to SSH accessibility. The interface provides detailed resource monitoring graphs, network traffic statistics, and backup management without feeling cluttered. The API is comprehensively documented with client libraries available for popular programming languages, enabling full infrastructure automation.
UpCloud’s backup functionality operates using a technically interesting approach—rather than traditional full backups, the system uses continuous data protection with point-in-time recovery capabilities. This allows restoring servers to any point within the retention window, not just predefined backup timestamps. The feature costs approximately 0.02€ per GB monthly, making it affordable even for larger storage volumes.
Firewall functionality is integrated and easy to configure, with templates for common scenarios and the ability to define custom rules. DDoS protection operates at the network level, filtering malicious traffic before it reaches your servers. Private networking enables building secure multi-server architectures without exposing internal communication to the public internet.
Support quality is notably strong for a mid-sized provider. 24/7 availability provides access to engineers who understand infrastructure architecture, not just first-level ticket responders. Response times are generally quick, typically under an hour for production issues, with staff demonstrating technical competence in troubleshooting complex problems. This support quality exceeds what many larger providers deliver without premium support contracts.
Pricing operates on an hourly billing model with monthly maximum caps—you pay hourly rates for actual usage, but charges stop accumulating once you reach the equivalent monthly price. This model provides cost predictability while maintaining flexibility for variable workloads. Data transfer is charged at €1 per TB, which is reasonable though not as competitive as providers including unlimited transfer.
For organizations prioritizing storage performance or requiring consistently low-latency disk I/O, UpCloud’s MaxIOPS technology provides measurable advantages over standard SSD offerings. The combination of technical excellence and strong support makes UpCloud particularly attractive for production workloads where performance consistency directly impacts business outcomes.
**Key Strengths:**
- Exceptional MaxIOPS storage performance (100,000 IOPS)
- Hourly billing with monthly maximum caps
- Strong 24/7 technical support
- Clean, functional control panel
- Point-in-time backup recovery
- Good European presence
**Pricing:** From approximately $5/month. Hourly billing with monthly caps. Storage €0.40/GB monthly.
## 7. Hostinger VPS 3 / 5
Hostinger entered the VPS market from its foundation in shared web hosting, bringing a focus on affordability and user-friendliness that appeals to individuals and small businesses transitioning from shared hosting to VPS infrastructure. The platform emphasizes simplicity and cost-effectiveness rather than advanced features or maximum performance.
VPS plans range from $4.99 monthly (often discounted to lower promotional rates) for 1 vCPU, 4GB RAM, and 50GB storage, up to higher-tier plans with 8 vCPUs and 32GB RAM. All plans include dedicated IP addresses, full root access, and a weekly backup system. The pricing is notably affordable compared to competitors, making Hostinger attractive for budget-conscious projects or learning environments.
Infrastructure utilizes KVM virtualization with SSD storage and what Hostinger describes as enterprise-level hardware. Performance is adequate for websites, small applications, and development environments, though disk I/O and network speeds don’t match providers emphasizing infrastructure performance. For workloads where cost matters more than maximum throughput, the performance delivered is reasonable for the price point.
The control panel is Hostinger’s custom hPanel interface, designed to be approachable for users without extensive technical backgrounds. Common tasks like restarting servers, accessing console, and managing backups are straightforward. However, the interface occasionally oversimplifies to the point of hiding useful technical details that more experienced users expect. Advanced configuration typically requires SSH access and manual file editing rather than control panel options.
Hostinger includes a website builder and one-click installation for popular applications like WordPress, making it particularly accessible for users transitioning from shared hosting. For technically experienced teams accustomed to infrastructure automation and API management, these features are less relevant, and the platform’s simplicity becomes limiting rather than beneficial.
Geographic distribution covers 7 locations globally, which is modest compared to larger providers. Available regions provide basic geographic diversity but may not offer optimal latency for all target audiences. Network performance is adequate for most web applications, though providers with more extensive network infrastructure deliver lower latency for globally distributed users.
Support operates 24/7 through live chat and ticketing, with generally responsive first-level assistance. However, support quality focuses primarily on Hostinger-specific features and basic troubleshooting—complex infrastructure questions or advanced configuration assistance often requires escalation or may receive limited help. For users comfortable with independent troubleshooting, this limitation is manageable; for teams needing extensive support, alternatives with stronger technical support prove more valuable.
Backup functionality includes weekly automated backups retained for 7 days, which provides basic protection but lacks the flexibility of more frequent backups or longer retention periods available elsewhere. Manual snapshots are possible but require additional configuration rather than being easily accessible through the control panel.
Security features include DDoS protection at the network level and the option to configure firewall rules, though the implementation is less sophisticated than providers specializing in infrastructure security. For basic protection against common attacks, capabilities are adequate; for applications requiring advanced security configurations, more robust alternatives exist.
Hostinger VPS works well for specific audiences: individuals running personal projects, small businesses needing basic VPS capabilities at minimal cost, or users transitioning from shared hosting who need incremental complexity. For production applications requiring consistent performance, robust support, or advanced infrastructure features, alternatives provide better value despite higher base costs.
**Key Strengths:**
- Very affordable pricing, especially with promotions
- User-friendly interface for hosting backgrounds
- Weekly automated backups included
- One-click application installations
- 24/7 support availability
**Pricing:** From $4.99/month (promotional rates often lower). Plans scale to 8 vCPU / 32GB RAM.
### Monthly Cost Comparison (Entry-Level Plans)
AWS Lightsail
$3.50
Kamatera
$4.00
DigitalOcean
$4.00
Hostinger
$4.99
Linode
$5.00
UpCloud
$5.00
Serverspace
$5.71
_Note: Base pricing only. Does not include egress fees, backups, or support costs which vary significantly by provider._
## What About Network Performance and Latency?
Network quality represents one of the most significant performance factors, yet it’s rarely examined carefully until after deployment when poor performance becomes apparent. Latency between your server and end users directly impacts application responsiveness—even the fastest compute and storage become irrelevant if network bottlenecks create delays.
Providers with extensive global infrastructure like AWS and Linode benefit from well-connected data centers with multiple tier-1 network carriers, redundant routing, and optimized peering relationships. This translates into consistently low latency for users across diverse geographic regions. Smaller providers may offer fewer locations or rely on less extensive network connectivity, resulting in acceptable performance for nearby users but higher latency for distant connections.
Bandwidth allocations and pricing models matter enormously for traffic-heavy applications. Serverspace’s zero egress fees eliminate an entire category of surprise charges common with hyperscalers, where outbound data transfer can accumulate costs exceeding compute expenses. DigitalOcean and Linode include generous bandwidth allowances with reasonable overage pricing, while AWS and similar platforms charge premium rates for data egress.
When evaluating network performance, consider not just the data center location but also network architecture quality. Providers using modern network equipment with multiple redundant uplinks deliver more consistent performance than those minimizing network infrastructure investment.
## How Important Is Storage Performance?
Storage I/O directly impacts application responsiveness, particularly for database servers, content management systems, and applications performing frequent disk operations. The difference between generic SSD and optimized NVMe storage with high IOPS capabilities manifests as tangible performance improvements in real-world usage.
Serverspace and UpCloud specifically optimize storage performance, delivering consistent high IOPS that doesn’t degrade during neighbor activity or peak usage periods. This consistency matters more than peak performance numbers—storage that delivers 30,000 IOPS reliably is better than storage claiming 100,000 IOPS that degrades to 5,000 under load.
Traditional VPS providers often share storage infrastructure across many customers, introducing performance variability that’s difficult to predict. Distributed storage systems with caching and intelligent data placement, like UpCloud’s MaxIOPS, maintain consistent performance even as infrastructure scales.
For applications where storage represents the bottleneck—WordPress sites with plugins performing excessive database queries, e-commerce platforms processing transactions, applications with intensive logging—investing in providers with superior storage architecture delivers ROI through improved user experience and reduced resource requirements.
## Does Control Panel Design Actually Matter?
Interface quality seems superficial until you’re managing infrastructure daily. Well-designed control panels reduce cognitive load, making routine tasks quick and minimizing errors that result from confusing interfaces or poorly organized options.
Serverspace and DigitalOcean excel here, presenting clear interfaces that expose necessary functionality without overwhelming users. Creating servers, managing firewalls, reviewing monitoring data, and accessing support all happen through logical workflows that feel intuitive even on first use.
Conversely, poorly designed interfaces waste time and introduce frustration. Platforms requiring multiple clicks to accomplish simple tasks, hiding important information in nested menus, or presenting data in confusing formats create friction that compounds across daily usage.
API quality matters equally for teams implementing infrastructure automation. Well-documented APIs with consistent behavior, comprehensive functionality, and official client libraries enable building reliable automation. APIs that are poorly documented, inconsistently designed, or missing key features force teams into workarounds that create technical debt.
## How Does Support Quality Impact Operations?
Support responsiveness and technical competence dramatically affect operational efficiency and stress levels when problems occur. Providers offering 24/7 access to knowledgeable engineers—Serverspace, Linode, UpCloud—enable resolving issues quickly before they escalate into prolonged outages.
Tiered support models common among larger providers (AWS, Google Cloud, Azure) mean getting quality assistance requires paying for premium support contracts, often costing hundreds or thousands monthly. For smaller businesses or startups, these additional costs make support effectively unavailable when needed most.
Support quality goes beyond response time to include actual problem-solving capability. The best support engineers understand infrastructure architecture and can troubleshoot complex issues rather than just resetting passwords or restarting services. This technical competence separates providers treating support as a cost center from those viewing it as competitive advantage.
When evaluating providers, consider both documented support availability and actual experiences reported by existing customers. Providers advertising 24/7 support that funnel everything through level-one ticket queues deliver different value than those providing direct access to engineers.
## Which Provider Offers the Best Value for Startups?
Startup requirements differ from established enterprises—runway extension matters more than exhaustive feature sets, and operational simplicity delivers value because engineering resources are scarce. Pricing transparency and avoidance of surprise charges become critical when every dollar impacts burn rate.
Serverspace optimizes specifically for this scenario: transparent pricing with zero egress fees, per-10-minute billing that eliminates waste, robust support included without premium tiers, and infrastructure that scales smoothly as requirements grow. Startups avoiding billing surprises and operational complexity focus resources on product development rather than infrastructure management.
Linode and DigitalOcean also serve startups well, offering predictable pricing and solid reliability without unnecessary complexity. Their extensive documentation and straightforward interfaces enable small teams to accomplish infrastructure tasks efficiently without dedicated DevOps specialists.
AWS Lightsail provides value specifically for startups planning eventual AWS ecosystem integration or requiring specific AWS services. However, the complexity and cost structure that come with deeper AWS adoption often outweigh benefits unless there are specific requirements AWS uniquely satisfies.
## Comparison Table: Cloud VPS Providers Side-by-Side
| Feature | Serverspace | Linode | Kamatera | DigitalOcean | AWS Lightsail | UpCloud | Hostinger |
| --- | --- | --- | --- | --- | --- | --- | --- |
| Starting Price | $5.71/mo | $5/mo | $4/mo | $4/mo | $3.50/mo | ~$5/mo | $4.99/mo |
| Billing Model | Per 10 min | Monthly | Monthly | Monthly | Monthly | Hourly/capped | Monthly |
| Storage Type | NVMe SSD | NVMe SSD | SSD | SSD | SSD | MaxIOPS | SSD |
| Max IOPS | 30,000 | High | Standard | Standard | Standard | 100,000 | Standard |
| Egress Fees | $0 (unlimited) | Included + $0.01/GB | Varies | Included + $0.01/GB | Included + overage | €1/TB | Included |
| Deploy Time |
https://serverspace.us/about/news/new-os-templates-are-now-available-in-the-serverspace-control-panel.mdServerspace added new OS templates | Launch virtual machines on Windows 2025, Ubuntu 25.10, Debian 13.3, AlmaLinux 10.1, OracleLinux 10.1, or RockyLinux 10.1 quickly and without manual configuration.
We’ve expanded the range of available OS templates for deployment in the Serverspace cloud! Now you can launch virtual machines on the latest versions of popular operating systems — quickly and without any manual configuration.
## List of Added Operating Systems
- **Windows 2025**
- **Ubuntu 25.10**
- **Debian 13.3**
- **AlmaLinux 10.1**
- **OracleLinux 10.1**
- **RockyLinux 10.1**
## What’s New in These Versions?
### Windows 2025
The latest server OS from Microsoft, delivering enhanced performance and security:
- Strengthened protection mechanisms and access control
- Optimized integration with cloud infrastructure
- Improved support for containers and hybrid deployment scenarios
### Ubuntu 25.10
The latest release of one of the most widely used Linux distributions for cloud environments:
- Updated packages and system kernel
- Enhanced performance and security
- Broader support for containerization and DevOps tooling
### Debian 13.3
A stable and reliable distribution built for server workloads:
- Up-to-date packages and security patches
- Increased system stability
- Improved compatibility with modern hardware
### AlmaLinux 10.1
A free, open-source alternative to RHEL with enterprise-grade stability:
- Updated system and kernel components
- Enhanced support for virtualization and containers
- Performance optimizations for server workloads
### OracleLinux 10.1
An enterprise-grade distribution designed for business-critical applications:
- Optimized performance in cloud environments
- Extended containerization capabilities
- Improved performance and security
### RockyLinux 10.1
A continuation of the classic enterprise server lineage with high compatibility:
- Updated package base and security improvements
- Support for modern architectures and technologies
- Enhanced tools for DevOps and automation
New OS templates are already available in the [Serverspace control panel](https://my.serverspace.us/) — you can deploy a VPS on the OS of your choice in just 1 minute!
_[Serverspace](https://serverspace.us/index.md) is a cloud provider offering automated deployment of virtual infrastructure based on Linux and Windows from anywhere in the world in under 1 minute. Open API, CLI, and Terraform tools are available for seamless service integration._
https://serverspace.us/about/blog/how-to-install-redis-on-linux-step-by-step-guide.mdHow to install Redis on Linux step by step. Covers Ubuntu, Debian, Rocky Linux, and AlmaLinux with configuration tips and security hardening for production use.
When an application grows beyond a handful of users, the classic setup of “request hits the server, server queries the disk-based database, database returns data” starts to feel slow. Every additional round trip to the disk adds latency that compounds under load. Redis eliminates that bottleneck by holding working data in the machine’s operating memory, where read and write operations complete in microseconds rather than milliseconds.
Practically speaking, Redis fills the gap between a full relational database and the application layer. Teams plug it in wherever speed matters most: repeated lookups that would otherwise hammer the primary database, temporary login tokens, background job pipelines, and publish/subscribe channels between services. The current major branch is version 8, released under an open-source AGPLv3 option.
This walkthrough covers the entire path from a blank Linux server to a running, protected Redis instance. We will go through package installation on Debian-family and RHEL-family systems, adjust key performance parameters, and lock down access before the instance handles real data. If you need a server, [Serverspace offers Linux VPS instances](https://serverspace.us/services/vps-server.md) that deploy in a few clicks with the distribution of your choice.
## Before You Begin
Make sure the following conditions are met on the target machine:
- The operating system is one of: Ubuntu 22.04 or 24.04, Debian 11 or 12, Rocky Linux 8 or 9, AlmaLinux 8 or 9. Other RHEL-compatible rebuilds will also work with minor path adjustments.
- You can execute commands as root or through a regular account that has sudo privileges.
- The package catalog is current. On Debian-family systems that means running apt update; on RHEL-family it means dnf update. Stale catalogs can pull in outdated or missing dependencies.
- The machine has at least 1 GB of free RAM. Redis itself occupies very little memory at idle; the real consumption depends on how many keys your application stores and how large their values are.
## Installation on Ubuntu and Debian
You have two options here, and the choice comes down to how new a version you need.
### Using the Built-in System Packages
Debian and Ubuntu ship a Redis package inside their standard software catalog. The version lags behind the upstream project (Ubuntu 24.04 carries the 7.0 branch, for example, while upstream has moved to 8.x), but it is well-tested and gets security fixes through the normal OS patch cycle. For straightforward caching workloads this is often good enough.
Pull in the package with two commands:
```bash
sudo apt update
```
```bash
sudo apt install redis-server -y
```
The installer registers a systemd unit, starts the daemon, and enables it for every future boot. No extra steps are needed.
### Pulling the Latest Branch from the Upstream Repository
If your project relies on capabilities that only appeared in Redis 8 (the integrated query engine, native document storage, vector similarity lookups), add the package source that the Redis company maintains.
Begin by importing the cryptographic key that proves the packages are authentic:
```bash
sudo apt install curl gpg lsb-release -y
curl -fsSL https://packages.redis.io/gpg | sudo gpg –dearmor \
-o /usr/share/keyrings/redis-archive-keyring.gpg
```
Then register the new source in the package manager:
```
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] \
https://packages.redis.io/deb $(lsb_release -cs) main" \
| sudo tee /etc/apt/sources.list.d/redis.list
```
Finally, refresh the catalog and install:
```bash
sudo apt update
```
```bash
sudo apt install redis -y
```
### Confirming That Everything Works
Regardless of the path you took, check the installed version and the process state:
```
redis-server –version
```
```bash
sudo systemctl status redis-server
```
The status output should contain the words active (running). A quick round-trip test is also useful:
```bash
redis-cli ping
```
When the server replies PONG, the daemon is alive and listening on the loopback address. At this stage no outside machine can connect to it, which is the intended default.
## Installation on Rocky Linux, AlmaLinux, and RHEL
The base software catalogs of versions 8 and 9 do not carry a Redis package, so we will point the package manager at the RPM source published by the Redis company. Note: starting with the tenth major release, RHEL and its rebuilds include Valkey (a fork that split off in 2024) instead of Redis, so adding the external source is the only way to get the original project on those newer systems.
Create the repository descriptor:
```
sudo tee /etc/yum.repos.d/redis.repo
https://serverspace.us/about/blog/best-ai-prompts-for-developers-and-technical-teams.mdTested AI prompts for developers, marketers, and business teams in 2026. Copy-paste templates for coding, SEO, debugging, and content. Framework included.
According to the Stack Overflow 2025 Developer Survey, 84% of developers now use or plan to use AI tools in their workflow. Yet fewer than 30% report getting consistently useful output. The gap is not in the models. It is in the prompts.
A controlled study by METR found that experienced open-source developers actually took 19% longer to complete tasks when using AI assistance. The extra time came from reviewing, debugging, and fixing vague AI output that missed the mark. Meanwhile, a separate analysis by DX across 135,000 developers showed that daily AI users who prompt effectively save an average of 3.6 hours per week and merge roughly 60% more pull requests than those who do not.
The pattern is clear. People who treat AI tools like a search engine get mediocre results. People who write structured, specific prompts unlock real productivity gains. The difference between typing “fix this bug” and providing the error message, expected behavior, and what you have already tried is the difference between wasting time and solving problems in seconds.
This guide covers practical, copy-paste ready prompts for three audiences: developers, marketers, and business teams. Each prompt follows a proven structure and can be used in ChatGPT, Claude, Gemini, GitHub Copilot, Cursor, or any other AI tool.
## How to Structure Any AI Prompt: A Framework That Works Across Tools
Before diving into specific prompts, it helps to understand why some prompts produce dramatically better results than others. Consider the difference between these two requests:
**Vague: **“Write me a REST API endpoint.”
**Structured: **“You are a senior Node.js developer. Create an Express + TypeScript POST /api/users endpoint with Zod validation, Prisma ORM, and JWT authentication. Include error handling for duplicate emails and return proper HTTP status codes. Output clean code in a markdown block with a 3-sentence explanation.”
The first prompt forces the AI to guess on every dimension. The second gives it a clear specification. The result is production-quality code instead of a tutorial snippet.
Effective prompts across all tools share five elements. Role defines who the AI should be (a senior engineer, a marketing strategist, a data analyst). Context provides background about your project, stack, or audience. Task states exactly what you want done, using specific verbs like analyze, compare, generate, or refactor. Format specifies the output structure: markdown, JSON, a table, bullet points, or a numbered list. Constraints set boundaries: what to avoid, length limits, style requirements, and frameworks to use or skip.
Equally important is telling the AI what not to do. Adding negative constraints like “do not use deprecated APIs,” “avoid generic advice,” or “do not include placeholder comments” eliminates a significant amount of low-quality output. Think of prompts as technical specifications rather than casual questions, and the quality of responses improves immediately.
## What AI Tools Do Developer and Marketing Teams Actually Use in 2026?
The AI tool landscape has settled into three clear categories for developers. GitHub Copilot, at $10 per month, works as an extension inside VS Code, JetBrains, and other editors. It handles inline autocomplete and quick chat well. Cursor, at $20 per month, is a standalone AI-native IDE built as a VS Code fork, offering deeper integration and multi-file editing. Claude Code runs in the terminal as an autonomous agent that can read, write, and execute code across entire repositories. Survey data from 2026 shows that experienced developers use an average of 2.3 tools simultaneously, combining them based on task complexity.
For marketing and business teams, the primary tools are ChatGPT, Claude, and Gemini, accessed through their web interfaces or APIs. These handle everything from content creation and SEO optimization to campaign analysis and strategic planning. Specialized ai marketing prompts work in all three platforms because the underlying principle is the same: structured input produces better output regardless of the model.
The key insight is that prompt skills are transferable. A developer who learns to write effective prompts for code review can apply the same structure to infrastructure automation, documentation, or even marketing tasks. The framework matters more than the specific tool.
## Quick Reference: Best AI Prompts by Role and Task
Rather than listing dozens of prompts without context, the table below maps the best ai prompts for business, development, and marketing teams to specific tasks. Each row describes what a good prompt for that category should include and when to use it. The sections that follow provide full, copy-paste ready templates for each category.
| Role / Task | Prompt Must Include | Key Technique | Example Use Case |
| --- | --- | --- | --- |
| Code Generation | Language, framework, auth, error handling, output format | Role + constraints | Scaffold a validated REST endpoint |
| Debugging | Error message, expected vs actual, what was tried | Reasoning before fix | Diagnose a race condition in async code |
| Code Review | Standards, severity levels, security focus areas | Multi-perspective review | Pre-merge security + performance scan |
| Testing | Framework, coverage targets, edge case types | Boundary + error states | Generate unit and integration tests |
| Documentation | Audience, format, sections, code context | Structured output | Auto-generate API docs or README |
| SEO Content | Target keyword, audience, intent, word count, CTA | Search intent matching | Blog post optimized for organic traffic |
| Email / Ad Copy | Goal, audience segment, tone, A/B variant | Constraint-based writing | Cold outreach sequence or retargeting ad |
| Business Strategy | Data context, frameworks, output format | Analytical reasoning | Competitive analysis or market sizing |
| DevOps / Infra | Stack, environment, compliance, constraints | IaC generation | Terraform config or CI/CD pipeline YAML |
## Developer Prompts That Actually Produce Production-Ready Output
Generic requests produce generic code. The coding prompts below are structured to give AI tools enough context to generate output that is closer to what a senior developer would write. Each follows the framework from Section 2.
### Code Generation
Template: “You are a senior [language] developer. Generate a production-ready [function/endpoint/component] that [detailed task]. Use [specific framework and version]. Include input validation, error handling, and type annotations. Do not use deprecated APIs. Output clean code in a markdown block followed by a 3-sentence explanation of design decisions.”
The key is specificity. Mentioning the framework version, auth method, and error handling style eliminates 90% of the follow-up corrections most developers make after receiving AI output.
### Debugging
Template: “I have a bug. Language/framework: [specify]. Expected behavior: [describe]. Actual behavior: [exact error message]. What I have already tried: [list]. Code: [paste]. Before suggesting a fix, walk me through your reasoning: what could cause this, and which explanations are most likely?”
Asking for reasoning before the fix is critical. This pattern, sometimes called chain-of-thought prompting, forces the AI to analyze rather than guess. It also helps you spot incorrect assumptions before implementing a wrong solution. Many developers find that chatgpt prompts for coding work significantly better when structured this way compared to simply pasting code and asking “fix this.”
### Code Review
Template: “Review this code from three perspectives: (1) As a security specialist, identify vulnerabilities and OWASP Top 10 concerns. (2) As a performance engineer, highlight bottlenecks and suggest optimizations. (3) As a maintainability expert, flag unclear naming, complex logic, and architectural issues. Rate each finding as P1 (critical), P2 (important), or P3 (nice to have). Context: [stack, runtime]. Code: [paste].”
Multi-perspective review is one of the most powerful prompt patterns for code because it replaces three separate review passes with a single, structured request. Teams that use this approach consistently report catching issues that slip through traditional human-only reviews.
### Testing
Template: “Write comprehensive tests for this function using [framework]. Cover: (1) happy path with valid inputs, (2) boundary values including 0, 1, -1, empty, and null, (3) error conditions and recovery, (4) edge cases with very large inputs or concurrent calls. For each test, add a one-line comment explaining what bug it is designed to catch.”
The instruction to explain what each test catches transforms a generic test suite into a diagnostic tool. It also makes the tests self-documenting, which helps during code reviews and onboarding.
## AI Prompts for Marketing Teams: SEO, Content, and Campaigns
The same framework that produces better code also produces better marketing output. The difference is context: instead of specifying a tech stack, you specify audience, intent, and business goals.
### SEO Content
Template: “You are an SEO content strategist. Write a [word count]-word blog post targeting the keyword [primary keyword]. The search intent is [informational/commercial/transactional]. Audience: [describe]. Structure: H1 with the keyword, 4 to 6 H2 sections, each 120 to 180 words. Include a natural CTA in the conclusion. Avoid keyword stuffing. Use related terms: [list 3 to 5 semantic keywords]. Tone: [specify].”
The best ai prompts for seo content optimization always specify search intent and audience, not just the target keyword. Research from SE Ranking across 200,000+ pages shows that AI systems and search engines both favor content with clear structure, updated information, and depth over surface-level keyword matching. Prompts that include these parameters consistently produce higher-quality drafts.
### Content Marketing
Template: “Act as a content marketing manager. I have a pillar page on [topic]. Generate 8 supporting article ideas that target long-tail variations of the main keyword. For each idea, provide: a working title, target keyword, search intent, suggested word count, and how it links back to the pillar page. Format as a table.”
Effective ai prompts for content marketing go beyond single articles. They help build topic clusters that strengthen an entire section of a website. This prompt produces a content calendar in one request instead of requiring hours of manual keyword research.
### Digital Marketing and Ad Copy
Template: “Write 3 variations of a [platform: Google Ads / Meta / LinkedIn] ad for [product/service]. Target audience: [demographics, pain points]. Goal: [clicks / conversions / awareness]. Constraints: headline max [X] characters, description max [Y] characters. Each variation should use a different angle: (1) pain point, (2) benefit, (3) social proof. Include a clear CTA.”
For ai prompts for digital marketing, the constraint-based approach prevents the AI from producing generic copy. Specifying character limits, platform rules, and distinct angles forces output that is actually usable in a campaign. Similarly, prompts for marketing email sequences work best when you provide the goal, segment, and stage in the funnel rather than asking for “a marketing email.”
## Vibe Coding: How to Build Features From a Natural Language Description
Vibe coding, the practice of generating entire applications or features from natural language descriptions, has gained significant traction in 2026. According to the Stack Overflow 2025 Developer Survey, roughly 72% of professional developers say it is not yet part of their daily workflow. But the remaining 28% are using it for prototyping, internal tools, and MVPs with growing confidence.
The best vibe coding prompts are specific about the outcome but flexible about the implementation. Template: “Build a [what] using [stack]. Requirements: [list 3 to 5 specific features]. Start with [first component] and confirm the approach before proceeding to the next. Do not generate all code at once. Ask if you are unsure about any requirement.”
The best prompts for vibe coding with ai agents add a layer of autonomy. Agentic tools like Claude Code and Cursor Agent mode can read your entire codebase, run commands, and iterate on their own output. For these tools, prompts should describe the desired end state and constraints rather than step-by-step instructions: “Refactor the authentication module to use JWT instead of session cookies. Update all affected routes, middleware, and tests. Run the test suite after each change and fix any failures before moving on.”
Vibe coding works best for prototypes, hackathons, and low-risk internal tools. For production systems in regulated industries, treat AI-generated code as a first draft that requires thorough human review.
## Common Prompt Mistakes and How to Fix Them
Even with a solid framework, certain mistakes consistently degrade AI output. Here are the five most common patterns and their fixes.
- ** Too vague. **“Fix this code” or “write me an ad” gives the AI no constraints. Fix: use the Role + Context + Task + Format + Constraints structure from Section 2. Every effective prompt answers who, what, for whom, in what format, and what to avoid.
- ** No negative constraints. **Without boundaries, AI defaults to generic patterns. Fix: always include at least one “do not” instruction. “Do not use deprecated APIs.” “Avoid cliches.” “Do not include placeholder text.” Negative constraints are often more impactful than positive ones.
- ** Asking for everything at once. **Requesting a complete application in one prompt overwhelms the context window and produces shallow output. Fix: use prompt chaining. Break the task into stages: generate, then review, then test, then document. Each stage builds on the previous output.
- ** Ignoring output format. **If you do not specify the format, the AI chooses one for you, and it is rarely what you need. Fix: explicitly request JSON, markdown, a numbered list, a table, or whatever structure your workflow requires.
- ** Not iterating. **The first output is almost never the final answer. Fix: treat AI output as a first draft. Follow up with “improve the error handling,” “make the tone more conversational,” or “add edge cases to the test suite.” Iterative refinement consistently produces better results than trying to write a perfect prompt on the first attempt.
When prompt outputs need validation in a real environment, a cloud server helps. You can [deploy a VPS on Serverspace](https://serverspace.us/services/vps-server.md) in under a minute to test generated code, spin up staging environments, or run CI/CD pipelines configured with AI-generated YAML.
## How to Build a Prompt Library Your Team Will Actually Use
Individual prompts are useful. A shared, organized prompt library is a multiplier. Teams that maintain a curated set of prompts see faster onboarding, more consistent output, and less time spent re-inventing requests that someone else already perfected.
Start simple. Create a shared document, Notion database, or GitHub repository with the following structure for each entry: category (code generation, debugging, marketing, DevOps), task description, the prompt template with placeholders, an example of good output, and any notes about which AI tool works best for that prompt.
Version control matters for prompts just as it does for code. When a model update changes how a prompt performs, you need to track what changed and why. Teams that treat prompts as engineering artifacts, with reviews, iterations, and documentation, consistently outperform those who rely on ad hoc requests.
For teams that manage development infrastructure alongside their prompt libraries, platforms with API and automation support streamline the workflow. For example, [Serverspace offers API and Terraform integration](https://serverspace.us/services/api.md) that pairs well with AI-generated infrastructure-as-code configurations, letting you go from prompt to deployed environment without manual steps.
## Start With Five Prompts and Build From There
AI prompt engineering is not a collection of tricks. It is a structured approach to communicating with tools that are powerful but literal. The difference between “write me some code” and a well-specified prompt is the same difference between a vague project brief and a detailed technical specification: one produces guesswork, the other produces results.
The action plan is straightforward. Pick five prompts from this guide that match your most frequent tasks. For developers, start with the debugging and code review templates, as these deliver the fastest return. For marketers, the SEO content prompt alone can cut first-draft time in half. For business teams, the strategy analysis prompt turns hours of manual research into structured output in minutes.
The productivity gap between teams that prompt well and teams that do not is widening with every model update. Models are getting more capable, which means structured prompts extract even more value than they did a year ago. Investing time in this skill pays off immediately, and the returns compound as AI tools continue to improve.
Start this week. Try five prompts. Iterate on what works. Build a library. Share it with your team.
https://serverspace.us/about/news/nine-new-llm-models-are-now-available-in-our-control-panel.md9 new language models are now available in Serverspace | Claude Opus 4.6, GPT-5.4, DeepSeek V3.2, Kimi K2.5 and others. Connect LLMs to your projects via a single API directly from the control panel.
We have expanded the list of available language models in the Serverspace cloud! Users now have access to a wide selection of modern LLMs from leading developers — for building, automation, and AI integration into any project without complex configuration.
## Available Models
- **anthropic/claude-sonnet-4.6**
- **anthropic/claude-opus-4.6**
- **openai/gpt-5.4**
- **openai/gpt-5.4-mini**
- **openai/gpt-5.4-pro**
- **openai/gpt-5.3-codex**
- **minimax/minimax-m2.7**
- **deepseek/deepseek-v3.2**
- **moonshotai/kimi-k2.5**
## What’s New?
### OpenAI Models
A new model lineup for a wide range of tasks — from text generation to development:
- **GPT-5.4** — a versatile model for complex scenarios, analytics, and content
- **GPT-5.4-mini** — fast responses and cost optimization
- **GPT-5.4-pro** — maximum performance for resource-intensive tasks
- **GPT-5.3-codex** — specialized for programming and automation
### Anthropic Models
Advanced models with a focus on context understanding and analytics:
- **Claude Sonnet 4.6** — a balance of speed and quality for everyday tasks
- **Claude Opus 4.6** — a powerful model for complex analysis and long-context processing
### Other Models
Additional solutions for specialized use cases:
- **DeepSeek V3.2** — excels at math, code, and analytics
- **Minimax M2.7** — fast text generation and chatbots
- **Kimi K2.5** — efficient processing of long documents and data
The new models are already available in the [Serverspace control panel](https://my.serverspace.us/) — you can start using them in your projects right now!
_[Serverspace](https://serverspace.us/index.md) is a cloud provider offering modern infrastructure and tools for working with AI, including API, CLI, and Terraform for fast integration and scaling._
https://serverspace.us/about/blog/what-is-cursor-the-next-generation-ai-code-editor-and-how-it-helps-developers-in-2026.mdCursor is an AI code editor built on VS Code with autonomous agents that write, refactor, and review code. Features, pricing plans, setup guide, and comparison with alternatives.
Four computer science students at MIT launched Anysphere in 2022 with a straightforward hypothesis: a code editor designed around artificial intelligence from day one would outperform any tool that merely bolts AI onto an existing interface. They forked the open-source core of Visual Studio Code, stripped away the assumptions about how a developer interacts with files, and rebuilt the editing experience so that a language model sits at the center of every action.
The product they shipped, Cursor, looked familiar on the surface. Extensions transferred over, keyboard shortcuts stayed the same, color themes carried across. But behind that familiar shell, the architecture was fundamentally different. Instead of treating AI as an autocomplete overlay, Cursor fed the model a parsed representation of the entire repository, letting it reason about imports, function signatures, and dependency chains across dozens of files simultaneously.
Adoption accelerated faster than almost anyone predicted. The company crossed a hundred million dollars in yearly revenue by January 2025 and five hundred million by the middle of that year. By late 2025, annualized revenue passed one billion dollars. In the first quarter of 2026 it doubled again, reaching two billion. Investors took notice: a November 2025 funding round valued Anysphere at $29.3 billion, with participation from Accel, Coatue, NVIDIA, and Google. As of spring 2026, the company reportedly explores raising additional capital at an even higher figure.
More than two million developers now open Cursor every month. Engineering organizations at companies like Stripe, Shopify, Uber, and Spotify have adopted it for daily work. The popularity gave rise to the term “vibe coding,” a workflow pattern where the developer rapidly accepts chains of AI-generated suggestions, focusing on intent rather than keystrokes.
## **Core capabilities that set Cursor apart from ordinary editors**
Understanding what Cursor actually does under the hood helps explain why it converts users so quickly.
**Predictive multi-line editing.** Most autocomplete engines suggest a single line or a short snippet. Cursor’s proprietary Fusion model goes further: it predicts the next logical block of code you are likely to write, accounting for variable names already in scope, types inferred from neighboring files, and patterns established elsewhere in the project. A single Tab keystroke can insert five, ten, or even twenty lines that fit seamlessly into the surrounding code.
**Agent Mode with Composer 2.** When you switch to Agent Mode, you stop typing code altogether. Instead, you describe what you need in a few sentences of plain English. The agent breaks your request into subtasks, determines which files need changes, generates the necessary edits, executes terminal commands if required, and presents a diff for you to approve or modify. Composer 2, a model Cursor trained in-house specifically for coding workflows, handles these sequences more efficiently than generic frontier models, reducing latency and credit consumption.
**Background and Cloud Agents.** Cursor 3, released in April 2026, introduced the ability to run multiple agents concurrently. A Background Agent works inside an isolated virtual machine on a separate Git branch, implementing a feature or fixing a batch of issues without interfering with your current work. When it finishes, it opens a pull request complete with a demo screenshot. Cloud Agents extend this concept further: you can trigger a task from your phone, from a Slack message, or from a GitHub issue, and the agent will execute it in the cloud even if your laptop is off.
**Full-project context indexing.** Cursor scans every source file in your repository, builds an internal index, and feeds relevant fragments to the model with each request. The result is that suggestions account for code you wrote weeks ago in a completely different directory. When the interface displays a “context used” metric, it indicates how many tokens from your project the model consumed. Keeping that context clean (by excluding build artifacts, logs, and dependencies through a .cursorignore file) directly improves output quality.
**Freedom to pick your model.** Rather than locking users into a single provider, Cursor lets you choose which language model handles each conversation. Available options as of April 2026 include GPT-5.4 from OpenAI, Claude Opus 4.6 from Anthropic, Gemini 3 Pro from Google, Grok Code from xAI, and Cursor’s own Composer 2. Switching models mid-task takes one click, so you can route simple completions through a cheap, fast model and escalate complex reasoning to a premium one.
**Extensibility through MCP plugins.** The Model Context Protocol lets third-party tools expose structured data to Cursor’s agents. Marketplace plugins already cover Slack, GitHub, Linear, Jira, Figma, and dozens of other services. A plugin can, for example, pull the description and acceptance criteria of a Jira ticket directly into the agent’s context before it starts writing code.
## **Setting up Cursor and moving your workflow from VS Code**
Installation follows the pattern most desktop applications use: download the binary from cursor.com, run the installer, and launch the app. Builds are available for Windows, macOS (both Intel and Apple Silicon), and Linux.
The first launch wizard detects an existing VS Code installation and offers a one-click import. Extensions, user settings, keybindings, and code snippets carry over without manual copying. Because Cursor is a standalone application rather than a VS Code extension, the two editors can coexist on the same machine. Some teams keep both installed, using Cursor for AI-heavy workflows and vanilla VS Code for tasks where a lighter footprint matters.
After the import, open your project folder and allow the indexer to finish its first pass. Duration depends on repository size: a small Node.js app takes seconds, a large monorepo might need a few minutes. Once indexing completes, every AI feature, from tab completions to full agent sessions, will incorporate your project’s code.
For teams, the next step is creating a .cursorrules file at the project root. This plain-text document tells the agent which language, framework, and style conventions your codebase follows. Think of it as a README specifically for the AI: specify that you use TypeScript with strict mode, that tests live in a __tests__ directory, or that SQL queries must use parameterized inputs. Agents will respect these constraints in every suggestion they produce.
Migrating back to VS Code, should you ever want to, takes the same few minutes. Settings remain on disk in standard JSON files, and no proprietary lock-in applies.
## **Changing the interface language**
Because Cursor inherits VS Code’s localization framework, switching the menu language is identical to the process in VS Code. Press Ctrl+Shift+P (Cmd+Shift+P on macOS), type Configure Display Language, and select the locale you need. If the corresponding language pack is missing, the editor will prompt you to install it from the marketplace. A restart applies the change.
One nuance worth noting: the language switch affects only menus, tooltips, and system messages. The AI chat panel and agent responses use whatever language your prompt is written in. If you write prompts in Spanish, the agent replies in Spanish. The Composer interface and certain diagnostic panels may remain partially in English regardless of your locale setting.
## **How much Cursor costs and what each plan includes**
Cursor’s pricing structure has six tiers as of April 2026, and it is worth understanding the credit mechanism before choosing a plan.
The Hobby tier costs nothing, requires no credit card, and has no expiration date. It provides a restricted number of agent interactions and tab completions per month. For evaluating whether the product fits your workflow, Hobby is sufficient. For sustained daily use, it is not.
Pro, at twenty dollars per month, is where most individual developers land. It unlocks unlimited tab completions, access to Background Agents, and a monthly pool of twenty dollars in model credits. Those credits are consumed only when you manually override the default model selector and pick a specific premium model like Claude Opus or GPT-5.4. If you leave the selector on Auto, where Cursor routes your request to whatever model it considers optimal, the plan behaves like an unlimited subscription.
Pro+ triples the credit pool to sixty dollars for sixty dollars per month, and adds more concurrent agent capacity. Ultra, at two hundred dollars per month, provides four hundred dollars in credits and priority access to new features. Both tiers target developers who regularly burn through credits by manually selecting the most capable (and most expensive) models for complex tasks.
Teams, priced at forty dollars per seat per month, bundles Pro-equivalent AI access with organizational features: centralized billing, single sign-on, shared Cursor Rules that propagate across every team member’s editor, and an admin dashboard for monitoring usage.
Enterprise pricing is not published and is negotiated on a case-by-case basis, typically including pooled credit budgets, invoice billing, dedicated support, and audit logging.
| Plan | Price | Tab Completion | Agents | Model Credits | Best For |
| --- | --- | --- | --- | --- | --- |
| Hobby | Free | Limited | Limited | None | Evaluation, students |
| Pro | $20/mo | Unlimited | Background Agents | $20 | Daily development, freelancers |
| Pro+ | $60/mo | Unlimited | 3x agents | $60 | Heavy agent usage |
| Ultra | $200/mo | Unlimited | 20x usage | $400 | Maximum workloads, enterprise |
| Teams | $40/seat/mo | Unlimited | Background Agents | $40 | Teams of 3+, SSO, admin controls |
A word on the credit system controversy: when Cursor moved from a flat request count to usage-based credits in mid-2025, many subscribers saw unexpected charges. The company acknowledged poor communication, issued refunds for the transition period, and committed to clearer billing transparency. As of 2026, the consensus among regular users is that the system works predictably as long as you understand the distinction between Auto mode (free) and manual model selection (draws from credits).
## **How Cursor compares to Copilot, Claude Code, and Windsurf**
Choosing an AI coding assistant in 2026 means understanding architectural differences, not just feature checklists.
**Versus GitHub Copilot.** Copilot is a plugin that layers AI capabilities on top of whichever editor you already use: VS Code, JetBrains, Neovim, Xcode. Its strength is breadth. It works everywhere, integrates tightly with GitHub’s pull request and issue ecosystem, and starts at ten dollars per month. Cursor, by contrast, requires you to switch editors. In return, you get deeper integration: the model sees your full repository index rather than just the open file, multi-file agent edits happen natively, and Background Agents have no equivalent in Copilot’s current lineup. For teams that live inside GitHub and want minimal disruption, Copilot is the pragmatic pick. For developers who want the most powerful AI editing experience available today, Cursor justifies the editor switch.
**Versus Claude Code.** Claude Code is a terminal-native tool from Anthropic. It does not have a graphical interface at all: you run it from the command line, point it at a repository, and give it instructions. What it lacks in visual polish, it compensates with an enormous context window (up to one million tokens) and consistently strong architectural reasoning. Professional developers frequently pair the two: Cursor for everyday editing and quick agent tasks, Claude Code for large-scale refactors, codebase audits, and migration projects that require the model to hold an entire system’s structure in memory.
**Versus Windsurf.** Windsurf is another VS Code fork that bakes AI into the editor shell. Its Cascade engine pioneered some of the agentic workflow patterns that Cursor later adopted. Pricing starts lower (fifteen dollars per month for Pro), and the free tier is more generous. After Cognition acquired Windsurf in mid-2025, the product gained additional resources, though the transition also introduced some uncertainty about long-term direction. For developers who want an AI-native IDE at a lower price point and are comfortable with a smaller model selection, Windsurf is a credible option.
Many experienced engineers in 2026 do not treat these tools as mutually exclusive. A common setup combines Cursor as the primary editor with Claude Code running in a separate terminal for heavyweight tasks, and Copilot active in a secondary IDE for quick lookups.
| Tool | Type | Price | Models | Agents | Key Strength |
| --- | --- | --- | --- | --- | --- |
| Cursor | Standalone IDE | $0-200/mo | GPT-5.4, Claude Opus, Gemini 3, proprietary | Background, Cloud | Multi-file editing, background agents |
| GitHub Copilot | IDE plugin | $10-39/mo | GPT-5, Claude Sonnet, Gemini | Agent Mode | GitHub integration, stability, IDE coverage |
| Claude Code | Terminal agent | $20/mo | Claude Opus, Claude Sonnet | Terminal-based | Deep context (1M tokens), architecture quality |
| Windsurf | Standalone IDE | $0-30/mo | Codeium, GPT-4, Claude | Cascade | Budget-friendly, generous free tier |
## **Real-world scenarios: from prototype to production server**
Writing code faster only matters if the result ships. Here is how Cursor fits into end-to-end workflows.
**Rapid prototyping.** A solo developer describes the skeleton of a web application in Composer: “Create a Next.js app with authentication, a dashboard page, and a REST API for user management.” The agent scaffolds the project structure, wires up routes, generates placeholder components, and installs dependencies. What used to take days of boilerplate work now takes an afternoon of reviewing and refining AI output.
**Parallel feature development.** A small startup team kicks off three Background Agents simultaneously, each working on a separate feature branch. One agent implements a payment integration, another writes unit tests for an existing module, and a third refactors a legacy API endpoint. All three produce pull requests within an hour, ready for human review.
**Onboarding and learning.** A junior developer joins a project with an unfamiliar codebase. Instead of spending days reading documentation, they highlight confusing functions in Cursor and ask the agent to explain. Because the model has indexed the entire repository, explanations reference actual project code rather than generic examples.
**Infrastructure automation.** Cursor generates Dockerfiles, CI/CD pipeline configurations, Terraform modules, and Kubernetes manifests from plain-language descriptions. A DevOps engineer types “Create a GitHub Actions workflow that runs tests on every pull request, builds a Docker image on merge to main, and pushes it to the registry,” and the agent produces a ready-to-commit YAML file.
**Deployment.** Once the code is written and merged, it needs infrastructure to run on. A cloud VPS handles this efficiently: the server provisions in seconds, Docker images deploy without manual configuration, and resource scaling happens on the fly.
For example, [Serverspace](https://serverspace.us/services/vps-server.md) allows you to spin up a virtual server with a pre-installed Docker environment and a dedicated IP address. Billing is granular (charged per ten-minute intervals), so running a staging environment for a few hours of testing costs only a fraction of a monthly subscription. This kind of elastic infrastructure pairs naturally with the speed at which Cursor generates deployable code.
## **Pitfalls that trip up new Cursor users**
Powerful tools come with non-obvious failure modes. Awareness of these common mistakes saves frustration.
**Accepting agent output without review.** The temptation is real: the agent produces something that looks correct, and pressing “Accept All” is faster than reading every line. But language models hallucinate function signatures, introduce subtle logic errors, and occasionally use deprecated APIs. Treating agent-generated code with the same scrutiny you would apply to a pull request from a new hire is the safest approach.
**Neglecting Cursor Rules.** Without a .cursorrules file, the agent makes its own assumptions about conventions. It might generate class-based React components when your project uses functional ones, or pick a different testing framework than the one already configured. Investing fifteen minutes in writing clear rules prevents hours of correcting mismatched patterns.
**Burning credits on trivial tasks.** Manually selecting Claude Opus for every single autocomplete suggestion drains your monthly credit pool fast. Auto mode exists precisely to avoid this: it routes simple requests through efficient internal models and escalates to premium ones only when complexity warrants it. Reserve manual model selection for architectural questions, security reviews, and multi-file refactors.
**Indexing unnecessary files.** By default, Cursor indexes everything in your project directory. If that includes node_modules, .git history, compiled binaries, or large media assets, the index bloats, search slows down, and agent context gets polluted with irrelevant tokens. A .cursorignore file (which follows the same syntax as .gitignore) is essential hygiene for any non-trivial project.
**Recovering from a broken state.** After an update or a misconfigured extension, Cursor can occasionally behave erratically. The quickest fix is the command palette action Developer: Reset User Data, which clears internal caches without removing your extensions or project files. If that does not resolve the issue, deleting the ~/.cursor configuration directory and reinstalling gives you a clean slate.
Cursor has moved well beyond the “smart autocomplete” category. In 2026, it functions as a platform where AI agents shoulder the repetitive dimensions of software development while the human steers decisions about architecture, product logic, and quality standards. The free Hobby tier lets anyone explore the tool without commitment. For working professionals, the Pro plan at twenty dollars per month typically pays for itself within a few days through time reclaimed on boilerplate, refactoring, and context-switching.
The fundamental dynamic, however, has not changed: the developer remains accountable for what ships. Reviewing generated code, writing tests, and understanding the behavior of every module in production are responsibilities that no AI tool eliminates.
And once the code passes review, it needs a home. [Cloud VPS infrastructure from Serverspace](https://serverspace.us/services/vps-server.md) lets you provision testing and production environments in seconds, with pay-per-use billing that matches the iterative pace of AI-assisted development.
## **Frequently asked questions**
**Does Cursor have a free plan?**
Yes. The Hobby plan is permanently free, requires no payment method, and includes limited agent requests and tab completions. It is designed for evaluation rather than full-time professional use.
**Can Cursor function without an internet connection?**
Partly. Tab completions powered by the locally cached model work offline. Agent Mode, chat, and any request routed to a cloud-hosted model (Claude, GPT, Gemini) require an active connection.
**Will AI code editors replace software engineers?**
Not in any foreseeable timeline. These tools reshape the workflow by automating repetitive subtasks, but architectural thinking, business context, debugging judgment, and responsibility for production stability remain firmly human domains. Cursor makes an experienced developer faster; it does not make experience unnecessary.
https://serverspace.us/about/blog/how-to-deploy-openclaw-on-a-linux-server-step-by-step-guide-for-running-autonomous-ai-agents.mdDeploy OpenClaw on a Linux VPS and run autonomous AI workflows around the clock. Full installation guide, architecture explanation, configuration tips, and server requirements for self-hosted agents.
Most people who work with AI tools are used to a specific pattern: you type something, the tool responds, and then it stops. Nothing happens until you ask again. OpenClaw breaks that pattern entirely. It is a self-hosted agent that runs on your own server, works around the clock, monitors your files, handles your messages, and executes tasks without waiting for you to start a conversation. For anyone who has wanted their digital tools to actually do things rather than just answer questions, this is a meaningful shift.
This guide is for people who want to deploy OpenClaw on a Linux server — whether that is a VPS in the cloud, a rented virtual machine, or a dedicated box. You do not need a deep IT background to follow along, though you should be comfortable typing commands into a terminal. By the end, you will understand what OpenClaw actually is, how its moving parts fit together, how to get it running, what can go wrong, and where it fits into real-world workflows.
## What Is OpenClaw, and Why Does It Run on a Server?
OpenClaw started life in November 2025 under the name Clawdbot, created by Austrian developer Peter Steinberger. After two quick rebrands — first to Moltbot, then to OpenClaw — the project found its identity: a free, open-source agent framework built for continuous autonomous operation. Today it occupies a distinct niche in the AI tooling landscape as something closer to background software than a chat application.
The core idea is that a large language model — Claude, GPT-4, DeepSeek, or a local model via Ollama — acts as the brain, while OpenClaw acts as the body. The brain decides what to do; the body executes it. OpenClaw connects to your messaging platforms (Telegram, WhatsApp, Slack, Discord, iMessage, and about forty others), reads and writes files on your server, runs scheduled tasks, calls APIs, and reports back to you through whatever chat interface you prefer. All the data — memory, configuration, conversation history — stays on your own machine, stored as plain Markdown files that you can read and edit in any text editor.
The reason you want this on a server rather than your laptop is uptime. Your laptop sleeps, travels, and gets shut down. A Linux VPS runs continuously. That distinction matters enormously when the whole point is that your agent checks things, handles things, and acts on things while you are not watching.
## The Architecture in Plain Language
Before touching a terminal, it helps to understand the three main components OpenClaw uses internally.
The Gateway is the control plane. It is a background process — a daemon in Linux terminology — that starts when your server boots, manages incoming messages, routes them to the right agent, and handles authentication. Think of it as the receptionist and telephone switchboard of your setup. The Gateway also runs what OpenClaw calls a “heartbeat”: a scheduled check, every 30 minutes by default, where the agent reads a file called HEARTBEAT.md, decides whether anything requires attention, and either acts on it or confirms that everything is fine. This is how proactive behavior works. You are not asking the agent anything; it is checking its own to-do list on a timer.
The Soul files are the configuration layer. When you initialize an agent, OpenClaw creates a set of Markdown files — SOUL.md, IDENTITY.md, USER.md, and others — that define who the agent is, what it knows about you, how it should behave, what tools it has access to, and what it should prioritize. These are plain text. You edit them directly. There is no hidden settings panel; the configuration is the documentation the agent reads about itself before every conversation.
Skills are the extensions. A skill is a directory containing a SKILL.md file that tells the agent how to use a particular tool or follow a particular workflow — web search, image generation, email triage, CRM updates, code execution. Skills can be bundled with OpenClaw itself, installed globally, or kept in a specific workspace. Community-built skills are available, though they carry their own security considerations that we will address later.
## Choosing the Right Server
OpenClaw does not require a powerful machine, but it does require one that is always on and reachable. A local laptop is not a server. A desktop you might restart every few days is not ideal either. For proper 24/7 autonomous operation, you want a VPS — a virtual private server — hosted in a data center.
The minimum published hardware requirements for running OpenClaw on Linux are 2 vCPU cores, 2 GB of RAM, and 20 GB of storage. In practice, that floor is fine for a single agent doing light work. If you plan to run multiple agents simultaneously, integrate a local language model via Ollama (which requires considerable RAM to load models), or process large files regularly, you will want more headroom.
The table below maps typical OpenClaw use cases to sensible server configurations:
| Use Case | RAM | vCPU | Storage | Notes |
| --- | --- | --- | --- | --- |
| Single agent, cloud LLM (Claude / GPT) | 2 GB | 2 | 20 GB | Minimal setup, API costs apply |
| Single agent + Telegram/Slack integration | 4 GB | 2 | 30 GB | Comfortable baseline for most users |
| Multiple agents, parallel sessions | 8 GB | 4 | 50 GB | Recommended for team or business use |
| Local LLM via Ollama (e.g. Mistral 7B) | 16 GB | 4–6 | 80 GB | No API costs, but requires more hardware |
| Full swarm / multi-agent orchestration | 32 GB+ | 8+ | 200 GB+ | Advanced deployments, production environments |
For most individuals and small teams getting started, a VPS with 4 GB RAM and 2 vCPUs running Ubuntu 24.04 LTS is a solid baseline that covers the common use cases without unnecessary cost. Serverspace offers cloud servers at this specification tier [LINK], with the advantage of choosing the data center region closest to your primary users — relevant when you want your Telegram bot responding quickly.
Ubuntu 24.04 LTS is the recommended operating system. It is stable, widely supported, well-documented, and is the platform against which most OpenClaw guides and community resources are written.
## Step-by-Step Deployment on a Linux Server
Step 1 — Prepare the Server
After provisioning your VPS, connect to it via SSH. Update the system and install the base utilities OpenClaw requires:
```bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git
```
Installing Node.js via NVM (recommended)
Rather than installing Node.js through the system package manager — which often provides outdated versions and requires sudo for global packages — use NVM (Node Version Manager). NVM keeps Node.js in your home directory, requires no elevated permissions, and lets you switch versions cleanly if you ever need to:
```bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 24
nvm use 24
node -v # should output v24.x.x
```
NVM installs Node.js entirely under your user account. Global packages installed with npm install -g go into ~/.nvm/ rather than system directories, which means you never need sudo for Node tooling — a meaningful reduction in your attack surface for a server running an autonomous agent.
Installing Docker
Docker is required if you plan to use the Docker Compose deployment path (recommended for production use, as it isolates the agent process in its own container):
```bash
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker
docker ps # should return an empty table, not an error
```
If you prefer to keep the deployment entirely outside Docker — using the native openclaw binary directly — Docker is optional. The Docker path adds isolation; the native path is simpler to inspect and debug.
Step 2 — Install OpenClaw
**Option A: Automated script (native install)**
```bash
curl -fsSL https://openclaw.ai/install.sh | bash
```
This completes in roughly two minutes on a standard connection. The script installs the OpenClaw gateway binary, sets up directories, and registers the openclaw command in your terminal.
**Option B: Docker Compose (recommended for production)**
```bash
git clone https://github.com/openclaw-ai/openclaw.git
cd openclaw
./setup.sh
```
The interactive wizard handles model provider selection, API key entry, messaging channel configuration, and allowlist setup in a single guided flow. The Docker path means the agent process runs in an isolated container — if something goes wrong inside, it cannot directly affect the host system.
Step 3 — Configure Your Model Provider
OpenClaw does not come with its own language model — it connects to one. During or after setup, you will edit the agent’s configuration files to specify which model to use. For a cloud-based model, this means providing an API key from Anthropic, OpenAI, or your chosen provider. For a local model via Ollama, it means pointing the configuration at http://localhost:11434.
```
models:
default: claude-sonnet-4-20250514
providers:
anthropic:
api_key: "your-api-key-here"
```
If you are using multiple models — a capable model for complex reasoning and a cheaper one for routine checks — you can configure routing rules that send different task types to different providers.
Step 4 — Connect a Messaging Channel
OpenClaw’s interface is a messaging app, not a web browser. For Telegram, create a bot through BotFather and paste the resulting token into your configuration. For Slack, create an app in the Slack developer portal. The setup wizard provides direct links and step-by-step prompts for each supported platform.
After entering the token, configure an allowlist — specifying which user IDs or channel IDs can interact with the agent. This is a critical security step. Without it, anyone who finds your bot’s contact information can send it commands.
Step 5 — Configure the Heartbeat and Soul Files
Open HEARTBEAT.md in the agent’s workspace directory and describe the recurring checks you want the agent to perform on its own schedule:
```
## Daily Checks
– Review emails in the priority folder and summarize any requiring action
– Check the project log file for new entries and flag blockers
– Confirm that the backup process completed overnight
```
These instructions are plain English. The agent reads them on each scheduled heartbeat, decides what action each item requires, and messages you if something needs attention.
SOUL.md and IDENTITY.md define the agent’s behavioral defaults — how formal or casual it should be, what topics require human approval before action, and any standing operational instructions. Editing these files is how you tune the agent’s judgment over time.
Step 6 — Start as a System Service
For the agent to survive server reboots, register it as a systemd service:
```
sudo nano /etc/systemd/system/openclaw.service
```
```xml
Description=OpenClaw AI Agent Gateway
After=network.target
Type=simple
User=your-username
WorkingDirectory=/home/your-username/openclaw
ExecStart=/usr/local/bin/openclaw start
Restart=always
WantedBy=multi-user.target
```
```bash
sudo systemctl daemon-reload
sudo systemctl enable openclaw
sudo systemctl start openclaw
sudo systemctl status openclaw
```
From this point, the agent starts automatically on every boot.
Practical Use Cases
**Inbox and message triage.** A marketing team uses an OpenClaw agent connected to their shared Slack workspace. The agent monitors a specific channel where clients post support queries, categorizes each message by urgency and topic, and either responds with templated answers or escalates to the appropriate team member with a summary.
**Automated research briefings.** A freelance consultant runs an agent that, each morning via a cron trigger, searches for news across three industry verticals relevant to current client engagements and sends a structured briefing to their Telegram. The agent pulls results, filters for relevance against a standing context file, and formats the output consistently.
**Development pipeline monitoring.** A small software team deploys OpenClaw on the same VPS as their staging environment. The agent watches log files for error patterns, checks whether nightly builds succeeded, and pings the on-call developer on Discord if anything requires attention.
**Lead generation workflows.** OpenClaw has seen adoption among small businesses and freelancers for automating prospect research: the agent receives a company name, pulls public data via its skills, generates a structured profile, and updates a CRM integration. What previously took an hour of manual research becomes a background task.
**Personal knowledge management.** A writer uses OpenClaw to maintain a living knowledge base. Notes, saved articles, and voice memos transcribed via Whisper integration all flow into a shared workspace folder. The agent indexes them on a schedule, surfaces connections between notes when asked, and maintains a context file for ongoing projects.
## Limitations and Risks
OpenClaw is genuinely powerful, and that power creates real risks if the setup is careless.
The most fundamental issue is permission scope. To function, OpenClaw needs access to your messaging accounts, potentially your email, your file system, and whatever external services you connect through skills. A serious vulnerability — CVE-2026-25253, a cross-site WebSocket hijacking flaw — was disclosed in January 2026 and has since been patched, but it illustrates the category of risk: a single security hole in a service with broad permissions can mean remote code execution on your server. Keeping OpenClaw updated is a meaningful security practice, not optional hygiene.
Third-party skills are a particular concern. The community skill repository is not formally vetted. Cisco’s AI security team tested a third-party skill and found it performed data exfiltration and prompt injection without any visible indication to the user. Install only skills you have read and understood.
Prompt injection is a structural risk. Because the agent reads external data — emails, files, web pages — malicious content embedded in that data can attempt to hijack the agent’s behavior. Limiting which external sources the agent reads, and gating irreversible actions behind human approval, significantly reduces this exposure.
Run OpenClaw on a dedicated VPS rather than your primary machine. If something goes wrong with an isolated server, you can shut it down, audit what happened, and rebuild.
## Common Mistakes and How to Avoid Them
**Skipping the allowlist configuration.** If you do not restrict which users can interact with your agent, the bot is open to anyone who discovers it. Configure the allowlist during initial setup.
**Using a high-capability model for heartbeat checks.** The heartbeat runs every 30 minutes. Routine checks that conclude with “nothing to do” still cost tokens. A misconfigured heartbeat can burn through significant API budget overnight. Set spending limits at the provider level before deploying, and route routine checks to a lighter model.
**Not reading installed skills before activating them.** Every skill is a set of instructions the agent follows with access to your data and external services. Read what you install.
**Running OpenClaw as root.** The systemd configuration above uses a non-root user for a reason. If the process is ever compromised, root access means complete server control for the attacker.
**Granting autonomous control over irreversible actions too early.** Start with the agent in an observational role — reporting, summarizing, suggesting — and expand its autonomous permissions only as you develop confidence in its behavior.
## Conclusion
OpenClaw represents a practical implementation of something that has been conceptually appealing for years: software that works on your behalf in the background, on infrastructure you control, without being permanently tethered to a cloud vendor’s interface. Getting it running on a Linux VPS is achievable for anyone comfortable with SSH and basic terminal commands.
The path forward after initial deployment is iteration. Start with one agent, one channel, and a conservative heartbeat configuration. Read the logs. Adjust the Soul files based on what you observe. Add skills one at a time, only after reading them. Expand autonomous permissions gradually.
If you are evaluating VPS options,[Serverspace offers cloud servers](https://serverspace.us/services/vps-server.md) in configurations well-suited to OpenClaw — including the 4 GB RAM tier for most single-agent deployments and the 8 GB tier for multi-agent setups.
## Frequently Asked Questions
**Do I need to know how to code to run OpenClaw?** Not for basic deployment. The installation script and setup wizard handle the technical scaffolding. You need to be comfortable with a terminal and editing text files.
**Which messaging platform works best?** Telegram is the most commonly documented integration and has the most straightforward setup. Slack is popular for team deployments.
**Can I run OpenClaw without paying for API access?** Yes, paired with Ollama and a locally hosted open-source model. This requires more server RAM — at minimum 8 GB for smaller models — but eliminates ongoing API costs.
**What happens if the agent does something unintended?** Stop the service with sudo systemctl stop openclaw, review the logs in the workspace directory, identify what instruction chain led to the unexpected behavior, and correct it before restarting.
**How much does it cost to run?** The software is free and open-source. Your costs are the VPS and API usage fees for cloud-hosted models. Start with a spending cap at the provider level to understand your baseline.
**Is OpenClaw suitable for a business with multiple employees?** For small teams, yes, with appropriate configuration. The multi-agent capability allows different agents to handle different workflows. Treat it as a tool for technically aware teams rather than a turnkey enterprise product.
**Can the agent access my personal accounts and files?** Only what you explicitly grant it access to during setup. The concern is not unauthorized access — it is that intentionally granted permissions are broad enough to create risk if the setup is compromised. Grant minimum necessary permissions and expand from there.
https://serverspace.us/about/news/new-1-click-apps-are-now-available-in-the-serverspace-control-panel.mdYour preferred control panel is just one click away. Serverspace has expanded its application library by adding industry leaders: cPanel, Plesk Obsidian, and ISPmanager Lite. Now, managing complex web projects is simpler, faster, and fully automated within our cloud ecosystem.
We have expanded the list of available 1-Click Apps in the Serverspace control panel. Now, when creating a server, you can preinstall a ready-to-use control panel for managing web projects in just a minute.
## What's New
- **Plesk Obsidian** — a versatile control panel for servers and web projects. It is a strong fit for agencies and developers working with different operating systems.
- **ISPmanager Lite** — a lightweight solution for fast deployment. It offers a simple and intuitive interface without unnecessary complexity, making it suitable for beginners and small businesses.
- **cPanel** — a control panel with a wide set of tools for advanced users.
## What Each Solution Is Suitable For
### Plesk Obsidian
- managing multiple websites and domains from a single interface;
- working with Docker, Git, and PHP management tools;
- supporting both Windows and Linux environments;
- setting different access levels for multiple users.
### ISPmanager Lite
- managing 1 to 5 websites on a VPS or VDS;
- quickly configuring email, FTP, and databases;
- saving resources on lower-spec servers.
### cPanel
- professional web hosting, including hosting businesses and reseller scenarios;
- managing dozens or even hundreds of client projects;
- automating everyday administration tasks through a convenient interface.
## What the New 1-Click Apps Give You
- faster launch of websites and web projects;
- less time spent on initial server setup;
- convenient management of domains, email, databases, and files through a single panel;
- simpler day-to-day server administration.
The newly added 1-Click Apps make it easier to choose the right server management tool and follow a familiar workflow from the start.
## How to Enable
- Open the Serverspace control panel.
- Click **Create Server**.
- At the configuration step, select the required solution in the **Applications** section.
- Complete server creation and start working through the selected control panel.
The new 1-Click Apps are already available in the [Serverspace control panel](https://my.serverspace.io/). Choose the right solution and launch a server with the required control panel in just 1 minute. _[Serverspace](https://serverspace.us/index.md) is a cloud provider offering automatic deployment of virtual infrastructure based on Linux or Windows from anywhere in the world in less than 1 minute. Open tools API, CLI, and Terraform are available for integrating client services._
https://serverspace.us/about/blog/best-vps-for-trading-2026-honest-comparison.mdHonest comparison of 6 VPS providers for forex, futures, and algo trading in 2026. Covers latency, pricing, uptime, and server locations to help you pick the right setup.
Picture this: your expert advisor spots a perfect entry, sends the order, and then your home router decides it is time to reconnect. The position opens three pips late, the edge evaporates, and you spend the next hour wondering why you still run a trading terminal on the same machine that streams Netflix. This scenario pushes thousands of traders toward renting a remote server every year, and the question quickly shifts from “do I need one” to “which one fits my situation.”
Finding the best vps for trading is harder than it sounds. Specialized hosting companies promise microsecond speeds. Generic cloud platforms advertise flexibility and low prices. Broker-affiliated services throw in free months. Each seller frames the conversation differently, which makes apples-to-apples comparison almost impossible unless you know what to measure. This guide strips the marketing away, explains the mechanics that actually influence execution quality, and lines up six providers so you can see where each one shines and where it falls short.
## What Happens Between Clicking “Buy” and Getting a Fill?
When you press the button inside MetaTrader or NinjaTrader, the order leaves your machine as a small data packet. That packet hops through your local network, crosses the internet through multiple routers, arrives at the broker or exchange gateway, enters a queue, gets matched, and a confirmation travels back the same way. The round trip on a household connection typically eats up 50 to 200 milliseconds. On a remote server located in the same building or neighborhood as the broker gateway, the same trip can finish in 1 to 5 milliseconds.
Why does the difference matter? Because the price you saw on screen might not be the price you receive. During fast-moving moments, currency pairs and futures contracts can shift by several ticks within a single blink of an eye. The wider the gap between request and execution, the more room the market has to move against you. Traders call this slippage, and it compounds across dozens or hundreds of fills per week. Research from several VPS vendors and independent bloggers suggests that trimming even one millisecond off the chain can tighten fill quality by roughly a tenth of a pip per order. Multiply that by a year of active trading and the savings dwarf the cost of server rental.
Reliability matters just as much as speed. A domestic broadband link stays up about 99.5 percent of the time, which translates to around 44 hours of potential outage per year. A commercial data center, with redundant power feeds, generator backup, and multiple fiber paths, typically guarantees 99.9 percent availability or better. The practical consequence: your best vps for trading bot setup keeps running through storms, ISP maintenance windows, and two-in-the-morning router reboots that would kill a home connection.
## What Separates a Good Trading Server from a Mediocre One?
Dozens of hosting companies sell virtual machines. Only a fraction of those machines are genuinely suitable for financial platforms. When shopping for the best vps server for forex trading, filter candidates through these six lenses.
**Geography relative to your broker. **Data travels through fiber at about five microseconds per kilometer. A server parked in New Jersey and talking to a broker gateway in the same state finishes the round trip in single-digit milliseconds. The same conversation routed from a data center in Frankfurt adds tens of milliseconds. The best vps location for forex trading is always the one closest to the place where your broker matches orders, not the one closest to your home.
**Guaranteed compute power. **Many budget plans share processor cores among dozens of tenants. During calm markets, everyone coexists peacefully. The instant volatility spikes, all tenants demand full power simultaneously, and the hypervisor starts rationing. For live positions, pick a plan where each virtual core maps to a physical core so nothing gets throttled when you need horsepower the most.
**Written availability commitment. **A verbal “we never go down” is worth the pixels it sits on. Demand a written service-level agreement that defines a percentage target and describes how the provider compensates you when it falls short. Anything below 99.9 percent is too loose for a machine guarding open positions.
**Storage that can keep up. **Charting software, strategy optimizers, and journal files all pound the disk with small random reads and writes. Modern NVMe drives handle tens of thousands of these operations per second; older SATA drives choke after a few hundred. The difference shows every time you load historical bars, launch an optimizer, or scroll through months of tick data.
**Native Windows environment. **MetaTrader, NinjaTrader, Thinkorswim, TradeStation, and Sierra Chart are all built for Windows. Running them on Linux through compatibility layers is technically possible but fragile. A native Windows instance with Remote Desktop access is the baseline for the best windows vps for forex trading workflow, and most providers offer it as a standard option.
**Billing that matches your rhythm. **Some traders run servers around the clock for years. Others spin up a machine, test a robot for a weekend, and tear it down. The first group benefits from monthly or annual discounts. The second group wastes money on fixed plans and should look for providers charging in short increments so every dollar goes toward actual compute time.
## Niche Hosting Versus General Cloud: Two Schools of Thought
The best vps hosting for forex trading landscape splits along a clear fault line.
On one side sit companies built exclusively for traders. They place hardware inside the same facilities where exchanges and major brokers operate, ship servers with charting software already installed, and staff help desks with people who know the difference between a magic number and a lot size. The convenience is real, but so is the price tag: entry plans typically start around thirty to sixty dollars per month, and you commit to fixed configurations with little room to customize.
On the other side sit general cloud platforms. They rent computing resources to anyone, from web developers to data scientists to traders. You get a bare Windows desktop, install your own terminal, and manage everything through a standard control panel. The upside is cost, flexibility, and granular billing. The downside is that nobody holds your hand during the setup, and you are responsible for optimizing the machine yourself.
Which side wins? It depends on what you trade and how sensitive your strategy is to milliseconds. A robot scalping CME futures every few seconds genuinely benefits from a server sitting meters away from the order gateway. A swing trader holding positions for days cares more about uptime and price than about shaving a fraction of a millisecond. Among the best vps providers for forex trading, general cloud VPS often delivers a stronger value proposition once you step outside the ultra-fast scalping niche.
## Six Providers Under the Microscope
Below is an honest rundown of the best vps for trading options available right now, spanning both dedicated trading hosts and multipurpose cloud platforms. Ratings reflect fitness for financial workloads, not web hosting benchmarks.
### 1. QuantVPS
[QuantVPS](https://www.quantvps.com/) built its entire business around proximity to American financial venues. The company keeps hardware in a Chicago facility adjacent to CME Group infrastructure, claiming round-trip communication with the exchange in roughly half a millisecond. A second cluster in New York covers equity and options flow with single-digit-millisecond reach to major order routers. Every package arrives with Windows Server ready and charting software loaded, so a new customer can connect via Remote Desktop and place a trade within minutes of signup.
The hardware stack leans on AMD processors from the EPYC and Ryzen 9000 families, DDR5 memory, and NVMe drives. Uptime targets sit at five nines. Support staff have experience troubleshooting platform-specific issues, which saves time compared to explaining what an expert advisor is to a generic cloud help desk.
The downside is economics. Plans begin around sixty dollars per month, there is no per-minute or per-hour billing, and the focus on U.S. exchanges means forex traders routing to London or Asian hubs see less advantage from the Chicago placement. If your strategy trades the S&P 500 or Nasdaq futures aggressively, however, few alternatives match the combination of location and polish that QuantVPS delivers.
### 2. Serverspace
[Serverspace](https://serverspace.us/services/vps-server.md) approaches the market from the cloud infrastructure side rather than the trading tools side, but several features line up surprisingly well with what active traders need.
Start with geography. The company operates out of a Cologix facility in Parsippany, New Jersey, roughly thirty miles from Manhattan and within the corridor where a large share of U.S. brokerage and clearing infrastructure is concentrated. For European currency markets, there is an Equinix AM2 node in Amsterdam sitting on one of the densest peering fabrics on the continent. Additional nodes in Toronto, Sao Paulo, Dubai, and Almaty round out the map for traders who work across time zones.
The billing model is the standout feature. Serverspace meters usage in ten-minute slices. Build a Windows machine on Monday morning, test your robot through the London and New York sessions, tear the machine down on Monday evening, and pay only for those hours. No monthly floor, no annual contract, no cancellation dance. Every competitor reviewed in this guide either bills monthly or, at best, hourly. Ten-minute granularity is a genuine differentiator, especially during the strategy development phase when you cycle through machines rapidly.
Bandwidth is unlimited and free on all configurations. That detail matters because trading terminals pull a constant stream of quotes, chart updates, and news headlines. On platforms like AWS, outbound data carries a per-gigabyte surcharge that can quietly add twenty to fifty dollars on top of the base instance price each month.
Hardware runs on Intel Xeon Gold processors clocked at 3.1 GHz, paired with NVMe storage rated at up to 30,000 input/output operations per second and a triple-mirror data protection scheme. The platform enforces a one-to-one ratio between virtual and physical cores, meaning your slice of CPU is not shared with neighbors. A fresh Windows instance spins up in about forty seconds, and the control panel lets you download the RDP connection file directly. Uptime is backed by a 99.9 percent SLA with financial credits if the target is missed.
Where does it fall short? There is no Chicago presence, so CME-focused strategies lose the proximity advantage. Trading platforms are not preloaded; you install MetaTrader or NinjaTrader yourself after connecting via Remote Desktop. And because Serverspace is a general infrastructure provider, the support team handles server and network issues rather than broker connectivity questions.
### 3. Kamatera
[Kamatera](https://www.kamatera.com/) stands out for granular hardware customization. Instead of picking from predefined tiers, you slide individual dials for processor cores, memory, storage type, and network throughput. The company runs more than twenty facilities across North America, Europe, and Asia, including locations in New York, Chicago, Dallas, London, Amsterdam, Singapore, and Tokyo.
Pricing follows an hourly pay-as-you-go structure. Intel Xeon and NVMe options are available, and the initial setup wizard is straightforward enough for someone without deep systems administration skills. The catch: Kamatera does not publish verified speed measurements to any exchange or broker hub, so you need to rent a small instance, run your own ping tests, and decide whether the numbers satisfy your requirements. There is also no built-in charting software or trading-oriented support channel.
### 4. ForexVPS.net
[ForexVPS.net](https://www.forexvps.net/) has catered to EA traders since 2014 and operates from twenty-two Equinix sites worldwide. When you purchase a plan, you choose your broker from a list during checkout, and the system provisions a Windows instance with your preferred terminal already configured. During major economic releases, the platform can temporarily boost CPU and memory to cushion the spike in data throughput.
User feedback on Trustpilot sits around 4.8 out of 5, and the company clearly understands its audience. The limitations are structural. Billing is monthly only, so short experiments carry the same cost as a full month of usage. More significantly, ForexVPS.net shares corporate ownership and physical infrastructure with a sister brand called FXVM. In August 2025, a prolonged outage at their New York node knocked both brands offline simultaneously, revealing that customers who thought they had two independent providers were actually relying on one backbone.
### 5. Vultr
[Vultr](https://www.vultr.com/) is a developer cloud with locations spanning multiple continents. AMD EPYC chips, NVMe storage, and plans starting near six dollars per month make it tempting for cost-conscious traders who enjoy configuring their own stack. Hourly billing and a clean API allow scripted deployment and teardown.
The gap shows up in proximity. None of the Vultr facilities are positioned inside or immediately adjacent to exchange campuses. Independent latency tests place their closest nodes twenty to thirty milliseconds behind colocated alternatives when reaching major U.S. financial venues. For position traders or slow-frequency robots, this matters little. For anyone chasing tight scalps on fast instruments, the added round-trip time is a measurable drag. Windows images are also unavailable on the cheapest plan tiers.
### 6. AWS (Amazon Web Services)
[AWS](https://aws.amazon.com/) powers a meaningful portion of institutional and quantitative trading infrastructure worldwide. The sheer breadth of compute options, from lightweight burstable instances to bare-metal machines with hardware timestamping, is unmatched. Regions in Northern Virginia and Ohio sit within reasonable reach of both equity venues in New Jersey and the CME campus in Illinois.
The difficulty is accessibility. Configuring a trading-ready Windows instance on AWS requires navigating security groups, elastic IPs, EBS volume types, and instance families with cryptic names. Outbound data transfers carry charges of roughly nine cents per gigabyte, which accumulates noticeably when a terminal pulls continuous market feeds. A comparable always-on setup with Windows licensing, adequate storage, and decent networking frequently costs more per month than a purpose-built solution from a niche provider, and it demands significantly more technical effort to assemble and maintain.
## Side-by-Side Comparison
| Provider | Category | Starts at | Relevant Regions | Uptime SLA | Bandwidth Cost | Terminal Setup | Ideal Scenario |
| --- | --- | --- | --- | --- | --- | --- | --- |
| QuantVPS | Specialist | $60/mo | Chicago, New York, London | 99.999% | Included | Pre-loaded | CME futures, rapid scalping |
| Serverspace | Cloud | ~$5/mo | New Jersey, Amsterdam, Toronto, Dubai, Sao Paulo | 99.9% | Free | Manual via RDP | FX, equity CFDs, testing |
| Kamatera | Cloud | ~$4/mo | NY, Chicago, London, Amsterdam, 20+ more | 99.95% | Metered | Manual | Custom multi-region setups |
| ForexVPS.net | Specialist | $30/mo | 22 Equinix sites | 99.9%+ | Plan-dependent | Pre-loaded | EA traders, currency scalpers |
| Vultr | Cloud | ~$6/mo | 32 worldwide | 99.99% | Allowance + overage | Manual | Budget-conscious, long timeframes |
| AWS | Cloud | $30+/mo | 25+ worldwide | 99.99% | Per-GB egress | Manual | Quant teams, institutional builds |
## Where Should the Server Sit Relative to Your Broker?
The best vps for futures trading is the one parked closest to the venue where your contracts get matched. Geography trumps processor speed, memory capacity, and every other spec on the sales page. Here is the cheat sheet.
**CME instruments (E-mini S&P, Nasdaq-100, crude oil, gold). **Matching happens in Aurora, Illinois, just outside Chicago. Only servers colocated in or immediately adjacent to that campus can communicate in fractions of a millisecond. Any other city adds double-digit-millisecond overhead.
**U.S. equities and listed options (NYSE, NASDAQ). **Order routing infrastructure clusters across northern New Jersey in towns like Mahwah, Secaucus, and Carteret. A server in this area talks to the relevant gateways in low single-digit milliseconds. Serverspace operates from a Cologix building in Parsippany, New Jersey, connected through more than ten backbone carriers, placing it squarely inside this financial infrastructure belt.
**European forex. **London and Amsterdam anchor the continent. Most large currency liquidity desks connect through Equinix facilities in one of these two cities. Serverspace maintains an Amsterdam node inside Equinix AM2, sitting on one of the highest-capacity peering hubs in Europe. For the best vps for forex trading in the European session, either city puts you within striking distance of the majority of dealing servers.
Before committing to any provider, request the IP address or hostname of your broker trading server and run a simple ping test from the VPS locations on your shortlist. The candidate with the lowest and most stable round-trip reading wins.
## Why Windows Is Practically Mandatory for Most Platforms
Every major retail charting and execution tool, including MetaTrader 4 and 5, NinjaTrader 8, Thinkorswim, TradeStation, and Sierra Chart, is compiled for Windows. Some experimenters have coaxed MT4 into running under Wine on Ubuntu, but the results are fragile: certain EA functions misbehave, visual rendering glitches appear, and the platform vendors offer zero support for this configuration. The best windows vps for forex trading path is a native Windows Server 2022 or 2019 instance accessed over Remote Desktop. Both editions handle multiple terminal windows without drama.
After your first Remote Desktop login, spend five minutes hardening the setup. Push automatic Windows updates to a weekend schedule when markets are closed. Switch the power profile to maximum performance to prevent the processor from downclocking during idle stretches. Turn off the screen saver and automatic sleep. These small tweaks eliminate the most frequent sources of unexpected reboots and frozen sessions on remote trading machines.
## Can an Ordinary Cloud Server Handle Automated Strategies?
Institutional speed trading operates on a completely different plane: custom silicon on the network card, kernel modifications that bypass the operating system network stack, and hardware racks bolted to the floor of the exchange building. Monthly bills for that infrastructure start in the low thousands. No retail VPS, no matter how fast, competes in that category.
What retail traders label as high-frequency is usually rapid-fire scalping or an EA that opens and closes positions within seconds to minutes, accumulating tens or hundreds of fills per day. For that workload, the best forex vps for high-frequency trading in 2026 is a server with guaranteed (non-burstable) processor allocation, at least four gigabytes of memory, solid-state storage, and a wired path to the broker that measures in low single-digit milliseconds. A modest machine meeting those criteria handles multiple charting terminals with complex indicator stacks and simultaneously running advisors.
Strategies with longer horizons, holding trades for minutes or hours, place even lighter demands on the server. Two cores and two to four gigabytes of RAM cover most Python-based or platform-native systems comfortably. When evaluating the best vps for algo trading at this pace, prioritize continuous uptime and clean network routing over raw clock speed. A machine that never reboots unexpectedly contributes more to long-run profitability than one that shaves half a millisecond off a position held for forty-five minutes. Likewise, the best forex vps for high-frequency trading 2026 buyers should remember that consistency of latency matters more than the absolute minimum number on a single ping test.
## Five Mistakes That Quietly Erode Your Edge
**Bargain hunting without geography homework. **A four-dollar-per-month server on the wrong continent shaves pennies off the hosting bill while adding pips to every fill. Always map the physical path between the VPS and your broker gateway before swiping a credit card.
**Relying on burstable CPU tiers for live accounts. **Burstable means the hypervisor rations processor time once you exceed a gentle baseline. Volatility spikes are the exact moments when your advisor demands full computational muscle, and they are also the moments when a burst plan snatches it away.
**Leaving Windows Update on autopilot. **The default Windows behavior pulls patches in the background and reboots without asking permission. A forced restart at three in the morning during an Asian session can orphan open positions and disable trailing stops. Schedule patches for Saturday mornings or another window when no markets are active.
**Skipping configuration backups. **Your chart templates, indicator parameters, advisor presets, and broker login credentials live on the remote machine. If the server fails or you migrate to a different provider, rebuilding everything from scratch wastes hours and introduces errors. Copy the entire platform folder to a local drive once a week.
**Paying flat monthly fees during the testing phase. **Strategy development is bursty: you hammer a machine for a few days, then leave it idle for weeks. A fixed monthly rate charges the same regardless. Providers like Serverspace that meter in ten-minute increments can cut infrastructure spending during this phase by half or more, freeing budget for the live account that comes later.
## Conclusion
No single product earns the title of best vps for trading across every market, every strategy, and every budget. A robot scalping Nasdaq futures every few seconds needs Chicago hardware and the tightest possible wire to the order gateway. A forex position trader holding through multiple sessions needs dependable availability and a server near the broker liquidity cluster. A developer cycling through strategy prototypes needs elastic billing and rapid deployment so infrastructure costs flex with actual usage.
The breakdown above spans both poles. Niche providers like QuantVPS and ForexVPS.net deliver turnkey environments tuned for speed. General platforms like [Serverspace](https://serverspace.us/services/vps-server.md) deliver infrastructure flexibility, ten-minute pay-as-you-go metering, and data center placements that serve U.S. equity and European currency traders effectively.
The practical starting point is the same regardless of which provider you lean toward: identify where your broker parks its gateway, match that to a server location, rent a minimal configuration, and run your stack under real market conditions. Scale up only after the numbers confirm that the setup works. That sequence respects both your capital and your time.
https://serverspace.us/about/blog/cpu_vs_gpu.mdWhat should you choose in 2026: CPU or GPU? A practical guide to the differences, use cases, costs, and server scenarios for each option.
When people compare CPU and GPU, the discussion usually gets reduced to two oversimplifications: the processor is "for everything," while the graphics card is "for games and neural networks." In real infrastructure, that framing is not very useful. CPU and GPU handle different classes of workloads. A CPU is better suited for general-purpose computing, system logic, sequential processing, and tasks that constantly switch between different instructions. A GPU performs better when computations can be parallelized and large volumes of similar operations need to be processed at the same time. That is why the choice between them should be based not on a vague sense of "which one is more powerful," but on the type of workload you actually have.
In 2026, this question has become more visible because the same infrastructure is increasingly expected to handle both standard services and AI-related workloads. In practice, those demands rarely fit the same hardware equally well. A website, API, CRM, WordPress installation, task queue, and internal portal have one set of requirements. Local inference, image generation, video processing, or model training have another. If you do not separate these scenarios early, it is easy to overspend on a GPU where a regular CPU server would have been enough, or end up with hardware that simply is not built for parallel compute-heavy tasks.
## What Is a CPU and What Is a GPU?
A CPU, or central processing unit, is the main general-purpose computing component of a system. It handles the operating system, applications, background processes, network requests, the file system, service logic, and everything else that requires flexibility and fast context switching. A CPU has fewer cores than a GPU, but those cores are designed for a much wider range of tasks. It is not "weaker hardware without specialization." It is the universal layer that both ordinary servers and AI systems still depend on.
A GPU, or graphics processing unit, was originally built for graphics, but it has long been used for much more than that. Its defining strength is parallel processing. Where a CPU is good at complex logic with branching and frequently changing instructions, a GPU is better at handling large batches of similar operations: matrices, tensors, rendering, computer vision, inference, and parts of scientific computing.
## What Is the Difference Between CPU and GPU?
Here is a short comparison without marketing language.
| Criteria | CPU | GPU |
| --- | --- | --- |
| Main role | General-purpose computing and system control | Parallel computing |
| Stronger at | Sequential logic, low latency, system tasks | Large volumes of similar operations |
| Typical workloads | Websites, APIs, databases, CRM, queues, monitoring, CI/CD | AI/ML, inference, rendering, video, computer vision |
| Core count | Lower, but more versatile | Higher number of compute units |
| What matters most when choosing | Clock speed, IPC, cache, memory, I/O | VRAM, memory bandwidth, parallel throughput |
| What is usually cheaper | CPU server | GPU server is almost always more expensive |
| Barrier to entry | Low | Higher: you need a clear use case |
Put simply, a CPU is the base compute layer, while a GPU is an accelerator for a specific class of tasks. One does not replace the other. They just work differently.
## When a CPU Is Enough
For ordinary server infrastructure, a CPU is still the first and most practical choice. That includes websites, WordPress, online stores, backend APIs, corporate services, CRM, ERP, staging environments, CI/CD, VPN, caching, monitoring, containers, and most SaaS workloads. In these scenarios, the system is more likely to be limited by application logic, the database, memory, storage, or networking than by the kind of massively parallel compute a GPU is built for.
That is why a regular CPU server is the sensible starting point for most projects. If you are running a website, an internal service, a small platform, an API, WordPress, or bots, what usually matters more is predictable performance, enough memory, fast storage, and a clear price. A standard VPS fits that pattern well. For example, in [Serverspace](https://serverspace.io/services/cloud-servers/), you can deploy a cloud server in about 40 seconds and choose the operating system and base configuration right in the control panel without extra manual setup.
There is another important point here: even if a project already uses AI, that does not automatically mean it needs a GPU. If you rely on external AI APIs, the heavy compute happens on the provider's side, not on your server. Your own server is handling orchestration: receiving requests, preparing data, storing results, working with queues, and returning responses. For this kind of workload, a CPU is usually a better fit and costs less.
## When a GPU Makes Sense
A GPU makes sense when parallel processing gives a real gain in execution speed. This includes model training and fine-tuning, local inference, image and video generation, computer vision, parts of scientific computing, and workloads where large amounts of data are processed through the same type of operation. In these cases, a GPU does not provide a minor improvement. It can change throughput in a noticeable way.
Even here, though, it is better not to start from the word "AI" and assume a GPU is required. If you have a small project that simply calls an external model API, you probably do not need a GPU on your own side. But if you want to run a model locally, keep inference in-house, or work with video, rendering, or computer vision, then it makes sense to look at a GPU configuration.
## What Most Teams Choose in 2026
If you strip away the hype and look at ordinary projects, the picture is fairly simple. For most applied workloads — websites, backend services, dashboards, internal tools, microservices, queues, databases, integrations, WordPress, e-commerce, and automation around external AI APIs — teams choose CPU. It is easier to work with, cheaper, and matches the workload better. GPUs are added where the compute is genuinely heavy and the acceleration justifies the higher infrastructure cost.
In practice, a common approach looks like this: start the project on CPU, collect metrics, identify the actual bottleneck, and only then move specific heavy tasks to GPU if needed. That path is usually more practical than buying an expensive GPU configuration in advance "just in case." It gives you clearer costs, less idle hardware, and a lower chance of paying for unused capacity.
## Common Mistakes When Choosing
**Expecting a GPU to speed up everything.** If your bottleneck is the database, storage, network, queues, application configuration, or simply poor architecture, a GPU will do very little. It only helps with the classes of workloads it was actually designed for.
**Ignoring total cost of ownership.** A GPU server is almost always more expensive on its own, and it also brings higher requirements for memory, VRAM, drivers, cooling, and overall setup complexity. If the project does not really use the GPU, that configuration quickly turns into an expensive and underutilized resource.
**Choosing "AI-ready" infrastructure without understanding what will run locally.** For content work, marketing, support automation, analytics, and many internal workflows in 2026, a CPU server plus an external API is often enough. A GPU is not needed because the project is modern. It is needed only when there is a specific compute-heavy workload behind it.
## What Should You Choose in 2026?
If your workload is a website, API, CRM, CMS, online store, standard backend, automation, queues, bots, or integrations with external AI APIs, then in most cases you should start with a CPU. It is a better fit for normal server work, easier to operate, and noticeably cheaper. And if you want a fast start without a long deployment process, a regular VPS is a logical option here as well. The same [Serverspace](https://serverspace.io/services/cloud-servers/) cloud server setup is built exactly for this kind of workload.
If your workload includes model training, local inference, image generation, video pipelines, computer vision, rendering, or another compute-heavy scenario, then it makes sense to consider a GPU. But even then, it is better to start from the actual workload rather than from the idea of "getting the most powerful setup possible." A GPU is a specialized tool. When it matches the task, the difference is obvious. When it does not, you are just paying more.
## Conclusion
CPU and GPU are not direct competitors. They are different compute models for different workloads.
CPU is the base layer for websites, services, applications, databases, automation, and everyday server operations.
GPU is an accelerator for workloads with heavy parallel computation: model training, local inference, video, rendering, computer vision, and similar tasks.
If there is no clear reason to choose a GPU, it is usually more practical to start with a CPU. It is simpler, cheaper, and closer to the real workload of most projects. From there, you can look at metrics and decide whether it is worth moving any part of the stack to GPU later.
## Questions and Answers
**What is better for a server: CPU or GPU?**
For most ordinary server workloads — websites, WordPress, backend services, databases, CRM, queues, APIs, and internal tools — a CPU is usually enough. A GPU makes sense when the project involves local inference, model training, video processing, rendering, or other workloads that parallelize well.
**Do I need a GPU if my project uses AI?**
Not always. If you are working with external AI APIs rather than running a model locally, your server usually needs a regular CPU for application logic, storage, queues, and networking. A GPU is only necessary when the heavy computation happens on your side.
**Is a CPU suitable for AI workloads?**
Yes, but not for every type of AI workload. A CPU works well for orchestration, API logic, data preparation, the service layer, and light inference. But for heavy AI loads, especially larger models or high request volumes, a GPU usually provides much better performance.
**Can you run inference without a GPU?**
Yes, if the workload is small or the speed requirements are not too strict. Smaller models and some inference scenarios can run on a CPU. But if response speed, stable throughput, or larger models matter, working without a GPU becomes much harder.
**Why is a GPU server more expensive than a CPU server?**
A GPU is a more specialized and expensive resource. These configurations cost more because of the hardware itself, the memory requirements, cooling, and overall operation. That is why a GPU server only makes sense when there is a clear workload that can really use it.
**What should I choose for a website, online store, or WordPress?**
In those projects, a CPU is almost always enough. The main load comes from the CMS, the database, PHP, cache, queues, and network requests. A GPU usually provides no practical benefit in this scenario.
**Can I start with a CPU and switch to a GPU later?**
Yes, and in practice this is often the most reasonable path. Teams start on CPU, look at real metrics and the actual workload profile, and only then decide whether it makes sense to move specific tasks to a GPU. This helps avoid unnecessary costs early on.
https://serverspace.us/about/blog/how-to-automate-wordpress-tasks-with-n8n-webhooks-content-publishing-and-workflow-integration.mdLearn how to automate WordPress tasks with n8n - from publishing posts via webhooks to email marketing and lead handling. A practical step-by-step guide
Managing a WordPress site involves far more repetitive work than most people anticipate before they launch one. Publishing posts on schedule, routing form submissions to a CRM, sending email notifications when new content goes live, syncing user data with external tools — each of these tasks is simple in isolation, but together they consume hours every week. That is precisely the problem that **wordpress automation** is built to solve: instead of executing the same sequence of clicks and copy-pastes by hand, you define it once as a workflow, and a piece of software runs it for you, reliably and on demand.
Among the available platforms for building these workflows, n8n has emerged as one of the most capable and flexible options — particularly for teams and developers who want full control over their automation infrastructure without paying per-task fees or locking data into a third-party cloud. n8n is open-source, self-hostable, and ships with a dedicated WordPress node that communicates directly with the WordPress REST API. You do not need to write PHP, configure custom plugins, or understand API authentication in depth to get started.
This guide is written for a broad audience: whether you are a blogger looking to automate your publishing schedule, a marketer building lead capture flows, or a developer setting up a scalable content pipeline, this n8n wordpress automation tutorial covers everything from initial setup to advanced patterns. By the end, you will have a clear picture of what n8n can and cannot do with WordPress, and a practical foundation to start automating real tasks today.
## What Is n8n, and Why Does It Work Well with WordPress?
n8n (pronounced “n-eight-n”) is an open-source workflow automation platform. It operates on a visual canvas where you build “workflows” by placing and connecting nodes — each node represents an application, a service, or a logical operation such as a conditional branch or a data transformation. When a trigger fires (a scheduled time, an incoming webhook, a new row in a spreadsheet), the workflow begins executing, passing data from node to node until the final step completes.
What makes n8n wordpress automation particularly well-suited is the architecture of WordPress itself. WordPress has exposed a robust REST API since version 4.7, and n8n has a purpose-built WordPress node that speaks to this API natively. You do not need to construct raw HTTP requests, handle JSON formatting manually, or figure out authentication headers yourself. The node abstracts all of that. You connect it to your site with a set of credentials, pick an operation, fill in the fields, and n8n handles the rest.
The other distinguishing feature is self-hosting. Tools like Zapier or Make (formerly Integromat) are cloud-only products where every workflow execution passes through a third-party server. With n8n, you install it on your own server, which means your WordPress credentials, your post content, your customer data, and your business logic never leave your infrastructure. For anyone handling sensitive data or operating under data residency requirements, this is a significant advantage — and it eliminates the per-task pricing model that makes cloud automation tools expensive at scale.
## Prerequisites: What You Need Before Connecting n8n to WordPress
Before building your first workflow, two things need to be in place. On the WordPress side, the REST API must be enabled — it is active by default in WordPress 4.7 and later, so unless it has been explicitly disabled by a security plugin, you are already set. You also need to generate an application password for the WordPress user account that n8n will authenticate as. Application passwords were introduced in WordPress 5.6 as the official way to provide API access. They appear in your WordPress admin under _Users → Profile → Application Passwords_, and they function independently from your main login password — you can revoke them at any time without affecting your account.
It is best practice to create a dedicated WordPress user for n8n rather than using an administrator account. If n8n only needs to create and publish posts, give this user the Editor or Author role. Limiting scope means that if the credentials are ever compromised, the blast radius is contained.
On the n8n side, you need a running instance. n8n can be installed via npm, Docker, or deployed directly on a cloud server. For anything beyond local testing — especially if you plan to use webhooks (which require a publicly accessible URL) or run workflows on a schedule 24 hours a day — you will need a server that is always on. A VPS is the right choice here, and platforms like [Serverspace](https://serverspace.us/services/vps-server.md) offer Linux-based virtual servers where you can deploy n8n via Docker in a matter of minutes, with full root access and the ability to configure SSL, reverse proxies, and persistent storage as needed.
## How the n8n WordPress Node Works Under the Hood
The n8n WordPress node is a structured wrapper around the WordPress REST API. When you configure it, you supply a base URL (your site address) and credentials (username plus application password), and n8n stores these securely. At runtime, whenever the node executes, it constructs an authenticated HTTP request to the appropriate WordPress API endpoint based on the operation you selected, sends it, receives the response, and makes the returned data available for the next node in the workflow.
The node supports three resource types: _Post_, _Page_, and _User_. The Post resource — which is the most commonly used — supports five operations: Create, Update, Delete, Get (retrieve a single post by ID), and Get Many (retrieve a list of posts with optional filters). Each operation exposes the relevant fields: for Create and Update, you can set the title, content, status, categories, tags, slug, author, featured media ID, and excerpt. For Get Many, you can filter by status, author, category, search term, and date range.
This design is what makes wordpress workflow automation with n8n so composable. Because each node passes its output as structured data to the next node, you can pull a title and body from a Google Sheet, run it through a text transformation node, conditionally set the post status based on a value in a separate column, and then send everything to WordPress — all within a single workflow, without writing a line of custom code.
## Setting Up n8n and Connecting It to WordPress: Step by Step
Step 1 — Run n8n on a Server
The fastest way to get n8n running on a Linux VPS is Docker. After connecting to your server via SSH, execute the following to start n8n as a container with a persistent data volume:
```bash
docker run -d \
--name n8n \
--restart unless-stopped \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
-e N8N_BASIC_AUTH_ACTIVE=true \
-e N8N_BASIC_AUTH_USER=admin \
-e N8N_BASIC_AUTH_PASSWORD=yourpassword \
n8nio/n8n
```
Once the container starts, n8n is available at http://your-server-ip:5678. For production deployments, place Nginx in front of n8n as a reverse proxy and configure an SSL certificate with Certbot — webhooks require HTTPS to work correctly with most external services, and serving n8n over plain HTTP exposes your credentials in transit.
Step 2 — Add WordPress Credentials to n8n
In the n8n interface, navigate to _Settings → Credentials → Add Credential_ and search for “WordPress.” The credential form asks for three values: your WordPress site URL (including https://), your WordPress username, and the application password you generated earlier. Save the credential and n8n will immediately test the connection by making a test request to your site’s API. If the test passes, the credential is stored and ready to use across any workflow.
Step 3 — Build a Workflow Using the n8n WordPress Node
Create a new workflow and add a trigger. For testing, use the Manual Trigger node — it lets you run the workflow instantly by clicking a button. For production scheduling, use the Schedule Trigger (which fires on a cron-like interval) or the Webhook Trigger (which fires when an external service sends data to a URL you provide).
Next, add the WordPress node. Select your saved credential, choose _Post_ as the resource, and choose _Create_ as the operation. This is the configuration described in the n8n wordpress node documentation create post — the Create operation exposes fields for Title, Content, Status, Categories, Tags, Slug, and more. You can enter static text directly, or use n8n’s expression syntax to pull values dynamically from the previous node’s output.
Step 4 — Publish Posts Directly
To n8n wordpress node publish post as live rather than saving it as a draft, set the _Status_ field to publish. n8n will send a POST request to your WordPress REST API endpoint, and the content will go live immediately. You can place an IF node before the WordPress node to add conditional logic: for example, only publish if a “Status” column in a connected spreadsheet contains the word “approved,” and create a draft for everything else. This kind of conditional branching is where n8n’s workflow model becomes genuinely powerful compared to simpler point-to-point integrations.
## Comparing n8n to Other WordPress Automation Tools
Choosing among the available wordpress automation tools depends on your technical comfort level, budget, data privacy needs, and how complex your workflows will become. The table below compares the most commonly used options across the criteria that matter most for WordPress users.
| Tool | Self-Hosted | WordPress Node | Pricing Model | Custom Logic | Best Fit |
| --- | --- | --- | --- | --- | --- |
| n8n | Yes | Native, built-in | Free (self-hosted) / Cloud plans from $20/mo | Full (JS code nodes, custom expressions) | Developers, agencies, data-sensitive teams |
| Zapier | No | Requires plugin | Task-based, from $19.99/mo (scales quickly) | Very limited | Non-technical users, simple linear flows |
| Make (Integromat) | No | Via HTTP module | Operation-based, free tier available | Moderate (routers, filters) | Visual-first users, mid-complexity scenarios |
| WP Fusion | Plugin-based | Deep WP integration | Annual license, from $247/yr | WordPress/CRM ecosystem only | Membership sites, CRM sync |
| AutomateWoo | Plugin-based | WooCommerce-native | Annual license, from $99/yr | WooCommerce rules only | E-commerce store owners |
## Five Practical Use Cases You Can Build Today
### 1. Automated Blog Content Pipeline
Content teams that plan articles in shared Google Sheets can eliminate the manual step of logging into WordPress to publish. An n8n wordpress blog automation workflow checks the spreadsheet on a schedule — every morning at 8 AM, for example — scans for rows where the “Status” column contains “Ready to Publish,” pulls the title, body, category, and featured image URL from that row, creates or publishes the post in WordPress with all fields populated, and then updates the row’s status to “Published” so it is never processed twice. The content team manages their editorial calendar in a familiar spreadsheet; WordPress gets updated without anyone touching the dashboard.
### 2. Real-Time Webhook-Triggered Post Creation
Webhooks allow external services to push data to n8n the moment an event occurs, rather than waiting for a scheduled check. A practical implementation: a guest post submission form built with Typeform or JotForm sends its data to an n8n webhook URL when a user submits. n8n receives the payload, reformats the content according to your post template, creates a draft in WordPress with the submitter’s details in the post meta, and sends a Slack message to your editorial team with a link to review the draft. The entire process — from form submission to editorial notification — completes in under five seconds, without any manual forwarding of emails or copy-paste.
### 3. WordPress Email Marketing Automation
One of the most time-saving workflows is wordpress email marketing automation that triggers when a new post is published. n8n can poll the WordPress API every 15 minutes looking for posts newer than the previous run. When it finds one, it extracts the title, excerpt, categories, and URL, formats them into an email template, and sends a campaign through Mailchimp, Brevo, or ActiveCampaign using that platform’s n8n node. Subscribers receive a notification about your new content automatically, without you having to open your email marketing platform and manually compose a broadcast. For high-volume publishers, this workflow alone saves hours per week.
### 4. Marketing Automation for Lead Handling
Contact forms on WordPress sites typically just send an email to the site owner — and that email gets buried. WordPress marketing automation with n8n turns that form submission into a multi-step process: n8n receives the form data via webhook, creates or updates a contact record in HubSpot or Pipedrive, sends an automated personalized welcome email through your email platform, creates a follow-up task in Asana assigned to the appropriate sales rep, and adds the contact to a specific email nurture sequence. Every lead gets handled consistently and immediately, regardless of when they submit the form.
### 5. Cross-Platform Content Syndication
Publishers who maintain a WordPress site as their primary platform often also want their content distributed to Medium, LinkedIn Articles, a Telegram channel, or a social media scheduler. Rather than manually cross-posting each article, an n8n workflow can watch for new WordPress posts, pull the full content, reformat it for each destination platform (stripping HTML tags for plain-text channels, truncating for social previews, adding UTM parameters to links), and push it to each target via their respective APIs. A single publish action in WordPress triggers distribution to every channel automatically.
## Advantages and Limitations: An Honest Assessment
The strongest argument for choosing n8n for WordPress integration is the combination of depth and cost control. Because n8n is open-source and self-hosted, you are not paying per workflow execution. A workflow that runs every 5 minutes, 24 hours a day, processes 288 executions per day — with a task-based tool like Zapier, that adds up fast. With n8n on your own server, those executions cost nothing beyond the server itself, which typically runs $5–$15 per month for a modest VPS. The visual editor makes complex multi-branch workflows manageable without writing application code, while the built-in Code node gives technical users the ability to write arbitrary JavaScript when the visual tools are not expressive enough.
The limitations are real and worth understanding before you commit. Self-hosting means self-managing: you are responsible for updates, backups, uptime monitoring, and SSL certificate renewal. If your server goes down, your workflows stop. There is no SLA, no managed failover, and no support team on call. The setup process — Docker, Nginx, SSL — is not difficult, but it assumes basic familiarity with Linux server administration. And while the WordPress node covers the core REST API operations cleanly, interacting with custom post types added by specific plugins, or calling WordPress API extensions that plugins register, may require falling back to the generic HTTP Request node and constructing requests more manually.
## Common Mistakes and How to Avoid Them
The most widespread mistake when setting up **wordpress automation** with n8n is authenticating with an administrator account’s main password rather than generating a dedicated application password. Application passwords are scoped for API use, do not grant dashboard login access, and can be revoked individually. Using your primary admin password in an external system is both a security risk and unnecessary — application passwords exist precisely to avoid this. Always create a separate WordPress user for n8n with the minimum required role, and issue an application password specifically for that integration.
The second common mistake is building workflows with no error handling. A WordPress post create request will fail if the title field is empty, if the category ID you specified does not exist, or if your server’s application password has been revoked. Without error handling, the workflow simply stops silently and you never know. n8n provides an Error Workflow feature at the workflow settings level: designate a separate “error handler” workflow that receives details about any failure and sends you a notification via email, Slack, or Telegram. Once this is in place, every workflow failure produces an immediate alert with the error message and the node that failed.
A third issue specific to polling-based workflows is processing the same item twice. If your workflow polls WordPress for new posts and the last-run timestamp is not stored correctly, a post created at 8:59 AM might be picked up again at 9:00 AM and processed a second time. n8n offers a Static Data feature (accessible via the Code node) that persists a small amount of data between executions — use it to store the ID or date of the last item you processed, and filter out anything at or before that marker on the next run.
## Infrastructure: Running n8n Reliably for WordPress Automation
For a production n8n instance handling multiple workflows, the minimum comfortable server spec is 2 vCPU cores, 2–4 GB of RAM, and 20 GB of SSD storage. If you are using a PostgreSQL database for n8n (which is recommended over the default SQLite for production), that database can live on the same server or on a separate managed database instance. Pair your n8n container with a daily backup of the ~/.n8n directory and your database, and you have a reasonably resilient setup.
For teams running serious **wordpress automation** pipelines — processing hundreds of workflow executions per day, handling webhooks from multiple external services, and running time-sensitive scheduled tasks — hosting n8n on a dedicated VPS from a provider like [Serverspace](https://serverspace.us/services/vps-server.md) gives you a predictable, scalable foundation. You can start on a small instance and resize it as your workflow count grows, without migrating to a new environment or reconfiguring your integrations.
## Conclusion
n8n brings genuinely practical automation capabilities to WordPress — without the per-task pricing of SaaS tools, without forcing you to write custom PHP, and without locking your data into a third-party cloud. The WordPress node handles the most common publishing operations cleanly, and the broader n8n ecosystem of hundreds of nodes means you can connect WordPress to virtually any other tool in your stack: spreadsheets, CRMs, email platforms, project management tools, databases, and messaging apps.
The right way to start is with one concrete problem. Pick the most repetitive manual task in your current WordPress workflow — it might be publishing scheduled content, forwarding form submissions to a CRM, or sending email notifications for new posts. Build a simple workflow around that one task. Get comfortable with how data moves between nodes, how credentials work, and how to handle errors. Once that first workflow is running reliably, every subsequent one is easier to build and maintain.
Well-implemented **wordpress automation** does more than save time — it reduces the human error that comes with repetitive manual work, makes your publishing process consistent regardless of who is on the team that day, and frees up attention for the creative and strategic decisions that actually require human judgment.
## FAQ
**Does n8n work with all versions of WordPress?**
The n8n WordPress node uses the WordPress REST API, which has been included by default since WordPress 4.7. Application passwords — the recommended authentication method — were added in WordPress 5.6. If your site is running an older version, you can use basic authentication via a plugin, but upgrading WordPress is always the safer and more practical solution.
**Can I use n8n with WooCommerce as well as WordPress?**
Yes. WooCommerce exposes its own REST API for orders, products, customers, and coupons, and n8n has a dedicated WooCommerce node. You can combine the WordPress node and the WooCommerce node in the same workflow — for example, publishing a blog post about a product while simultaneously updating that product’s status in WooCommerce.
**How do webhooks work in the context of WordPress and n8n?**
In n8n, a Webhook trigger node generates a unique URL. You paste this URL into an external service — a form builder, a CRM, a payment processor — and configure that service to send a POST request to it when something happens. WordPress itself does not natively fire outbound webhooks, but plugins like WP Webhooks or Simply Schedule Appointments can add this capability, letting WordPress trigger n8n workflows when posts are published, users register, or forms are submitted.
**Is it safe to give n8n access to my WordPress site?**
Yes, if you follow basic security practices. Use application passwords rather than your main login password. Create a dedicated WordPress user for n8n with only the permissions it needs. Run n8n over HTTPS. Consider restricting access to your n8n instance by IP address or adding two-factor authentication to the n8n login. Never expose the n8n interface to the public internet without any authentication.
**What is the difference between a polling workflow and a webhook workflow?**
A polling workflow runs on a schedule and asks WordPress “has anything changed since the last time I checked?” A webhook workflow is event-driven: the moment something happens, WordPress (or another service) sends data to n8n immediately. Webhooks are faster and more efficient, but they require the triggering service to support outbound webhook calls. Polling is simpler to set up and works with any service that has an API, but introduces a delay equal to the polling interval.
**Can I run n8n on shared hosting?**
No. n8n is a Node.js application that requires a persistent process and a dedicated port. Shared hosting environments do not support either of these. You need a VPS, a cloud virtual machine, or n8n’s own managed cloud offering to run it properly.
**How do I handle failed workflow executions?**
In n8n, open the workflow settings and assign an Error Workflow — a separate workflow that runs automatically whenever the main workflow encounters an unhandled error. In the error workflow, use a notification node (Slack, email, Telegram) to alert yourself with the error details. This way, no failure goes unnoticed, and you have the information you need to debug the issue quickly.
https://serverspace.us/support/help/what-is-an-rdp-terminal-server-and-how-to-use-it.mdExplore the capabilities of an RDP Terminal Server with our guide. Learn what a Terminal Server is and discover step-by-step instructions to use RDS efficiently.
## Why we use remote access?
Remote access has become a necessity over recent years, because there are a growing number of reasons why people might need access to their work computer from any location and on any device. These include needing to complete work out-of-office hours or when traveling; wanting to continue working in case servers go down at your location; wanting to work securely and without being compromised; or simply having a preference for using different devices such as smartphones, tablets and laptop computers to complete their day-to-day tasks.
Using remote access allows employees greater freedom of movement when it comes to where they can work from (which in turn increases overall productivity) and also gives them the ability not only to keep working if server connections are disrupted but also helps safeguard against a range of potential security issues that may arise as a result.
## Terminal server and configuration
Some company don’t have enough resources, powers and qualified specialist to provide every worker their workplace. PC, monitor, hardware, software and needed level of security on the various layer of network and OS. What we can do in this case? There is technology which allow users get access to the powerful server which separate environment between different users. **That’s Terminal Server!** Main concept include idea when every worker have thin client or in another word low-power PC, which connect to the main server where execute all operations. Thing client in their turn system to recieve data and displayed that on the screen. Using that model decrease needed of budget for securely and effective functioning all system.
Screenshot №1 — Thin client
That technology is quite similar to the Virtual Desktop Infrastructure, but have significant differences: in the case with Terminal Server separate access execute by standart Access Control mechanism, but in the way of VDI we have isolated virtual machine in one host. We can say a lot of about differences of that technologies, but in that instruction we will focus on the firts one. We consider how to prepare standart server to the work with client, setup own Terminal Server!
Primarily, we need to make decision for type of manage our server. Firts way, we build LAN with Terminal Server and local client, in this way we setup all settings locally. In the Second way we can connect Terminal server to Domain Controller and create GPO for them. In that instruction we will consider way locally setup!
Go to the fresh installing machine with prepared disk partition into system part, disk for application and services. Also optionally have already setup RAID, which allows to improve efficiency and fault-tolerance of the system. Search in the bar **Server Manager**, click on it. Look at the right corner and search in the **Manage **tab, **Add Role**:
Screenshot №2 — Manage Server
Look for RDS or Remote Desktop Service, click on it, by the left button and go to the Role Services:
Screenshot №3 — Add Role
In the Role Services choose RD Licensing and RD Session, at the left of every options you can see brief description about services and their functionality:
Screenshot №4 — Add Services
Install selecting setup and wait until the end of installation process:
Screenshot №5 — Installation
In the next stage we need to activate server with wizard, for that you can go to the main page and look at the left menu. Look for **All Servers**, where you need to click left button on the server and choose License services RD Licensing Manager:
Screenshot №6 — Choose services
Wait until window load and choose needed certificate, click on it and choose option Activate Server:
Screenshot №7 — Choose server for activate
Fill all field with appropriate credentials:
Screenshot №8 — Enter credentials
Click on the next button and we can see our License:
Screenshot №9 — License
In the next stage of Wizard enter your license key for that type of using system and connect to the server through the RDP-client application!
The implementation of Remote Desktop Services (RDS) and the utilization of Terminal Server technology offer organizations a powerful solution to address the evolving needs of remote access and workforce mobility. As outlined in this guide, the demand for remote access has grown significantly, driven by the desire for flexibility in work arrangements and the need to ensure continuous productivity in the face of potential disruptions.
https://serverspace.us/support/help/mongodb-creating-updating-and-deleting-documents.mdTutorial how to work with MongoDB documents. Create MongoDB docs. Update many MongoDB documents. Delete MongoDB docs.
The realm of MongoDB extends far beyond the initial installation process, encompassing a suite of imperative operations essential for proficient database management. In this comprehensive guide, we will intricately explore three pivotal facets of MongoDB utilization: the creation, updating, and deletion of documents. MongoDB’s unique document-oriented NoSQL architecture affords unparalleled flexibility and scalability, emphasizing the significance of mastering these fundamental operations for seamless and efficient data manipulation.
## MongoDB create documents
At the first we need to connect to the MongoDB server, we will use mongoshell for that task at the localhost server:
```
mongosh
```
Screenshot №1 — MongoSH
Alright we are in! Switch to the database or create new by the command:
```
use hh
```
Screenshot №2 — Create DB
Now we switched our ahead input command to hh Database. But no one DB can’t exist without collection, that group of future MongoDB docs, let’s create them, by command below:
```
db.createCollection ('FS')
```
Screenshot №3 — Create Collection
After preparation step, create needed document, by the command:
```
db.FS.insertOne ({
id: "value1",
name: "value2″,
surname:"value3"})
```
Screenshot №4 — Create one document
If we want create many MongoDB documents at one transaction than we need to use another method for collection:
```
db.FS.insertMany ([
{id: "22", name: "Jhon"},
{hobby:"dance"}])
```
Screenshot №5 — Create many MongoDB documents
As yo can notice we use {} sign for indicate canvas of document and sing [] for indicate range of collection. Then we need to make sure that files was created, by method of collection:
```
db.FS.find()
```
Screenshot №6 — Check created files
In the picture we can see list of the created documents before.
## MongoDb update documents
For Update we will use follow algorithm, at firts indicate filter value and second replace target:
```
db.FS.updateOne (
{ id: "valuel" },
{ $set: { id: "newvalue"} }
);
```
Screenshot №7 — Update value
At the end of operation we see summary info about moderation: matched count, modified count and etc.
## MongoDb delete documents
For deletion we will use follow command:
```
db.FS.deleteOne({id: "newvalue"})
```
Screenshot №8 — Delete document
For make sure that command finished successfully, then type find command:
```
db.FS.find()
```
In the picture above we don’t see deleted document, that means deletion was done.
In conclusion, this guide serves as a compass through the multifaceted landscape of MongoDB operations, empowering users to navigate the nuances of document creation, updating, and deletion with confidence and precision. As users continue to harness the power of MongoDB, these foundational skills will undoubtedly prove invaluable in managing data with dexterity and efficiency.
https://serverspace.us/support/help/data-base-ms-and-efficiency-stress-test.mdExplore the ultimate guide to stress-testing MS databases for optimal efficiency. Uncover expert insights, best practices!
## Why we need stress-test?
Stress testing is an essential activity to ensure smooth operations and performance by simulating load on a system or application to analyse its behaviour under high workloads. By carrying out these tests before the software/app goes into live services, it helps identify weak spots that may affect user satisfaction or cause failures due to excessive demands during peak periods. Hence stress test tools play an integral part in testing scenarios that would not normally be possible when operating at lower loads thereby giving us a head start towards ensuring successful performance optimisations prior release onto the market.
## How to check DBMS?
One of the main component any system its DBMS, often we need to check work and give adequate mark of performance on the server. Many things depend on the configuration and hardware possibilities system, of course that always have to estimate in setup at all with software and hardware of server, in that article we consider only DBMS test.
First of all we need to update indexes and upgrade packages on the machine:
```bash
apt update && apt upgrade
```
Screenshot №1 — Update package
For stress-testing we will use sysbench which represents multi tool without requirements for complicated test, express way to estimate transaction and speed DBMS. Next we download and install package from repository:
```bash
apt install sysbench
```
Screenshot №2 — APT
We will use OLTP way for test, that mean Online Transaction Processing literally and in the process represent simultaneously processing data from multiply users. That system appropriate for short and often transactions, for write and read! Next we need to make preparation for test, login into the DBMS by the privilege user, for example root and create DB:
```
SHOW DATABASES;
```
And now create data base:
```sql
CREATE DATABASE gg;
```
Screenshot №3 — Preparation
After creation database we need to prepare data, by the command we can create table and fill row with needed records:
```
sysbench oltp_read_write –table-size=1000000 –db-driver=mysql –mysql-host=127.0.0.1 –mysql-db=gg – -mysql-user=root –mysql-password=123321 prepare
```
Screenshot №4 — Prepare table
**Remember!** You need to change credentials for account!
Options table size indicate number of records in the table, user and password are credentials, db-driver using DBMS system for check. Was created table **sbtest1**. Now we can run the test by the command below:
```
sysbench oltp_read_write –threads=2 –report-interval=3 –histogram –time=50 –table-size=1000000 –db-driver=mysql –mysql-host=127.0.0.1 –mysql-db=gg – -mysql-user=root –mysql-password=123321 run
```
Screenshot №5 — Test
Wait until process will be end. Also one of significant key in the stress testing it’s interpreter result. You need to compare output data with theoretical load on the system. Several significant parameters in that report – queries and transaction per second. Our server give pretty good result:
Screenshot №6 — Result
Now, if we don’t want to store garbage files, then we need cleanup them by the command:
```
sysbench oltp_read_write –db-driver=mysql –mysql-host=127.0.0.1 –mysql-db=gg –mysql-user=root –mysql-password=123321 cleanup
```
Screenshot №7 — Clean up
All saved data was dropped and memory was cleaned!
Overall, the provided content outlines a step-by-step process for stress testing a DBMS using sysbench, covering preparation, execution, result interpretation, and cleanup.
https://serverspace.us/support/help/how-to-manage-debian-repositories.mdLearn how to manage Debian repositories: edit sources.list, add new APT repositories, import GPG keys, and keep your system updated and secure.
## Introduction
In the Debian we have various way to update and download software to our system, that can be single archive with set of dependencies, index and etc. Usually that have format tar.gz or .deb, there are files with open-source code which need compile before using.
But some utilities, packets and software may be have snippet of malicious code, unstable or untrusted. For solve that purposes we have repositories with trusted, verified and stable packets, that we can install and using easily. They represent pack of hierarchy of packets, index, libraries needed for installation and sign for more secure usage.
## Requirements
- **Root rights;**
- **Debian OS;**
- **Several knowledge about work OS ;**
- **Internet connection**.
## Manage repositories
For the manage repositories we can use files for configuring our system, for that let’s find catalog with label apt and check content:
```
cd /etc/apt/ && ls -l
```
Screenshot №1 — List of files
At the screenshot we can see bunch of different files and directories, that we can use for configuring our repositories. Let’s consider all files in the catalog and give them explanation:
- **Sources.list** — it’s determine list of using repositories, their version and branch of the software, that file combine in it self all list of servers;
- **Sources.list.d** — the file using for separated configuring list of repositories, usually that divide by using services;
- **Trusted.gpg** — that file contain trusted keys of using repositories;
- **Trusted.gpg.d** — the same file as above, but divided by the services.
Consider the file sources.list and add line with repository:
```
nano /etc/apt/sources.list
```
```
deb http://security.debian.org/debian-security bullseye-security main
```
Screenshot №2 — Repositories list
After that we can update index by the command below:
```bash
apt update
```
Then we can use repository by apt, aptitude and etc command for controlling package in our local machine.
However, we can configuring system separated by the services:
```
cd /etc/apt/sources.list.d/ && ls
```
Screenshot №3 — Directory of repo
Go to text editor and consider the file, in your system may be there isn’t needed file and you can create this.
For an existing file we just open it, for empty catalog, we create with **.list**:
```
nano mysql.list
```
Screenshot №4 — Repo list of MySQL
In that line we can indicate signed-file for repo, link and version of using servers, usually we need to add **.gpg** file into the system. In the moment of update index package our machine verified public key of our repo and then update all information. That mechanism of electronic signature help to save integrity and verify author of data. We can add key by the command, where key.asc will your public key:
```
gpg –import key.asc
```
Screenshot №5 — List of public keys
And now we can use repository for update and installation software, executing the command below:
```bash
apt update
```
Screenshot №6 — Update
We are installing software to check that repository work:
```bash
apt install dnsutils
```
Screenshot №7 — Installation
## Conclusion
This guide provides a comprehensive understanding of Debian repositories and their essential components, empowering users to confidently manage software sources on their Debian-based systems. By learning how to configure **sources.list**, add third-party APT repositories, import and verify GPG keys, and regularly update package lists, users can ensure their systems remain secure, functional, and up to date. Whether you’re maintaining a personal desktop or managing multiple servers, mastering repository management is a key skill for any Linux administrator.
## FAQ: Frequently Asked Questions
- **What is the purpose of the sources.list file in Debian?**
This file defines the default list of software repositories used by your system. It contains URLs to official or third-party servers that host packages and updates.
- **Is it safe to use third-party repositories in Debian?**
It depends. Trusted third-party repositories (like those from reputable vendors) are generally safe. However, always verify the GPG key and the source before adding them to avoid security risks.
- **What's the difference between .deb packages and repositories?**
.deb packages are standalone installation files, while repositories are organized collections of such packages with metadata and signatures that allow safe and automated installation and updates.
- **How do I add a GPG key to authenticate a repository?**
You can import a public key using the command:
```
gpg –import key.asc
```
Alternatively, for APT specifically:
```bash
curl -fsSL https://example.com/key.gpg | gpg –dearmor -o /usr/share/keyrings/repo-archive-keyring.gpg
```
- **Why do I get “NO_PUBKEY” errors during apt update?**
This means the system doesn’t trust the repository yet. You need to import its public GPG key for proper verification.
- **Can I manage multiple repositories separately?**
Yes. Use the /etc/apt/sources.list.d/ directory to split repository configurations into separate .list files for better organization and service-specific setups.
https://serverspace.us/support/help/setup-raid-massive-on-linux.mdDetailed description of creating a RAID array in Linux — from choosing the RAID level to configuring and testing the array
## Plan
Configuring a RAID array on Linux involves several basic steps:
- Disk preparation: Ensuring the availability and preparation of physical disks to be used in the RAID array. The disks may be new or have data that will need to be saved;
- RAID Level Selection: Determining the best RAID level for system requirements. For example, RAID 1 for data fault tolerance, RAID 0 for performance improvement, or RAID 5/6 for a balance between fault tolerance and performance;
- Creating a RAID array: Using the mdadm (Multiple Device Administration) utility to create a logical RAID array based on the selected RAID level and physical disks;
- File System Configuration: Formatting the RAID array using the selected file system so that data can be stored;
- Mounting a RAID array: Setting up the automatic mounting of the RAID array when the system boots;
- Testing and verification: Checking the correctness of the RAID array configuration and its operability by creating, writing and reading test data.
## Requirements
- Root rights;
- Debian 11 or higher version;
- Several knowledge about work OS ;
- Internet connection.
## Add disk
In the dependency of your infrastructure choose method for add disk to the system. For physical machine — connect to empty port, for virtual machine look at the tab on your hypervisor and add currently or target disk, in another way if you choose Serverspace VPS server you can add needed space through main panel:
Screenshot №1 — Control panel
Choose cloud technology and servers, then choose tab Settings and scroll until you will see Volumes and click to Add:
Screenshot №2 — Create disk
In the pop-up window choose needed disk space, check the box and restart server via button below, after we need to make shure, that disk are connected. In the terminal type command:
```
lsblk
```
Screenshot №3 — List of block
Alright, two disk in the system and they are connected. At the next step we need to choose RAID format. Let’s have look!
## RAID schemes
In the various of bundle, combination and architectures of modern raid schemes highlight several for using:
### RAID 0
Represented basic method of transfer data by striping block of information between two or more disks. Whole data divide into to parts, that upgrade bandwidth due to using several disk instead of single storage. But there is significant problem in that case: non fault tolerance. If at least one disk will corrupted, then all data become into trash. That simple system use for temporarily data and system with requirements to rapidly read and write information.
### RAID 1
Represented basic method of transfer data by mirroring and synchronize information between two or more disks. Whole data copy to another storage. In that way appears fault tolerance and save system until corrupt one of the disk, but there is lack of the speed to write data in comparison to **RAID 0**.
### RAID 5
That solutions are compromise between speed of I/O and fault tolerance in the RAID system. Integrity of data will possible due to parity block algorithm, which save data more securely.
The process of calculating the parity blocks depends on the RAID level and the parity algorithm used. Consider the processes of calculating parity blocks for RAID 5 and RAID 6, which are the most common RAID levels using parity blocks.
Suppose we have 4 disks A, B, C and P (where P is a parity disk) and we want to write data to disks A, B and C. To calculate the parity block for the data that we want to write to disks A, B and C, the XOR (exclusive OR) operation is used on the data on these disks.
**Example:**
Let’s say we have data 10101010 that needs to be written to disks A, B and C. Then the process of calculating the parity block (P) will be as follows: **P = A XOR B XOR C**
Thus, the value of P will be equal to the result of the XOR operation between the data on disks A, B and C.
When reading data from disks A, B and C, the RAID controller can use the parity block (P) to recover data on the failed disk. For example, if disk B fails, the RAID controller uses data on disks A, C, and P to recover data that was stored on disk B. But for this RAID we need at least three disk.
## Installation
After you was made your choice of RAID system, you need to update and upgrade system packages in our machine for their properly work:
```bash
apt update && apt upgrade -y
```
Screenshot №4 — Update
If you have significant data on the disk make backup of their via command below:
```bash
tar -cvfz backup /etc && scp /backup root@65.44.32.1:/etc/backup
```
You have to change IP address for your IP of machine. Check for working with RAID are installed on your Linux distribution. In most cases, it will be an mdadm package. You can install it using your distribution’s package manager (e.g. apt, yum, dnf). In our example we will use apt packet manager, for your case use accordance to your OS. If you forgot label of your disk you need to type:
```
lsblk
```
After that install needed software, in our instruction that will mdadm which allows to create program RAID system for disk on Linux:
```bash
apt install mdadm
```
Screenshot №5 — Installation
Now we can use mdadm for create array, let’s start with RAID 1 and create virtual controller device and indicate needed disk for usage.
**Important to highlight!** In the dependency of your network architecture you need to decide. You will use bootable disk of OS in RAID system or not. If answer positive then you need ensure your boot loader supported md version. Let’s create array by the command below:
```
sudo mdadm –create /dev/md0 –level=1 –raid-devices=2 /dev/sdc /dev/sdb
```
Screenshot №6 — Create controller
The **mdadm** is main syntax command, **–create** option to make array,** /dev/mdo –level=1** device of RAID 1, **–raid-devices=2 /dev/sdc /dev/sdb** in that part we indicate two using disk for our array. Let’s check status of process through command below:
```
cat /proc/mdstat
```
Screenshot №7 — Status of installation
For our array we need to create single file system for all disks, we will use ext4 for our purposes:
```
sudo mkfs.ext4 /dev/md0
```
Screenshot №8 — Make file system
Let’s mount RAID system to point:
```
sudo mkdir /mnt/md
sudo mount /dev/md0 /mnt/md
```
Screenshot №9 — Mount disk
Add raid system to autoboot at the start, after this open nano by the command below and put Tab in the red field:
```
echo "/dev/md0 /mnt/md ext4 defaults 0 0" >> /etc/fstab
```
```
nano /etc/fstab
```
Screenshot №10 — Nano editor
After this reload daemon:
```bash
systemctl daemon-reload
```
And type check command to ensure that file system and RAID are worked properly:
```
lsblk
```
Screenshot №11 — Result
## Conclusion
Configuring a RAID array on Linux involves preparing the disks, selecting the RAID level, creating the RAID array using mdadm, configuring the file system, and mounting the RAID array. Testing and verifying the setup is crucial for ensuring its functionality. Specific requirements include root access, Debian 11 or higher, knowledge of the OS, and an internet connection. Adding a disk, choosing RAID schemes (RAID 0, RAID 1, RAID 5), and installation steps are also covered. The conclusion provides a concise overview of the RAID configuration process on Linux.
https://serverspace.us/support/help/postgresql-to-manage-users.mdDiscover the power of PostgreSQL for efficient user management. Learn how to leverage PostgreSQL's capabilities.
## Introduction
The information systems represented in various sphere of business and our life cycle: health care, production, food growing, entertainment and etc. All of that needed to save, share, pull, get and update data more effectiveness. For that community developed storage for structured data and create different type of DB for distinguish purposes. In that instructions we will consider one of that example PostgreSQL and how to manage user on it.
## Management
We have installed the PostgreSQL Database Management System (DBMS) on our machine, our initial step involves switching the user to **postgres**:
```
sudo -i -u postgres
```
```bash
psql
```
Screenshot №1 — Login
For checking user in the DBMS we can use command below:
```sql
SELECT * FROM pg_catalog.pg_user;
```
Screenshot №2 — Show users
Now we can add new account, for that we need to indicate label and password:
```sql
CREATE USER serverspace WITH PASSWORD 'mypassword.com';
```
And for make sure that our command work properly we can highlight caption **CREATE ROLE **as confirmation and we type command for checking user again:
```sql
SELECT * FROM pg_catalog.pg_user;
```
Screenshot №3 — Create user
In the table represent all parameters of new added user, now we need to GRANT privileges also by the command:
```
GRANT ALL ON ALL TABLES IN SCHEMA public TO serverspace;
```
Let’s explain syntax of that complex queries:
- GRANT ALL — it’s a syntax command forces to grant all or administrative privileges for user;
- ON ALL TABLES — that means grant privilege for all tables;
- IN SCHEMA — for postgreSQL we use organization plan of tables in DB;
- TO serverspace — that indicate account for escalate privilege.
Screenshot №4 — Grant privileges
In the same way we can revoke that:
```
REVOKE ALL ON ALL TABLES IN SCHEMA public FROM serverspace;
```
Screenshot №5 — Revoke privileges
As you can notice syntax of command remind human-like and intuitive understandable language. Also we can assign role for the user, that mean special group for easily management:
```sql
CREATE ROLE tigers;
```
```
GRANT tigers to serverspace;
```
Screenshot №6 — Create and grant role
There is event when we need to restore password or update it due to human factors or technical issue, for that we can use command:
```sql
ALTER USER serverspace WITH PASSWORD 'newpassphrase';
```
Screenshot №7 — Change password
For deleting we account we can use SQL query DROP:
```sql
DROP USER serverspace;
```
And check list of currently user in the DBMS:
```sql
SELECT * FROM pg_catalog.pg_user;
```
Screenshot №8 — Delete user
## Conclusion
The information systems play a pivotal role in various aspects of our lives, spanning across industries such as healthcare, production, agriculture, entertainment, and beyond. The need to efficiently store, share, retrieve, and update data within these systems has prompted the development of specialized storage solutions for structured data. One such example is PostgreSQL, a powerful and versatile Database Management System (DBMS).
https://serverspace.us/support/help/linux-chroot-how-to-create-isolated-environments.mdLearn how to use chroot in Linux to isolate processes and enhance system security. This guide explains the benefits of chroot, including permission control and the creation of safe, contained environments.
**Chroot** is a Unix command that can help you to change the apparent root directory of your file system. The advantages of this utility exceed all possible norms and indicators, such as running programs or utilities on a different version of the operating system without affecting the rest system.
## Chroot
When you run chroot, you are making a fresh shell environment with its root directory, separate from the central system’s root directory. This means that any commands or actions you take within the chroot environment will **only affect files and directories** within the chroot environment, not the primary system.
For example, if you wanted to test out a new version of a program that requires different libraries than what is installed on your main system, you could create a chroot environment with the necessary libraries and then run the program within that environment.
This way, you can ensure that the program will work properly without having to modify your main system.
It’s important to note: chroot should only be used by experienced users, as it can potentially cause system instability if not used correctly.
## Chroot: isolation and root permission
The main features of chroot are:
- **Process isolation**: chroot can run processes in an isolated file system namespace to prevent access to sensitive data and resources;
- **Program testing**: chroot can be used for testing programs in a safe environment where they cannot damage the host system;
- **System recovery**: chroot can be used for system recovery after a crash or malicious attack;
- **Permission management**: chroot can be used to restrict user access to specific files and directories on the server.
In that article, we will consider only process **isolation** and **root permission**, another function of this utility will be described in a new episode instruction.
At the beginning write this command to update the index of the package :
```bash
sudo apt update -y && sudo apt upgrade -y
```
Screenshot №1 — Update package
Check the installation chroot on your system via the command. For most Linux distributions, they are called “**chroot**” or “**util-linux**“:
```
chroot –version || util-linux –version
```
Screenshot №2 — Check version
After we have made sure that all files and packets have the right installation, make a directory where will new environment for our system:
```
cd / && mkdir env0
```
Screenshot №3 — Start environment
For example, we isolate utility process ls:
```
cp -R /bin /lib /lib64 /usr /etc /env0/
```
```
chroot /env0 /bin/ls
```
Screenshot №4 — After start
Via these commands, we copy and start the isolated environment, which in turn boot ls process. But how can we give or get access to this utility, all process is quite simple.
```
сhroot –userspec=
```
Screenshot №5 — User permission management
Sets the user and group on whose behalf the command will be run in an isolated environment.
## Conclusion
Overall, chroot is a powerful utility that offers a wide range of benefits, including process isolation, program testing, system recovery, and permission management. In this article, we have focused on process isolation and root permission management, but in the next episode of instructions, we will explore another function of this utility.
By following these steps, you can take advantage of chroot’s capabilities to create safe environments for testing programs and recovering systems after crashes or malicious attacks. Stay tuned for our upcoming article on ["Isolated recovery Linux via chroot"!](https://serverspace.us/support/help/how-to-use-the-chroot-in-linux-part-2/)
https://serverspace.us/support/help/how-to-solve-mongodb-error-connect-econnrefused.mdStep-by-step guide to resolving the “ECONNREFUSED 127.0.0.1:27017” MongoDB error.
A common issue faced by many MongoDB users is the inability to establish a stable connection to their database servers. This problem has become especially noticeable following recent incidents at MongoDB Inc., which left many users with unresponsive or idle database instances. As a result, developers and administrators frequently encounter connection failures when attempting to access their databases. One of the most widespread symptoms of this issue appears during attempts to connect via the mongosh client, where the system returns the following error message:
```
mongodb://127.0.0.1:27017/?directconnection=true&serverselectiontimeoutms=2000&appname=mongosh+2.1.1
```
Screenshot №1 — Error
This issue typically occurs when trying to connect locally to the MongoDB server, but it can also arise in a network setup where the database resides on another server.
## Understanding MongoDB Client-Server Communication
To understand how to resolve the issue, it’s important to grasp the basic interaction between the client (**mongosh**) and the database server. In this case, both the client and server are expected to reside on the same machine. Therefore, the communication takes place through the loopback interface. However, in your situation, the database might be on a different server on the network.
When the client sends a connection request to the server (typically to port **27017**), it will either establish a connection and allow access to the MongoDB shell, or it will return an error message if something goes wrong. Common causes for this error include the database daemon being down, incorrect configuration, or network connectivity issues.
All steps in the tutorial can be performed on [cloud servers](https://serverspace.us/services/cloud-servers.md).
## The daemon has been deactivated
The first step in resolving this issue is to ensure that the MongoDB service (**daemon**) is running. Use the following **systemctl** command to check the status of the mongod service:
```bash
systemctl status mongod
```
Screenshot №2 — Disabled daemon
If the service is not running, the status will show something like "inactive (dead)". To start the service, use the following command:
```bash
systemctl start mongod
```
Once started, verify the service is running correctly by checking the logs:
```
journalctl -xeu mongod
```
Screenshot №3 — Logs of unit
This will give you detailed logs of the MongoDB service, allowing you to see if any errors occurred during startup. If you see a message like “**job for unit finished successfully**“, it means the service is up and running.
## Connection and configuration error
If starting the MongoDB daemon doesn't resolve the issue, it's important to verify your configuration and network setup. Often, the error message includes the address** mongodb://127.0.0.1:27017**, which indicates that MongoDB is being accessed locally. To connect to a remote MongoDB instance, you'll need to modify your connection string as follows:
```
mongosh mongodb://myuser:mypassword@123.456.789.0:27017/mydatabase
```
Make sure to replace **myuser**, **mypassword**, **123.456.789.0**, and **mydatabase** with your actual credentials and database details.
Next, ensure that the MongoDB server is reachable from your client machine. You can check the port availability using netcat:
```bash
apt install netcat-traditional -y
nc -zv 127.0.0.1 27017
```
Screenshot №4 — Test port
Open the MongoDB configuration file to ensure it's correctly set up to accept network connections:
```
nano /etc/mongod.conf
```
Screenshot №5 — Config
```bash
systemctl restart mongod
```
## System user has no rights
MongoDB uses specific system users and groups to run the service, and it’s important that these users have the proper permissions to access the MongoDB configuration files. To check the file permissions on the configuration file:
```
ls -la /etc/mongod.conf
```
Screenshot №6 — Rights
Ensure that the file owner has **read** and **write** permissions and that others (including the MongoDB service user) have at least read permissions. If permissions are incorrect, use the **chmod** command to correct them:
```bash
chmod 644 /etc/mongod.conf
```
Screenshot №7 — Change rights
Once the permissions are set correctly, restart the MongoDB service again:
```bash
systemctl restart mongod
```
In general, understanding the causes of this error and using appropriate tools to diagnose and resolve the problem will help you successfully restore MongoDB operation and troubleshoot database server connectivity issues.
## FAQ – Frequently Asked Questions
- **Q: How can I connect to MongoDB remotely?**
A: To connect to MongoDB remotely, use the following connection string format:
```
mongosh mongodb://username:password@hostname:port/database
```
Replace username, password, hostname, port, and database with your own MongoDB credentials and information.
- **Q: What should I do if MongoDB is not starting?**
A: If MongoDB is not starting, first check the logs using:
```
journalctl -xeu mongod
```
Look for any errors that might indicate issues with the configuration file, disk space, or other system resources. If there are no clear issues, ensure that the MongoDB service has sufficient permissions and that the mongod.conf file is correctly configured.
- **Q: Can I change the default MongoDB port?**
A: Yes, you can change the default MongoDB port by modifying the port field in the mongod.conf configuration file:
```
net:
port: 27018 # Change this to your desired port
```
- **Q: How do I ensure MongoDB listens on all IP addresses?**
A: To allow MongoDB to listen on all IP addresses, change the bindIp setting in the mongod.conf file:
```
net:
bindIp: 0.0.0.0 # Allows connections from all IP addresses
```
This will enable MongoDB to accept connections from external IPs. Make sure to restart the service after making changes.
## Conclusion
By following these steps, you can troubleshoot and resolve common MongoDB connection issues such as **ECONNREFUSED**, unresponsive services, and incorrect configuration. From verifying that the MongoDB daemon is running, to checking configuration files and network access, each step helps pinpoint and eliminate potential obstacles in your database connection process.
Understanding how to properly manage MongoDB's service lifecycle, permissions, and connection parameters is essential for both local development and production environments. Ensuring correct configuration and access control not only improves reliability but also enhances the security and scalability of your MongoDB setup.
Whether you’re hosting your database on a local machine or a remote cloud server, these best practices will help you maintain a stable and accessible MongoDB environment.
## Cheatsheet with fixes of MongoDB errors and issues
| Issue | Possible Cause | How to Fix | Commands |
| --- | --- | --- | --- |
| ECONNREFUSED 127.0.0.1:27017 | MongoDB daemon is not running | Start the mongod service | systemctl start mongod |
| Service inactive (dead) | Daemon stopped or failed to start | Check service status and logs | systemctl status mongod journalctl -xeu mongod |
| Cannot connect remotely | Incorrect connection string | Use valid remote URI format | mongosh mongodb://user:pass@IP:27017/db |
| Port 27017 unreachable | Firewall or service not listening | Test port, open firewall if needed | nc -zv 127.0.0.1 27017 ufw allow 27017 |
| Remote access not allowed | Incorrect bindIp setting | Set bindIp to 0.0.0.0 | nano /etc/mongod.conf bindIp: 0.0.0.0 |
| Configuration not applied | Service not restarted | Restart MongoDB | systemctl restart mongod |
| Permission denied | Wrong file rights for /etc/mongod.conf | Fix file permissions | chmod 644 /etc/mongod.conf |
| Need to modify default port | Port conflict or custom setup | Change MongoDB port | port: 27018 systemctl restart mongod |
https://serverspace.us/about/blog/best-cloud-providers-in-the-usa-2026.mdOverview of best American cloud hosting providers. In article we present a ranking of the best cloud providers in the USA. It is based on a detailed analysis of pros and cons of cloud services.
The rising popularity of IT cloud services across the USA can be attributed to a growing emphasis on automation and flexibility, a relentless pursuit of superior customer service, and a focus on cost efficiency and improved investment returns. Moreover, the widespread adoption of remote work practices and an increased reliance on cloud-based business continuity tools are further driving this trend. The attributes of speed, scalability, and security in cloud infrastructures are becoming critical for various organizations, including private firms, non-profits, and government bodies.
In this article, we aim to offer a comprehensive ranking of the American best cloud hosting companies. We will evaluate these cloud providers based on a thorough analysis of their strengths and weaknesses, specifically focusing on those offering [VPS servers in the USA](https://serverspace.us/services/vps-server/cloud-servers-in-the-usa.md). This evaluation will help you make a well-informed decision to choose the most appropriate provider.
## [1. Serverspace.us](https://serverspace.us/index.md)
Serverspace.us is a US-based cloud provider that specializes in virtual infrastructure management for small and medium enterprises. It features instant deployment of [VPS in the USA](https://serverspace.us/services/vps-server/cloud-servers-in-the-usa.md) and six other countries, supporting widely-used operating systems like Linux and Windows Server on a flexible pay-as-you-go basis. Users can set up their infrastructure globally in just one minute. Additionally, Serverspace.us offers comprehensive integration options, including an Open API, CLI, and Terraform tools to seamlessly connect with client services.
**Advantages**
- **Intuitive Control Panel**
Serverspace features a user-friendly control panel that simplifies server deployment and management for users, regardless of their technical expertise. It allows for easy system monitoring, balance updates, and infrastructure management.
- **Rapid Server Deployment**
Virtual servers at Serverspace are automatically set up within 1 minute after configuration. The fastest recorded time to deploy a cloud server running the Linux OS is an impressive 24 seconds.
- **Customizable server configurations**
The service provides a flexible server calculator that lets users choose configurations based on two virtualization platforms: VMware and vStack. Options include selecting the OS and its version, data center location, number of vCPUs, SSD storage, RAM, bandwidth, and pre-installed applications like WordPress.
- **Adaptable Server Resources**
Users have the flexibility to modify server configurations at any time to meet the demands of their applications.
- **Worldwide locations**
With data centers in six locations across three continents, including one in Amsterdam, Netherlands, Serverspace supports widespread virtual infrastructure deployment and ensures top performance globally.
- **High-Quality Equipment**
The provider uses enterprise-grade hardware, such as Intel Xeon Gold 3.1 GHz processors, ensuring reliability, enhanced performance, and robust protection against failures with an automatic backup system.
- **Comprehensive Educational Resources**
Serverspace offers an extensive knowledge base with detailed tutorials for using the control panel and managing servers.
- **Round-the-clock free support**
Dedicated support is available 24/7 with an average response time of only 15 minutes, setting a high industry standard for customer service.
- **Seamless IT Infrastructure Migration**
The provider facilitates easy migration of IT infrastructure to their VMware cloud from other services at no extra cost, requiring only the conversion of virtual machines to OVA/OVF files.
**Disadvantages**
- **Limited Physical Hardware Options**
Serverspace does not offer physical hardware or allow for the reservation of a dedicated virtualization host within their infrastructure.
- **Additional Cost for OS-Level Administration**
While basic services are included, OS-level administration comes at an additional cost, which might not suit all users.[https://www.digitalocean.com/](https://www.digitalocean.com/)
## 2. DigitalOcean
[DigitalOcean](http://
https://serverspace.us/about/blog/live-streaming-with-cdn-delivery-without-platforms.mdCloud live streaming without the platform lock-in: ingest once, deliver via CDN, and multi-output to every channel. A practical look at cloud video streaming and where it’s headed.
Live video hasn't been just "a blogger thing" for a while. Today, live streams cover news, events, sports, corporate announcements, product launches, and even industrial use cases. And all of these scenarios share one core problem: the broadcast has to reach viewers without surprises – even if the audience spikes, the on-site connection gets flaky, and you need to show it not in one place, but across multiple channels. In this article, we'll break streaming down in practical terms: how live video transport works, what it means to "send the stream once and then deliver it to the audience," why more projects are moving toward cloud live streaming – and where the market is heading next, from cloud video streaming to full-blown video streaming saas.
## Streaming isn't a platform. It's delivery
When people hear "streaming," they often picture a landing page, chat, registration, a player, moderation. But that's the outer layer. At its core, streaming is live video transport and delivery: how to receive a signal, keep it stable, and get it to viewers.
So it helps to separate two things:
- a platform (interfaces and a set of features),
- a transport layer (ingest + delivery + scaling + redundancy).
That transport layer is the engine behind a cloud based video streaming platform and any cloud based video streaming solution. It's also what decides the most stressful part: either the stream is live, or nothing else matters.
## The path from ingest to playback
In simple terms, transport streaming is a clear three-step chain – and it's the foundation of streaming server hosting in the cloud.
- **Ingest.** You send live video to the cloud video server – once, from anywhere you have a connection. Most commonly this is done via RTMP or SRT: RTMP is popular for compatibility, while SRT is often chosen when the network is unstable and you need better resilience.
- **Delivery to viewers.** Next, the service prepares the stream for viewing and delivers it in formats like HLS or LL-HLS. These formats work well on the web and scale cleanly through a [CDN](https://serverspace.us/services/cdn.md), so the stream can handle audience growth more reliably. This is the practical difference between "it works in a test" and real cloud video streaming at scale.
- **Multi-output.** If needed, the same stream can be shown in parallel on your website, in an app, or across other channels. That removes manual hassle and gives you a backup route if one distribution option lets you down.
## How live streaming started
Live streams didn't appear yesterday. Early experiments go back to the 1990s, when "watching video online" felt almost like sci-fi. As internet speeds improved and encoding got more efficient, live video stopped being a quirky demo and became a normal habit: hit "Go Live," and people can watch from almost any device.
A lot of the early momentum came from communities where "being there" matters more than polished production. Gaming and esports popularized real-time commentary and audience interaction, while other industries adopted live formats early too, including adult entertainment, where interactivity was easier to monetize than passive viewing. One of the clearest turning points came in 2007 with Justin Kan's 24/7 life stream, which grew into Justin.tv and later helped pave the way for Twitch. YouTube then pushed live video even further into the mainstream, and once it became clear you can stream more than games, the format quickly expanded into education, fitness, music, business events, and beyond.
## Why live moved to the cloud
Streaming has one annoying trait: it rarely breaks when it's convenient. It breaks when viewers are already watching, the speaker is on camera, and the stakes are high. That's why teams move to the video streaming cloud not because it's trendy, but because it's practical:
- **Audience spikes.** Today it's "just your people," tomorrow it's several times more.
- **Geography.** The farther a viewer is from the delivery point, the higher the risk of delay and quality drops.
- **Reliability.** In some scenarios, "you can't go down" is literal.
- **Scaling without rebuilding everything.** When delivery runs on infrastructure built for growth, it's easier to survive sudden interest.
For many teams, this shift also reframes streaming as a cloud video service: a transport and delivery layer you can plug into your product, instead of something you rebuild every time traffic grows.
## When the transport layer saves the day
Transport streaming fits best in scenarios where delivery and control matter more than platform features. This is where live streaming hosting stops being "nice to have" and becomes the safety net.
- **Media, broadcasters, production, news.** The job is to reliably ingest a stream "from the field" and deliver it to viewers or partners. Plus, keep your own site/player and have a backup distribution route.
- **Sports, events, local community broadcasts, cultural and religious streams.** The job is "one stream – many viewing points," stable performance during peaks, and fast launch without heavy IT buildout.
- **Corporate communications and training.** The job is a controlled environment: where the stream is shown, who can access it, what domain it runs on. Webinar "extras" (chat, polls, registration) are usually handled separately.
- **IoT, drones, robotics, video monitoring, industrial use cases.** The job is to deliver video to an operator or situation room even over unstable networks – and then distribute, record, or forward the stream as needed.
- **E-commerce and brands (live shopping, launches, presentations).** The job is to handle peaks and avoid dependence on "platform rules." Live formats often boost engagement, but results depend heavily on category and execution – so a clear show structure matters more than bold promises.
And it's not only about video. Many teams also look for audio streaming hosting for music, talk shows, or events, and even radio streaming hosting for continuous programming – the same transport logic applies: stable ingest, predictable delivery, and scaling without drama.
## What to look for in cloud streaming
If you're choosing a service specifically as transport, here's a no-drama checklist – whether you call it video streaming hosting, video streaming hosting services, or live video streaming hosting:
- **Protocol support:** does it cover the ingest and delivery formats you need?
- **Multi-output:** can one stream feed multiple channels?
- **Peak behavior:** is the service designed for audience growth, not just "quiet mode"?
- **Latency control:** not the lowest number, but stable and predictable performance.
- **Security and access control:** viewing restrictions, baseline protection, logging.
- **Transparent pricing:** what you're paying for and what counts as an add-on.
Also think about your "surface area." Some teams want pure delivery. Others want web hosting for video streaming as part of a broader stack, so the player page, API, and stream endpoints live under one roof. And if your workflow includes assets and replays, it's increasingly common to stream video from cloud storage (as an origin for on-demand content or highlights), while keeping live delivery optimized through CDN.
## What you need for a stable stream
There's no single magic number, but there are practical benchmarks. For a typical 1080p stream, teams often budget headroom so they're not running on the edge:
- **2-4 vCPU** and **4-8 GB RAM** – a comfortable starting point for one stream.
- If you plan to record or work with video fragments – **fast disks (NVMe)** help.
- Network matters as much as CPU: the more viewers and the wider the geography, the higher the bandwidth requirements.
If you're building on infrastructure, this often turns into a simple question: do you need a dedicated vps for streaming, or do you want a managed layer on top? In practice, both approaches can work – the key is leaving enough headroom so a small spike doesn't become a quality collapse.
## Where live streaming is headed
Streaming is maturing, and you can see it in what audiences expect. It used to be enough that "it works at all." Now people want broadcast-level quality, internet flexibility, and creator control – all at once.
- **Lower latency will become the default.** Viewers are getting used to "almost real time." The market will keep moving toward lower, more stable latency without sacrificing scale. This isn't about records – it's about predictability, so the host, crew, and audience stay in sync.
- **"One stream – multiple paths" will be the norm.** Relying on a single distribution point will feel like a risk. Multi-output, backup routes, and the ability to run on your own domain or player will shift from "nice to have" to basic hygiene – so you can switch quickly if one channel fails.
- **More automation, less manual tinkering.** The bigger the audience, the more "different internets" you deal with: from perfect Wi-Fi to weak mobile networks. Delivery will keep moving toward automatic quality adaptation and simpler, clearer controls. People want to run the stream, not fight settings.
- **Growth of private and corporate streaming.** Internal broadcasts, training, conferences, leadership updates – these are about control, not publicity: domain, access, security policy, predictability. In these cases, the transport layer matters more than any "pretty" extras.
- **Challenging networks aren't going away – resilient ingest will matter even more.** Field production, remote locations, mobile connections, temporary links – all of that will stay. Solutions that keep ingest stable through loss and jitter will only become more in-demand.
In short, the near future is stable low-latency, multi-output by default, and more control for the stream owner – not a single platform.
## FAQ: quick answers
**What is transport streaming in simple terms?**
It's a service that ingests your live stream and handles delivery to viewers (and, if needed, multi-output to different channels).
**Why separate transport from a video platform?**
So you're not dependent on one venue and its rules: you can show the stream on your own site, keep a backup path, and control distribution.
**What's the difference between HLS and LL-HLS?**
HLS is standard delivery with strong scalability. LL-HLS delivers lower latency while keeping scalability.
**When do you need SRT?**
When the stream travels over an unstable network (for example, mobile internet on location) and you need reliable delivery into the cloud.
**Can one stream feed multiple channels?**
Yes. That's one of the most common setups: one ingest input – multiple outputs for distribution.
## Streaming in Serverspace
In Serverspace, streaming is designed as live video transport: you send the stream once, choose how to deliver it to your audience, and enable multi-output when needed. It's a practical cloud based video streaming solution for teams that want control over distribution without being tied to a single destination. And if your project requires dedicated infrastructure, you can deploy a cloud video server setup that matches your load – from a starter configuration to a scaled-out video streaming hosting stack.
https://serverspace.us/about/news/launched-live-streaming-for-low-latency-broadcasts.mdIt’s a ready-to-use solution for running live broadcasts: event streams, breaking news coverage, online lessons, live shopping, and other video formats.
A new service is now available in the Serverspace control panel — **[Live Streaming](https://serverspace.us/services/cdn-live-streaming/)**. It's a ready-to-use solution for running live broadcasts: event streams, breaking news coverage, online lessons, live shopping, and other video formats.
The service works together with our CDN network: send your video once, and thanks to Serverspace servers located worldwide, viewers can watch it from anywhere with minimal latency and stable delivery.
We take care of fast global delivery, while you stay in full control of everything else: the player, monetization, audience engagement, and content.
## How it works
- You send the stream: use OBS (Open Broadcaster Software), any camera, or streaming software and start broadcasting via familiar protocols — LL-HLS or WebRTC.
- The service ingests the stream and prepares it for delivery. The video is automatically encoded into the required codecs (H.264, AAC, Opus) so users can watch from different devices.
- Viewers watch from anywhere. The stream can be delivered to any platform: your website, mobile app, or even social networks. Our global CDN network spans 8 countries, keeping latency to a minimum.
## Benefits of Serverspace Live Streaming
- No forced player or monetization. You decide how to display the video, where to place ads, and how you earn.
- Simple and predictable. No complicated setup — everything is enabled in the control panel in just a couple of minutes.
- Independence. You stay fully in control of your content.
## Who it's for
- **Media and news outlets** — for live reports from the field, where you can't afford to lose connection for even a second.
- **Sports clubs and event organizers** — stream a match simultaneously on your website, in your club app, and on social media.
- **Corporations** — for internal broadcasts (meetings, training sessions) within a secure environment.
- **Robot owners and video surveillance systems** — reliable video delivery over poor connections via the LL-HLS protocol.
- **E-commerce and brands** — run live streams for sales events.
## How to connect the service?
- Go to the [Serverspace control panel](https://auth.serverspace.us/), open the "Streaming" section, and click "Connect".
- Enter the stream name, choose the protocol and video resolution.
- Click "Create" — and you'll get a ready-to-use streaming link.
The service is already available in the [control panel](https://auth.serverspace.us/). Start your live stream today!
_[Serverspace](https://serverspace.us/index.md) is a cloud provider offering automated deployment of virtual infrastructure based on Linux, Windows, and Russian operating systems from anywhere in the world in under 1 minute. Open integration tools are available via API, CLI, and Terraform._
https://serverspace.us/about/news/n8n-is-now-available-in-the-serverspace-control-panel-as-a-1-click-app-available-on-vstack.mdWe've added n8n to Serverspace ready-made cloud solutions: deploy self-hosted automation on your server at creation. Available on vStack.
We’ve added **[n8n](https://serverspace.us/services/n8n-cloud.md)** to the list of ready-made cloud solutions (1-click apps) in the Serverspace control panel. n8n is an open-source automation platform that helps connect services, data, and APIs into visual workflows, so you don’t have to transfer information manually or build one-off integrations from scratch.
The tool is useful when you have dozens of systems operating separately: CRM, email, messengers, website forms, spreadsheets, payment services, and internal applications. In n8n, you can build an “event → actions → result” chain and get predictable data processing based on rules that are visible to both business and technical teams.
n8n has a large ecosystem: the official [website](https://n8n.io/) lists **500+ integrations**, and the open-source [project repository on GitHub](https://github.com/n8n-io/n8n) has gathered **140k+ stars**.
## What this provides:
- **Quick start** — n8n is installed immediately when deploying the server, without manual installation and initial environment setup.
- **Control** — you get a self-hosted n8n on your own server and determine how to restrict access and where data is stored.
- **Flexibility** — workflows can be built from ready-made nodes, supplemented with code and API calls, and you can set up routing between systems without a separate custom integration for each task.
**Common scenarios to get started with:**
- Request/order from a form or messenger → entry in CRM → notification in Telegram/Slack → spreadsheet/dashboard update.
- Email with attachment → save to storage → parse data → create task in tracker.
- Event in service/internal system → trigger action chain on schedule or by trigger → audit result in one place.
## How to connect:
- Open the [Serverspace control panel](https://auth.serverspace.us/) and click **“Create Server”**.
- At the configuration setup stage, select **pre-installed applications** and check **n8n**.
- After server deployment, proceed to create workflows and connect the services you need.
**Important:** n8n as a 1-click app is only available on **vStack** servers with **Ubuntu** OS.
n8n is now available in the [control panel](https://auth.serverspace.us/) — try automation on your server through 1-click apps.
**Also, MySQL and Redis have been added to the list of ready-made cloud solutions.**
_[Serverspace](https://serverspace.us/index.md) is a cloud provider offering automatic deployment of virtual infrastructure based on Linux or Windows from anywhere in the world in less than 1 minute. Open tools API, CLI, and Terraform are available for integrating client services._
https://serverspace.us/about/blog/why-your-need-n8n-automation-in-2026.mdWhy your need n8n automation in 2026?
Modern companies are drowning in digital tools faster than employees can remember passwords. CRM platforms, Telegram bots, payment gateways, email campaigns, spreadsheets, accounting software—all operating in silos. The result? Manual data transfers, endless copy-pasting, and fragile scripts that break without warning. Disconnected systems drain budgets and waste countless work hours.
The solution? n8n automation—a platform that connects any service through rule-based n8n workflows.
## n8n Explained: Workflow Automation Without Coding
n8n (pronounced “n-eight-n”) is an open-source workflow automation platform that connects applications, databases, and scripts through visual scenarios.
Think of it as a flowchart where each block handles a specific task. In n8n terminology, these are called n8n workflows. The architecture operates on triggers and executors: one node initiates the process, others execute actions.
Nodes perform concrete operations: database writes, text generation, data parsing. Control everything programmatically via built-in n8n API. For distributed scenarios across multiple servers, leverage the n8n agent—a component that executes tasks on remote machines. n8n workflows scale effortlessly: multiple agents process data in parallel within a single scenario.
## How n8n Architecture Works
[n8n](https://serverspace.us/services/n8n-cloud.md) doesn’t store data—it transports information between systems.
**n8n example workflow:**
Every 15 minutes: Check Outlook inbox, If client email contains “invoice”, Create task in Bitrix24, copy to Google Drive, send Telegram notification, If attachment exists, AI recognition, Push data to CRM.
## Who Benefits from n8n Workflows?
**IT Teams:**
- Automated employee onboarding: HR system triggers account creation in email, VPN, Jira, Slack
- Log monitoring with instant Telegram alerts for failures
- Enrich support tickets with data from multiple systems
**DevOps:**
- Natural language to action: “Deploy test environment for Project X” Slack message triggers Ansible playbook
- Infrastructure orchestration through n8n integrations
**Marketing and Sales:**
- Sync website forms with CRM—no developers needed
- Auto-publish content across social platforms
- Aggregate lead data from multiple sources into unified dashboards
**E-commerce:**
- Update inventory when accounting software changes stock levels
- Send receipts and order status notifications automatically
- Generate product listings on marketplaces via n8n templates
**Security (SecOps):**
- When security rules trigger: Gather context from SIEM, Active Directory, ticketing system, Send complete report to analyst
## n8n vs Custom Code: Real Comparison
| Criteria | Custom Development | n8n Automation |
| --- | --- | --- |
| Launch Speed | Weeks to months | Hours to days |
| Change Cost | High (code edits, testing) | Low (visual node adjustments) |
| Business Transparency | Only developers understand code | Non-technical staff see the flow |
| AI Integration | Manual, time-intensive | Ready n8n integrations for OpenAI, Claude |
| Data Security | Full control if coded correctly | Full control with n8n deployment |
| High-Load Scenarios | Yes | No |
n8n doesn’t replace developers—it eliminates routine: stitching services together, moving CSV data to APIs, building repetitive integrations.
## Where n8n Falls Short
Understand n8n limitations:
**Not for high-load systems:** If you need millisecond responses and thousands of transactions/second, n8n won’t replace Apache Kafka or RabbitMQ.
**Not for complex financial logic:** Accounting operations and calculations belong in specialized ERP systems.
**Not for distributed computing:** Don’t build computational clusters here.
n8n is an orchestrator. It connects powerful but inflexible systems. Heavy calculations stay in dedicated services while [n8n](https://serverspace.us/services/n8n-cloud.md) workflows handle sequencing and routing.
## Security and Control: n8n Deployment Options
Data sovereignty extends to business process automation. n8n provides flexible security mechanisms for controlled infrastructure:
**n8n Cloud** (check n8n cloud pricing)—Managed SaaS version from developers. No manual setup. Ideal for experiments and small tasks.
**Self-hosted n8n deployment**—Install n8n on your infrastructure: physical hosts, hypervisor VMs, or rented VPS. All data stays internal. Start with n8n free version for complete control.
**Air-gap environment**—Isolated deployment. Server has zero internet access, only communicates with internal systems: accounting software, databases, corporate portals.
**Pre-installed cloud server**—Fastest path to secure self-hosted n8n: Rent a server with pre-configured platform. Get clean, isolated environment without installation hassle.
## n8n Deployment on Serverspace
We’ve explained what n8n is and why businesses need it. Now see why pre-installed n8n servers offer the optimal automation path.
Serverspace provides servers with [pre-configured n8n](https://serverspace.us/services/n8n-cloud.md) for instant starts: clean isolated environment without configuration overhead. n8n deployment completes in 40 seconds on Intel Xeon Gold hardware with high-speed SSDs. Pay-as-you-go billing every 10 minutes—only for actual resource usage. Access user-friendly control panel, 24/7 support, and security tools.
## Business Benefits
- **Speed:** Scenarios that took weeks now launch in a day
- **Cost efficiency:** No expensive licenses or developer overhead per integration
- **Control:** You decide security mechanisms
- **Visibility:** Business sees process flows and makes direct adjustments
## Common n8n Mistakes to Avoid
**1. Overcomplicating Simple Workflows**
Starting with overly complex n8n workflows delays results. Begin with basic n8n templates, then scale complexity.
**2. Ignoring Error Handling**
Production n8n automation needs error nodes and fallback paths. Without them, silent failures corrupt data.
**3. Hardcoding Credentials**
Never embed passwords in nodes. Use n8n’s credential system for secure n8n integrations.
**4. Skipping Testing Environments**
Test n8n workflows in staging before production n8n deployment. One bad node can trigger hundreds of unwanted actions.
**5. Not Monitoring Execution Logs**
Check execution history regularly. Performance bottlenecks and API failures appear in logs first.
**6. Choosing Wrong Deployment Model**
Evaluate n8n pricing vs n8n cloud pricing. Small teams benefit from n8n free self-hosted; enterprises need managed infrastructure.
## Conclusion
If your team still manually transfers email data to CRM while developers write integration workarounds—you’re hemorrhaging money. n8n fills the middle layer: where custom code is overkill and manual work wastes time.
Serverspace cloud infrastructure eliminates complex n8n deployment setup. Focus on building n8n workflows, not infrastructure. Automation doesn’t require massive budgets—just the right tools. Explore n8n templates, n8n integrations, and n8n example workflows today.
https://serverspace.us/about/blog/top-enterprise-cloud-providers-2026-ranked-and-compared.mdCompare the top enterprise cloud providers 2026 by pricing, security, and scalability.
Cloud infrastructure spending reached $419 billion in 2025 and grew 30% year-on-year, fueled by AI compute demand and tightening data residency rules. Choosing the wrong provider in this environment means overpaying, falling out of compliance, or hitting scaling walls at the worst moment. This ranking covers the top enterprise cloud providers 2026, scored on infrastructure quality, billing transparency, scalability, security posture, and support.
## How We Built This Ranking of Top Cloud Providers for Enterprise 2026
We evaluated each platform across five dimensions that shape real operating costs and team velocity: infrastructure footprint and U.S. data center presence, billing predictability (including hidden egress and support fees), scaling flexibility, security stack and compliance certifications, and support responsiveness. Scores range from 1 to 5 stars. The first and second positions both earn 5/5. Among the top enterprise cloud security providers 2026, platforms shipping threat detection and compliance automation as defaults scored highest. Below is the full ranking of the top cloud providers for enterprise 2026.
## 1. AWS 5/5
[AWS](https://serverspace.us/aws.amazon.com/) commands roughly 28% of the global cloud infrastructure market (Synergy Research, Q4 2025). Its catalog exceeds 200 managed services across compute, storage, ML, IoT, and security. Infrastructure spans 115+ availability zones in 37 regions, making it the most geographically distributed hyperscaler. AI capabilities center on Bedrock (foundation model access), SageMaker (ML pipelines), and custom chips: Graviton4 for general workloads, Trainium2 for training. AWS operates the only U.S. GovCloud partitions and launched the European Sovereign Cloud in January 2026.
**Strengths: **widest service catalog; largest global footprint; layered security (IAM, GuardDuty, Security Hub, Macie); FedRAMP High, HIPAA, PCI DSS cverage; custom silicon cuts inference costs.
**Limitations: **complex pricing with egress, cross-AZ, and tiered storage fees; steep learning curve; Enterprise support exceeds $15K/month.
**Best for: **large regulated enterprises, multi-region deployments, AI/ML at scale.
## 2. Serverspace 5/5
[Serverspace](https://serverspace.us/index.md) takes the opposite approach to hyperscaler sprawl. VPS deployment completes in under 60 seconds, billing ticks every 10 minutes, and the dashboard needs no certification to navigate. Hardware runs on Intel Xeon Scalable v2 with NVMe SSDs (up to 30,000 IOPS) across data centers in seven countries, including Parsippany, New Jersey. What earns Serverspace its place among the top enterprise cloud providers 2026 is the combination of enterprise-caliber uptime and a billing model with zero surprises: no egress fees, no bandwidth metering, unlimited traffic on every plan. Automation covers a public REST API, CLI, and Terraform provider. Two hypervisor options (VMware and vStack) let teams pick between ecosystem familiarity and raw performance.
**Strengths: **sub-60-second provisioning; per-10-minute billing with zero egress charges; full API/CLI/Terraform automation; dual hypervisor choice; 7 locations on 3 continents; 99.9% SLA.
**Limitations: **thinner managed services layer (no native ML platform); no dedicated bare metal; OS administration at extra cost.
**Best for: **startups, SMEs, and dev teams needing production VPS with transparent billing. Web apps, staging, SaaS backends.
## 3. Microsoft Azure 4.5/5
[Microsoft Azure](https://serverspace.us/azure.microsoft.com/) holds about 21% of the market and keeps closing the gap with AWS. Its pull comes from tight coupling with Microsoft 365, Teams, Dynamics 365, and Active Directory. The 2026 AI story revolves around the exclusive OpenAI partnership: Azure OpenAI Service delivers GPT-4o, DALL-E 3, and Whisper inside a compliance-wrapped environment. AI services contributed 16 percentage points of Azure’s 33% YoY revenue growth (Microsoft Q3 FY2025). Azure Arc extends a single governance plane across on-premises, multi-cloud, and edge nodes.
**Strengths: **deep Microsoft ecosystem integration; exclusive OpenAI model access; Azure Arc for hybrid management; 60+ regions; FedRAMP High, DoD IL5, CJIS compliance.
**Limitations: **three overlapping discount models create billing confusion; steep curve outside the Microsoft stack; some services can inflate costs if unmonitored.
**Best for: **Microsoft-native enterprises, hybrid cloud strategies, teams building on OpenAI models.
## 4. Oracle Cloud Infrastructure 4.5/5
[Oracle Cloud](https://serverspace.us/www.oracle.com/cloud/) revenue surged 68% YoY to $4.1B in Q2 FY2026, and its contract backlog hit $523B after deals with OpenAI, Meta, and Nvidia. Oracle now runs more sovereign cloud regions than any other major provider. The technical edge is bare-metal architecture: no hypervisor layer means lower latency for database-heavy and HPC workloads. Multi-cloud database portability (Database@Azure, @AWS, @GCP) is unmatched. For teams assessing the top cloud storage providers for enterprise 2026, OCI’s flat cross-region pricing for block and object storage stands out.
**Strengths: **fastest IaaS growth among established providers; bare-metal GPU (Blackwell, MI300X); cross-cloud DB portability; flat global pricing; strong sovereign presence.
**Limitations: **~3% market share limits third-party tooling depth; fewer community resources than AWS/Azure; strongest for Oracle-centric workloads.
**Best for: **Oracle Database estates, bare-metal AI compute, regulated verticals needing sovereign options.
## 5. DigitalOcean 4/5
[DigitalOcean](https://serverspace.us/www.digitalocean.com/) centers on developer productivity: fast console, textbook-quality docs, and flat pricing with bandwidth included. Managed services now cover Kubernetes (DOKS), databases (PostgreSQL, MySQL, Redis, MongoDB), and App Platform. The trade-off shows at enterprise scale: no FedRAMP, no broad HIPAA support, no meaningful AI infrastructure. If your workload outgrows a few dozen nodes, the upgrade path eventually points elsewhere.
**Strengths: **developer-first UX; flat pricing, no egress penalties; managed K8s and four DB engines; active tutorial community.
**Limitations: **narrow compliance (no FedRAMP/HIPAA); fewer DC locations; no AI/ML tooling; priority support is paid.
**Best for: **startups, SaaS teams, solo devs who prioritize iteration speed and legible invoices.
## 6. Linode (Akamai Cloud Computing) 4/5
Since Akamai acquired [Linode](https://serverspace.us/www.linode.com/) in 2022, the platform pairs competitive VPS pricing with one of the largest CDN and security networks globally. That means 25+ DC locations, built-in DDoS scrubbing, WAF, and bot management without stitching separate vendors together. Pricing stays flat with generous transfer allowances. For teams evaluating top cloud security providers enterprise 2026, the integrated Akamai protection layer is a differentiator few compute-first providers can match.
**Strengths: **aggressive flat pricing with inclusive bandwidth; 25+ DCs plus Akamai edge; integrated DDoS/WAF/bot defense; managed K8s (LKE).
**Limitations: **Akamai integration still evolving; managed services thinner than hyperscalers; narrower compliance certs.
**Best for: **web apps and API backends that benefit from built-in edge delivery and application security.
## 7. Vultr 4/5
[Vultr](https://serverspace.us/www.vultr.com/)‘s edge is geographic breadth at rock-bottom pricing: 32 locations across six continents, covering markets most VPS providers skip (South America, Africa, Southeast Asia). The lineup includes cloud compute, bare metal, block/object storage, and managed K8s. GPU instances (NVIDIA A100, A40) give smaller teams access to inference and fine-tuning without annual hyperscaler commitments. For anyone surveying the top enterprise cloud providers 2026 with global reach and per-hour cost in mind, Vultr belongs on the shortlist.
**Strengths: **32 locations on 6 continents; consistently low compute/storage pricing; GPU instances for AI prototyping; clean API, CLI, Terraform.
**Limitations: **managed DB limited to PG/MySQL/Redis; no FedRAMP, narrow SOC 2; support is functional, not advisory.
**Best for: **DevOps teams wanting worldwide presence at aggressive prices. Game servers, SaaS, AI experiments.
## Key Enterprise Cloud Trends in 2026
### AI Is Rewriting Infrastructure Budgets
GenAI cloud services grew 140-180% YoY through mid-2025 (Synergy Research). Enterprise teams now split workloads: GPU-dense cloud for training, edge or on-prem for inference. This split drives hybrid adoption and makes the top enterprise cloud security providers 2026 evaluation harder because each AI pipeline introduces new attack surface.
### Multi-Cloud Is Standard
Flexera’s 2025 survey reports 86% of enterprises running multi-cloud. This is no longer transitional. The top cloud providers for enterprise 2026 have responded with cross-platform tooling: AWS Interconnect, Azure Arc, Oracle Database@Azure/@AWS.
### Sovereignty Rules Are Hardening
AWS launched European Sovereign Cloud in January 2026. Forrester predicts 60% of regulated enterprises will prefer private/colo sovereignty over hyperscaler offerings. U.S. buyers should verify FedRAMP and ITAR status when evaluating the top cloud storage providers for enterprise 2026.
### Cloud Costs Are Climbing
Energy and hardware expenses are pushing list prices up. Enterprises respond with FinOps practices and favor providers whose billing models make costs foreseeable. Hidden egress and premium support fees are increasingly becoming deal-breakers, especially for those evaluating top cloud storage providers for enterprise 2026 where data transfer volumes amplify cost unpredictability.
## Comparison Table: Top Enterprise Cloud Providers 2026
The table below provides a side-by-side comparison of all seven providers evaluated in this ranking.
| Provider | Score | Best For | Pricing | U.S. DCs | AI/ML | Compliance |
| --- | --- | --- | --- | --- | --- | --- |
| AWS | 5/5 | Large enterprise | Complex, usage-based | Multiple regions | Full suite | FedRAMP, HIPAA, SOC 2, ISO |
| Serverspace | 5/5 | SME, dev teams | Transparent, pay-per-10-min | New Jersey | N/A | SLA 99.9% |
| Azure | 4.5/5 | Microsoft shops | Complex, tiered | Multiple regions | OpenAI models | FedRAMP, HIPAA, SOC 2, ISO |
| Oracle Cloud | 4.5/5 | Oracle DB users | Flat, predictable | Multiple regions | GPU bare metal | FedRAMP, HIPAA, SOC 2 |
| DigitalOcean | 4/5 | Startups, SaaS | Flat monthly | Multiple (US) | Basic GPU | SOC 2 |
| Linode (Akamai) | 4/5 | Web, CDN teams | Flat monthly | Multiple (US) | Limited | SOC 2, PCI |
| Vultr | 4/5 | DevOps, global | Hourly/monthly | 32 locations | GPU instances | Limited |
## Conclusion
AWS delivers the widest toolkit for complex regulated estates and ranks among the top enterprise cloud security providers 2026 thanks to its layered defense stack. Serverspace fills the opposite niche: production VPS with sub-minute deployment and billing that never surprises. Azure fits Microsoft-native organizations. Oracle Cloud earns its spot through explosive growth and unmatched database portability. DigitalOcean, Linode, and Vultr serve teams that prefer operational control and clear invoices.
Map your actual needs (compute, storage, compliance, latency, budget), then match them to the profiles above. This ranking of the top enterprise cloud providers 2026 is a starting framework, not a final verdict. If you need infrastructure running today with zero billing ambiguity, [Serverspace](https://serverspace.us/index.md) is a strong starting point.
https://serverspace.us/about/blog/how-to-build-your-first-n8n-workflow.mdHow to build your first n8n workflow: step-by-step Docker setup, environment variable checklist, PostgreSQL, HTTPS, backups, and scaling with queue mode.
n8n has quickly become one of the most popular open-source platforms for workflow automation. A visual editor, over 500 integrations, a free self-hosted edition, and built-in support for AI agents. You can install n8n and build your first workflow in under 30 minutes. But there is a real gap between “got it running on my laptop” and “running reliably for the whole team.” That gap is filled with configuration decisions that, if skipped, will eventually break things.
This guide walks you through the entire journey: from picking a server to backups and scaling. We will also build a practical example workflow that receives a webhook, processes the data, and sends a notification to Telegram or Slack. Whether you are just getting started or already running workflows locally and want to move them to a production server, this article has you covered.
## What is n8n and why self-host it
n8n is an open-source workflow automation platform built around a visual editor. You connect blocks (called nodes) on a canvas, and each block performs a single action: sending an email, creating a task in a project tracker, calling an API, transforming data. Data flows between nodes in JSON format, and the entire chain is called a workflow.
The n8n library includes over 500 ready-made integrations: Telegram, Slack, Google Sheets, PostgreSQL, OpenAI, and many more. For everything else, there is an HTTP Request node and a Code node that runs arbitrary JavaScript or Python.
The key difference from Zapier and Make.com is that you can deploy n8n on your own server. The Community Edition is completely free. Your data stays with you, and there are no limits on workflows or executions. That is why n8n is the go-to choice for companies that care about data control and predictable infrastructure costs.
## Five things you can automate with n8n right away
Before diving into setup, it helps to see what n8n can actually do in practice. Here are five scenarios that most teams start with.
**Monitoring and alerts. **A monitoring system (Zabbix, Grafana, Uptime Kuma) detects an incident and sends a webhook to n8n. The workflow creates a ticket in Jira, posts a message to the on-call Telegram or Slack channel, and logs the event. Kaspersky used a similar setup to automate incident handling that previously took up to three hours a day.
**Lead and request processing. **A new form submission lands in n8n via webhook. The data gets written to a CRM, the customer receives a confirmation email, and the sales manager gets a Slack notification. All of this without writing a single line of code.
**AI assistants and agents. **n8n is heavily investing in AI capabilities. You connect a language model (OpenAI, Anthropic, or a local one through Ollama), add the AI Agent node, and configure the tools the agent can call. If the agent needs access to internal documents, you upload files into n8n and set up a RAG pipeline. Ready-made templates are available for the most common agent scenarios, and a basic setup takes about 15 minutes.
**Content pipeline. **An RSS feed enters n8n, gets filtered by keywords, then an AI node generates a short summary for each article. The result is posted to a Telegram channel or sent as a daily email digest.
**DevOps automation. **A commit to a Git repository triggers a workflow: build, run tests, deploy to a server, notify the team about the result. n8n does not replace a full CI/CD pipeline, but for small projects it covers the basics.
## What server do you need and how to prepare the environment
Choosing the right server configuration is the first step. Minimum requirements depend on your workload: how many workflows will run concurrently and how many users will access the system.
The recommended OS for production is Ubuntu 22.04 or 24.04 LTS. n8n also runs on other Linux distributions and even on Windows (via npm or Docker Desktop), but for stable production use, Ubuntu with Docker remains the standard choice.
| Scenario | CPU | RAM | SSD | What it can handle |
| --- | --- | --- | --- | --- |
| Testing and development | 2 cores | 4 GB | 30 GB | n8n + SQLite, a handful of workflows |
| Team of up to 10 | 4 cores | 8 GB | 60 GB | n8n + PostgreSQL + Nginx + HTTPS |
| Production under load | 8 cores | 16 GB | 100 GB | Queue mode: main + workers + Redis + PostgreSQL |
You can skip the manual setup entirely: [Serverspace offers a VPS with n8n pre-installed](https://serverspace.us/services/n8n-cloud.md). Docker, the database, and the platform itself are already configured and ready to go. Billing is per-minute, so you only pay for what you actually use.
If you prefer to set things up yourself, prepare the server first: update the system (apt update && apt upgrade), install Docker and Docker Compose, and create a dedicated user with sudo privileges. You will need SSH access and any terminal application (Terminal on macOS/Linux, PowerShell or PuTTY on Windows).
## Step-by-step: installing n8n with Docker on a VPS
Docker is the recommended way to deploy n8n in production. Containers provide isolation, straightforward updates, and reproducible configurations. Here is the process, step by step.
**Step 1. **Connect to your server via SSH and update the system:
```bash
apt update && apt upgrade -y
```
**Step 2. **Install Docker if it is not already present:
```bash
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
```
**Step 3. **Create a project directory:
```
mkdir ~/n8n-docker && cd ~/n8n-docker
```
**Step 4. **Create a .env file with the essential variables (each one is explained in the next section):
```
N8N_HOST=n8n.example.com N8N_PROTOCOL=https
WEBHOOK_URL=https://n8n.example.com/
N8N_ENCRYPTION_KEY=your_key_from_openssl_rand_hex_32
```
**Step 5. **Create a docker-compose.yml file. A minimal configuration includes an n8n container and a reverse proxy (Traefik or Nginx). The official n8n repository has ready-made examples for various architectures.
**Step 6. **Start the containers:
```bash
docker compose up -d
```
**Step 7. **Check the logs and make sure there are no errors:
```bash
docker compose logs -f n8n
```
**Step 8. **Open your server address in a browser and create the first account. This is important: the first registered user automatically gets admin rights. If you delay registration, someone else could claim the admin account.
At this point, installation is complete. The system is running, but several more settings are needed before it is production-ready.
## Environment variable checklist: what to configure before going live
Most production issues are not caused by n8n itself but by incomplete configuration. Out of the box, n8n starts with settings meant for local development: an SQLite database, a randomly generated encryption key, and execution history that accumulates without limits. None of that is suitable for a production server. Here is what you need to set up.
| Variable | Purpose | What happens if you skip it |
| --- | --- | --- |
| N8N_ENCRYPTION_KEY | Encrypts stored credentials (API keys, tokens, passwords) | All credentials become unreadable if the container is recreated |
| DB_TYPE=postgresdb | Switches from SQLite to PostgreSQL | SQLite locks under concurrent writes; potential data loss |
| N8N_PROTOCOL=https | Sets the protocol for generated links | Webhooks and URLs will be generated with http |
| WEBHOOK_URL | External address for incoming webhooks | Webhooks from external services will not trigger |
| EXECUTIONS_DATA_PRUNE=true | Automatically cleans up execution history | Database grows without limit; performance degrades |
| N8N_BLOCK_ENV_ACCESS_IN_NODE=true | Blocks Code nodes from reading environment variables | Workflows can access sensitive server data |
| NODES_EXCLUDE | Disables dangerous nodes (ExecuteCommand) | Users can run arbitrary commands on the server |
A closer look at the encryption key. N8N_ENCRYPTION_KEY is the single most critical setting in the entire instance. n8n uses this key to encrypt every stored credential: API tokens, passwords, OAuth data. If the key is lost (for example, the container is recreated without a volume and the key was never set via an environment variable), there is no way to recover the credentials. You will have to recreate every connection from scratch.
Generate a strong key with: openssl rand -hex 32. Store it in a secrets manager (1Password, Bitwarden, HashiCorp Vault) and keep a backup copy in a separate location. If you plan to use queue mode with multiple workers, the key must be identical across all processes.
## Security: HTTPS, firewall, and access control
Security configuration is not optional. Without HTTPS, login credentials and workflow data travel in plain text. Without a firewall, port 5678 (n8n’s default) is open to anyone on the internet.
The minimum set of measures for production: place a reverse proxy (Nginx or Traefik) in front of n8n and set up a free SSL certificate via Let’s Encrypt. Use a firewall to block all ports except 443 (HTTPS) and 22 (SSH). Port 5678 should never be exposed externally. If multiple people use the instance, do not give everyone admin rights. n8n 2.0 introduced custom project roles that let you separate workflow creators from those who publish them.
On [Serverspace](https://serverspace.us/services/vps-server.md), the firewall is configured in a few clicks right from the control panel. Just allow inbound traffic on ports 443 and 22 and block everything else. No need to work with iptables manually.
One more security note: in n8n 2.0, Code nodes run inside isolated task runners by default, and the ExecuteCommand node is disabled out of the box. Even if someone writes malicious code in a workflow, it cannot crash the main n8n process or access the server’s file system.
## Database and backups: what you cannot afford to lose
By default, n8n uses SQLite. That is fine for testing, but in production SQLite becomes a liability: it does not handle concurrent writes, and with several active workflows writing constantly, the database will eventually lock up and workflows will start failing. On top of that, SQLite is not compatible with queue mode. Switch to PostgreSQL before the system goes live.
What to back up: the PostgreSQL database (via pg_dump on a cron schedule), the Docker volume with n8n data (~/.n8n), configuration files (.env, docker-compose.yml), and the encryption key separately. An additional safety net: export workflows to JSON and store them in a Git repository. n8n supports direct Git synchronization (push from one instance, pull to another), which is useful both for backups and for moving workflows between environments (dev, staging, production).
[Serverspace](https://serverspace.us/services/vps-server.md) provides built-in server snapshots that you can create directly from the control panel. This adds another layer of protection on top of database backups: if something goes seriously wrong, you can roll back the entire server to a working state.
The golden rule: a backup is useless if you have never tested the restore. Once a month, spin up a test server, restore from backup, and verify that workflows launch and credentials decrypt properly. Without this, you do not actually know whether your backups work.
## Scaling: when a single server is no longer enough
In the default single-node setup, the editor, workflow execution, and webhook processing all share the same process. As the number of workflows grows or they become CPU-intensive, the editor starts lagging and webhooks are processed with noticeable delays.
The solution is queue mode. In this architecture, responsibilities are split. The main instance handles the editor, API, and task scheduling. It pushes jobs into a Redis queue. Workers (one or more) pick jobs from the queue and execute workflows. Results are stored in PostgreSQL.
To enable queue mode, set EXECUTIONS_MODE=queue on the main instance and on every worker. Redis acts as the message broker; PostgreSQL stores the data (SQLite is not supported in this mode). Adding a worker is as simple as spinning up another container with the n8n worker command and the same environment variables. Recommended concurrency per worker: 5 or more executions.
Switching to queue mode usually means running multiple servers. On [Serverspace](https://serverspace.us/services/vps-server.md) you can spin up additional VPS instances in minutes and connect them via an isolated private network with up to 1 Gbit/s throughput.
An important caveat: do not share a filesystem between the main instance and workers for binary data storage. This leads to file corruption. If your workflows process attachments or large files, use external storage such as S3 or MinIO.
## Common mistakes when taking n8n to production
**Running SQLite in production. **The most common mistake. Everything works fine until the load increases, and then the database starts locking on concurrent writes. Fix: switch to PostgreSQL before going live, not after the first incident.
**No encryption key set. **If you do not set N8N_ENCRYPTION_KEY via an environment variable, n8n generates a random key and stores it inside the container. Recreate the container without a volume and the key is gone, along with every stored credential. Fix: set the key explicitly and keep a copy in a secrets manager.
**Port 5678 exposed to the internet. **Without a reverse proxy, anyone can access the n8n editor or send requests to the API. Fix: block the port with a firewall and use Nginx or Traefik as a proxy with HTTPS.
**No execution history pruning. **Every workflow run is recorded in the database. Without pruning, the executions table grows to gigabytes within months and queries slow down. Fix: set EXECUTIONS_DATA_PRUNE=true and EXECUTIONS_DATA_MAX_AGE=168 (keep 7 days of history).
**Updating without testing. **n8n ships a new minor version nearly every week. Upgrading without testing can break existing workflows, especially after major releases like n8n 2.0 (task runners, blocked environment variables, the new Save/Publish mechanism). Fix: pin specific Docker image tags (never use :latest) and test updates on a staging server.
**Losing the encryption key. **If the key is lost permanently, every stored API token, password, and OAuth connection is locked forever. There is no recovery. You will have to recreate all credentials in every workflow manually. Fix: store the key in multiple places (secrets manager plus an encrypted copy in a separate storage location).
## Conclusion
The full path from a fresh server to stable production looks like this: a VPS with Ubuntu, Docker Compose, PostgreSQL instead of SQLite, an encryption key set via an environment variable, HTTPS through a reverse proxy, a firewall, and automated backups. For a growing team, the next step is queue mode with Redis and workers, monitoring, and workflow versioning via Git.
n8n 2.0 is moving toward “secure by default”: code isolation, separate Save and Publish actions, dangerous nodes disabled out of the box. But responsibility for infrastructure, backups, and updates remains yours.
Get started with a [pre-configured n8n server on Serverspace](https://serverspace.us/services/n8n-cloud.md): n8n is already installed, and all that is left is to go through the checklist in this guide and take your automation to production.
## FAQ
**Can I use n8n instead of Zapier?**
Yes, for most use cases. The main difference is that n8n can be self-hosted, so your data never leaves your servers. Zapier is easier to get started with, but it gets expensive as you scale and does not give you control over the infrastructure. n8n also counts entire workflows rather than individual actions, which makes it more cost-effective for complex automations.
**Do I need to know how to code to use n8n?**
No. n8n is designed for no-code use. Workflows are built visually by dragging and connecting nodes on a canvas. Code (JavaScript or Python) is only needed for advanced scenarios, and even then basic knowledge is enough. The majority of n8n users are not developers.
**How much does self-hosted n8n cost?**
The Community Edition is entirely free, including AI nodes and unlimited workflows. The only expense is server rental. A VPS suitable for a small team costs just a few dollars a month.
https://serverspace.us/about/blog/top-cloud-computing-providers-2026.mdA ranked guide to the top cloud computing providers in 2026 — covering market share, UK presence, pricing models, compliance certifications, and AI infrastructure. Updated with Q4 2025 data.
Cloud infrastructure spending kept rising sharply through 2025, and provider choice now has direct consequences for cost control, resilience, and compliance. The rankings below focus on five factors that shape real operating decisions: infrastructure reliability, pricing clarity, compliance coverage, scalability, and support quality.
The distance between a smart cloud decision and an expensive one has never been wider. Hyperscalers continue to expand their catalogs, while smaller providers keep sharpening their edge on simplicity and pricing. At the same time, AI demand is accelerating infrastructure growth and making cloud bills harder to predict. Choosing well now means looking past the homepage and evaluating the full operating model.
This guide ranks the top cloud computing providers in 2026 by five equally weighted criteria: data center footprint and U.S. presence, billing predictability, scaling flexibility, security defaults and compliance certifications, and support responsiveness. Scores run from 1 to 5. U.S. availability, federal-readiness, and regional coverage are noted where relevant, especially for organizations dealing with data residency, regulated workloads, or multi-region disaster recovery requirements.
## How This Ranking Was Built
Each provider was evaluated across five equal criteria: geographic footprint and U.S. data center coverage; billing transparency, including egress, bandwidth, and support fees; horizontal and vertical scaling options; security defaults and compliance certifications; and support response quality. Data sources include late-2025 market data, provider infrastructure documentation, public earnings reports, and direct product positioning.
## 1) Amazon Web Services (AWS) 5 / 5
[AWS](https://aws.amazon.com/) remains the largest cloud infrastructure provider by market share, with an unmatched breadth of services across compute, storage, databases, networking, analytics, security, AI, and developer tooling. Its global infrastructure now spans 39 geographic regions and 123 availability zones, giving it one of the deepest resiliency footprints in the market.
On the AI side, AWS offers a mature stack: Bedrock for foundation model access, SageMaker for end-to-end machine learning workflows, and custom silicon such as Graviton for general compute and Trainium for training-heavy workloads. For U.S. public sector and highly regulated buyers, AWS GovCloud remains a major draw, supported by broad compliance coverage and a long-established federal presence.
The tradeoff is complexity. Egress charges, cross-AZ transfer costs, layered storage pricing, and enterprise support tiers can make monthly spend difficult to forecast without strong internal FinOps discipline. For large organizations with experienced cloud teams, AWS offers unmatched depth. For leaner teams, that same depth can become operational overhead.
**Best for:** Large regulated enterprises, multi-region deployments, AI and ML at scale.
**Pricing:** Usage-based; complex; egress fees apply.
**Compliance:** FedRAMP, HIPAA, PCI DSS, SOC 2, ISO 27001.
**U.S. presence:** Broad national footprint across multiple U.S. regions, Local Zones, and GovCloud.
## 2) Serverspace 5 / 5 — Editor’s Pick
[Serverspace](https://serverspace.us/index.md) earns its spot by doing what many larger platforms do not: reducing operational friction instead of adding more of it. A VPS can be deployed in seconds, billing runs every 10 minutes, and plans include free traffic with no separate egress charge. The interface is clean, the workflow is fast, and the pricing model is easy to understand without a calculator.
The platform is built for practical infrastructure workloads rather than sprawling service catalogs. It offers enterprise hardware, NVMe storage, API access, CLI support, and Terraform integration. U.S. deployment is available in New Jersey, which makes it relevant for teams that need low-latency East Coast hosting without stepping into hyperscaler complexity from day one.
Serverspace is not trying to mirror AWS feature-for-feature and that is precisely the point. It is a stronger fit for teams that want predictable VPS infrastructure for web applications, SaaS backends, CI/CD, internal tools, staging environments, and production services where fast provisioning and cost clarity matter just as much as uptime.
**Best for:** SMEs, dev teams, SaaS backends, web apps, staging environments.
**Pricing:** Per-10-minute billing; free traffic included; predictable cost model.
**Compliance:** SLA-backed availability; not positioned as a FedRAMP or HIPAA-first platform.
**U.S. presence:** New Jersey data center.
## 3) Microsoft Azure 4.5 / 5
[Azure](https://azure.microsoft.com/) remains one of the two strongest enterprise cloud platforms globally and continues to gain momentum, especially where AI adoption and Microsoft ecosystem integration are already priorities. Microsoft reported Azure and other cloud services growth of 33% in FY25 Q3, with 16 points attributed to AI services.
The platform is especially compelling for organizations already invested in Microsoft 365, Entra ID, Dynamics, Windows Server, or hybrid governance. Azure Arc, Azure OpenAI Service, and the company's broad U.S. footprint make it particularly attractive for enterprises managing a mix of cloud, edge, and on-prem infrastructure. Azure Government further strengthens its case for federal, state, and public-sector workloads.
The downside is billing and portfolio complexity. Between pay-as-you-go pricing, reserved capacity, hybrid benefits, and multiple discount structures, cost governance can become difficult without strong internal controls. Outside the Microsoft ecosystem, the learning curve also remains steep.
**Best for:** Microsoft-native enterprises, OpenAI workloads, hybrid cloud strategies.
**Pricing:** Complex; tiered discounts; reserved options available.
**Compliance:** FedRAMP, DoD, CJIS, HIPAA, ISO 27001.
**U.S. presence:** Extensive national footprint, including Azure Government.
## 4) Google Cloud Platform (GCP) 4.5 / 5
[Google Cloud](https://cloud.google.com/) continues to differentiate through data infrastructure, analytics, and AI. BigQuery, Vertex AI, and Google's TPU ecosystem make GCP especially attractive for teams building around machine learning, large-scale analytics, and modern data pipelines.
Its private backbone is a genuine advantage for latency-sensitive and distributed applications. In the U.S. market, Google also benefits from a strong footprint across major regions and a growing federal compliance story through Assured Workloads and FedRAMP-supported offerings. Sustainability remains part of the value proposition as well, with Google maintaining its long-running carbon neutrality efforts and 24/7 carbon-free energy goal for 2030.
The main limitation is breadth outside its strongest categories. Support quality and operational maturity at lower tiers still feel less enterprise-tuned than AWS or Azure, and the surrounding managed-services catalog remains narrower than AWS.
**Best for:** Data analytics, AI and ML workloads, modern cloud-native teams.
**Pricing:** Per-second billing; sustained use discounts applied automatically.
**Compliance:** FedRAMP, HIPAA, SOC 2, ISO 27001, PCI DSS.
**U.S. presence:** Multiple major U.S. regions with strong backbone connectivity.
## 5) Oracle Cloud Infrastructure (OCI) 4.5 / 5 — Fastest Growing
[Oracle Cloud](https://www.oracle.com/cloud/) has moved from being a niche cloud option to a serious AI infrastructure contender. In Q2 FY2026, Oracle reported total remaining performance obligations of $523 billion, underscoring how aggressively large enterprises are committing future spend to the platform.
The technical appeal of OCI still centers on high-performance infrastructure, database-heavy workloads, and increasingly serious AI compute positioning. Bare-metal architecture, strong Oracle Database alignment, and cross-cloud arrangements such as Oracle Database@Azure make OCI more relevant than its market share alone might suggest. For U.S. enterprises with existing Oracle estates, that integration story is a major advantage.
OCI is still less universal than AWS, Azure, or GCP, but for database-centric organizations or buyers looking at serious capacity planning for AI, it is no longer optional to evaluate.
**Best for:** Oracle Database estates, bare-metal AI compute, enterprise modernization.
**Pricing:** Relatively predictable by hyperscaler standards.
**Compliance:** FedRAMP, HIPAA, SOC 2, ISO-aligned controls.
**U.S. presence:** Multiple U.S. cloud regions and strong enterprise/government relevance.
## 6) DigitalOcean 4 / 5
[DigitalOcean](https://www.digitalocean.com/) remains one of the cleanest platforms for startups, SaaS teams, and developers who want fast setup and pricing that is easy to understand. Managed Kubernetes, managed databases, App Platform, and strong documentation keep it attractive for product teams that need to move quickly.
Its limits show up at the enterprise edge: fewer compliance options, less depth for AI infrastructure, and a smaller footprint than the major hyperscalers. Still, for lean teams that prioritize speed over service sprawl, DigitalOcean remains one of the most practical platforms in the market.
**Best for:** Startups, SaaS products, teams prioritizing fast iteration.
**Pricing:** Flat monthly with straightforward packaging.
**Compliance:** SOC 2; more limited regulated-workload positioning than hyperscalers.
**U.S. presence:** Multiple U.S. data center locations.
## 7) Vultr 4 / 5
[Vultr](https://www.vultr.com/)'s strongest argument is still reach plus price. With 32 cloud regions globally, it gives DevOps teams a broad deployment map without hyperscaler pricing. Bare metal, cloud compute, Kubernetes, object storage, and GPU options help it cover more use cases than many mid-market VPS providers.
Its U.S. relevance is solid for engineering teams that want regional flexibility and hourly billing, but the platform remains lighter on compliance depth and enterprise support than the biggest providers. That makes Vultr attractive for globally distributed apps, test environments, and cost-conscious production workloads rather than highly regulated enterprise estates.
**Best for:** DevOps teams, globally distributed apps, AI prototyping.
**Pricing:** Hourly and monthly; competitive across regions.
**Compliance:** Lighter enterprise compliance profile than hyperscalers.
**U.S. presence:** Multiple U.S. cloud regions.
## Cloud Computing Market Share 2026
AWS, Azure, and Google Cloud still dominate the global market. By late 2025, the three together accounted for roughly 63% of cloud infrastructure revenue, with AWS in first place, Microsoft in second, and Google in third. That top-heavy structure has stayed remarkably stable, even as Oracle and a wider field of specialist providers continue to grow around the edges.
**AWS** — still the global leader by share, breadth, and infrastructure footprint.
**Microsoft Azure** — strong number-two position, with AI and enterprise integration driving growth.
**Google Cloud** — smaller than AWS and Azure, but especially strong in data, analytics, and ML.
**Oracle Cloud (OCI)** — still a smaller player by share, but growing relevance in enterprise AI and database-driven infrastructure.
## Key Trends Shaping the Top Cloud Computing Providers in 2026:
**AI Is Rewriting Infrastructure Budgets**
Generative AI demand has become one of the main drivers of cloud growth. GPU access, model hosting, private inference, and training capacity are now shaping provider selection in a way that traditional compute never did. That makes cloud evaluation more strategic than it was even two years ago.
**Multi-Cloud Is Operational Reality**
For most enterprises, cloud strategy is no longer about choosing one provider. It is about matching workloads to the right platform: one for regulated apps, another for data, another for fast-moving dev environments. Cross-cloud management tooling exists because customers are already operating this way.
**U.S. Compliance Pressure Keeps Rising**
For American buyers, certifications are not a footnote anymore. FedRAMP, HIPAA, CJIS, and sector-specific controls increasingly determine which providers even make it into procurement. Federal-readiness and domestic region coverage matter far more in 2026 than they did a few years ago.
**Billing Transparency Has Become a Selling Point**
As infrastructure spend rises, pricing predictability matters more. Hidden transfer costs, premium support fees, and fragmented discount models create friction at renewal time. Providers with simpler billing structures now have a real competitive advantage, especially with mid-market and engineering-led buyers.
## Comparison: Top Cloud Computing Providers 2026
| Provider | Score | Best For | Pricing | Compliance |
| --- | --- | --- | --- | --- |
| AWS | 5/5 | Large enterprise, AI/ML | Usage-based, complex | FedRAMP, HIPAA, PCI, SOC 2 |
| Serverspace | 5/5 | SMEs, dev teams, SaaS | Per-10-min, predictable | SLA-backed availability |
| Azure | 4.5/5 | Microsoft ecosystems | Complex, tiered | FedRAMP, HIPAA, DoD |
| Google Cloud | 4.5/5 | Data, analytics, AI | Per-second; auto discounts | FedRAMP, HIPAA, SOC 2 |
| Oracle Cloud | 4.5/5 | Oracle DB, HPC, enterprise AI | Relatively predictable | FedRAMP, HIPAA, SOC 2 |
| DigitalOcean | 4/5 | Startups, SaaS | Flat monthly | SOC 2 |
| Vultr | 4/5 | DevOps, global reach | Hourly/monthly | More limited than hyperscalers |
## How to Match the Provider to Your Workload
The most common cloud selection mistake is treating it as a single decision for the whole organization. Most teams running production workloads do better by matching different providers to different purposes. A regulated healthcare application may need AWS or Azure. The development environment for that same application might run on Serverspace at a lower cost and with faster provisioning. A data science team might use Google Cloud for BigQuery and Vertex AI while keeping other workloads on a simpler stack.
Start with constraints: compliance requirements, required U.S. regions, latency targets, internal skill set, and budget ceiling. Then compare providers against those requirements directly. Once the constraints are clear, the right choice usually gets much easier.
https://serverspace.us/about/blog/top-cloud-providers-in-the-uae-2026.mdRanked: the top cloud hosting providers in the UAE for 2026 — with Dubai data centers, GCC latency benchmarks, local compliance and pricing compared. Includes Equinix DX1 options and managed VPS picks.
The UAE cloud market is growing faster than most markets in the world, powered by government digitization programs, the rise of Dubai and Abu Dhabi as regional tech hubs, and strict data residency requirements that push businesses toward local infrastructure. This guide ranks the top cloud providers operating in the UAE in 2026 — scored on server location, pricing transparency, performance, compliance, and support.
Choosing a cloud provider for a UAE-based operation is not the same decision as choosing one in Europe or the U.S. Latency to regional users, compliance with UAE data protection laws, and the ability to keep data within the country’s borders are factors that can determine whether a provider is viable at all — before price or features even enter the picture.
The providers below all have infrastructure in or near the UAE, with a data center in Dubai or Abu Dhabi. They were evaluated on five criteria: physical server location and regional latency, pricing model and billing clarity, scalability, security and compliance, and support quality. Scores run from 1 to 5.
## How This Ranking Was Built
Each provider was assessed on UAE-specific criteria: data center location within the UAE or DX1/Equinix Dubai, billing transparency and predictability, performance on regional workloads, compliance with UAE data protection regulations, and support availability. Data sources include provider documentation, independent VPS benchmark platforms, and regional hosting review aggregators current as of early 2026.
## 1) Serverspace 5 / 5 — Best Overall
[Serverspace](https://serverspace.us/services/vps-server/cloud-servers-in-the-uae.md) runs its UAE infrastructure from the Equinix DX1 data center in Dubai — a Tier III facility and the home of the UAE Internet Exchange (UAE-IX), the primary interconnection hub for the Middle East. That location puts Serverspace servers at the center of regional network topology, not on the edge of it. Latency to users across the UAE, Saudi Arabia, and the wider GCC is as low as it gets without building your own data center.
The hardware runs on 2nd Gen Intel Xeon Scalable processors at 3.1 GHz with NVMe SSD storage delivering up to 30,000 IOPS. Deployment completes in under 60 seconds. Billing ticks every 10 minutes — not hourly, not monthly — and there are no egress fees, no bandwidth metering, and no hidden charges of any kind. Every plan includes unlimited traffic. Among VPS providers active in the UAE market in 2026, that billing model is essentially unique.
[Serverspace](https://serverspace.us/services/vps-server/cloud-servers-in-the-uae.md) uses the vStack hyperconverged platform with a bhyve hypervisor — a lightweight, modern architecture that extracts more performance from the hardware than legacy hypervisors do. A Windows VPS option is available with licenses included. Automation is fully covered via REST API, CLI, and Terraform provider, so the platform fits cleanly into any IaC workflow. The 99.9% SLA is backed by the Equinix DX1 facility’s own redundancy guarantees. For any business that wants enterprise-grade infrastructure in Dubai without enterprise-grade complexity or pricing, Serverspace is the most complete option on this list.
**Best for:** Businesses targeting UAE and GCC audiences, SaaS products, web applications, e-commerce backends, dev and staging environments.
**Pricing:** Per-10-minute billing; zero egress fees; unlimited traffic on all plans.
**Data center:** Equinix DX1, Dubai (Tier III, UAE-IX member).
**Compliance:** 99.9% SLA; UAE data residency; ISO-certified facility.
## 2) AEserver 4.5 / 5
[AEServer](https://aeserver.com/) is a Dubai-based provider focused entirely on the UAE market. That local focus is both its strength and its clearest differentiator from international alternatives: the team offers 24/7 support in Arabic and English, bills in AED, accepts local payment methods, and understands the compliance context UAE businesses operate in. The infrastructure uses Dell hardware with NVMe SSD storage and cPanel integration, which makes server management accessible to teams without deep Linux experience.
VPS plans offer full root access, choice of operating system (Linux and Windows), and managed options for teams that prefer not to handle OS-level administration themselves. Free website migration is included, and the setup process is described by users as one of the more straightforward among local providers. For a UAE-registered business that values local support and local billing above everything else, AEserver is a reliable option.
The limitations are on the infrastructure side: fewer automation tools than Serverspace, no publicly documented Terraform provider, and pricing that becomes less competitive at higher resource tiers compared to providers with larger scale. The managed service model also means less flexibility for teams that want direct access to hypervisor-level controls.
**Best for:** UAE SMBs, local e-commerce, teams that prefer Arabic-language support and AED billing.
**Pricing:** Monthly; AED-denominated plans available.
**Data center:** Dubai, UAE.
**Compliance:** UAE data residency; local regulatory alignment.
## 3) UltaHost 4.5 / 5
[UltaHost](https://ultahost.com/) has built a solid reputation in the managed VPS segment for the UAE market. Its Dubai data center delivers low-latency connections to regional users, and the managed plans come with a practical set of defaults: BitNinja security, automated backups, DDoS protection, malware scanning, and SSL certificates. The platform supports both Linux and Windows, and scaling resources up or down through the control panel requires no downtime.
The entry pricing is competitive — base plans start below $6/month — and unlimited bandwidth is included on most configurations. The 99.9% uptime commitment is standard, and 24/7 live chat support is available. For teams that want a managed experience and don’t want to deal with server administration, UltaHost removes most of that operational overhead.
The trade-off is that the managed layer introduces dependency: teams with specific configuration requirements or IaC workflows will find less flexibility than with unmanaged alternatives. Automation tooling (API, Terraform) is not a focus of the platform. At higher resource tiers, costs can climb above Serverspace or LightNode for equivalent specifications.
**Best for:** SMBs and agencies wanting fully managed UAE VPS with built-in security defaults.
**Pricing:** Monthly; competitive entry pricing; managed plans from ~$6/month.
**Data center:** Dubai, UAE.
**Compliance:** UAE data residency; compliant with local data protection laws.
## 4) Kamatera 4 / 5
[Kamatera](https://www.kamatera.com/) brings a cloud-native architecture to the UAE market with a data center in Dubai and a pay-as-you-go pricing model that scales precisely to the resources consumed. The platform is built on Intel CPUs with SSD storage and offers genuine customization: CPU count, RAM, and disk can be set independently rather than choosing from fixed plan tiers. A 30-day free trial lowers the barrier to testing the platform before committing.
Performance benchmarks put Kamatera consistently in the upper tier for CPU and I/O throughput among mid-range VPS providers. The infrastructure is enterprise-grade, with a 99.95% uptime SLA and redundant hardware across its data centers. DDoS protection, automated backups, and private networking are available. For teams with variable or growing workloads where resource needs are hard to predict, the granular scaling model has real practical value.
The friction is on the UX side. The control panel takes longer to learn than simpler alternatives, and the pricing calculator requires active engagement to understand the actual monthly cost before committing. Support quality is generally rated as good, though response times on lower-tier plans can vary. Kamatera is strongest for technically experienced teams who want flexible infrastructure and are willing to manage the configuration themselves.
**Best for:** Developers and DevOps teams needing granular, custom-spec cloud VPS in the UAE.
**Pricing:** Pay-as-you-go; starts from ~$4/month; 30-day free trial.
**Data center:** Dubai, UAE.
**Compliance:** SOC 2; 99.95% SLA.
## 5) LightNode 4 / 5
[LightNode](https://www.lightnode.com/)‘s UAE offering runs from a Dubai data center on KVM virtualization with NVMe SSD storage, high-frequency vCPUs, and up to 4 TB monthly bandwidth on standard plans. Deployment takes under two minutes. Hourly billing is available alongside monthly plans, and the platform supports a wide range of operating systems: Ubuntu, Debian, CentOS, Rocky Linux, AlmaLinux, FreeBSD, and Windows. Payment options include credit card, PayPal, Alipay, and Google Pay.
LightNode’s pricing is among the lowest available for UAE-located VPS with dedicated IP addresses and full root access. The platform is unmanaged, which means the per-resource cost is lower, but OS administration sits with the customer. For developers comfortable with Linux who want affordable UAE-based compute with hourly billing and no long-term commitment, LightNode is worth a close look.
The platform’s weakness is its managed services layer — or the lack of one. There is no native managed database, no load balancer, and limited orchestration tooling. Support is functional but not deep. LightNode works well as a single-server or multi-server compute platform; it is not designed to be an all-in-one hosting solution.
**Best for:** Developers and budget-conscious teams wanting unmanaged UAE VPS with hourly billing.
**Pricing:** Hourly and monthly; one of the lowest per-vCPU rates in the UAE market.
**Data center:** Dubai, UAE.
**Compliance:** Tier 3+ data center; standard security.
## 6) Hostinger 4 / 5
[Hostinger](https://www.hostinger.com/) is one of the most recognized names in affordable web hosting globally, and its VPS offering is available to UAE customers with reasonable performance characteristics. Plans include full root access, SSD storage, a 300 Mb/s network port, and hPanel — Hostinger’s proprietary control panel — which is genuinely easier to use than cPanel for beginners. A 1-click installer covers most common application deployments. The entry price is low, and weekly automated backups are included.
The limitation for UAE-specific deployments is data center geography: Hostinger does not operate a data center inside the UAE. The nearest locations are typically in Singapore or Europe, which adds latency for UAE-based users compared to providers with local infrastructure. For businesses with UAE data residency requirements, that location gap is a compliance concern, not just a performance one.
Hostinger is a sensible choice for international teams and projects where the audience is not UAE-specific, or for budget-first decisions where some latency is an acceptable trade-off for a lower monthly cost.
**Best for:** Budget-first deployments, international teams, projects without UAE data residency requirements.
**Pricing:** Flat monthly; competitive entry pricing; no UAE-local surcharges.
**Data center:** No UAE location; nearest options in Europe or Singapore.
**Compliance:** Standard; no UAE data residency.
## 7) BlueVPS 3.5 / 5
[BlueVPS](https://bluevps.com/) offers UAE-located VPS with a 1 Gbps connection, storage and unlimited traffic on standard plans. The platform is unmanaged and straightforward: pick a plan, pick an OS, deploy. Pricing is transparent and monthly. There is no complicated billing model to decode, and no egress charges on most configurations.
The trade-off is breadth. BlueVPS doesn’t offer managed services, advanced automation tools, or a developer-facing API with wide community support. The control panel covers the basics but lacks the polish of more established platforms. Support is available but not as consistently responsive as the providers ranked above it. For teams that want a simple, low-cost UAE VPS without managed overhead, BlueVPS covers the essentials without drama.
**Best for:** Simple, low-cost unmanaged UAE VPS deployments.
**Pricing:** Flat monthly; unlimited traffic included.
**Data center:** UAE.
**Compliance:** Standard; 99.9% uptime.
## The UAE Cloud Market in 2026
The UAE is one of the fastest-growing cloud markets in the world. Government initiatives under the UAE Digital Economy Strategy aim to double the digital economy’s contribution to GDP within a decade, and hyperscalers have taken notice: AWS, Microsoft Azure, and Google Cloud all operate UAE regions, with Oracle Cloud and Alibaba Cloud running sovereign and local deployments as well.
For businesses operating in the UAE, two factors shape provider selection more than any other. First, data residency: UAE law and sector-specific regulations — particularly in finance and healthcare — require that certain categories of data remain within national borders. Second, latency: with a high concentration of end users in Dubai and Abu Dhabi, the physical distance between a server and its users has a direct, measurable impact on application performance and local SEO.
Both factors favor providers with physical infrastructure inside the UAE over international providers routing traffic from Europe or Southeast Asia.
**Why the Equinix DX1 location matters:** DX1 in Dubai is the UAE’s primary carrier-neutral data center and hosts the UAE Internet Exchange (UAE-IX). Providers colocated there benefit from the shortest possible hops to regional network operators, content providers, and end users across the GCC. Serverspace is one of the few VPS providers that explicitly operates from DX1, which explains the low-latency performance for regional workloads.
## Key Trends for UAE Cloud Buyers in 2026
**Data Residency Is Non-Negotiable in Regulated Sectors**
UAE data protection legislation and sector regulations from the Central Bank, ADGM, and DIFC require that sensitive data — financial records, healthcare information, government data — stays within UAE jurisdiction. Providers without a UAE data center are not viable for these use cases. When evaluating providers, verify not just where the primary servers are, but where backups are stored and where support operations run.
**Billing Predictability Has Become a Selection Criterion**
Egress fees have caused genuine budget surprises for UAE businesses using hyperscalers. A web application serving primarily GCC users can generate significant outbound traffic, and providers that charge per-GB for egress turn that traffic into a variable cost that is hard to forecast. Providers like Serverspace with zero egress fees and per-10-minute billing remove that uncertainty entirely — which is why the billing model is increasingly a procurement-stage question, not an afterthought.
**The GCC Audience Demands Low Latency**
Users in the UAE, Saudi Arabia, Kuwait, and Bahrain are concentrated in dense urban areas with high internet penetration and high expectations for application speed. Page load time directly influences conversion rates and search rankings. For applications targeting this audience, a server in Dubai at sub-5ms latency to most UAE users is a meaningful performance advantage over a server in Frankfurt or Singapore at 80–120ms.
**SMBs Are Moving Away from Shared Hosting**
UAE-based SMBs that outgrew shared hosting a few years ago are now evaluating VPS as the natural next step. The combination of dedicated resources, root access, and predictable monthly costs makes VPS the default upgrade path. Providers that make that transition simple — fast deployment, clean dashboards, transparent pricing — are winning that segment. Serverspace’s sub-60-second deployment and billing model that requires no accountant to interpret are well suited to this audience.
## Comparison: Top Cloud Providers in UAE 2026
| Provider | Score | Best For | Pricing | UAE Data Center |
| --- | --- | --- | --- | --- |
| Serverspace | 5/5 | SaaS, web apps, GCC reach | Per-10-min, zero egress | Equinix DX1, Dubai |
| AEserver | 4.5/5 | Local UAE SMBs, Arabic support | Monthly, AED billing | Dubai, UAE |
| UltaHost | 4.5/5 | Managed VPS, SMBs | Monthly, from ~$6 | Dubai, UAE |
| Kamatera | 4/5 | DevOps, custom specs | Pay-as-you-go, from ~$4 | Dubai, UAE |
| LightNode | 4/5 | Budget unmanaged VPS | Hourly/monthly, low rates | Dubai, UAE |
| Hostinger | 4/5 | Budget, international teams | Flat monthly | No UAE DC |
| BlueVPS | 3.5/5 | Simple unmanaged VPS | Flat monthly | UAE |
## How to Pick the Right Provider for Your UAE Workload
Start with the data residency question. If you operate in finance, healthcare, or government, the answer determines your shortlist before you look at anything else. Providers without UAE-based infrastructure are simply not on the table.
For the rest, the decision typically comes down to management preference and billing model. Managed VPS (UltaHost, AEserver) removes OS-level overhead but limits flexibility and increases cost at scale. Unmanaged VPS (Serverspace, LightNode, Kamatera) gives full control and better per-resource pricing — but puts server administration on your team. Serverspace sits in an unusual position: it offers unmanaged infrastructure with a clean control panel and full IaC automation, at pricing that is hard to beat in the UAE market, with zero egress charges that most competitors still impose.
For most UAE-based web applications, SaaS products, and e-commerce backends, the combination of Equinix DX1 location, sub-60-second deployment, per-10-minute billing, and zero bandwidth fees makes Serverspace the strongest starting point on this list.
https://serverspace.us/about/news/new-serverspace-data-center-in-uzbekistan-tashkent-located.mdServerspace launched a new cloud region in Tashkent, Uzbekistan, expanding infrastructure coverage for lower latency, reliable performance, and growth across Central Asia and nearby markets.
[Serverspace](https://serverspace.us/index.md) has expanded the geographic reach of its cloud platform and launched a new location in the control panel. Users can now deploy VPS instances in the **East Telecom YA DC** data center in Tashkent, Uzbekistan. This new region is designed for projects operating in Central Asia and nearby markets, where low latency and infrastructure placement closer to end users are especially important.
The[East Telecom YA DC data center](https://serverspace.us/infrastructure/data-center-tashkent.md) meets international reliability standards and was designed in line with Tier III architectural recommendations from Uptime Institute. The facility is built with fault tolerance for key engineering systems in mind, ensuring stable and predictable performance for cloud services.
### Infrastructure and Platform
The new location is powered by servers based on 2nd Gen Intel Xeon Scalable processors. It supports deployment of virtualized environments built on VMware and vStack, making it suitable for both standard cloud use cases and enterprise workloads. In VMware environments, data is stored on enterprise-grade ITPOD storage systems that deliver reliable and consistent infrastructure performance.
### Security Features:
- Redundant power supply and cooling systems, including UPS and diesel generators;
- N+1 cooling architecture to ensure continuous equipment operation;
- FM-200 gas fire suppression system;
- 24/7 monitoring and on-site engineering staff.
The new location is already available in the control panel and is suitable for both test environments and production workloads where stability, fault tolerance, and predictable infrastructure behavior matter.
For companies expanding into Eastern markets, the Tashkent location also helps reduce latency for users and services in the region, making it easier to scale business operations eastward without the performance penalties associated with distant infrastructure.
### How to Deploy a VPS in Uzbekistan
- Open the control panel and go to the server creation section;
- Select your operating system and choose the data center — Tashkent, Uzbekistan;
- Set your server configuration: CPU, RAM, SSD storage, and network settings;
- Click the Create button.
With the launch of East Telecom YA DC, users can now place infrastructure across 10 data centers worldwide. The provider also plans to continue expanding its geo-distributed network and add new locations in the near future.
https://serverspace.us/about/blog/best-cloud-hosting-providers-for-startups-2026.mdComparing the best cloud startup programs in 2025: AWS Activate, DigitalOcean Hatch, Vultr VIP, Akamai Rise, and Serverspace. Credits, eligibility, billing after the program ends — side by side.
Cloud infrastructure is typically the first major operating cost a startup faces after salaries. The programs below cut that cost at the moment when cash is tightest — each one is real, currently active, and open to U.S.-based early-stage companies. This guide covers the actual terms, actual eligibility, and what each program gets you in practice.
Every cloud provider has a startup program. Most of them are built around the same idea: give away credits, get a company dependent on your platform, and lock them in before they’re profitable. That model works well for providers. It works less well for founders who burn through $100,000 in AWS credits, build their entire stack on proprietary services, and then face a pricing cliff when the credits run out.
The providers below were evaluated on five things: how much value the program actually delivers, how easy it is to qualify, whether billing stays predictable after the program ends, what support looks like in practice, and whether the infrastructure itself is a good fit for early-stage workloads. Scores run from 1 to 5.
## How This Ranking Was Built
Each program was evaluated on five criteria: credit value and accessibility (can a bootstrapped founder qualify, or only VC-backed startups?), infrastructure quality and real-world performance, billing model after the program ends, support quality, and total cost predictability at scale. All program details are current as of early 2025. Eligibility requirements and credit amounts can change — verify directly with each provider before applying.
## 1. Serverspace 5 / 5
The [Serverspace Startup Program](https://serverspace.us/solutions/startup-cloud-program.md) gives approved startups **$10,000 in cloud credits to use over 12 months** — with no requirement for VC backing, accelerator affiliation, or prior funding. Any early-stage company with a working website and a business domain email can apply. The review takes up to 7 days. That accessibility alone puts it ahead of programs that filter out bootstrapped founders before the process even starts.
The program was built by a team that started Serverspace as a startup itself. That context shows in the details. You get **free 24/7 human support** throughout the program — not a ticketing queue, but direct help with setup, configuration, and migration from whatever you were using before. You also get marketing assistance through Serverspace’s social channels and newsletters, invitations to networking events, and the opportunity to earn **additional bonus credits** by participating in product interviews, surveys, and case studies. Those bonus dollars carry over after the free year ends and can be used on any standard Serverspace service.
The infrastructure itself is a genuine advantage, not just a discount on mediocre hardware. Servers run on 2nd Gen Intel Xeon Scalable processors with NVMe SSD storage delivering up to 30,000 IOPS. Deployment completes in under 60 seconds. **All plans include unlimited traffic with zero egress fees** — a structural cost advantage that doesn’t disappear when the startup credits run out. Billing ticks every 10 minutes, which means you pay for what you actually use rather than hourly blocks that waste money during low-traffic periods. The REST API, CLI, and Terraform provider are all available from day one, so the infrastructure fits into any IaC workflow without extra configuration work.
Where Serverspace genuinely stands out is what happens after the 12-month program. Other programs end with a pricing cliff — you were running on free credits and now you’re paying full hyperscaler rates, often for services you can’t easily migrate away from. Serverspace’s base pricing starts at $5.71/month, billing remains per-10-minute, and egress stays free. The infrastructure you built during the program runs the same way after it. For a startup trying to extend runway, that continuity matters more than the headline credit number.
**Credits:** $10,000 over 12 months.
**Eligibility:** Early-stage startups with an active website and business domain email. No VC backing required.
**Support:** Free 24/7 human support throughout the program.
**Billing after program:** Per-10-minute, zero egress, from $5.71/month. No pricing cliff.
**Bonus perks:** Additional credits for product participation, marketing exposure, networking events.
## 2. AWS Activate 4 / 5
[AWS Activate](https://aws.amazon.com/activate/) is the largest startup credit program by total dollars distributed — over $8 billion in promotional credits given out since the program launched in 2013, covering more than 350,000 startups worldwide. For a startup with complex infrastructure needs, access to 200+ AWS services, and a team with AWS expertise already on staff, it’s still worth applying.
The program has two tiers. The **Founders package** is for self-funded startups with no VC backing: it provides $1,000 in credits and is accessible to almost any pre-Series B company with an AWS account and a working website. The **Portfolio package** offers up to $100,000 in credits, but it requires affiliation with an AWS Activate Provider — meaning a recognized accelerator, incubator, VC firm, or startup organization that can supply a unique Organization ID. Startups without that affiliation don’t qualify for the higher tier.
Credits are valid for 12 to 24 months depending on the package and apply automatically across all eligible AWS services including EC2, S3, RDS, Lambda, and third-party models on Amazon Bedrock. Beyond credits, Activate members get access to the AWS Startup Showcase, AWS Loft co-working spaces in major cities, implementation templates, and an exclusive offers marketplace with discounts on tools from Brex, Slack, HubSpot, and others.
The practical limitation is what comes after. AWS pricing is usage-based with egress charges, cross-AZ transfer fees, and tiered storage costs that are genuinely difficult to forecast without FinOps tooling. Startups that built on Bedrock, DynamoDB, or other proprietary AWS services find migration costly. The credits provide real runway; the platform introduces real lock-in.
**Credits:** $1,000 (Founders) or up to $100,000 (Portfolio, VC-backed required).
**Eligibility:** Pre-Series B, under 10 years old. Portfolio tier requires an accelerator/VC Org ID.
**Support:** AWS Business Support included with select packages; technical account managers for larger credits.
**Billing after program:** Complex usage-based pricing; egress fees apply.
## 3. DigitalOcean Hatch 4 / 5
[DigitalOcean Hatch](https://www.digitalocean.com/hatch) has been running since 2016 and has supported over 8,000 startups, including early-stage companies that went on to raise significant funding. The program was significantly upgraded in 2025 with a focus on AI and ML workloads, and the new credit amounts reflect that shift.
Qualified AI/ML startups can now receive **up to $100,000 in compute credits over 12 months**, distributed on a monthly basis. The package also includes **3 months of free GPU usage** for startups working on model training or inference, plus a discounted rate on NVIDIA H100 GPU Droplets at $1.90/hour after the free period — well below standard market rates. Complimentary Premium Support is included for the program duration. The Welcome Kit adds third-party perks: credits from Stripe, GitHub Enterprise seats, Notion, Segment, and others depending on the cohort.
Hatch grants access to DigitalOcean’s marketplace of 600,000+ customers and co-marketing opportunities at events worldwide — useful for B2B startups looking for early commercial traction. The community Slack workspace connects program members with alumni and advisors.
Eligibility has a meaningful catch: Hatch requires affiliation with an approved accelerator, incubator, or VC firm. Founders without institutional backing can apply by selecting “Other,” but credit amounts for direct applicants tend to be lower than for partner-affiliated startups. GPU Droplet usage is billed separately from core credits, so AI-heavy teams need to track two credit pools. Credits don’t roll over month-to-month and the program grants no extensions.
**Credits:** Up to $100,000 over 12 months (amount varies by partner; lower for direct applicants).
**Eligibility:** Series A or below; VC/accelerator affiliation preferred; new DigitalOcean customer.
**Support:** Complimentary Premium Support for program duration; priority ticketing.
**Billing after program:** Flat monthly pricing; bandwidth included on most plans; no egress on standard configurations.
## 4. Vultr VIP Digital Startup Program 3.5 / 5
[Vultr VIP Startup Program](https://www.vultr.com/vip-startup-program/) is aimed at a different stage than most programs on this list. Rather than targeting pre-seed or seed-stage founders, Vultr explicitly requires **Series A through E funding** as an eligibility condition — meaning bootstrapped startups and pre-funding companies don’t qualify. If your startup meets that bar, the program delivers meaningful value: up to **$100,000 in cloud credits**, **35% long-term discounts** on Vultr services, executive sponsorship, dedicated account management, and technical architecture reviews.
The infrastructure is strong. Vultr operates 32 locations across six continents, which matters for startups targeting global audiences from early on. GPU instances (NVIDIA A100, A40) are available for AI and ML workloads. Compute, bare metal, Kubernetes, and managed databases are all part of the catalog. The API is clean and well-documented, and Terraform support is built in.
The application process is more involved than most: applicants must provide six months of cloud compute invoices, submit contact details for their senior technical executive, and agree to be publicly referenceable as a program member. That last requirement means your company name can be used in Vultr’s marketing materials. For startups that qualify and are comfortable with that trade-off, the combination of credits, discounts, and architecture support makes the program worthwhile.
**Credits:** Up to $100,000 in cloud credits plus 35% long-term discounts.
**Eligibility:** Series A–E funding required; must provide 6 months of cloud invoices.
**Support:** Dedicated account management; technical architecture reviews; priority support.
**Billing after program:** Hourly and monthly options; competitive pricing; discounts continue post-program.
## 5. Akamai Cloud Rise Program (formerly Linode) 3.5 / 5
[Linode Rise](https://www.linode.com/programs/rise/)was designed with an explicit premise: the big three cloud providers gate their best startup programs behind VC affiliation, which locks out bootstrapped founders who haven’t given up equity. Rise was built to serve that gap. Eligibility requires only that your company is under seven years old, has a working website, a corporate email, and at least one of the following: paid employees beyond the founders, active users outside your immediate circle, or some initial revenue.
The credit structure is different from most programs. Accepted startups **immediately receive $500** in infrastructure credits and can earn **up to $120,000 in their first year** — with the final amount determined after a review interview. Year two brings 50% discounts on Akamai Cloud services; year three brings 25% discounts. That three-year runway is longer than any other program on this list and acknowledges that startup growth doesn’t fit neatly into 12-month credit windows.
Beyond credits, Rise provides 20 free hours of technology consulting in the first quarter (valued at $250/hour) with a 20% discount on additional hours. A dedicated account manager, access to the Solutions Engineering team, and 24/7/365 support via phone, email, and social media are all included. The program prioritizes SaaS, media, and gaming startups — other categories are accepted but not specifically targeted.
The limitation is platform depth. Akamai Cloud (the former Linode infrastructure) is strong for VMs, GPU instances, and storage, but the managed services catalog is thinner than AWS or even DigitalOcean. Teams building on proprietary databases, analytics pipelines, or AI tooling may find themselves stitching together third-party services that the platform doesn’t cover natively.
**Credits:** $500 immediately; up to $120,000 in year one. Discounts in years two and three.
**Eligibility:** Under 7 years old; no VC requirement; early traction required (employees, users, or revenue).
**Support:** Dedicated account manager; free consulting hours; 24/7/365 support included.
**Billing after program:** Flat monthly pricing; competitive VPS rates; discounts continue in years 2–3.
## Comparison: Best Cloud Startup Programs 2025
| Provider | Score | Max Credits | VC Required? | Program Length |
| --- | --- | --- | --- | --- |
| Serverspace | 5/5 | $10,000 + bonus credits | No | 12 months |
| AWS Activate | 4/5 | $1K–$100,000 | Yes (for $100K tier) | 12–24 months |
| DigitalOcean Hatch | 4/5 | Up to $100,000 | Preferred (not required) | 12 months |
| Vultr VIP Startup | 3.5/5 | Up to $100,000 | Yes (Series A–E) | Not specified |
| Akamai Rise | 3.5/5 | Up to $120,000 | No | 3 years |
## What to Watch Out for in Any Startup Cloud Program
### The Pricing Cliff Problem
The most common trap in startup cloud programs is the gap between “credits running” and “credits expired.” Providers give away large amounts on complex platforms, and by the time credits run out, your team has built workflows, stored data, and designed architecture around services you can’t easily move. The bill that arrives when the program ends reflects full commercial pricing — often significantly higher than what the credits implied. Before you apply, look up the standard list price for the services you’ll actually use and model what year two looks like without credits.
### VC Gating Excludes Bootstrapped Founders
AWS Activate’s $100K tier and Vultr’s VIP program both require either VC/accelerator affiliation or Series A funding. That gate exists because providers want to maximize the chance that their credits convert into long-term paying customers with real budgets. It’s a reasonable business decision that happens to exclude the majority of early-stage founders. Serverspace and Akamai Rise both accept applications without funding requirements, which matters for bootstrapped teams building real products on tight budgets.
### Egress Fees Scale With Your Success
A startup that grows its user base during the program will generate more outbound traffic. On platforms that charge for egress, that traffic becomes a growing line item on the invoice — one that didn’t exist during the free period. Providers with unlimited traffic and no egress fees (Serverspace includes both on every plan) remove that variable entirely. For products that serve significant bandwidth to end users, the difference over 12 months is not trivial.
### Credit Expiration Structures Vary Significantly
Some programs distribute credits monthly with a use-it-or-lose-it policy: if you don’t hit the monthly limit, that credit is gone. Others give a lump sum valid for the full year. DigitalOcean Hatch distributes monthly and grants no extensions. Akamai Rise does not roll over unused credits. Understanding the distribution structure before you apply affects whether $100K in nominal credits translates to $100K in actual infrastructure value for your specific usage pattern.
## How to Pick the Right Program for Your Startup
Start with the eligibility question. If you’re bootstrapped, Serverspace and Akamai Rise are the two programs that don’t require a VC to vouch for you. If you’re VC-backed and building on AI/ML workloads, DigitalOcean Hatch’s GPU credits and AWS Activate’s Bedrock access become more relevant. If you’ve raised a Series A or beyond and need a platform migration, Vultr’s architecture review and discount structure are worth a close look.
Second, look at what the infrastructure looks like after the program. If the pricing cliff and service lock-in of a hyperscaler program are concerns, programs built on straightforward VPS infrastructure — where the billing model stays consistent before, during, and after the free period — carry less long-term risk. Serverspace’s per-10-minute billing and zero egress fees don’t change based on whether you’re in the startup program or not.
Third, factor in support. Building a product on cloud infrastructure you’ve never used before while also building the product is genuinely hard. Programs that include human technical support — not a documentation portal, but a person — reduce the time cost of infrastructure decisions at a stage when engineering time is the scarcest resource you have.
https://serverspace.us/support/help/how-to-install-telegram-desktop-on-linux-in-2025.mdLearn how to quickly and securely install Telegram Desktop on popular Linux distributions like Ubuntu, Fedora, and CentOS in 2026. Follow our step-by-step instructions with terminal commands, helpful tips, and FAQ to get started with Telegram on Linux.
Telegram is a fast, secure, and feature-packed messaging platform trusted by millions around the globe. Installing Telegram on Linux is simple, and this guide will take you step-by-step through the latest installation methods for popular Linux distributions.
With support for instant messaging, voice and video calls, file sharing, group chats, and broadcast channels, Telegram offers a comprehensive communication experience. It prioritizes privacy and works seamlessly across platforms including Linux, Windows, macOS, iOS, and Android. Let's dive in and get you set up!
## Mobile Optimization & System Requirements
Telegram is designed to be lightweight and efficient, making it suitable even for older Linux PCs or low-spec machines. The desktop client runs smoothly without consuming excessive resources, ensuring a fast messaging experience across all supported platforms.
For voice and video calls, the following minimum requirements are recommended for optimal performance:
- **CPU:** Dual-core processor or better
- **RAM:** 2 GB minimum
- **Internet:** Stable broadband connection for video calls
- **Audio/Video:** Functional microphone and webcam for calls
On mobile devices, Telegram is optimized to work efficiently on Android and iOS, even on older models, providing seamless syncing with your desktop app.
## Before We Begin
Make sure:
- **You're connected to the internet**
- **You have administrator (sudo) privileges**
- **Your system is up to date**
## Installing Telegram on Ubuntu and Debian-based Systems
Open your terminal and run the following commands:
**1. Update your package list:**
```bash
sudo apt update
```
**2. Install Telegram:**
```bash
sudo apt install telegram-desktop
```
## Installing Telegram on Fedora, CentOS, and other DNF-based Systems
For Fedora, RHEL 8+, CentOS Stream, etc., use these steps:
**1. Update package metadata:**
```bash
sudo dnf update
```
**2. Install Telegram:**
```bash
sudo dnf install telegram-desktop
```
```
telegram-desktop
```
## What You Can Do With Telegram on Linux
- **Send and receive messages, images, videos, and documents**
- **Make voice and video calls**
- **Join and create groups (interactive chatrooms)**
- **Subscribe to channels (broadcast-style feeds)**
- **Sync messages across devices**
- **Use secret chats with end-to-end encryption**
- **Set self-destructing messages for added privacy**
Telegram's design is lightweight and works well even on older Linux machines.
## FAQ – Frequently Asked Questions
- **Q: Is Telegram available as a Snap or Flatpak?**
A: Yes. You can install Telegram via Snap or Flatpak if you prefer containerized apps:
```
# Snap (Ubuntu, Debian)
sudo snap install telegram-desktop
# Flatpak (Fedora, Arch, etc.)
flatpak install flathub org.telegram.desktop
```
- **Q: How do I update Telegram on Linux?**
A: If installed via APT or DNF, just run your system’s regular update commands. For Snap or Flatpak, use:
```
sudo snap refresh telegram-desktop
# or
flatpak update org.telegram.desktop
```
- **Q: Can I use Telegram CLI instead of the desktop app?**
A: Yes, there's a lightweight CLI tool called **tg**. It's maintained by the community and useful for servers or minimal environments.
- **Q: Is Telegram open source?**
A: Telegram's client is open source, but the server-side code is proprietary.
- **Q: What if telegram-desktop isn’t found in my package manager?**
A: Ensure your repositories are enabled and up to date. Alternatively, download the binary from the [official Telegram website](https://telegram.org/).
## Conclusion
Telegram on Linux combines speed, security, and a full suite of messaging features, all within the flexibility of an open-source environment. Whether you're coordinating team projects, participating in community groups, or staying in touch with friends, Telegram provides a seamless, reliable, and private communication platform.
Following this guide, you can have Telegram installed and ready in just a few minutes, no matter which Linux distribution you're using. Enjoy instant messaging, voice and video calls, file sharing, and more – all designed to work smoothly across your devices.
## Cheat Sheet
| Feature | Description / Command |
| --- | --- |
| Update package list (Ubuntu/Debian) | sudo apt update |
| Install Telegram (Ubuntu/Debian) | sudo apt install telegram-desktop |
| Update package metadata (Fedora/RHEL/CentOS) | sudo dnf update |
| Install Telegram (Fedora/RHEL/CentOS) | sudo dnf install telegram-desktop |
| Launch Telegram | telegram-desktop or from app menu |
| Snap installation | sudo snap install telegram-desktop |
| Flatpak installation | flatpak install flathub org.telegram.desktop |
| Update via Snap | sudo snap refresh telegram-desktop |
| Update via Flatpak | flatpak update org.telegram.desktop |
| Telegram CLI (lightweight alternative) | Use tg command-line client (community-maintained) |
| Main features | Instant messaging, voice/video calls, file sharing, group chats, channels, secret chats, self-destructing messages |
| Supported platforms | Linux, Windows, macOS, iOS, Android |
| Client open source? | Yes (client only), server-side is proprietary |
https://serverspace.us/support/help/how-to-install-wsl-on-windows.mdLearn how to install and set up Windows Subsystem for Linux (WSL) on Windows 10 and 11 using PowerShell. Step-by-step guide to choosing a Linux distribution, enabling WSL2, and configuring your development environment.
For native interaction with Windows and Linux, WSL was developed. Where WSL translates Linux system calls into similar Windows calls, allowing applications created for Linux to function in the Windows environment. However, there is an important difference between WSL 1 and WSL 2:
**WSL 1** is an emulation of system calls. It creates a Linux user space, where Linux system calls are translated into Windows API calls.
Example: if a Linux program calls fork() or open(), WSL 1 transforms this into the corresponding Windows calls, such as CreateProcess or CreateFile.
- Pros: fast access to the Windows file system.
- Cons: not all system calls are supported (for example, Docker).
**WSL 2** is a full-fledged Linux kernel. It uses a virtual machine based on Hyper-V. Inside, a real Linux kernel from Microsoft is launched.
System calls are not translated: everything is done natively, as on a regular Linux machine.
- Pros: maximum compatibility – Docker, systemd, iptables and other tools work without problems.
- Cons: slightly slower access to the Windows file system (/mnt/c/).
## How to install WSL on Windows?
**Windows Subsystem for Linux** (WSL) is a tool that allows you to run Linux distributions directly on Windows without using virtual machines. WSL is useful for developers and system administrators who want to work in a Linux environment without leaving Windows.
In this guide, we’ll cover installing WSL on Windows 10 and Windows 11.
**Step 1. Checking your Windows version**
Before starting the installation, make sure your Windows version supports WSL:
- Windows 10 version 2004 and above (with the 2020 update installed)
- Windows 11 — WSL support is built in by default
Check your system version:
```
winver
```
Screenshot № 1 — Version
If the version is lower than 2004, update Windows via the update center.
**Step 2. Installing WSL via PowerShell**
****Microsoft has simplified the installation of WSL — now you only need one command:
Run PowerShell as administrator. Run the following command:
```
wsl –install
```
The command will automatically:
- Enable the necessary Windows components
- Install the latest version of WSL (WSL 2)
- Download and install Ubuntu by default
- After the installation is complete, a system reboot will be required.
**Step 3. Install another Linux distribution (optional)**
If you want to install another distribution (e.g. Debian, openSUSE, Kali, etc.), run the command:
```
wsl –list –online
```
Screenshot № 2 — List of distributions
Select the desired distribution from the list and install it:
```
wsl –install -d
```
Example:
```
wsl –install -d Debian
```
Screenshot № 3 — Installation
**Step 4. Checking the installed WSL version**
To find out which version of WSL is used (WSL 1 or WSL 2):
```
wsl –list –verbose
```
If you need to change the version for a specific distribution:
```
wsl –set-version 2
```
Example:
```
wsl –set-version Ubuntu 2
```
Step 5. Update the WSL kernel (if necessary)
If an error related to the kernel occurred during installation, download the update from the [official Microsoft website](https://aka.ms/wsl2kernel):
Screenshot № 4 — Other distributions
Install the downloaded .msi file, then repeat the installation of WSL. It provides a convenient environment for developing and working with Linux tools directly in Windows. With WSL, you can run Docker, use package managers (apt, yum), work with git, and execute Bash scripts.
## FAQ – Installing and Using WSL on Windows
- **1. What is the difference between WSL 1 and WSL 2?**
WSL 1 translates Linux system calls into Windows API calls, making it faster when accessing Windows files but less compatible with some Linux tools. WSL 2 runs a real Linux kernel in a lightweight virtual machine, providing full compatibility with Docker, systemd, and other utilities.
- **2. Which version of WSL should I choose?**
For most developers, WSL 2 is recommended — it offers better performance, full Linux compatibility, and support for containerization tools. Choose WSL 1 only if you need faster file system access or lack virtualization support on your device.
- **3. Can I run graphical Linux applications in WSL?**
Yes. On Windows 11, WSL natively supports Linux GUI applications. On Windows 10, you can use third-party X servers (like VcXsrv) to display Linux GUIs.
- **4. How do I update or switch between WSL versions?**
You can list installed distributions with:
```
wsl –list –verbose
Then switch a specific one to WSL 2 using:
wsl –set-version 2
```
- **5. Does WSL work with Docker and systemd?**
Yes. WSL 2 supports Docker, systemd, iptables, and other low-level Linux tools. WSL 1 does not fully support these features.
- **6. Is WSL safe to use for development?**
Absolutely. WSL is officially supported by Microsoft and isolates Linux environments from Windows, providing a secure and efficient way to work with open-source tools on Windows systems.
https://serverspace.us/support/help/examples-of-common-mysql-queries.mdDiscover essential MySQL queries for your database tasks with our instruction. Get expert insights and boost your SQL skills.
## Introduction
Why do we need to use SQL? SQL provides a number of security and performance capabilities. For example, transactions ensure that several operations are performed as a whole, so if any operation fails, the entire transaction will be pumped out. In addition, indexes can significantly speed up query execution by allowing the database system to use an access path other than a linear search for all records in the table.
Finally, SQL allows users with almost no knowledge of programming languages to perform complex operations on data. For example, it is very easy for a person who knows nothing about programming languages to write a SELECT statement that extracts only surnames and first names from a table with information about employees. However, if he tried to do it in a procedural language like C or Java, it would be much more difficult, since the programmer would have to use loops and other constructs to get the data in the desired format.
For that reason we will consider common command for improve your navigate skills in the DBMS system!
## How to see users?
First of all we need login into the system via localhost or remote type connection, for the second way you need to replace **localhost** to the IP-address of needed MySQL server and indicate name of user for your case! For example, we want to connect via local:
```bash
mysql -u root -h localhost -p
```
Screenshot №1 — Connection
**Highlight! **Don’t forget to change username and port optionally!
```bash
mysql -u jhon -h 76.56.32.1 -p
```
Alright we are into the system, now we can lookup users in our database, system accounts and settings also saved into the database then access we can get through commonly SQL-query:
```sql
SELECT user,host FROM mysql.user;
```
Screenshot №2 — Selection
In the picture you can see table which formed from selected column user and host, which we looked for in the user table! Operators SELECT indicate column where we will search information and FROM in which table.
## How to create user?
But if we don’t have any needed user or want to create new, then we need to type command below:
```sql
CREATE USER 'kk'@'localhost'
IDENTIFIED by 'password';
```
**Highlight! **Using operators for command don’t sensitive to the case of letter, but name and label of database, table and other object are. In that command you can see creation account with name **kk** for **localhost**, by the next row you can see operator **IDENTIFIED** that provide access control in the DBMS, instead of password insert your value!
Let’s check result of our manipulation with user:
```sql
SELECT user,host FROM mysql.user;
```
Screenshot №3 — Creation of account
But also every user need to have rights in the MySQL system user by default don’t have them. That very significant point, because of rule in the main concept of security we need to restrict access for another:
```
GRANT ALL PRIVILEGES
on mysql.user
to 'kk'@'localhost';
```
Screenshot №4 — Granting privileges
In that point we grant privileges for **kk **user on the table **user **and give ALL privileges, that significant point which determine list of rights for user. We can grant REVOKE, DROP or CREATE list of needed rights due to type of account.
But if we accidentally gave privileges? That we can fix by the command REVOKE:
```
REVOKE ALL PRIVILEGES
on mysql.user
from 'kk'@'localhost';
```
Screenshot №5 — Revoking privileges
The **REVOKE **means deprive rights from the user and form of usage almost matches with **GRANT**, excluding syntax **from**.
## How create database?
For that purpose we will use familiar command:
```sql
CREATE DATABASE store;
```
And then you can type for selecting database as default:
```
USE store
```
Screenshot №6 — Creation database
Which syntax mean creation db with name **store**. Maybe you have noticed after every command sign semicolon. We use them when we need to indicate end of sequences of command. But, some syntax such as **USE **operator we don’t mark by that way. How to check result of our manipulation? Just type command **SHOW** below:
```
SHOW DATABASE;
```
And we will see the result!
## How to create table?
Now we can create column by the command:
```sql
CREATE TABLE clothes (
id INT NOT NULL,name VARCHAR(30) NOT NULL);
```
Where CREATE TABLE immutable operator, **clothes **it’s name of the table, id — first column with integers **INT **type of data and NOT NULL option, for column name the same situation. And check our result by the command:
```
SHOW TABLES;
```
Or we can see structure of created table by the next command:
Screenshot №7 — Describe operator
```
DESCRIBE clothes;
```
Screenshot №8 — Description of table
In the picture we can see result of our manipulations!
## Conclusion
The understanding and utilizing SQL is crucial for enhancing the security and performance of database management systems. SQL’s support for transactions ensures the integrity of operations, while features like indexes contribute to efficient query execution. Moreover, SQL empowers individuals with limited programming knowledge to perform complex data operations effortlessly.
https://serverspace.us/support/help/pg_textsearch-for-postgresql-bm25-full-text-search-and-relevance-ranking.mdpg_textsearch - a PostgreSQL extension for full-text search with BM25 ranking. Installation, usage examples, advantages, and answers to questions in one article.
**pg_textsearch** is an open-source PostgreSQL extension that implements full-text search with relevance-based ranking using the BM25 (Best Matching 25) algorithm. BM25 is an industry standard for evaluating text relevance and is widely used in search engines due to its ability to account for term frequency, word rarity across the corpus, and document length. pg_textsearch turns PostgreSQL into more than just a DBMS — it becomes a full-fledged search platform without the need for external search engines like Elasticsearch or Algolia.
The project's source code and documentation are available on GitHub:
```
https://github.com/timescale/pg_textsearch
```
## Practical use cases
The pg_textsearch extension is especially useful when you need to:
- add relevance-ranked full-text search to applications without a dedicated search server;
- improve result ranking quality compared to PostgreSQL's built-in ts_rank;
- build hybrid search by combining BM25 ranking with semantic embedding search (for example, via pgvector / pgvectorscale) for AI and RAG applications;
- use PostgreSQL as a unified data and search stack, simplifying architecture and reducing operational costs.
**Typical scenarios**: searching product catalogs, documentation, blogs, chatbots, recommendation systems, and dashboards.
## How to install pg_textsearch
### 1. Requirements
PostgreSQL v17 or v18 (these versions are supported by the extension).
### 2. Installing the extension
If you already have PostgreSQL with support for building extensions:
```sql
CREATE EXTENSION pg_textsearch;
```
### 3. Creating a BM25 index
Example table:
```sql
CREATE TABLE documents (
id BIGSERIAL PRIMARY KEY,
content TEXT
);
INSERT INTO documents (content) VALUES
('PostgreSQL is a powerful database system'),
('BM25 is an effective ranking function'),
('Full-text search with custom scoring');
```
Creating a BM25 index:
```sql
CREATE INDEX docs_bm25_idx
ON documents
USING bm25(content)
WITH (text_config = 'english');
```
Running a search
```sql
SELECT *
FROM documents
ORDER BY content 'database system'
LIMIT 10;
```
The <@> operator returns a BM25 score (in PostgreSQL, sorting in ascending order means more relevant documents have lower values).
## Example of a real search query and ranking explanation
Below is a practical example of a full-text search query using pg_textsearch and an explanation of why certain documents are ranked higher than others.
```sql
SELECT
id,
content,
content 'postgresql database search' AS bm25_score
FROM documents
ORDER BY bm25_score
LIMIT 5;
```
In this example, the query searches for documents related to "postgresql", "database", and "search", and ranks them using the BM25 algorithm.
Documents that contain all query terms receive a better (lower) BM25 score than those matching only one or two terms. At the same time, BM25 does not simply reward repetition: multiple occurrences of the same word increase relevance only up to a certain saturation point. This prevents long documents with excessive keyword repetition from dominating the results.
BM25 also accounts for document length. Shorter documents that match the query terms precisely are often ranked higher than longer texts where the same terms appear less densely. In addition, rare terms such as "postgresql" typically contribute more to the final score than common words, because BM25 incorporates inverse document frequency (IDF).
As a result, the top-ranked documents are those that balance term frequency, term rarity, and document length, providing more meaningful and relevant search results compared to basic frequency-based ranking.
## Frequently Asked Questions (FAQ)
- **Q: How is pg_textsearch better than PostgreSQL's built-in FTS? **
A: PostgreSQL's built-in ts_rank evaluates matches primarily based on term frequency and does not account for corpus-wide statistics (IDF, length normalization, TF saturation), which reduces ranking quality. pg_textsearch implements BM25, which takes all of these factors into account.
- **Q: Can pg_textsearch be used on large tables? **
A: Yes, it supports partitioned tables and works with real-world data volumes.
- **Q: Are multiple languages supported?**
A: Yes — you can use standard PostgreSQL text configurations (english, french, german, and others) via the text_config parameter.
- **Q: Does pg_textsearch require a separate server or service?**
A: No — the extension runs in the same PostgreSQL database where your data is stored, reducing architectural complexity.
## Conclusion
**pg_textsearch** is a powerful PostgreSQL extension that brings modern BM25-ranked full-text search directly into a relational database. It helps simplify application architecture, improve search quality, and reduce dependence on external search systems. This is especially valuable for startups, MVPs, and hybrid AI applications where having a unified data and search stack is critical.
If you need to quickly add relevance-based search without extra services, pg_textsearch keeps pace with modern requirements of developers and database architects.
https://serverspace.us/support/help/how-to-configure-apache.mdLearn how to configure Apache web server with step-by-step instructions. Set up and customize your Apache server.
## Introduction
At the beginning of 21-st century you may have heard about new revolution in information technologies WEB 2.0 and now we almost go to the WEB 3.0, but let’s talk about the tiny detail. What that’s mean? WEB or World Wide Web it’s technology or global system unify web, DNS and CDN server’s, which represent service for searching, using the content: web-pages, web-application and web-services. That system divide on timeline by version 1.0, 2.0 and coming 3.0. But one of the main detail in that schema—webserver. It represent software process queries from clients and form answers due to the configuration and rules on it.
## Configuration
We already have installed Apache2 packet in our machine, for starting the web-server we need to check service in the **sysetmd**, start it and enable autostart:
```bash
systemctl list-units | grep "apache2″
```
On the display will pop-up list of units with filtering option **apache2**, save label of unit and start them by the command below:
```bash
systemctl start apache2.service
```
Then enable autostart at the boot:
```bash
systemctl enable apache2.service
```
Make sure that web-server have permission to change configuration by the additional files, for that we can change value **AllowOverride** to **All**:
```
nano /etc/apache2/apache2.conf
```
Screenshot №1 — Main config
In the different versions of Apache2, represent two examples of main config: httpd.conf and apache2.conf. For determine file in your case, use command below:
```
find / -name httpd.conf && find / -name apache2.conf
```
Screenshot №2 — Search
Enabling AllowOverride empowers the server to understand directives defined within .htaccess files found in your website’s folders. This capability fosters greater flexibility and customization possibilities on a per-directory basis, thereby elevating both the functionality and security of your web server.
We can now proceed to configure the .htaccess file, which serves as an extension to our existing configuration. Any alterations and settings within this file will influence the configuration outcome. Let’s illustrate how this works with a standard configuration.
At the first, we should to activate function which help us override currently settings for the each of sites by the command below:
```
mkdir /etc/site-test
```
```
nano /etc/apache2/sites-available/000-default.conf
```
Screenshot №3 — Config of site
Modify the **ServerName** parameter to reflect your own domain and set **AllowOverride** to the value **All**. It’s important to note that you should have a corresponding DNS record on your provider panel there is record with the public IP address of needed server. Additionally, adjust the “DocumentRoot” which containing the html and another files for your desired website. We’re creating a directory named **site-test**. and main page index.html:
```
nano /etc/site-test/index.html
```
Screenshot №4 — Web-page
```html
OUR SITE
# ALL WORKING PROPERLY!
```
The content and structure of your web-page can be different, but the main part should be untouchable. Now, in the same directory, let’s generate a new file that establishes a logic of behaviour. Let’s create the file:
```
nano /etc/site-test/.htaccess
```
```
RewriteEngine On
RewriteRule ^hello$ index.html [L]
```
Screenshot №5 — Site config
On the screen above we turn up rewrite module which we install in the next step. In the follow line, we establish a rule linked to an page and associate to it attribute [L], indicating that it’s the final step to run, with any subsequent instructions being ignored. To ensure proper functionality, it’s crucial to enable the rewrite module, which is bundled within the Apache2 package, and therefore restart the service.
```
sudo a2enmod rewrite && systemctl restart apache2
```
Screenshot №6 — Enable module
Make sure, that our changes have applied:
Screenshot №7 — Result
## Conclusion
In a nutshell, consider the main point’s in the configuration of web-server .That allow to control account and access, provide hardening system, gracefully manage errors, and elegantly redirect URLs. That also provide set of settings to create your first web-page, ensuring a truly unique and dynamic online experience.
https://serverspace.us/support/help/how-to-use-api-and-ssh-key-for-github-repository.mdExplore two authentication methods on GitHub - SSH keys and API tokens - to understand their pros and cons.
There are two ways to authenticate to GitHub: your personal account and the repositories that are often linked to it. To work with them correctly, you need to authenticate to the server via two possible services: SSH keys and API token. This article is devoted to understanding how to use a repository after authenticating using the methods described earlier.
Let’s run through briefly the pros and cons of the two methods and choose which of the two methods is convenient for you:
- API: it is necessary to enter the token every time, as it is not saved in the config for security reasons. And also it is necessary to define the place of its safe storage. However, convenient integration into own services and applications, mainly used for work between software;
- SSH: stored on the user’s machine and does not need input, but is requested from the user’s folder via ssh-agent. Convenient to store and use, when working with repositories.
## GitHub API authentication
Use HTTPS authentication via GitHub API, password authentication has been disabled since 2021. On the top right find the user icon and select Settings, then in the left menu at the very bottom find Developer settings.
Screenshot №1 — API authentification
Following the diagram above, choose to create a classic token and wait for the page to load:
Screenshot №2 — New token
Specify the number of days the token will be valid, as well as define possible functions of the key. Then click on the button to create the key!
Screenshot №3 — Get new key
Copy your key and type the command, replacing the login and repository name:
```bash
git init
git add .
git commit
git remote add origin https://github.com/your-login/your-repo.git
git push origin main
```
Screenshot №4 — Push repo
We can see from the logs that the upload was successful and now we can move on to the repository itself:
Screenshot №5 — Result of API action
## GitHub SSH authentication
The process is as follows: the user creates a pair of encryption keys on his side: a public key and a private key. The first one is added to the Github account, the second one is stored on the user’s machine and allows decrypting the information encrypted with this first, public key. When a request to the server is made, the public keys in the account and on the sender’s machine are checked, confirmed by the private key, and then access to the repositories is granted.
Let’s create the keys and display them on the screen:
```bash
ssh-keygen
cat /home/your-linux-user/.ssh/id_rsa.pub
```
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №6 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways.
Screenshot №7 — Show key
After copying the key, go to the GitHub site and select the user icon in the top right corner. Then find the Settings button and click on it. In the window that opens, select SSH and GPG on the left.
Screenshot №8 — Get new key for GitHub account
Click the New SSH key button and enter your key and a name for it in the field that opens. Note that it is the public key that can be distributed and specified in services, but the private key must remain on the machine. If intruders get access to it, they will also get access to your repositories.
Screenshot №9 — Enter SSH-key
After that you need to confirm with your account password that you are the one making the changes. After that the key will be available in your account:
Screenshot №10 — New SSH key GitHub
Let’s turn to the client device and enter the following command in the working directory with the files that you want to put in the repository: If you can access it, your repositories will be accessed too.
```bash
git init
git add .
git commit
git remote add origin git@github.com:an1ik/koldek.git
git push origin main
```
Screenshot №11 — Git push
There are two ways to authenticate to GitHub to interact with repositories and personal accounts: SSH keys and API tokens. Each of these methods has its advantages and disadvantages, choose the most convenient and secure method depending on your needs.
## Conclusion
Extended file attributes in Linux provide a powerful mechanism for managing file behavior beyond standard permissions. With flags such as immutable (-i) or append-only (+a), administrators can significantly strengthen system security, protect logs from tampering, and prevent accidental deletion of critical files. These attributes work at a lower level than traditional rwx rights, ensuring more granular control. Proper use of extended attributes can serve as an additional security layer, especially in cases when user accounts are compromised.
By understanding and applying these attributes correctly, system administrators can improve data integrity, harden access control, and reduce risks of unauthorized file changes.
## FAQ
- **Q1: What are extended file attributes in Linux?**
Extended attributes are low-level file properties (flags) that define behavior rules beyond standard permissions, such as preventing deletion or forcing append-only mode.
- **Q2: How do extended attributes differ from rwx permissions?**
Standard permissions (rwx) control access levels for users, groups, and others. Extended attributes override this model by applying global restrictions that even root must respect.
- **Q3: How can I check attributes of a file?**
Use the command:
lsattr filename
It will display all active attributes for the given file.
- **Q4: Can root bypass extended attributes?**
Root cannot directly modify or delete files with +i or +a flags set. However, root can remove these attributes with chattr -i or chattr -a, after which normal operations become possible.
- **Q5: When should I use the immutable attribute?**
Use +i when you need to fully protect important files from deletion or modification, for example, critical configuration files or security logs.
- **Q6: Do all Linux file systems support extended attributes?**
No, support depends on the file system type. ext2, ext3, and ext4 support them, but not all file systems implement the same attribute set.
https://serverspace.us/support/help/how-to-close-ports-in-linux-iptables-and-ufw.mdLearn how to close ports on Linux using UFW: how to block or open a port (for example, 80), check the rules!
Open ports are one of the main vulnerabilities of the server. If you don’t manage them, you risk leaving the “door open” for intruders. In this article, we’ll look at ** how to close ports on Linux** using iptables, ufw, and see **how to check which ports are already open**.
You will also learn how to **close port 80**, **block all ports except the necessary ones**, and how this relates to the security of servers and HTTP clients.
## How do I view the open ports on the server?
Before closing ports, you need to find out which ones are currently open and which services are using them.
```
sudo ss -tuln
```
or:
```
sudo netstat -tuln
```
Flag values:
- t — TCP
- u — UDP
- l — LISTEN ports only
- n — show numeric port values
## How do I close/open the port via iptables?
To close a port (for example, port 80), you can use iptables.
```
sudo iptables -A INPUT -p tcp –dport 80 -j DROP
```
This rule will block incoming connections to port 80 over TCP.
For verification purposes:
```
sudo iptables -L -n –line-numbers
```
To remove this rule:
```
sudo iptables -D INPUT
```
If you previously closed the port and want to allow connections again:
```
sudo iptables -A INPUT -p tcp –dport 80 -j ACCEPT
```
## How to close or open a port via UFW
UFW (Uncomplicated Firewall) is a simple tool for configuring the firewall in Linux, especially convenient in Ubuntu.
To close a port, for example 80, use the command:
```
sudo ufw deny 80
```
This command will block incoming connections to the specified default TCP port.
You can check the current rules like this:
```
sudo ufw status numbered
```
If you want to cancel one of the rules, find its number in the list and delete it.:
```
sudo ufw delete rule number
```
To reopen port 80 for incoming connections:
```
sudo ufw allow 80
```
This way, you can easily control access to any port: close unnecessary ones and open the necessary ones as needed, ensuring server security without complex iptables rules.
## Script for configuring ports
For port management, you can use automated configuration tools and scripts that will allow you to block all connections except those allowed.
```bash
#!/bin/bash
# Check for UFW
if ! command -v ufw /dev/null; then
echo "UFW is not installed. Installing"
sudo apt update && sudo apt install -y ufw
fi
echo "Disabling ufw if it has already been enabled"
sudo ufw disable
echo "Reset all rules"
sudo ufw reset
echo "I'm setting the default policy: prohibit incoming, allow outgoing"
sudo ufw default deny incoming
sudo ufw default allow outgoing
echo "I allow HTTPS (port 443)"
sudo ufw allow 443/tcp
echo "Enabling ufw"
sudo ufw enable
echo "Current ufw status:"
sudo ufw status verbose
```
## How to disable the service that opens the port
Sometimes ports are open because a certain service is running (for example, Apache or Nginx). If you are not using it, disable it.
### Disabling Apache:
```bash
sudo systemctl stop apache2
sudo systemctl disable apache2
```
### Disabling Nginx:
```bash
sudo systemctl stop nginx
sudo systemctl disable nginx
```
## Safety tips
- Close all unused ports.
- Allow only the specific ports you need (for example, 22 and 443).
- Use fail2ban to protect against password brute force.
- Configure the firewall (UFW, firewalld, or iptables) immediately after installing the server.
Port management is an important part of protecting a Linux server. Now you know how to close ports in Linux, view open ports, block port 80, and allow only the necessary connections.
https://serverspace.us/support/help/rdp-remote-access-clients-for-linux.mdDiscover the top RDP (Remote Desktop Protocol) remote access clients for Linux. Explore powerful tools like RDP and Remote desktop.
## Introduction
Graphical User Interface (GUI) is an essential component of modern computing, providing users with a visual and interactive way to interact with software, applications, and operating systems. Using a GUI offers several advantages that contribute to a more user—friendly and efficient computing experience:
- Intuitiveness: GUIs are designed with icons, menus, buttons, and visual elements that are familiar and easy to understand. Users can quickly grasp how to perform tasks without the need for extensive technical knowledge or memorizing complex commands.
- Ease of Use: GUIs simplify complex operations and tasks, making them accessible to a broader range of users. With point—and—click interactions, users can navigate through options and features effortlessly.
- Reduced Learning Curve: Compared to command—line interfaces, GUIs typically have a shallower learning curve. Users can quickly become productive without the need to remember commands or syntax.
- Visual Feedback: GUIs provide real—time visual feedback, allowing users to see the results of their actions instantly. This immediate feedback enhances productivity and minimizes errors.
- Multitasking: GUIs enable users to work with multiple applications and windows simultaneously, making multitasking more efficient and manageable.
- Graphical Representation: Complex data and information can be presented visually, using charts, graphs, and images, making it easier to analyze and understand.
- User Interaction: GUIs facilitate interactive elements such as drag—and—drop, resizing windows, and sliders, enabling users to interact with applications in a more engaging and interactive manner.
- Accessibility: GUIs often include accessibility features, making computing more inclusive for users with disabilities. Features like screen readers, magnifiers, and keyboard shortcuts enhance usability for a diverse user base.
- Standardization: Many GUIs follow common design principles and user interface guidelines, which provide consistency across different applications and platforms, leading to a more uniform user experience.
- Visual Appeal: Well—designed GUIs enhance the aesthetic aspect of using a computer, creating an enjoyable and visually pleasing user experience.
While GUIs offer numerous advantages, it’s essential to acknowledge that they may not be suitable for every scenario. In some cases, tasks may be more efficiently accomplished through command—line interfaces, especially for advanced users, system administrators, and developers who require greater control and automation.
In summary, GUIs play a vital role in modern computing by offering an intuitive, user—friendly, and visually appealing experience that empowers users to interact with software and operating systems effortlessly. The combination of GUI and CLI provides users with a versatile computing environment that caters to different needs and preferences.
## Requirements
- Root rights;
- Debian 12 or higher version;
- Several knowledge about work OS ;
- Internet connection.
## Installation
First of all we need to update and upgrade system packages in our machine for their properly work:
```bash
apt update && apt upgrade -y
```
Screenshot №1 — Updating packages
Let’s install rdp server adaptive for Linux OS in our example we use Debian 12, find necessary packages by the command below:
```bash
apt list | grep xrdp
```
Screenshot №2 — Search packet
If you see red letter that means you have packets to installation and you need to write their labels into the command below, but significant reminder: labels — it’s letter and symbols before slash!
Code for a packet from the example screenshot:
```bash
apt install xrdp
```
Screenshot №3 — Install packets
Press **Y **button for installation will start and download dependency libraries for properly work all remote system. However, if you don’t have that packages in the list you need to add repository following the rules and typing command below:
```
nano /etc/apt/sources.list.d/other.list
```
And enter that raws, if you need to use with source code then delete hashtag:
```
deb http://archive.ubuntu.com/ubuntu jammy multiverse
# deb-src http://archive.ubuntu.com/ubuntu jammy multiverse
deb http://archive.ubuntu.com/ubuntu jammy-updates multiverse
# deb-src http://archive.ubuntu.com/ubuntu jammy-updates multiverse
```
After this update all indexes of packages and renew repositories:
```bash
apt update
```
Screenshot №4 — Repositories update
Alright, now we can connect through rdp to Debian, ensure that your firewall access traffic to port 3389:
```
sudo ufw allow 3389
```
Let’s switch to the Windows machine and start rdp utility by open search engine pressing button with icon Windows. Type Remote and choose utility:
Screenshot №5 — Utility
Click on it and enter hostname and username into the accordance field:
Screenshot №6 — Hostname
Click on the button **Connect** and wait reply from the entering server:
Screenshot №7 — Password
Entering are needed credentials and click at the **OK**:
Screenshot №8 — RDP
Congratulations! We are in the system and connected through RDP protocol.
## Conclusion
The Graphical User Interface (GUI) is a fundamental aspect of modern computing, offering users a visually interactive way to engage with software, applications, and operating systems. The advantages of using a GUI are manifold, including its intuitive design, ease of use, reduced learning curve, real—time visual feedback, multitasking capabilities, graphical representation of complex data, and user interaction through various interactive elements.
GUIs also enhance accessibility, standardization, and visual appeal, making them an indispensable tool for a wide range of users, from beginners to advanced professionals. However, it is crucial to recognize that GUIs may not always be the most efficient choice for every situation, especially for certain tasks where the command—line interface (CLI) excels in providing greater control, automation, and flexibility.
https://serverspace.us/support/help/how-to-install-and-configure-wine-ubuntu.mdLearn how to install and configure Wine to run Windows applications seamlessly. This step-by-step guide provides clear instructions.
## Introduction
Nowadays, on the market IT technologies we can see the various operating system from no fewer vendors and each try to build efficiency, rapidly and stable system. But different people have different point of view for building new product which have to generate income and will competitive in comparison to other product. Modern network architecture assume set and stack of using technologies from various of vendors, but how to relate and connect this features, advantages from different OS?
For that we have Wine! Open source utility and emulator that can help to run different application on UNIX set of OS. But, do we sure need this?
The main causes of problems:
- Architecture differences: Windows runs on x86 (32bit) and x64 (64bit) architectures, while Linux can run on various architectures such as x86, x64, ARM and others. This leads to the fact that some Windows applications compiled for a specific architecture cannot run on Linux;
- Differences in APIs and libraries: Windows and Linux use different sets of APIs (application programming interfaces) and libraries. This means that applications that depend on specific Windows APIs or libraries cannot be run on Linux without additional settings or layer compatibility;
- Dependency on .exe files: Many Windows applications have executable files with the extension.exe files that are not compatible with Linux. This requires the use of emulators or compatibility tools such as Wine to try to run these.exe files on Linux;
- Proprietary Applications: Some Windows applications are proprietary and do not provide Linux versions. This makes it impossible to run them on Linux without using virtual machines or other solutions.
All these problems can be overcome using various methods, such as using emulators (for example, Wine) or virtual machines that allow you to run Windows applications on Linux. However, this may require additional configuration and may not ensure 100% compatibility and stability of applications. Therefore, it is recommended to use alternative applications designed specifically for Linux whenever possible to ensure the best performance and compatibility.
## Requirements
- Root rights;
- Ubuntu 20 or higher version;
- Several knowledge about work OS ;
- Internet connection.
## Installation
First of all we need to update and upgrade system packages in our machine for their properly work:
```bash
apt update && apt upgrade -y
```
Screenshot №1 — Update OS
Adding a new architecture for Linux machine. Wine supports application on 32bit architecture but there is one except, due to reason not at all support on 64bit systems. So to add support for the 32bit architecture, enter this command:
```
dpkg –add-architecture i386
```
Screenshot №2 — Adding architecture
Reminder! All bundle of software will required at least 30Gb of free disk space and at least two core of CPU to run the process, in the next step let’s install main component of that system Wine:
```bash
apt install wine
```
During the installation process, the system may request your confirmation to install additional packages. Just press “Y” and “Enter” to continue the installation. Several Windows application needs GUI, let’s install:
```
add-apt-repository ppa:shemgp/gnome-40
```
```bash
apt update && apt install mutter gnome-session gnome-shell
```
Screenshot №3 — Adding Gnome shell
After end process installation Gnome shell and Wine we need to check until we go to the GUI, version and correct installation:
```
wine –version
```
Screenshot №4 — Wine version
If you see that command line raw that mean installation was finished properly! Add new user into machine for security purpose, we don’t want to compromise any data and allows to share responsibilities and create a secure environment. It is usually recommended not to use accounts with administrative rights in everyday tasks to reduce the likelihood of errors or malicious actions, for that enter command below:
```
adduser jhon && usermod -aG sudo jhon
```
Screenshot №5 — Add user
And we can switch to the GUI interface, you need to open Serverspace panel and choose needed server:
Screenshot №6 — Right top corner
On the right top corner we can see button **Web console**, click on it and we will redirect to GUI interface of our machine:
Screenshot №6 — GUI interface
Or you can use another utility to connect via GUI:
- VNC (Virtual Network Computing): VNC stands for Virtual Network Computing and serves as a remote access protocol that facilitates the display of a remote machine’s desktop on a local computer. By utilizing VNC, users gain the ability to remotely control the Linux desktop and perform a myriad of tasks, such as running applications and managing files;
- RDP (Remote Desktop Protocol): RDP, an acronym for Remote Desktop Protocol, was developed by Microsoft and enables users to establish remote connections with Windows systems’ desktops. While primarily associated with Windows, there are implementations of RDP for Linux, like xrdp, that allow connections to Linux machines through the RDP client;
- X11: X11, also known as the X Window System, serves as the standard protocol for graphical user interfaces (GUI) in Linux and other Unix-like operating systems. Through X11, users can execute applications on a remote server while displaying their windows on the local machine;
- SPICE (Simple Protocol for Independent Computing Environments): SPICE is a specialized protocol designed specifically for remote access to graphical desktop environments. Notably utilized in virtualization scenarios, such as within the KVM hypervisor, SPICE provides enhanced performance and data compression for an optimized remote experience;
- NX: NX, a technology developed by NoMachine, offers remote access and virtualization capabilities for graphical desktop environments. By employing NX, users can enjoy heightened performance and streamlined data compression, resulting in a superior remote experience.
However return to our installation process open terminal in applications and enter:
```
winecfg
```
Screenshot №8 — Configuration
## Conclusion
Wine empowers Linux users to transcend the barriers of OS incompatibility and embrace a more integrated computing experience. While alternative applications designed specifically for Linux are recommended for optimal performance and compatibility, Wine provides a valuable bridge for accessing Windows software in the Linux environment.
https://serverspace.us/support/help/how-to-reset-password-on-linux.mdDiscover step-by-step instructions on how to reset a password on Linux. Whether you're locked out or need to update your password.
The primary reason for changing a user’s password is to prevent unauthorized access by malicious actors. Cybercriminals often attempt to crack a login key through brute-force attacks or through data breaches of other systems, which could give them an opportunity to guess your password correctly. Therefore frequent password rotations can help protect your personal information or that of your organization’s. But what if you forget credentials for your Linux server? And alternative authentification protocols like TACACS+ or RADIUS haven’t configured. In that instruction we consider way for change them.
**Highlight! **The writeup represent information about security mechanism only in the educational purposes and doesn’t call for anything!
## Way for crack
That approach commonly used due to features or vulnerability of various way to start kernel via GRUB bootloader, but before we need to explain how to authentification system work!
In the machine stored credentials in the hash-form with salt, that randomly sequences of value that give as more complicated and strong password between various attack. Where user try to connect, Linux compare hash of the entering password with stored credentials, if they match then user can get access in another way denied entrance, that control kernel module. Also in the modern system there is PAM that module integrate various way to authenticate and they have own features. We will stop on the basic model of checking access.
For bypass system requirements we need to disable or replace kernel module, but how to do this? Let’s come back to the text above with bootloader **GRUB**. In the moment of startup we can choose type of boot, like in the screen below:
Screenshot №1 — Grub
Press **E **button to edit startup configuration, exactly in that place we indicate way to start. Scroll down and add that row to the string which start with linux word:
```
init=/bin/bash
```
If disk encrypted then add:
```
plymouth.enable = 0
```
Also if in that string is **ro **change them to **rw**:
Screenshot №2 — Edit
Alright! Press **Ctrl + X** or **F10** for save changes and wait for load system, after all check you will see terminal window with bash. For change password use command below:
```
passwd root
```
Screenshot №3 — First way
Reboot your system and changes that we made in the config will reset, but password that you set will stay!
In conclusion, the imperative need to change a user’s password arises from the constant threat of unauthorized access by malicious actors in the digital landscape. Frequent password rotations serve as a proactive measure to mitigate the risk of cybercriminals exploiting vulnerabilities, whether through brute-force attacks or compromised data from external breaches. This practice is crucial for safeguarding personal information and organizational security.
https://serverspace.us/about/blog/virtual-server.mdVirtual servers power 90%+ of cloud workloads in 2026 — but most guides skip how they actually work. This one doesn't: hypervisors, VPS vs bare metal, costs, and real use cases.
Virtualization now underpins more than 90% of enterprise workloads globally. Whether you’re spinning up a SaaS product, running a growing e-commerce store, or managing internal company infrastructure, understanding how virtual servers work — and when they make sense — is a practical decision, not a theoretical one.
The global server virtualization market was valued at $9.5 billion in 2023 and is projected to reach $22.8 billion by 2032, growing at a compound annual rate of around 10.2%. Those numbers reflect something straightforward: businesses that previously ran on physical servers have mostly moved on, and businesses starting fresh rarely consider anything else. Virtual servers became the default infrastructure choice for a reason — and that reason isn’t just cost.
This article covers what virtual servers are, how the technology works under the hood, how they compare to physical servers across the metrics that actually matter, and what the right choice looks like depending on your workload. If you’re evaluating [IT infrastructure](https://serverspace.us/index.md) options for the first time — or reconsidering a decision made a few years ago — this is the full picture.
## What Are Virtual Servers?
A [virtual server](https://www.techopedia.com/definition/27139/virtual-server) is a software-defined instance that runs on a physical machine alongside other virtual instances, each operating independently with its own allocated CPU, memory, storage, and network resources. From the perspective of the operating system and applications running inside it, a virtual server behaves exactly like a dedicated physical machine. The difference is that the underlying hardware is shared — managed by a layer of software that keeps each instance isolated and protected from the others.
The term is often used interchangeably with VPS (Virtual Private Server) or VM (Virtual Machine), though there are technical distinctions between these in certain contexts. In practice, most cloud hosting products sold as VPS or cloud servers are virtual server instances running on shared physical hardware in a data center.
Virtual servers became the backbone of modern web hosting, cloud computing, and enterprise IT because they solve a problem physical servers cannot: a single physical machine can be divided into dozens of independent environments, each running different operating systems, different applications, and different workloads — without any of them interfering with the others.
## How Virtual Servers Work: Architecture and Components
### The Physical Layer
Every virtual server ultimately runs on a physical machine — a high-performance server in a data center with enterprise-grade CPUs, RAM, and storage. That physical machine is called the host. A single modern host server might carry 32 to 128 CPU cores, several terabytes of RAM, and NVMe SSD arrays capable of hundreds of thousands of IOPS. Virtualization technology allows all of that capacity to be divided and allocated across multiple virtual instances running simultaneously.
### The Hypervisor
The software layer that makes virtualization possible is called a [hypervisor](https://www.vmware.com/topics/glossary/content/hypervisor). It sits between the physical hardware and the virtual machines running on top of it, managing resource allocation and keeping each instance isolated from the others. There are two types:
**Type 1 hypervisors** (bare-metal) run directly on the physical hardware without a host operating system underneath. They are faster, more efficient, and used in production data centers. Examples: VMware ESXi, Microsoft Hyper-V, KVM, and bhyve — the hypervisor used in Serverspace’s vStack platform.
**Type 2 hypervisors** run on top of an existing host operating system, like an application. They are used primarily in development environments and local testing. Examples: VMware Workstation, Oracle VirtualBox, Parallels.
For production cloud infrastructure, Type 1 hypervisors are standard. The choice of hypervisor affects performance characteristics, overhead, and the feature set available for managing virtual instances.
### Virtual Machine Instances
Each virtual server is a self-contained environment with its own virtual CPU cores, allocated RAM, virtual disk (backed by physical SSD or NVMe storage), and virtual network interface. The guest operating system installed inside the virtual server — Linux, Windows Server, FreeBSD, or others — has no awareness that it’s running in a virtualized environment. It interacts with what appears to be dedicated hardware.
Modern virtualization platforms support live migration: moving a running virtual server from one physical host to another without downtime. This is how cloud providers perform hardware maintenance without affecting customers — workloads are quietly moved between hosts while they continue running.
### Storage and Networking
Virtual servers in cloud environments typically connect to networked storage rather than disks physically attached to the host server. This allows storage capacity to be allocated independently of compute capacity and enables features like instant snapshots, resizing without migration, and off-host backup. NVMe-backed virtual storage, like the kind Serverspace uses, delivers up to 30,000 IOPS — performance that was previously available only on dedicated hardware.
Virtual networking assigns each instance a private IP address on an internal network and, optionally, a public IP address. Software-defined networking rules control traffic between instances, between virtual networks, and to the public internet.
## Virtual Server Benefits in 2025
### Cost Efficiency That Scales Both Ways
The economics of virtual servers work at every stage of growth. At the start, you pay only for the resources you actually need — no upfront hardware purchase, no rack space, no power and cooling costs. As demand grows, you add resources incrementally instead of buying another physical server that may sit at 20% utilization. If demand drops, you scale back. Physical servers don’t offer that flexibility in either direction.
### Deployment Speed
Provisioning a physical server takes days or weeks: order, ship, rack, configure, test. A virtual server deploys in seconds. Serverspace, for example, completes full VPS deployment in under 60 seconds. That speed changes how teams work — infrastructure becomes something you spin up and tear down as needed, not a long-lead capital project.
### Isolation and Security
Each virtual server is isolated from every other instance on the same physical host. A security incident, application crash, or misconfiguration in one instance cannot directly affect others. That isolation is enforced at the hypervisor level, not the application level — making it reliable even if the software inside the instance is compromised.
### Disaster Recovery and Snapshots
Virtual servers can be snapshotted at any point — capturing the complete state of the system, including OS, applications, configurations, and data. Restoring from a snapshot takes minutes. Entire virtual servers can be cloned for testing or migrated between data centers. Equivalent disaster recovery for physical servers requires dedicated backup hardware, complex restore procedures, and significantly more downtime.
### Hardware Independence
Virtual servers are not tied to specific physical hardware. If a host server requires maintenance or fails, the virtual instances running on it can be migrated to another host automatically. The applications inside don’t notice. This hardware independence is also what makes geographic migration straightforward — moving a virtual server from one data center to another is a software operation, not a logistics exercise.
### Environment Consistency
Development, staging, and production can run on identical virtual server configurations, eliminating the “works on my machine” class of deployment problems. Infrastructure-as-code tools like Terraform, Ansible, and Pulumi can define virtual server configurations as version-controlled code — making environments reproducible and deployments auditable.
## The Limitations Worth Knowing
### Performance Ceiling for Compute-Intensive Workloads
The hypervisor layer introduces a small performance overhead compared to direct hardware access. For most workloads — web applications, databases, APIs, CI/CD pipelines — that overhead is immeasurable in practice. For certain compute-intensive workloads like real-time signal processing, high-frequency trading systems, or specific scientific simulations, that overhead matters. Those workloads are better suited to bare-metal servers with direct hardware access.
### Noisy Neighbor Risk on Lower-Tier Platforms
On poorly managed virtualization platforms, a resource-hungry instance on the same physical host can affect the performance of neighboring instances — a problem known as “noisy neighbor.” Quality cloud providers address this through resource guarantees, dedicated CPU options, and hardware allocation policies. When evaluating a provider, ask specifically whether vCPUs are shared or guaranteed.
### Vendor SLA Dependency
When your infrastructure runs on someone else’s hardware, your uptime depends on their hardware, their network, and their operational practices. A 99.9% SLA sounds like a strong guarantee — and it translates to about 8.7 hours of permitted downtime per year. A 99.95% SLA cuts that to 4.4 hours. Understanding what the SLA actually covers, what it excludes, and what compensation it provides matters before you sign up.
### Shared Resource Limits
Virtual servers have defined resource allocations. If your workload grows beyond what the current instance provides, you need to resize — which may require a brief restart. On physical hardware, you can sometimes add RAM or expand storage without any service interruption at all. Cloud providers have made instance resizing fast, but it’s worth knowing the process before you need it at 2am on a high-traffic day.
## Virtual Servers vs. Physical Servers: A Practical Comparison
The right choice depends on the workload, not a generic preference. Here is how the two compare across the dimensions that affect real operating decisions:
| Dimension | Virtual Servers | Physical (Bare Metal) Servers |
| --- | --- | --- |
| Upfront cost | Low — pay for resources, not hardware | High — hardware purchase or long-term lease |
| Deployment time | Seconds to minutes | Days to weeks |
| Scalability | Instant, incremental, reversible | Hardware-bound; scaling requires procurement |
| Raw performance | High; small hypervisor overhead | Maximum; direct hardware access |
| Disaster recovery | Fast; snapshots, live migration, automated backup | Complex; requires dedicated recovery infrastructure |
| Portability | Hardware-independent; migrate between hosts or DCs | Physical relocation required; high risk and cost |
| Management overhead | Low; managed via dashboard, API, or CLI | High; requires on-site or remote hands expertise |
| Resource utilization | Efficient; multiple workloads per host | Often underutilized at 10–30% capacity |
| Isolation | Hypervisor-enforced per-instance isolation | Complete — single tenant per machine |
| Legacy application support | Strong; older OS versions run in isolated instances | Strong; no virtualization dependency |
The practical conclusion from this comparison is not that one is better — it’s that they serve different needs. Virtual servers win on every operational dimension: cost, speed, recovery, portability, and management. Physical servers win on raw performance and complete hardware isolation. For the vast majority of web applications, SaaS products, databases, APIs, and development environments, virtual servers are the right answer. For latency-critical HPC workloads, the calculation is different.
## What Virtual Servers Are Actually Used For in 2025
### Web Applications and SaaS Products
The most common use case. A VPS gives a web application a dedicated environment with predictable performance, full control over the software stack, and the ability to scale vertically (more resources on the same instance) or horizontally (more instances behind a load balancer) as traffic grows. Most SaaS products running at early to mid scale operate on virtual server infrastructure.
### Development and Staging Environments
Virtual servers are ideal for development and staging environments that need to mirror production without the cost of identical hardware. Teams can spin up a complete production clone for testing, run it for a few hours, and terminate it — paying only for the time it ran. That flexibility changes how teams approach testing and deployment.
### CI/CD Pipelines
Continuous integration and deployment pipelines consume compute in bursts: build jobs run, tests execute, artifacts are packaged, and then the compute is idle until the next commit. Virtual servers, especially with per-minute billing, are well suited to this pattern. The cost model matches the usage pattern in a way that always-on physical hardware cannot.
### Databases and Backend Services
Managed and self-managed databases run effectively on virtual servers, particularly when NVMe SSD storage is available. Private networking between virtual instances allows application servers and database servers to communicate without traffic hitting the public internet — improving both performance and security posture.
### Edge and Regional Deployments
For applications that need to serve users in specific geographic regions with low latency, cloud providers with data centers in those regions allow you to deploy virtual server instances close to your users. A startup serving customers in the UAE, Eastern Europe, and North America can run regional instances in all three locations without owning hardware in any of them.
https://serverspace.us/about/blog/how-to-choose-a-cloud-provider.mdA practical 2026 checklist to choose a cloud provider: pricing, data centers, SLA, support, security. Compare AWS/Azure/DO/Linode with Serverspace.
_Last updated: September 2026 • Reviewer: Cloud Solutions Architect_Choosing a cloud provider shouldn't be guesswork. This 2026 guide gives you a practical checklist, a pricing table, and a quick way to match providers to your use case (startup MVP, SaaS, ecommerce, analytics). Compare core factors—SLA, regions, performance, support—and avoid hidden costs._In this article, we explain how to make sense of the variety of cloud providers on the market. With this checklist, you can choose the best cloud VPS provider for your needs._
**Contents**
- [Cloud Provider Checklist (5 Steps)](#checklist)
- [Security & Reliability](#security)
- [Performance](#performance)
- [Support](#support)
- [Scalability & Flexibility](#scalability)
- [Backups & DR](#backup)
- [SLA Essentials](#sla)
- [Data Center Locations & CDN](#locations)
- [Billing Models & Hidden Costs](#billing)
- [Compatibility & Integration](#compatibility)
- [Range of Services](#services)
- [Entry-Level VPS Pricing](#pricing)
- [What to Do Before You Choose](#prep)
- [Common Mistakes](#mistakes)
- [FAQ](#faq)
- [Bottom Line](#bottom-line)
## Cloud Provider Checklist (5 Steps)
- **Map your workload.** Traffic pattern, peak/avg load, latency, data residency, compliance, RTO/RPO.
- **Shortlist by regions & SLA.** Regions near users; SLA ≥ 99.9% with credits.
- **Price it properly.** Compute + disk + egress + backups/snapshots + premium support + taxes.
- **Test performance.** Latency to nearest DC, IOPS/throughput, cold/warm start, scaling.
- **Support trial.** Open a ticket; check response time, clarity, migration help, localization.
## Security & Reliability
- **Tier III or higher** data centers, N+1/N+2 redundancy, physical security (access control, CCTV).
- **DDoS protection**, optional **WAF** (OWASP Top 10), **2FA**, encrypted backups, RBAC.
- Documented [SLA](https://serverspace.us/conditions/sla.md) with uptime targets and clear credits.
Make sure your provider includes DDoS protection—attacks can take down your site or infrastructure.
## Performance (Latency, Bandwidth, Compute)
- **Low latency:** regions & optimized routing for real-time apps.
- **Bandwidth:** sustained throughput, free traffic vs paid egress, caps and policies.
- **Compute:** current-gen CPUs/virtualization; predictable IOPS and disk throughput under load.
## Support
- **Free availability** and a customized approach.
- **24/7 coverage**; track first response time (Serverspace avg ~15 min).
- **Localized help** to reduce miscommunication.
- **Migration assistance** with a clear cutover plan.
## Scalability & Flexibility
- **Adaptability:** add resources without downtime.
- **Traffic spikes:** scale fast during peaks; don't overpay off-peak.
- **Speed to market:** fast provisioning accelerates releases.
- **Customization:** tailor compute, storage, networking; respect data sovereignty.
## Backups & Disaster Recovery
- **Data safety:** protect against failure, cyber incidents, human error, disasters.
- **Resilience:** quick restore to cut downtime and revenue loss.
- **Compliance:** retention and accessibility per industry rules.
- **Recovery:** test restores; define RTO/RPO and verify.
## SLA Essentials
- **Guaranteed performance:** uptime, transfer rates, response/restore times.
- **Availability:** ≥99.9% with transparent maintenance windows.
- **Compensation:** credits/refunds table for missed targets.
- **Clarity:** [SLA](https://serverspace.us/conditions/sla.md) responsibilities incl. backups, DR, security.
## Data Center Locations & CDN
- **User proximity:** closer regions reduce latency and improve speed.
- **Legal compliance:** meet data residency requirements.
- **Connectivity stability:** local hosting improves reliability.
A [CDN](https://serverspace.us/services/cdn.md) speeds up content delivery. Serverspace CDN nodes are deployed in [six data centers](https://serverspace.us/infrastructure/data-centers.md) across continents. More details [here](https://serverspace.us/infrastructure/data-centers.md).
## Billing Models & Hidden Costs
- **Allocation pool:** monthly pool for predictable enterprise workloads.
- **Pay-as-you-go:** pay only for usage—ideal for startups and variable demand.
- **Reservation pool:** guaranteed resources billed monthly for stable baselines.
**TCO tip:** include egress, snapshots/backups, premium support, and taxes.
## Compatibility & Integration
- **Technical compatibility:** OS, runtimes, DBs, data formats.
- **Integration:** APIs, SDKs, middleware for sync and automation.
- **Operational alignment:** CI/CD, observability, security controls.
- **Future flexibility:** adopt new tech without constant re-platforming.
## What You Need to Do Before Choosing
- **Analyze needs:** apps/services, performance, scalability, compliance.
- **Evaluate feasibility:** cost, flexibility, access to new tech, focus on core.
- **Choose model:** learn [IaaS, PaaS, SaaS](https://serverspace.us/about/blog/golden-trio-of-cloud-computing-iaas-paas-saas.md) and align to your roadmap.
- **Estimate resources & security:** compute, storage, bandwidth, controls, audits.
- **Expense benchmarking:** compare total monthly cost, not list price alone.
## Common Mistakes to Avoid
- **Underestimating security:** weak encryption/no WAF/DDoS → data exposure.
- **Ignoring hidden costs:** egress/snapshots/support → overruns.
- **Overlooking scalability:** slow peaks and costly upgrades.
- **No strategic plan:** misaligned integrations and friction.
- **Skipping the SLA:** downtime without credits.
- **Poor compatibility:** rework and tooling changes.
## Bottom Line
Choosing a cloud provider is foundational for your digital strategy. Use the checklist, price the _real_ month, test performance, and validate support. Compare cloud providers and begin your cloud journey with clarity and control.
https://serverspace.us/about/blog/best-cloud-hosting-companies-in-the-usa-2026.mdDiscover the top 10 cloud hosting providers in the USA for 2026. Our ranking highlights the best cloud VPS providers and top cloud server companies, comparing pros and cons of each service.
The U.S. market for cloud infrastructure continues to evolve rapidly in 2026, with businesses turning to top cloudproviders to meet growing demands for automation, scalability, and security. Whether you're a developer, startup, or enterprise, choosing among the top 10 cloud service providers can shape your project's success.In this guide, we review the top cloud server providers offering VPS services in the U.S. We highlight strengths, limitations, and what each platform is best suited for in 2026 — so you can choose the best cloud VPS provider for your workload and team.
**Scope:** This overview focuses on VPS and cloud compute. Availability of specific features (support channels, regions, add-ons) may vary by plan and may change over time.
## How we evaluated cloud providers?
To keep the comparison practical, we used the following evaluation criteria:
- **Infrastructure & U.S. presence** (data centers, performance, reliability)
- **Pricing model & transparency** (how predictable costs are)
- **Scalability & flexibility** (custom configs, resizing, deployment speed)
- **Developer tooling** (API, CLI, IaC options like Terraform)
- **Support model** (availability, clarity of tiers, responsiveness)
- **Best-fit scenarios** (startups, SMBs, enterprises)
## Serverspace.us — flexible cloud VPS with transparent pricing
[Serverspace](https://serverspace.us/index.md) stands out in 2026 as one of the most flexible and reliable cloud providers for VPS hosting. Built fordevelopers and growing businesses, it enables fast server deployment on enterprise-grade infrastructure and supportsVMware or vStack virtualization.
The platform is known for pay-as-you-go billing (with frequent usage-based write-offs), unlimited free traffic, anddeveloper tooling for automation.
**Pros:**
- Fast provisioning and easy scaling
- Transparent pay-as-you-go pricing
- U.S. presence with global expansion options
- Unlimited free traffic
- Developer tools: API, CLI, Terraform
- User-friendly control panel
- 24/7 support (availability depends on plan)
**Limitations:**
- No bare-metal servers
- OS-level administration support may be offered as an add-on
Best for: startups, SaaS teams, dev environments, cost-sensitive projects needing
predictable cloud VPS hosting.
## Vultr — developer-focused global gloud platform
[Vultr](https://www.vultr.com/) is a popular option among developers, valued for fast deployments and a broad international footprint. It offers multiple compute options, including performance-oriented instances.
**Pros:**
- Large global network with U.S. coverage
- Fast provisioning
- IPv6 support and startup scripts
- Multiple instance families
**Limitations:**
- Bandwidth/traffic is typically billed separately
- Windows support may be limited or priced differently
- Support is primarily ticket-based
Best for: developers and globally distributed apps.
## Oracle Cloud — enterprise-crade cloud infrastructure
[Oracle Cloud Infrastructure (OCI)](https://www.oracle.com/cloud/) is often chosen for enterprise environments, especially where Oracle databases and hybrid architectures are part of the stack. It offers a wide set of cloud services beyond VPS.
**Pros**
- Strong fit for Oracle-centric workloads
- Enterprise security and compliance options
- Broad set of services for large organizations
**Limitations**
- Steeper learning curve for small teams
- May be excessive for simple VPS needs
Best for: enterprises, regulated industries, Oracle users.
## Kamatera — highly customizable and trusted in the U.S.
[Kamatera](https://www.kamatera.com/) is known for customization and fast provisioning, offering granular control over server resources. It's often used by teams that want to fine-tune configurations without adopting a full hyperscaler stack.
**Pros:**
- Custom VPS configurations
- Fast provisioning
- Live support options (chat/phone may vary)
**Limitations:**
- UI may feel dated compared to newer platforms
- Data transfer may be billed separately
- Limited built-in migration tooling
Best for: workloads needing precise customization.
## DigitalOcean — simple and scalable cloud hosting
[DigitalOcean](https://www.digitalocean.com/) remains a top cloud provider for startups and development teams, offering a clean UX, predictable pricing, and a strong ecosystem of documentation and tutorials.
**Pros:**
- Transparent, flat-rate pricing
- One-click apps and marketplace
- Strong documentation
**Limitations:**
- No native Windows VPS on many plans
- Support tiers may be paid
Best for: startups, MVPs, small dev teams.
## GoDaddy — entry-level VPS hosting
[GoDaddy](https://www.godaddy.com/hosting/vps-hosting) offers VPS products aimed at small businesses and straightforward workloads. It can be a fit for teams that prefer a traditional hosting experience and simplified onboarding.
**Pros:**
- Easy setup for typical SMB needs
- Common add-ons like SSL and dedicated IP may be available
- Large support ecosystem
**Limitations:**
- Limited scalability for fast-growing products
- Many advanced features are add-ons
Best for: small businesses with basic VPS hosting requirements.
## UpCloud — performance-oriented VPS hosting
[UpCloud](https://upcloud.com/) is known for performance-focused hosting and strong disk I/O characteristics, appealing to teams running workloads where storage throughput is critical.
**Pros:**
- Performance-oriented storage
- Good fit for compute + I/O heavy workloads
**Limitations:**
- Smaller U.S. presence compared to hyperscalers
- Limited native ecosystem (CDN/orchestration) vs. larger platforms
Best for: performance-sensitive projects and I/O-heavy apps.
## Microsoft Azure — enterprise cloud ecosystem
[Azure](https://azure.microsoft.com/) is one of the top cloud providers in the world, especially strong for enterprises that rely on Microsoft technologies and hybrid cloud deployments.
**Pros:**
- Hybrid cloud support
- Enterprise-grade compliance and security
- Strong Microsoft ecosystem integration
**Limitations:**
- Complex pricing for simple VPS use cases
- Large service catalog can be overwhelming
Best for: enterprises and Microsoft-centric stacks.
## AWS — the largest cloud ecosystem
[AWS](https://aws.amazon.com/) remains the most comprehensive cloud platform, offering an enormous range of services. It's frequently selected by organizations that need maximum scale or advanced managed services.
**Pros:**
- Massive global infrastructure and service breadth
- Advanced managed services (AI, analytics, databases)
- Mature ecosystem and integrations
**Limitations:**
- Traffic and data transfer costs can be high
- Billing and configuration complexity for small teams
Best for: large-scale projects and teams with cloud expertise.
## Linode (Akamai) — developer-friendly Linux VPS
[Linode](https://www.linode.com/) is valued for its Linux-first approach, predictable pricing, and active community. Backed by Akamai, it also benefits from a broader edge infrastructure ecosystem.
**Pros:**
- Clear, predictable pricing
- Strong Linux support and community
- Akamai ecosystem synergy for edge use cases
**Limitations:**
- No Windows VPS on standard offerings
- Fewer advanced automation features than hyperscalers
Best for: Linux-based projects, developers, and SMB workloads.
## Final thoughts
The best cloud hosting provider in the U.S. depends on your workload, budget, and the level of operational control you need. Hyperscalers like AWS and Azure offer unmatched service breadth but can introduce complexity and higher network costs. Developer-friendly platforms like Serverspace, DigitalOcean, and Linode often provide a more balanced path with faster onboarding and clearer pricing. If you prioritize transparent pricing, quick deployment, and automation tooling without adopting a complex enterprise cloud stack, modern VPS-focused cloud providers can be a strong choice in 2026.
https://serverspace.us/about/blog/how-to-install-wordpress-on-the-vps-in-5-minutes.mdThis guide will show you step by step how to install WordPress in the cloud using Serverspace’s one-click app. In less than ten minutes, you’ll have a fully functional WordPress VPS running on your server.
WordPress hosting is still the fastest path from idea to production-grade website. In 2026, the smarter move is to run your CMS in cloud infrastructure instead of squeezing it into shared hosting. A cloud website hosting model gives you dedicated resources, global reach, and clean scalability—so your site stays fast when traffic spikes. In this guide, you'll deploy a production-ready WordPress VPS on Serverspace in roughly ten minutes. The workflow is simple: sign in, pick a location close to your audience, launch the one-click app, and finalize your VPS WordPress setup. No guesswork, no manual LAMP juggling.
## Why сloud deployment beats shared hosting
Shared hosting stacks dozens or hundreds of sites onto the same machine. That means unpredictable performance, limited control, and slow recovery when something breaks. A CMS in cloud infrastructure flips the model: you get isolated compute, root access when you want it, and the freedom to scale. Serverspace adds pay-as-you-go simplicity, global data centers (US, Europe, LATAM, Asia), and unmetered traffic—so you focus on your site, not limits.
- **Performance & control:** a WordPress VPS with dedicated CPU/RAM, full root, and a clean control panel beats "noisy neighbor" shared hosting every day.
- **Scalability & reach:** scale in one click and place your app where your users are for lower latency and higher conversion.
## Step 1: Sign up and access the Serverspace control panel
Create an account and open the dashboard. The interface is intentionally minimal: projects on the left, infrastructure controls in the middle, and usage details where you need them. Launching WordPress hosting starts by choosing a region—New Jersey for North America, Amsterdam for Europe, São Paulo for Brazil, and more—so your CMS in cloud runs close to your users.
## Step 2: Create a cloud server
Click _Create Server_ and size your WordPress VPS. A personal blog usually runs well on 1 vCPU and 1–2 GB RAM, while small commerce and content-heavy sites might start at 2 vCPU and 4 GB RAM. Storage depends on your media footprint; you can grow later without migrations. Pricing is transparent as you adjust resources. Traffic is unmetered, which simplifies cost planning for cloud website hosting. If demand jumps, vertical scaling is a single action in the panel—no tickets required.
## Step 3: One-click WordPress deployment
Open the Marketplace and select the **WordPress** one-click app. This image provisions the stack, configures the database, and hardens defaults so you don't have to copy-paste commands. After the node boots, the panel shows the server's IP and your initial admin credentials. Point your domain's A record at the server, wait for DNS to propagate, and your VPS WordPress setup is live. Compared to manual installs, the one-click app is faster, repeatable, and less error-prone.
## Step 4: Configure and secure your WordPress
Log in to /wp-admin and finish the baseline configuration. Keep performance, security, and observability in mind from the start—those are the levers that make cloud website hosting shine. Use lightweight themes, avoid plugin bloat, and commit to an update routine. In the Serverspace panel, enable automated backups and attach a firewall policy. Turn on HTTPS and enforce HSTS so browsers always negotiate a secure connection. These basics keep your WordPress VPS fast and trustworthy.
- Install essential plugins only (cache, SEO, analytics) and keep versions current to reduce attack surface.
- Enable HTTPS via a free certificate in the panel; pair with firewall rules and scheduled backups for resilience.
Because you own the stack, you're not stuck waiting on a shared host to patch the system. You can also create snapshots before big changes and roll back instantly if needed—one of the quiet superpowers of running a CMS in cloud.
## Step 5: Performance tuning & scaling
Even a well-built site can crawl if the stack is undersized or caching is misconfigured. Start with page caching at the application layer and consider object caching for dynamic workloads. If your audience is geographically distributed, add a CDN to push static assets to edge locations. When your campaign hits, scale your [WordPress VPS](https://serverspace.us/services/vps-server/wordpress-hosting.md) up (more CPU/RAM) in a single click; the panel applies changes quickly without the drama of moving hosts. This is where cloud website hosting earns its keep: predictable upgrades with minimal downtime and no support queue.
## Cost & Resource Planning
Here's a pragmatic comparison to frame the decision between shared hosting and a Serverspace WordPress VPS using the one-click app. It centers on deployment speed, control, and the operational knobs you'll actually turn.
| Feature | Shared Hosting | Serverspace Cloud WordPress VPS |
| --- | --- | --- |
| Deployment Time | Manual setup, variable; often hours | ~10 minutes with one-click app |
| Performance | Shared CPU/RAM; noisy neighbors | Dedicated resources sized to your load |
| Scalability | Limited or none | Scale CPU/RAM in one click |
| Traffic | Often metered or restricted | Unmetered traffic included |
| Control | Restricted; limited server access | Full root + clean control panel |
| Security & Backups | Provider-managed, limited options | Panel firewalls, snapshots, scheduled backups |
| Migration | Often constrained by provider | Plugin or backup restore; snapshot safety net |
| Use Cases | Hobby sites, low control needs | Blogs, SMB sites, e-commerce, growth campaigns |
Bottom line: if your brand relies on uptime and speed, a WordPress VPS on Serverspace gives you the knobs you need without the overhead of bare metal. You keep the agility of WordPress hosting while gaining the reliability of cloud website hosting.
## Conclusion
You don't need a DevOps team to launch a robust CMS in cloud infrastructure. With Serverspace, you sign in, choose a region, deploy the WordPress one-click app, and complete your VPS WordPress setup in minutes. From there, scaling and hardening live right in the panel—so your site can grow without platform lock-in or surprise limits. If you've outgrown shared hosting or you're starting a serious project, this is the cleanest path to production-ready WordPress hosting.
https://serverspace.us/about/blog/best-forex-vps-hosting-providers-for-2026-mt4-mt5-ready.mdCompare the top Forex VPS hosting providers for 2026 and pick the best VPS for MT4/MT5 with low latency, stable uptime, and data center locations close to major brokers.
When you trade Forex, your internet connection and hardware quietly decide whether your strategy actually works or just looks good in backtests. A Forex VPS takes your trading platform off the home laptop and runs it in a data center close to your broker, so orders hit the market faster and your EAs don't die because Windows decided to install updates.
In this guide, we'll break down seven reliable Forex VPS hosting providers for 2026 — from cloud platforms to niche vendors that focus entirely on algorithmic trading. We'll look at latency, stability, locations, pricing models, and how easy it is to run MT4, MT5 and other platforms 24/7.
## What Is Forex VPS Hosting and Why Traders Use It
A Forex VPS is a virtual private server that runs your trading platform — usually MT4 or MT5 — inside a remote data center instead of on your local PC. You connect to it through Remote Desktop, install your terminal, log in to your broker and let your EAs or copy-trading tools work around the clock.
Compared to trading directly from your home machine, a VPS gives you:
- A stable connection in a professional data center, not over flaky home Wi-Fi.
- Much lower latency to popular FX brokers if the VPS is located near their servers.
- 24/7 uptime, even when your own PC is off or your power goes out.
- A dedicated environment for running multiple MT4/MT5 instances and EAs.
For manual traders it's convenient; for algo traders it's almost mandatory.
## Quick Comparison: Top Forex VPS Providers for 2026
| Provider | Best for | Typical Regions / Hubs* | Pricing Style |
| --- | --- | --- | --- |
| Serverspace | Flexible cloud VPS with pay-as-you-go billing | US, Canada, Netherlands, Kazakhstan, Brazil, UAE | Pay-per-10-minutes, no traffic fees* |
| Kamatera | Global cloud with granular configuration | North America, Europe, Asia, Middle East | Hourly / monthly, fully custom |
| ForexVPS | Classic Forex VPS focused on MT4/MT5 | London, New York, Amsterdam, Singapore, more | Fixed Forex VPS plans |
| Beeks Financial Cloud | Institutional-grade low-latency trading VPS | Major financial hubs across the globe | Tiered VPS & infrastructure services |
| Commercial Network Services (CNS) | Long-time Forex VPS vendor | US and UK data centers | Forex-optimized VPS plans |
| MyForexVPS | Budget-friendly Forex VPS for retail traders | London, Amsterdam, New York | Lower-tier plans for small budgets |
| NextPointHost | Forex-centric hosting with ultra-low latency focus | US, UK, Singapore and more | Forex VPS & broader hosting plans |
_*Regions based on publicly available info; exact locations and specs can change, so always double-check the provider's site._
## 1. Serverspace — Flexible Cloud VPS for Forex Traders
**Positioning:** Serverspace is a global cloud provider that lets you spin up VPS instances in about 40 seconds, pay strictly for the resources you allocate and run both Windows and Linux for trading setups. For Forex, the key upside is flexibility: you can quickly deploy a Windows VPS near your broker and scale resources up or down as your strategy evolves.
Data centers are available in the US (New Jersey), Canada (Toronto), the Netherlands (Amsterdam), Kazakhstan (Almaty), Brazil (São Paulo) and the UAE (Dubai). That covers many popular FX liquidity regions while also opening interesting routes for MENA and LATAM traders.
Key advantages for Forex setups:
- **Pay-as-you-go billing.** Serverspace charges every 10 minutes based on your active configuration. You're not locked into a monthly contract and can destroy or resize a VPS whenever you want.
- **Free traffic.** Traffic is not billed separately, which simplifies cost planning for traders running multiple platforms or price feeds.
- **Global footprint.** With locations across North America, Europe, Asia and South America, you can place your VPS close to your preferred brokers or liquidity pools.
- **Fast deployment.** Servers are provisioned from a dedicated pool, so you can go from account creation to a running VPS in roughly 40 seconds — handy if you need to spin up a new instance during volatile markets.
- **Simple control panel.** The UI is built for non-sysadmins: you can reboot, resize RAM/CPU/SSD, manage snapshots and contact support in a few clicks.
**Ideal use cases:**
Retail traders, small funds and prop teams who want a cloud VPS that behaves like "infrastructure Lego": quick to deploy, easy to scale and predictable in cost. If you don't want to worry about "how many GB of traffic did my EAs pull this month?", Serverspace is a strong fit.
## 2. Kamatera — Global Cloud VPS With Granular Control
Kamatera is a long-running cloud provider that focuses on highly configurable virtual servers. You choose vCPU, RAM, storage type, OS and data center location almost à la carte, which is attractive if you like tuning your stack. Their infrastructure spans multiple regions in North America, Europe, Asia and the Middle East, and they operate more than twenty data centers worldwide.
For Forex traders this means you can:
- Place a VPS near your broker in cities like New York, Chicago, Dallas, London, Amsterdam, Singapore, Tokyo or Sydney.
- Start with a small instance and scale vertically when you add more EAs or accounts.
- Run Windows Server or a Linux distribution depending on your platform mix.
Kamatera offers hourly billing, optional managed services, and a global network with a 99.95% uptime guarantee, which helps if you run higher-value strategies and care about SLAs.
## 3. ForexVPS — Dedicated Forex VPS for MT4 & MT5
ForexVPS is one of the classic names in this niche, focusing almost entirely on hosting for traders. Their infrastructure is built around popular FX hubs such as London, New York, Amsterdam, Singapore, Zurich and Tokyo, with marketing that emphasizes ultra-low latency and high uptime for MT4/MT5.
What makes ForexVPS attractive:
- VPS plans specifically designed for running multiple MT4/MT5 terminals.
- Locations that line up well with many retail brokers.
- Automation-friendly approach, including pre-configured environments for EAs.
If you want something that just works for MT4/MT5 without thinking too much about the broader cloud ecosystem, ForexVPS is a solid specialist option.
## 4. Beeks Financial Cloud — Low-Latency Trading Infrastructure
Beeks Financial Cloud targets a different audience: institutional traders, brokers and funds that need proximity hosting and very low latency. Their VPS and cloud services are built around financial markets, with infrastructure in data centers close to major exchanges and liquidity centers worldwide.
For a Forex trader this means:
- Access to VPS instances inside or near key financial hubs.
- A network optimized for financial traffic, not generic web hosting.
- The ability to grow from a single VPS to more complex setups like dedicated servers or hybrid cloud.
Beeks is usually overkill for someone just running a couple of EAs on a small account, but it's compelling if you treat FX more like a professional infrastructure problem than a hobby.
## 5. Commercial Network Services (CNS) — Veteran Forex VPS Provider
Commercial Network Services has been in the hosting game for a long time and markets itself directly to Forex traders. Their VPS line is described as tailored for trading, with data centers in the US and UK and a focus on low-latency links to many brokers.
Highlights for traders:
- Windows-based VPS plans advertised as optimized for running trading platforms.
- Locations aligned with major FX markets, especially New York and London.
- Long-standing presence in the Forex community, which some traders value for trust and support reasons.
CNS is a good match if you want a provider that's been serving traders specifically for years, rather than a generic cloud vendor that happens to support Windows VMs.
## 6. MyForexVPS — Budget-Friendly VPS for Retail Traders
MyForexVPS focuses on making VPS hosting approachable for smaller traders. They operate servers in London, Amsterdam and New York, using well-known hardware vendors and virtualization stacks, and promote low latency plus constant uptime for FX use cases.
For retail traders, key advantages are:
- Plans that start relatively cheap compared to some institutional-oriented providers.
- Locations near many popular European and US brokers.
- VPS environments tuned for running multiple EAs, bots and analysis tools.
If your goal is to get your first live EA off your home PC and onto a VPS without breaking the bank, MyForexVPS is worth a look.
## 7. NextPointHost — Forex-Focused Hosting With Ultra-Low Latency
NextPointHost blends general hosting (shared, VPS, dedicated) with a heavy focus on Forex. They position themselves as a high-availability, low-latency infrastructure vendor for traders, brokers, signal providers and EA developers.
What stands out:
- Forex VPS offerings reportedly designed from the ground up for algorithmic trading.
- Servers in regions like the US, UK and Singapore to cover major FX flows.
- A long history of working with trading workloads specifically, not just generic web sites.
If you're deep into algo trading and want a provider that speaks your language, NextPointHost is positioned as a trader-first hosting company.
## How Much Does a Forex VPS Cost in 2026?
Pricing varies a lot, but generally:
- **Entry-level Forex VPS** (1–2 cores, 1–2 GB RAM) usually starts in the low double-digit dollars per month with fixed plans.
- **Mid-range setups** for multiple MT4/MT5 instances may move into the $30–$70/month range depending on region and specs.
- **Institutional or proximity solutions** can cost significantly more, especially if you're paying for exchange-adjacent hosting or dedicated hardware.
Cloud providers like **Serverspace** blur the lines by offering pay-as-you-go billing, where you pay per small time slice instead of a flat monthly plan. That's efficient if you spin up extra capacity only during volatile events or while testing new strategies.
## Is VPS Hosting Really Worth It for Forex Trading?
It depends on how you trade:
- If you run **EAs, copy trading or automation**, a VPS is almost always worth it. You get stable 24/7 uptime, low latency and no dependency on your home PC.
- If you **trade manually a few hours a week** on a small account, the extra cost may not pay off immediately.
- If you manage **multiple accounts or investor capital**, running platforms on consumer hardware at home is a huge operational risk.
Practically, once your strategy is sensitive to execution speed or you rely on your platform staying online all night, VPS hosting turns from "nice bonus" into "core part of the stack."
## MT4 vs MT5 vs Other Platforms on a VPS
On a VPS, MT4 and MT5 behave more or less like they do on your desktop:
- **MT4** is still very common, with a huge library of EAs and indicators.
- **MT5** adds more asset classes and a more modern architecture, but not every broker supports it equally.
Most providers in this list, let you install both platforms on Windows Server, run several terminals side by side and connect them to different brokers or accounts. Some vendors also support cTrader, NinjaTrader and other platforms, but MT4/MT5 remain the primary use case.
## How to Set Up MT4/MT5 on a Forex VPS: Quick Guide
Here's a simple flow that works with almost any provider:
- **Pick a provider and region.**
Choose a host with a data center close to your broker. For example, if you trade with a broker whose servers are near New York or London, place your VPS in that region. Providers like Serverspace give you multiple options across the US, Europe, Asia and the Middle East.
- **Deploy a Windows VPS.**
Create a Windows Server instance with enough RAM and CPU for your platforms — 2 GB RAM is fine for light use, but more is better if you run several terminals and EAs.
- **Connect via Remote Desktop.**
Use the RDP client from your PC or laptop, enter the IP, username and password from your control panel and log in to the remote desktop.
- **Install MT4/MT5 and log in.**
Download MT4 or MT5 from your broker or MetaQuotes, install them on the VPS, then connect to your live or demo accounts.
- **Configure EAs and monitoring.**
Load your expert advisors, set up risk parameters and keep an eye on Windows updates or scheduled reboots so they don't interrupt trading sessions.
On **Serverspace**, the main difference is how fast the steps happen: VPS deployment is extremely quick, and you only pay for the exact time and configuration you actually use, which is convenient while you experiment.
## Navigate the World of Forex Trading With the Right VPS
There's no single "perfect" Forex VPS for every trader. Retail traders might gravitate toward budget-friendly hosts or flexible clouds, while funds and serious algo shops look at low-latency financial infrastructure and detailed SLAs.
What matters is matching your strategy, your brokers and your budget to a provider that can keep your platforms online and close to the market. If you want a cloud-style approach — fast deployment, pay-as-you-go billing and global locations without traffic surprises — Serverspace is a strong starting point for building a modern, resilient Forex trading stack.
https://serverspace.us/about/news/spin-into-2026-join-the-serverspace-christmas-wheel-of-fortune.mdCelebrate 2026 with our festive Wheel of Fortune! New users can win cashback, discounts or even a free VPS. Available from Dec 15 to Jan 14.
The holiday season is the perfect time to add a bit of randomness to your routine — the kind that always ends with a prize. This year, we're celebrating the road to 2026 with the **Serverspace Wheel of Fortune**: a festive mini-game where every spin brings a reward.
New users can join the Christmas Wheel of Fortune and unlock special offers — from cashback and promo discounts to a full year of free VPS. Hit the button, spin the wheel and see what 2026 starts with for you.
**How to play:**
- Enter your email address in the form next to the **"Spin the Wheel"** button.
- Click **"Spin the Wheel"** and wait for your prize to appear.
- Check your inbox — your reward details will be sent to your email.
**Conditions of the Christmas promotion:**
- The Wheel of Fortune is only available to new users who create an account for the first time during the promotion period.
- The Christmas Wheel of Fortune runs from **12/15/25 to 01/14/26**.
- Prize promo codes are valid only during the Christmas Wheel of Fortune period.
- For prizes with bonus dollars: bonus funds are credited when you top up your balance by $4.99 or more.
For everyone who's been with us for a while, we've got New Year gifts for you too — they're already waiting in your control panel. Log in to your account to check the current offers and see how to claim them.
With warmest wishes,
Serverspace team
https://serverspace.us/about/blog/rocky-vs-alma-vs-oracle-linux.mdRocky Linux vs AlmaLinux vs Oracle Linux: compare RHEL compatibility, governance, kernel options, release speed and migration tools.
CentOS used to be the default choice for anyone who needed a free, stable, enterprise Linux without paying for a Red Hat subscription. That changed in December 2020 when Red Hat announced CentOS would be replaced by CentOS Stream, a rolling release that sits upstream of RHEL rather than downstream. Then in June 2023, Red Hat restricted public access to RHEL source code, making it even harder for community projects to rebuild the distribution.
Three alternatives stepped up to fill the gap: AlmaLinux, Rocky Linux and Oracle Linux. All three are free to download and use. All three aim to be compatible with RHEL. But they differ in philosophy, governance, technical decisions and the speed at which they ship updates. If you are comparing rocky linux vs almalinux vs oracle linux for your next server, this guide breaks down what actually matters.
All three distributions are available as ready to deploy templates on [Serverspace VPS](https://serverspace.us/services/vps-server.md), so you can spin up any of them in a couple of minutes and test before committing.
## Why CentOS Alternatives Exist and Who Created Them
To understand the differences between AlmaLinux, Rocky and Oracle Linux, it helps to know why each project was started.
**AlmaLinux** was created by CloudLinux, a company that builds a hardened Linux distribution for hosting providers. When Red Hat killed CentOS, CloudLinux announced Project Lenix (later renamed AlmaLinux) in January 2021 and pledged $1 million in annual sponsorship. The project was then handed over to the AlmaLinux OS Foundation, a 501(c)(6) nonprofit. That structure was chosen specifically so no single company could take over the project. CERN and Fermilab later adopted AlmaLinux as the standard distribution for scientific computing.
**Rocky Linux** was founded by Gregory Kurtzer, one of the original CentOS co-founders. He announced the project the day after Red Hat’s CentOS decision. The name is a tribute to early CentOS co-founder Rocky McGaugh. Rocky Linux is managed by the Rocky Enterprise Software Foundation, a public benefit corporation. CIQ, the commercial entity behind Rocky, has raised $26 million in funding and provides enterprise support.
**Oracle Linux** predates both of them. Oracle forked RHEL back in 2006, originally to serve customers who were buying Red Hat subscriptions just to run Oracle Database. Unlike AlmaLinux and Rocky, Oracle Linux is backed by a major corporation and has been around for nearly two decades.
After Red Hat restricted source code access in 2023, CIQ (Rocky), Oracle and SUSE formed the Open Enterprise Linux Association (OpenELA), a nonprofit to maintain freely available RHEL-compatible source code. AlmaLinux chose not to join and instead took its own path, building from CentOS Stream sources.
## How Each Distribution Handles RHEL Compatibility
This is the most important technical difference and the core of the almalinux vs rocky linux debate.
**Rocky Linux** aims to be a bug-for-bug clone of RHEL. The project still uses RHEL source RPMs as its upstream, which means the resulting packages should be binary identical to what Red Hat ships. If something is a bug in RHEL, it will be the same bug in Rocky. For organizations that need strict certification or vendor support agreements tied to RHEL, this approach offers the highest level of predictability.
**AlmaLinux** shifted its strategy after the 2023 source code restriction. Instead of maintaining strict 1:1 binary compatibility, AlmaLinux now targets ABI (Application Binary Interface) compatibility. In practice, this means anything compiled for RHEL will run on AlmaLinux without modification. The difference is subtle but meaningful: AlmaLinux builds from CentOS Stream sources and occasionally includes improvements that RHEL does not, such as continued support for older hardware.
**Oracle Linux** also maintains binary compatibility with RHEL but adds a unique twist: the Unbreakable Enterprise Kernel (UEK). UEK is a separate kernel built by Oracle that tracks mainline Linux more closely than the RHEL kernel does. The latest version, UEK 8, is based on Linux 6.12 LTS and includes memory management optimizations, improved file system support, networking enhancements and Intel SGX2 security features. Users can choose between UEK and the standard Red Hat Compatible Kernel (RHCK) at boot time.
When comparing oracle linux vs rocky linux or oracle linux vs almalinux, the kernel choice is the biggest differentiator. Rocky and AlmaLinux ship the same kernel that RHEL uses. Oracle Linux gives you an additional option that may perform better for certain workloads, especially if you run Oracle databases or cloud infrastructure.
## Governance and Funding: Who Controls What
The governance model determines what happens if priorities shift, leadership changes, or a corporate sponsor loses interest.
**AlmaLinux OS Foundation** is a 501(c)(6) nonprofit with over 400 contributor members, 100+ mirror members and 25+ sponsor members. CloudLinux provides $1 million annually but does not control the project. TuxCare and Cybertrust also sponsor development and offer commercial support. The foundation structure makes it nearly impossible for any single entity to change the project’s direction against community interests.
**Rocky Enterprise Software Foundation** is a public benefit corporation (B-Corp). While CIQ is the founding sponsor and employs many Rocky Linux developers, the RESF technically operates independently. CIQ offers enterprise support under its own brand, including Rocky Linux Hardened (RLC-H) with FIPS 140-3 certification.
**Oracle Linux** is a product of Oracle Corporation. Oracle funds all development and provides support through paid subscriptions. The distribution itself is free to download, use and redistribute without restrictions. However, features like Ksplice (zero-downtime kernel patching) require a Premier Support subscription.
## Comparison Table
| Criteria | AlmaLinux | Rocky Linux | Oracle Linux |
| --- | --- | --- | --- |
| RHEL compatibility | ABI-compatible | Bug-for-bug | Binary-compatible + UEK |
| Governance | Nonprofit foundation | Public benefit corporation | Oracle Corporation |
| Kernel | RHEL kernel | RHEL kernel | RHEL kernel + UEK option |
| RHEL 10 release delay | 7 days | 23 days | 47 days |
| x86-64-v2 support (v10) | Yes (unique) | No (requires v3) | No (requires v3) |
| Migration tool | ELevate (any to any) | migrate2rocky (to Rocky only) | centos2ol |
| Commercial support | TuxCare, Cybertrust | CIQ | Oracle |
| Live patching | Via TuxCare | Via CIQ | Ksplice (with subscription) |
| Lifecycle | 10 years | 10 years | 10 years |
| Cost | Free | Free | Free (support is paid) |
| OpenELA member | No | Yes (via CIQ) | Yes |
## What Makes Oracle Linux Stand Out
Oracle Linux occupies a distinct position because it has been around since 2006 and brings capabilities the other two do not offer natively.
The Unbreakable Enterprise Kernel is the main differentiator. UEK 8, released in April 2025, is based on the Linux 6.12 long-term stable kernel. It includes folios for more efficient memory management, Maple Tree data structures for faster virtual memory operations, improved io_uring performance for storage workloads, and online self-repair for XFS file systems. For Arm-based cloud instances, UEK 8 supports a 64K base page size for better performance with large datasets.
Oracle Ksplice allows zero-downtime patching of the kernel, hypervisors, glibc and OpenSSL without rebooting. This is particularly valuable for production servers where uptime requirements are strict. AlmaLinux users can access similar functionality through TuxCare, and Rocky Linux users through CIQ, but both are third-party solutions.
Oracle Linux also includes DTrace 2.0 for deep observability and is optimized for Oracle Database, Oracle Exadata and Oracle Cloud Infrastructure. If your stack already includes Oracle products, Oracle Linux is the most natural fit.
## Version 10: Release Timeline and Key Changes
RHEL 10 was released on May 20, 2025, based on Fedora 40 and the Linux 6.12 kernel. The three alternatives followed at different speeds.
AlmaLinux 10 “Purple Lion” shipped on May 27, just one week after RHEL 10. Rocky Linux 10 “Red Quartz” reached general availability in mid-June, about 23 days later. Oracle Linux 10 landed on June 26, after 47 days, though Oracle then shipped version 10.1 by December 2025.
The most significant change in version 10 is the CPU requirement. RHEL 10 and Rocky Linux 10 now require x86-64-v3 processors (Intel Haswell and later, roughly 2013 onwards). AlmaLinux 10 is the only one that also provides a separate build for x86-64-v2 hardware (Intel Nehalem and later, roughly 2008 onwards). This means AlmaLinux supports a wider range of older servers and virtual machines, including some versions of VirtualBox.
Performance-wise, independent benchmarks from Phoronix on AMD EPYC Turin servers showed that Rocky Linux 10 and AlmaLinux 10 perform identically to RHEL 10. This is expected since they share the same kernel and packages.
None of the three alternatives include Red Hat’s new AI assistant (Lightspeed) that ships with RHEL 10. All three use Linux 6.12, GNOME 47 and Wayland by default.
If you want to test version 10 on a live server, you can deploy AlmaLinux or Rocky Linux from [VPS templates on Serverspace](https://serverspace.us/services/vps-server.md) and compare them side by side.
## How to Migrate From CentOS
If you are still running CentOS 7 or CentOS 8, migration paths exist for all three distributions.
**AlmaLinux** offers the ELevate project, which allows upgrades and migrations between any RHEL-based distribution. You can migrate from CentOS, Rocky, Oracle or RHEL to AlmaLinux, and in the other direction too. This flexibility reflects AlmaLinux’s open source philosophy of giving users freedom to choose.
**Rocky Linux** provides the migrate2rocky script, which converts existing CentOS, AlmaLinux, RHEL or Oracle Linux installations to Rocky. The key difference is that this tool only migrates to Rocky, not between other distributions.
**Oracle Linux** has the centos2ol conversion script. Oracle also provides extensive documentation for migrating from CentOS and Rocky Linux.
For a clean start, the simplest approach is to deploy a fresh VPS with the desired distribution and move your applications over. This avoids edge cases with in-place conversion and gives you a clean baseline.
## Which Distribution Fits Your Scenario
**Choose AlmaLinux** if you value community governance, need support for older hardware (x86-64-v2), want the fastest release cadence, or work in scientific or academic environments. AlmaLinux is also a strong choice if you want the flexibility to migrate between distributions later using ELevate.
**Choose Rocky Linux** if your priority is maximum compatibility with RHEL, you need FIPS 140-3 certification through RLC-H, or you prefer a project founded by a CentOS co-creator. Rocky’s bug-for-bug approach means the fewest surprises when running software certified for RHEL.
**Choose Oracle Linux** if you already use Oracle products, need UEK kernel optimizations for database or cloud workloads, or want Ksplice zero-downtime patching as a first-party feature. Oracle Linux also makes sense for large enterprises that prefer vendor-backed support.
For testing any of these, [Serverspace](https://serverspace.us/services/vps-server.md) offers all three as deployment options. You can create a VPS with each distribution, run your workloads, and decide based on real results rather than theory.
## Common Mistakes When Choosing a RHEL Alternative
**Assuming all three are identical.** Many articles about almalinux vs rocky linux gloss over the real differences, but they exist and they compound over time. They look similar and run the same software, but differences in kernel options, release speed, hardware support and governance can matter in production.
**Ignoring software certification.** Some vendors certify their products only for RHEL. If your application requires a specific certification, check whether it covers RHEL-compatible distributions or only RHEL itself.
**Picking based on popularity alone.** EPEL statistics show Rocky Linux leading in public-facing server counts, with AlmaLinux close behind and Oracle Linux trailing. But these numbers reflect internet-connected servers with EPEL enabled, not total deployments. Oracle Linux powers a huge portion of Oracle Cloud Infrastructure that never shows up in public surveys.
**Forgetting about migration paths.** If you pick one distribution now and want to switch later, AlmaLinux’s ELevate makes it easiest. Migrating away from Rocky or Oracle requires more manual work.
**Overlooking support costs.** All three are free to use, but production environments typically need some form of commercial support. Factor in the cost of TuxCare, CIQ or Oracle support when making your decision.
## Conclusion
Rocky Linux, AlmaLinux and Oracle Linux are all mature, production-ready alternatives to RHEL. The choice depends on your priorities: maximum RHEL compatibility (Rocky), community governance and flexibility (AlmaLinux), or kernel innovations and vendor backing (Oracle Linux).
The best way to decide is to try them. Deploy a test server with each distribution, run your workloads, check compatibility with your software stack, and measure what matters for your specific use case.
## FAQ
**Is it safe to run RHEL alternatives in production?**
Yes. All three distributions power production workloads worldwide. CERN and Fermilab run AlmaLinux for physics research. Rocky Linux is used across enterprise and hosting environments. Oracle Linux runs Oracle Cloud Infrastructure and Exadata systems. Each distribution has a 10-year support lifecycle with regular security updates.
**Can I switch between Rocky, AlmaLinux and Oracle Linux later?**
Yes, though with varying difficulty. AlmaLinux’s ELevate project supports migration between any RHEL-based distribution. Rocky’s migrate2rocky tool only converts to Rocky. Oracle provides centos2ol for conversions. A clean reinstall on a new server is often the safest approach.
**Do all three support containers and Kubernetes?**
Yes. All three ship with Podman, Buildah and container tools from the RHEL ecosystem. Kubernetes works identically on all three since it depends on the kernel and container runtime, both of which are RHEL-compatible across all distributions.
**Will RHEL alternatives still exist in five years?**
The structural safeguards suggest yes. AlmaLinux is owned by a nonprofit foundation. Rocky Linux has significant venture funding and an active community. Oracle Linux is backed by one of the largest technology companies in the world. The OpenELA initiative adds an extra layer of protection for the source code.
https://serverspace.us/support/help/data-recovery-with-recuva.mdLearn how to recover deleted data from disks and other physical storage devices using Recuva and R-Studio. Step-by-step guide for safe and effective data restoration.
It often happens that a disc fails and you need to save your remaining data on it, to understand how this works we can take a look at the diagram below! A disc stores all data in binary form, meaning your photos, documents are a set of ones and zeros or files.
Therefore, the algorithm of work with it is as follows: we address the file through the operating system of our PC, then the request will go to the file system with a table of file addresses. At the address on the disc we will find the necessary segment of ones and zeros, that is our file.
Screenshot №1 — Schema
When deleting the file is not erased from the disc, but remains with a note that the space is free for writing. That is, if the turn to this free block does not reach, the file will remain and will be available for reading, also it is necessary to take into account the peculiarities of work at a low level! Drivers may not allow to delete data completely from the first time, so it is possible to restore them at a lower level with special software.
## Which programme to use to recover deleted files?
To recover files from a disc let’s determine the type of your problem:
- If you just accidentally deleted data from the disc and it is not physically damaged, then use Recuva;
- If the disc is not displayed or works, but with errors, then Raw Recovery method is suitable, which is used in PhotoRec, R-Studio, TestDisk (partition and boot area recovery);
- If the disc has physical damage, it is advisable to first make a bit-by-bit copy via dd (Linux), Clonezilla.
In this article we will consider the first two, and for critical cases we have prepared a separate article!
## Recuva to recover deleted files – free of charge
Install Recuva by pressing Win+X → Terminal/PowerShell(Administrator) and type the command:
```
winget install Piriform.Recuva
```
Screenshot №2 — Installation
Confirm the installation in the pop-up windows and wait for it to finish, then search for Recuva in search or on your desktop:
Screenshot №3 — Search software
Select the type of files you need to recover:
Screenshot №4 — Choose type of file
Next, select the location or device from which you want to perform the recovery, which can be other drives:
Screenshot №5 — Location of recovery
Next, select Start, or for a deeper scan, mark the Enable Deep Scan checkbox:
Screenshot №6 — Start recovery process
Wait for Recuva to look through your media and find the files on it that are not overwritten.
Screenshot №7 — List of recovered files
Then select only what you need to recover, or select all files. This method is only possible when the file system is not corrupted and all data is easy enough to find!
## R-Studio – for file and file system recovery
Download the installer from an available website, preferably the manufacturer. After starting the installation, at a certain point the application will notify you about possible damage to the system, if not used correctly.
Screenshot №8 — R-Studio
Because this is no longer just working with file systems, but also changing them, it is important to identify the system and normal discs in the process:
```
diskpart
```
In the utility window that opens, type the command to output partitions:
```
list volume
```
Screenshot №9 — Disk recognition
Windows is the system partition, the kernel lies there, if you need to recover data from it, then connect it to another PC and boot it separately!
For regular discs, everything is easier, you can continue to select Next and wait for the end of the software installation. In the window that opens, we can see brief information about the disc and its partitions:
Screenshot №10 — Disk scanning
Select an entire disc or desired logical partition to search for lost files by signature:
Screenshot №11 — Files recovery
Then select the options that suit your requirements and choose a folder to save the results:
Screenshot №12 — Processing
After that, wait for the end of the recovery process, since the software only has a demo mode available, recovery is possible for file sizes up to 256KB. However, it should not be a problem to find a solution for this task.
Recovering deleted files via Recuva allows you to find all sorts of hidden files, while R-Studio can repair and rebuild file systems and scan them in detail, so the data recovery process should be as efficient as possible! In this article we have reviewed the recovery of deleted files with freeware and commercial solutions!
## Conclusion
Recovering deleted files from disks and other storage devices is a critical skill, especially when data loss can disrupt personal or business activities. Tools like Recuva offer a straightforward way to restore accidentally deleted files when the file system is intact, while R-Studio provides a more advanced solution for damaged disks and corrupted file systems. By understanding how file deletion works at the binary and file system level, you can maximize your chances of successful recovery. Always remember to act quickly, avoid writing new data to the affected disk, and consider creating a bit-by-bit backup for physically damaged drives to prevent further loss.
## FAQ
- **Q1: Can I recover files that were deleted a long time ago?**
A1: Recovery depends on whether the deleted files have been overwritten. If new data has not replaced the old files, Recuva or R-Studio may still recover them.
- **Q2: Which tool should I use for accidental deletions?**
A2: For simple accidental deletions where the disk is healthy, Recuva is usually sufficient and free.
- **Q3: What if my disk is corrupted or not recognized?**
A3: Use advanced recovery tools like R-Studio, PhotoRec, or TestDisk to recover files and repair file system structures.
- **Q4: Is it safe to recover files from my system partition?**
A4: No, it is recommended to connect the disk to another PC and perform recovery from a separate system to avoid damaging Windows or other OS files.
- **Q5: Can Recuva recover files from external drives or USBs?**
A5: Yes, Recuva supports external storage devices, USB drives, and memory cards as long as they are accessible by the OS.
- **Q6: How can I increase the chances of successful recovery?**
A6: Stop using the disk immediately, avoid installing new software on it, and use deep scan options in recovery tools for a more thorough search.
- **Q7: Does R-Studio have limitations in demo mode?**
A7: Yes, the demo mode allows recovery of files up to 256 KB. Full recovery requires a licensed version.
https://serverspace.us/support/help/nastrojka-split-brain-dns-v-windows-server.mdLearn how to configure Split-Brain DNS on Windows Server to resolve internal and external domain names differently. This setup helps separate corporate network traffic from external access efficiently.
In the corporate segment there are IS or information systems whose task is to provide storage, processing and transmission of data for the company’s business processes. Often they can be divided for internal and external users. The division itself can be at the application level, where there are rights and roles, or network.
The second option prevents possible attacks on internal users and is a more organic solution that will separate the IS servers of the DMZ zone and the internal network segment while preserving our DNS name. Let’s look at the situation in more detail!
## What is DNS Split?
DNS Split is a technology that adds a logical level of abstraction in the form of policies and associated zones over the server. Now instead of just storing records in domain name system and giving them to resolvers.
Screenshot №1 — Schema
It analyses the scope or area of the zone from which the client is accessing and returns the corresponding record according to its address. To understand the algorithm we will assume that the zone is a domain name, and it has child objects scope or area. Which will split the internal and external addresses, consider the example of DNS Windows.
## How do I configure DNS Split on a server?
Note that DNS must have configured interfaces on the network from which to receive requests. Suppose we have a resource called dodo.so that we need to configure it to resolve from different WAN and LAN segment addresses.
Microsoft offers two ways to separate all queries: to explicitly specify the necessary client subnets and bind them with policies to the scope of zones, or to bind DNS-server interfaces to the scope with the same policies. Let’s implement the second way.
If you don’t have a DNS zone yet, open Server Manager through Windows search. Select DNS in the left menu by right clicking on it, then DNS Manager. Right click on the server again and select New Zone, where you specify your new domain for the Windows DNS server.
Now go to the terminal or press the Win+X shortcut where you will select PowerShell (administrator):
Screenshot №2 — Windows manager
The zone is there, now we need a scope, for this we will prescribe:
```
Add-DnsServerZoneScope -ZoneName "dodo.so" -Name "int"
Add-DnsServerZoneScope -ZoneName "dodo.so" -Name "ext"
```
Screenshot №3 — New Scope
Also, by default, there is a default scope that can be used to handle the rest of the queries. Let’s make A-type entries, for two different scopes:
```
DnsServerResourceRecord -ZoneName "dodo.so" -A -Name "www" -IPv4Address "10.0.0.2" -ZoneScope "int"
DnsServerResourceRecord -ZoneName " dodo.so " -A -Name "www " -IPv4Address "192.168.1.2" -ZoneScope "ext"
```
Screenshot №4 — New resource record
And now that we have all the scopes with their respective entries, we can bind them to the server interfaces with policies:
```
Add-DnsServerQueryResolutionPolicy -Name "Policy-Int" -Action ALLOW -ServerInterface "eq,10.0.0.3" -ZoneScope "int,1" -ZoneName dodo.so
Add-DnsServerQueryResolutionPolicy -Name "Policy-Ext" -Action ALLOW -ServerInterface "eq,192.168.1.3" -ZoneScope "ext,1" -ZoneName dodo.so
```
Well after all the necessary interfaces are bound we can check the entries with the nslookup command:
```
nslookup 10.0.0.2 10.0.0.3
nslookup 192.168.1.2 192.168.1.3
```
The result is a DNS server that has logical abstractions configured to keep a single resource name for different network segments.
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №5 — Create Server
## Conclusion
Configuring Split-Brain DNS on Windows Server allows organizations to manage internal and external DNS resolution efficiently while maintaining a single domain name. This setup enhances security by separating internal corporate network traffic from external requests, reduces the risk of exposing sensitive internal resources, and ensures that clients always receive the correct IP addresses based on their network location. By using zone scopes and query resolution policies, administrators can create a flexible and scalable DNS architecture that supports complex corporate environments.
## FAQ
- **Q1: What is Split-Brain DNS and why is it used?**
A1: Split-Brain DNS is a method of configuring DNS so that the same domain name resolves to different IP addresses depending on whether the request comes from an internal or external network. It is used to enhance security and manage traffic between corporate and external networks.
- **Q2: Can Split-Brain DNS work with multiple internal subnets?**
A2: Yes, you can define multiple zone scopes and bind them to different internal subnets using query resolution policies, allowing precise control over which clients receive which records.
- **Q3: Do I need separate DNS servers for internal and external networks?**
A3: Not necessarily. Split-Brain DNS allows a single DNS server to handle both internal and external requests by using zone scopes and policies, though separate servers can be used for added security.
- **Q4: How can I verify that Split-Brain DNS is working correctly?**
A4: You can use the nslookup command from different network segments to check that each client receives the correct IP address according to its location.
- **Q5: Is Split-Brain DNS only for Windows Server?**
A5: While this guide focuses on Windows Server, Split-Brain DNS can also be implemented on other DNS platforms, such as BIND on Linux, using similar zone and policy concepts.
https://serverspace.us/support/help/git-branches-how-to-create-and-remove.mdLearn how to create and delete branches in Git for easy project management. Step-by-step instructions for working with branches!
Teamwork requires tools, and Git, or a repository version control system, is a good example for collaborative development and documentation. It allows team members to maintain their local parts of the project and make changes on a single server with the repository. An important mechanism is the Git branch system, which will be discussed in this article!
## What are Git branches?
**A branch or branch** is a **pointer to a series of commits **that are united on the basis of their pedigree. They allow you to introduce the functionality of parallel development and data storage relative to each other.
For example, you have a main project and it is stored in the main branch, files and data can be downloaded from it and documentation can be accessed. But bug fixes, new functionality is usually tested and maintained in a separate space, so as not to affect the main project – that’s what branches are for!
Screenshot №1 — Schema of work
Since a branch in Git is a pointer, it must reference at least one commit. Usually, when creating a new branch, the first commit is the one the user is currently working with. You can view your current commit with the git show command:
Screenshot №2 — Head
In this case, HEAD points to commit in main. This will be the first object referenced by the new branch, other changes to the working directory will be child commits. How does this work in practice?
## How do I create a local and remote Git branch?
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №3 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways.
Go to your working directory folder or clone it from GitHub:
```bash
git clone [your-repo]
```
Screenshot №4 — Git clone
Or update an existing one using the command below. Note that origin points to the default path, if you need a different repository, specify it manually:
```bash
git pull origin
```
Screenshot №5 — Git pull
After that, let’s type the already known command and make sure that the right Git branch and commit is selected:
```bash
git show
```
Screenshot №6 — Head in Git
You can only create a branch in a remote repository if there is a local one on the device – this is due to the principle that the branch cannot be empty. To create a local branch, write the command:
```bash
git branch new_branch && git branch –list
```
Screenshot №7 — New Git branch
In order to start working with a branch, you need to switch to it and check the state of the repository:
```bash
git checkout new_branch && git show
```
Screenshot №8 — Switch to branch
In order to create a remote Git branch, you must run the push command against the selected commit:
```bash
git push origin new_branch
```
Screenshot №9 — Create remote branch
Ok, so what if a thread became unnecessary or was posted by mistake, how do you delete it?
## How do I delete local and remote branches in Git?
There are similar commands for this, to delete a local branch – switch to a neighbouring branch:
```bash
git checkout main
```
After that you can interact with it with the command:
```bash
git branch -d new_branch
```
Screenshot №10 — Delete local branch
The last line indicates that the branch with id – b782c51 was deleted, you can check the current ones with the command:
```bash
git branch –list
```
To delete a remote branch or a branch on a remote repository, you can use the git push command:
```bash
git push -d origin new_branch
```
Screenshot №11 — Delete remote branch
To check for changes, access the repository via the web or update it with git pull, after which the list of branches can be displayed with git branche.
This is a key mechanism when working on team projects using the Git system. Branches allow you to work on files in parallel with the main development pipeline, which speeds up user collaboration.
https://serverspace.us/support/help/linux-extended-file-attributes-on-the-system.mdDiscover Linux extended file attributes. Learn how they enhance access control, improve security, and help configure file system behavior effectively.
For correct work with files file systems were developed, which allow to set a single standard of data storage. It allowed to solve the problems of large size of stored data, long indexing, as well as deduplication and integrity control.
**A file system** is a set of rules or an algorithm by which data is organised and stored in a certain form so that it can be accessed by the OS. It also regulates the behaviour of files by its attributes and allows you to set certain parameters that can prohibit the deletion of files even to the root user! Let’s consider their operation and management in this article.
## How does the file system work?
A data storage device stores information as a long set of ones and zeros in a binary system, where they are organised into groups, thanks to a logical abstraction – the file system. Each file has its own headers, metadata, attributes and payload – the information itself.
Screenshot №1 — Schema of work
When accessing files, the user creates a system call, which is sent to the OS kernel. The kernel interacts with the file system itself, where it reads the attributes it needs. There are two types of attributes: access rights and behaviour flags. These are still attributes or properties of the file, but each of them has its own function.
The standard rwx access rights, which you have seen everywhere, define the rules for accessing sub objects to objects and are used in higher-level modes of operation. And behaviour flags define options for how files will be handled and they work at a lower level. So root, when working with a file that has the -i or immutable flag, will not be able to delete or modify it. The entire list of attributes is listed in the table below:
Screenshot №2 — All attributes
The list is quite impressive, so let’s look at the main ways flags can be used in practice!
## Attribute management
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №3 — Create Server
Let’s imagine that we are collecting logs from a machine and it is important that no one can tamper with them in order to preserve data integrity. For this purpose, the file system has an attribute that we can assign to a file:
```
sudo chattr +a /var/log/auth.log
```
Screenshot №4 — New attribute
You can view whether the attribute has been applied via the command:
```
lsattr /var/log/auth.log
```
After that, it will not be possible to change the data until a user with administrative rights removes this attribute with the opposite command:
```
sudo chattr -a /var/log/auth.log
```
Screenshot №5 — Remove attribute
In order to prohibit file deletion or modification, let’s write the command and check its operability:
```
sudo chattr +i /var/log/auth.log && sudo rm /var/log/auth.log
```
Screenshot №6 — Deny attribute
Immediately after the attribute has been given, when the file system is accessed, it will refuse to perform actions to modify the file. It can be used as a protection against accidental deletion for admins or as an additional work rule for ordinary users who already have access to files.
Also for files it is possible to switch on journaling, it will allow to save the list of actions with files in a separate log. This will help when restoring the integrity of the system itself. However, this function is usually specified directly when installing the file system.
These attributes allow you to add low-level functionality to change, which only the administrator can. They override the standard access differentiation system by making changes globally for all users of the system. Such a solution is useful when an intruder has gained access to an account. Which has the ability by permissions to modify files, but this is forbidden by the file system attribute, only if it is not root.
## Conclusion
Extended file attributes in Linux provide a powerful mechanism for managing file behavior beyond standard permissions. With flags such as immutable (-i) or append-only (+a), administrators can significantly strengthen system security, protect logs from tampering, and prevent accidental deletion of critical files. These attributes work at a lower level than traditional rwx rights, ensuring more granular control. Proper use of extended attributes can serve as an additional security layer, especially in cases when user accounts are compromised.
By understanding and applying these attributes correctly, system administrators can improve data integrity, harden access control, and reduce risks of unauthorized file changes.
## FAQ
- **Q1: What are extended file attributes in Linux?**
Extended attributes are low-level file properties (flags) that define behavior rules beyond standard permissions, such as preventing deletion or forcing append-only mode.
- **Q2: How do extended attributes differ from rwx permissions?**
Standard permissions (rwx) control access levels for users, groups, and others. Extended attributes override this model by applying global restrictions that even root must respect.
- **Q3: How can I check attributes of a file?**
Use the command:
```
lsattr filename
```
It will display all active attributes for the given file.
- **Q4: Can root bypass extended attributes?**
Root cannot directly modify or delete files with +i or +a flags set. However, root can remove these attributes with chattr -i or chattr -a, after which normal operations become possible.
- **Q5: When should I use the immutable attribute?**
Use +i when you need to fully protect important files from deletion or modification, for example, critical configuration files or security logs.
- **Q6: Do all Linux file systems support extended attributes?**
No, support depends on the file system type. ext2, ext3, and ext4 support them, but not all file systems implement the same attribute set.
https://serverspace.us/support/help/linux-password-tools-and-algorithm.mdLinux Password Authentication: Tools, Algorithms, and PAM Explained
Modern operating systems are no longer single-user terminal windows with a shell. Now they are multitasking multi-user operating systems with a graphical interface and the ability to process data in parallel. In this connection there is a need to organise work between users: their authorization and authentication. In this article we will consider the algorithm of authentication in Linux and how you can manage one of them.
## What is PAM and what do Linux passwords have to do with it?
PAM or Pluggable Authentication Module is a single service that integrates authentication providers, allowing you to choose any scenario and the order in which they are used. They are considered system methods via /etc/passwd, /etc/shadow, where it compares the user and his entered password in the form of a hash. It can be LDAP, Kerberos, NTLM, SSH and others.
Screenshot №1 — PAM schema
The way it works is that the user requests the execution of a file as a system call to the OS kernel. After the PAM module intercepts and processes the request according to the script prescribed for working with the service, determining access for the user. New providers for authentication can be connected by installing appropriate packages and libraries.
Classically, system password checking is used in the /etc/shadow directory using the pam_unix.so module. The user enters authentication data, it is hashed and compared to the hash in the directory. An example of an entry is as follows:
```
user:$6$JdjJd8$:18355:0:99999:7:::
```
It’s immediately clear that user represents the user login and the value $6$JdjJd8$ is the password hash, but what comes after that? This is the metadata, where 18355 is the date the password was last changed. The next fields are responsible for minimum/maximum authentication data expiration, warnings before expiration, and lockouts. The module accesses the file and reads all these values and then gives PAM a true or false response.
Let’s take a look at the tools that will allow you to specify password settings in the /etc/shadow file.
## Linux password tools
The most popular password utility is passwd. Simple functionality that includes changing, locking and unlocking, password validity and deletion. Let’s create a new user and test all the features of the utility on him!
```
useradd koldek -p 123321
```
Screenshot №2 — New account
In the useradd utility, the -p option allows you to set the password in one command at a time and use it for authentication.
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №3 — Create Server
Let’s go back to the terminal and assume that we have forgotten the password. Then it is necessary to reset it via users in the sudo or root group:
```
sudo passwd koldek
```
Screenshot №4 — New pass
Great, now we won’t forget him for sure! But, what if the employee quits, the device is not connected to a domain controller and a separate account has been issued for the employee. One of the options is to block logging into the account, let’s do it with the command:
```
passwd -l koldek
```
Let’s change the user to the same pre-created koldek2 and try to authenticate:
Screenshot №5 — Lock pass
An error occurs, without any details about it. The su command accessed the virtual terminal, after which the pam module generated a request for authentication under the new user koldek2. Where the record was checked and it was indicated in /etc/shadow that authentication under this record is not possible. Pam went through the whole script and returned an error.
Let’s imagine that we need to log in as this user. Let’s change the password and unlock the account:
```
passwd koldek && passwd -u koldek
```
Next, let’s check if the authentication works, log in to koldek via koldek2 and write the command:
```
whoami
```
Screenshot №6 — Unlock
Great, the last entry indicates that we have successfully authenticated to koldek on the device. You can prevent the user from being authenticated by simply removing their password via the command:
```
passwd -d koldek
```
Let’s consider another case when your user has been using the same password for a long time and you need to change it. For this purpose, let’s specify a forced change during authentication:
```
passwd -e koldek
```
Or manually specify the expiry date for the user’s password:
Screenshot №7 — Force expired
```
passwd -X 90 koldek
```
Screenshot №8 — Date of password expiration
And the command with the -S option allows you to view the status of the user’s password and see if the settings have been applied. In general, these are all the options and features of local authentication on the device via the pam_unix.so module. More complex solutions such as TOTP or LDAP authentication will be covered in the next articles!
## Conclusion
Linux authentication is a flexible and powerful system, where **PAM (Pluggable Authentication Modules)** plays a central role. By integrating various authentication providers and working with the **/etc/shadow** file, PAM ensures that password management is both secure and adaptable. With simple tools like passwd, administrators can manage user credentials, enforce password policies, lock or unlock accounts, and maintain proper security hygiene. Understanding how authentication works at the system level is essential for both infrastructure protection and effective user management.
## FAQ
- **1. What is PAM in Linux?**
**PAM (Pluggable Authentication Module)** is a framework that allows Linux systems to integrate different authentication providers, such as local passwords, LDAP, Kerberos, or SSH.
- **2. Where are Linux user passwords stored?**
User password hashes and related metadata are stored in the /etc/shadow file, which is accessible only to privileged users (root).
- **3. What is the role of the pam_unix.so module?**
The pam_unix.so module checks local user passwords by comparing the entered value (after hashing) with the stored hash in /etc/shadow.
- **4. How can I change a user password in Linux?**
You can use the passwd username command to change a user's password. For example:
sudo passwd koldek
- **5. How do I lock or unlock a Linux user account?**
Lock: passwd -l username
Unlock: passwd -u username
- **6. How can I force a user to change their password at next login?**
You can expire their password with:
passwd -e username
This will require the user to set a new password upon the next login.
- **7. Can I set password expiration policies in Linux?**
Yes, for example:
passwd -X 90 username
This forces the password to expire after 90 days.
- **8. What happens if I remove a user's password?**
Running passwd -d username removes the password, which prevents login with password authentication unless another method (like SSH key) is configured.
- **9. Is local authentication with /etc/shadow secure?**
Yes, as long as the file is protected and strong hashing algorithms (like SHA-512) are used. However, for enterprise environments, additional methods such as LDAP or multi-factor authentication are recommended.
https://serverspace.us/support/help/auditd-linux-logging-utility.mdLearn what Auditd is, how Linux auditing works, and how to install, configure, and write audit rules to monitor system activity and security events.
Modern operating systems generate an enormous number of events every second, making manual monitoring impractical—especially in enterprise environments where event rates can exceed thousands per second. While Linux systems typically rely on syslog-based logging and Windows uses Event Logs, these mechanisms are often insufficient for detailed security auditing and compliance requirements.
But often the functionality of standard solutions is not enough, for example in Linux syslog there are no audit policies that would determine what of all the information should be collected and what should be ignored. There are alternative solutions just for that!
## How does Auditd work?
Auditd is a Linux auditing subsystem designed for low-level monitoring of system calls and kernel events using configurable audit policies. The composition of such a subsystem is a combination of:
- auditctl client utility, which passes to the configuration daemon, new rules;
- auditd daemon, which occupies file sockets to listen to auditctl calls and logs from the kernel;
- ausearch utility to search the logs for parameters;
- /etc/audit configuration files + plugins + audit policies or rules.
Since the execution of almost any action on the OS is accompanied by a reference to the kernel through system calls, the process of logging the actions of subobjects in the OS is as follows.
Screenshot №1 — Schema
For example, a process with SSH server has decided to occupy a network socket and informs the kernel about it through the socket() system call. The latter, in its turn, processes its request and generates a record specifying all the main parameters of the call, after which it saves it in the audit buffer. From there the logs are sent via IPC or Inter Process Communication algorithm to the file socket, which is occupied by the auditd daemon. Inside it the process of filtering by rules already takes place and it selects what should be saved from the received data.
If necessary, the filtered packets can be sent to the collection servers, which will pass the data to SIEM or other protection systems. But in this article we are going to look exclusively at the subsystem on the local host.
## How to install and configure Auditd?
To install it is enough to use the base repository, where the auditd binary is already included, the installation for different distributions will be different. For deb-like distributions you need to use the command:
```bash
apt update && apt install auditd -y
```
For rpm-like distributions, commands like:
```bash
dnf install auditd -y
```
Screenshot №2 — Installation of software
After that, the auditd daemon for listening to logs and processing them will be automatically raised:
```bash
systemctl status auditd
```
Screenshot №3 — Status of service
The whole subsystem is deployed automatically and independently of the system administrator. When we are sure that the required service has been successfully launched, let’s move on to configuring the policies that will determine what we will store from the mass of existing events. To do this, let’s open the rules/policies directory, in your case you can name the rule by any convenient name, but only with the .rules file format:
```
nano /etc/audit/audit.rules
```
Screenshot №4 — basic-policy
Consider each of the lines presented in the default config:
- -D option removes previously added rules to the service memory, to avoid conflicts;
- -b option sets the size of the audit buffer for events before writing a file to the log;
- -backlog_wait_time 60000 option sets the maximum time (in milliseconds) that the audit daemon will wait for events to be sent if the buffer is full. In this case, it waits up to 60 seconds before forcibly clearing the log;
- -f 0 – use minimum message level (silent);
- -f 1 – recording only critical events (compressed output);
- -f 2 – more detailed messages (default).
And also the audit policy rule itself, which will filter out the necessary events from a heterogeneous array of events.
## How to write rules for auditd?
There are two types of rule writing in auditd, the first type is for monitoring system calls to files and directories:
```
-w /etc/passwd -p wa -F uid!=0 -k soc-audit-passwd
```
This rule allows registering requests to work with a file system object in write and attribute modification mode. The -w option specifies the path to the monitored file, the -p option specifies the rwx file attributes to monitor, and the -F option filters. If all these options are true, the event is written to the log file of the service!
Or a more extended format of the second kind, where the system call and the filter applied to the event will be explicitly specified:
```
-a always, exit -S execve -F path=/usr/bin/python3 -F auid!=0
```
Where the -a (append) option will add a new rule to the end of the list, the always/never action determines whether to log the event or not. The -S determines the type of system call, here are the main ones:
- **open** – accessing a file system object;execve – loads the application into the process memory. It can be used to track software startup, because the first fork() system call creates a
- **process**, and execve loads files into the memory of the new process;
- **socket** – call to create a socket for inter-network/inter-process communication between applications;
- **listen** – call to start listening for incoming requests on the socket;
- **setreuid/setregid** – call implements privilege escalation/reduction for a process.
## Real-world use cases
For tools such as SIEM/EDR/Zabbix, etc. that allow monitoring the performance and security of the existing infrastructure, logs from machines are required. Consider a task where you need to track who ran an infected Docker container by elevating permissions from normal user to root.
Let’s trace the system calls to start the container with the command sudo strace -o ss.txt :
```
sudo strace -f -o ss.txt sudo docker exec ubuntu /bin/bash
```
Screenshot №5 — Syscall trace
The output is quite large, using the grep utility you can filter by key system calls from the ss.txt file:
```
grep "execve" ss.txt
```
Screenshot №6 — Execve search
As we can see, two processes with two PIDs 2545, 2547 were started, which loaded executables from the /usr/bin/sudo|docker path. Let’s write a rule for the found event:
```
echo "#Monitor exec Docker with sudo
-a always,exit -F arch=b64 -S execve -F exe=/usr/bin/sudo -F auid!=0
-a always,exit -F arch=b64 -S execve -F exe=/usr/bin/docker -F auid!=0" | tee -a /etc/audit/rules.d/audit.rules && auditctl -R /etc/audit/rules.d/audit.rules
```
Screenshot №7 — Add new rules
After executing the command to load rules into the logging subsystem kernel module, it is necessary to check the correctness of the performed operation:
```
auditctl -l
```
Screenshot №8 — Auditctl
At the end we can see our loaded rules, so the operation was successful! Let’s start docker from sudo and commit the logs in the standard file:
```bash
sudo docker run debian && cat /var/log/audit/audit.log | grep 'execve'
```
Screenshot №9 — Collected logs
After filtering through the many recorded events in the saved logs folder, we can see system calls to execve with an AUID or real UID other than root. This event may indicate an IS incident that violated the policy, and therefore may be an attack! Logs are used for proactive detection and mitigation of threats, as well as monitoring the state of services and the system as a whole.
Generalising the algorithm of service operation, let’s specify that when a process is running in the OS, it generates a lot of requests to the kernel, which can be tracked. The audit policy allows selecting the most necessary and important events out of millions of events, which can then be transferred to analytical tools or used for debugging the system!
Auditd provides a powerful and flexible auditing framework for Linux systems by monitoring system calls and kernel-level events. Through carefully designed audit rules, administrators can filter millions of events and retain only the most critical security and operational data. This makes Auditd an essential component for security monitoring, compliance, incident investigation, and advanced system diagnostics.
https://serverspace.us/support/help/manage-disable-uac-in-windows.mdLearn how to manage and disable User Account Control (UAC) in Windows with step-by-step instructions to improve usability and adjust security settings.
Windows has a set of mechanisms to ensure its protected state at different stages of operation. WFP is used for network packet filtering, identification and authentication takes place using lssas.exe or AD-base, and EventLog is responsible for the auditing subsystem. But one of the most important components in this chain is UAC or User Access Control.
In this article we will consider how to configure and apply it on a local device and a domain node separately. As well as what tools and methods hackers use to bypass it, consider their mitigation.
## What is UAC?
The UAC or User Access Contol security mechanism is designed to control privilege escalation on the operating system by tracking running processes. This approach will track unauthorised actions and protect the device from executing malicious files. Classically, this window looks like this:
Screenshot № 1 — Confirmation
In this case, the user is notified that the application he is launching has all the necessary signatures and the file is on the disc. This notification can have several variations, depending on the policies set on the device: launch in a secure window, with password confirmation/common consent window.
## Configuration on the local device
To configure this security mechanism we will use UAC settings, which will set the basic policy and Group Policy will specify the details and finer settings. Click and type Win(button)→UAC(text in the search box)→Change User Account Control settings. You will see a window with sliders with 4 levels of proposed policy:
Screenshot № 2 — Default settings
The fourth and topmost level is labelled as Always Notify, which means you need to be notified of every action the user performs, including Windows system settings. The request is checked in a secure window.
The third level, which offers less stringent protection, will notify of changes to the device by applications other than system settings, but will still open a window in safe mode.
The second level offers the same as the third level, only in this case the confirmation window will be launched in a normal window, which the intruder can confirm.
The first level of the policy disables any influence of UAC on running processes. In which tasks this mechanism can collide with another and interfere with the device. Therefore, the answer to the question: 'How to disable Windows UAC?', is the powershell command:
```
Set-ItemProperty -Path REGISTRY::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System -Name ConsentPromptBehaviorAdmin -Value 0; Set-ItemProperty -Path REGISTRY: :HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System -Name ConsentPromptBehaviorUser -Value 0
```
After running this command, UAC requirements will drop to the first level of the Never Notify policy. The finer details of verification and notification settings will be discussed below in the solutions for domain hosts, which will also work for local machines.
## Configuration on a domain device
In this configuration option there are more flexible parameters that will allow you to define the behaviour for each user group separately and which verification method will be used. Let’s open the run window with the Win+R keys and type the command:
```
gpmc.msc
```
Go to your domain policy configuration and a window will open in front of you:
Screenshot № 3 — GPO
Let’s go to the folder with local domain policies at the path Computer Configuration → Windows Settings → Security Settings → Local Policies → Security Options:
Screenshot № 4 — GPO with security options of UAC
In fact, this is a set of the same parameters that made up the policy in the UI-interface, only in this case there are also possibilities of custom configuration and distribution to nodes. Let’s consider each of the policies separately:
Screenshot № 5 — List of parameters
The key settings in this case are ConsentPromptBehaviorAdmin/User, which allow you to define the behaviour of UAC when a user’s privileges are escalated, and what data should be requested. The settings will be different for each infrastructure, but there are common practices where the field settings matter:
- FilterAdministratorToken – 1 (enabled);
- EnableUIADesktopToggle – 0 (disabled);
- ConsentPromptBehaviorAdmin – 2 (requesting consent on a secure desktop);
- ConsentPromptBehaviorUser – 3 (prompt for credentials);
- EnableInstallerDetection – 1 (enabled for home) / 0 (disabled for enterprise);
- ValidateAdminCodeSignatures – 1 (enabled);
- EnableSecureUIAPaths – 1 (enabled);
- EnableLUA – 1 (enabled);
- PromptOnSecureDesktop – 1 (enabled);
- EnableVirtualisation – 1 (enabled);
- InteractiveLogonFirst – 1 (enabled for corporate) / 0 (disabled for home).
After the policy is applied, you should wait until a node in the domain receives the new rules, or force the new rules on the required node with the command:
```
gpupdate /force
```
Screenshot № 6 — Update GPO
This mechanism allowed us to set up an additional layer of protection that controls privilege escalation when requesting a change of rights. The main tools in this case are requesting account data and requesting consent in a secure window, which allows for additional verification to ensure that the subject has rights to the object!
https://serverspace.us/support/help/how-to-test-speed-of-the-disk.mdDiscover effective methods on how to test the speed of your disk. From benchmarking tools to performance analysis.
## Why we use estimate tools?
We utilise stress tools in an attempt to evaluate the behaviour of our systems under high loads. Stress testing provides us with real time data that allows for adjustments to be made if necessary before launching into live services, helping to avoid possible failure points or slow performance times due to increased user volumes. So in order to meet customer expectations and ensure a satisfactory service we use stress test tools.
## How to check disk?
One of the main component of the server which also we need to keep in our mind – disk! Absolutely, no one high load test cannot be go with out testing health and speed of disk system.
Unfortunately, in the internet there are many way to check, which drive you in the Spanish shame:
- science article with described estimated speed of cluster FS with dd utility and enabled file cache;
- usage bonnie++;
- usage iozone;
- usage cp utility with counting time.
All these methods are fundamentally incorrect, in that instruction we will not consider why you don't use them. But if explain in few words part of the program needed to estimate speed of closing and opening file, some utility estimate linear speed, that isn't max speed of the disk or real productivity and etc.
For fast checking server we will use sysbench, that method also don't clean, but allow to estimate rapidly and close to real value!
For that we need to update indexes and upgrade packages, by the command:
```bash
apt update && apt upgrade
```
Screenshot №1 — Update package
Wait till the process will end, now we can download needed package:
```bash
apt install sysbench
```
Screenshot №2 — APT
Sysbench allows us to take measurements with various algorithms, which provide synthetic high load. We will use method with random value, which will be write and read.
We need to prepare data test if the size of the test file is less than the RAM, then when testing solid-state or hard drives, the system can use the RAM cache to store data. This can lead to distortion of the test results, since read and write operations will be performed in RAM, and not on the disk itself. It is recommended to use test files exceeding the amount of RAM to evaluate the actual performance of the disk subsystem.
```
sysbench fileio –file-total-size=10G prepare
```
Screenshot №3 — Test data
Then we finally run our test:
```
sysbench fileio –file-total-size=10G –file-test-mode=rndrw –time=300 –max-requests=0 run
```
Screenshot №4 — First test
The significance of thread count becomes apparent when considering tasks that involve the disk subsystem and can be executed simultaneously. Increasing the number of threads has the potential to enhance the efficiency of disk resource utilization, making it a valuable consideration for optimizing performance in scenarios involving parallel tasks
```
sysbench fileio –file-total-size=10G –file-test-mode=rndrw –time=300 –max-requests=0 –threads=4 run
```
Screenshot №5 — Second test
If we don't want to save temporary giant file with test data then clean that by the command:
```
sysbench fileio cleanup
```
Screenshot №6 — Clean up
As the result we can use average speed of disk, as we can see our SSD have great result!
Stress testing is an indispensable practice for evaluating system behavior under high loads, ensuring optimal performance and preemptively addressing potential issues. While examining various aspects of server performance, it is crucial not to overlook the significance of disk health and speed.
https://serverspace.us/support/help/how-to-limit-in-the-mysql.mdLearn how to limit your MySQL database queries effectively with this comprehensive guide. Explore the SQL LIMIT clause and it's syntax!
One of the limitations display function for identify values in the table — Primary Key. That represent abstract termin unified list of rules, that help to build relation with different tables by use foreign key. Values should be unique and not NULL. For example, imagine that we have online store and we need to numerate our customers, where may be the same name, date of birth and another personal data. In that case we will use that limitation to identify needed customer:
```sql
CREATE TABLE client (
identificator INT NOT NULL AUTO_INCREMENT,
first_name VARCHAR(30) NOT NULL,
PRIMARY KEY (identifier, first_name)
);
```
We create table **client **with column **identificator** and **first_name**, then below we write PRIMARY KEY parameter and identificate columns for that. Test how that work, our manager or system add data with two clients:
```sql
INSERT INTO client (identificator, first_name) VALUES ('1', 'Loren');
```
And second client by the manually command:
```sql
INSERT INTO client (identificator, first_name) VALUES ('2', 'Sara');
```
Let’s see what we get in the result of that manipulation:
```sql
SELECT * FROM client;
```
Now every record in that columns are identifier and unique, if our manager will try to post new data with the same name or id, they will recieve error message:
Screenshot №3 — Error message
It is important restriction in the modern system and application, where we need to save personal data, informations about banking payments and other sensitive information, system should work properly! If you want to remove PRIMARY KEY you need to write:
```sql
ALTER TABLE client DROP PRIMARY KEY;
```
That command delete key from your table!
## UNIQUE & NOT NULL
Next restriction, have one distinguish with method described above. UNIQUE guarantee all record in the column will have unique value! Already we have created table and now we need to modify they, by add new parameter:
```sql
ALTER TABLE client ADD COLUMN email VARCHAR (31) NOT NULL UNIQUE;
```
Check table format using early described command:
```
DESC client;
```
First UNIQUE key will transform into PRIMARY KEY, if they hasn’t exist already, due to necessary identify each rows . In that case you need add primary as we described above or create another one column with UNIQUE key:
```sql
ALTER TABLE client ADD COLUMN email_reserv VARCHAR (31) NOT NULL UNIQUE;
```
And show format into the table:
```
DESC client;
```
Screenshot №4 — UNIQUE key
As you can see above in the first table key is PRIVATE, but also we add another column and key value was set to UNIQUE. Have a look for our example, manager again try to add the same column email as they write:
```sql
INSERT INTO client (id, email, email_reserv) VALUES ('1′, 'email@mail.com', 'reserv_email@mail.com');
```
And the second duplicate row:
```sql
INSERT INTO client (id, email, email_reserv) VALUES ('2′, 'email@mail.com', 'reserv_email@mail.com');
```
Screenshot №5 — Duplicate row
That help to save integrity, avoid system issues and increase performance of database.
In last two methods we haven’t talked about another one limitation — NOT NULL. The cell in the database should have determine type or value, but there is situation when we identify values in the process of work system.
**Important to now! **NULL doesn’t represent 0 value, it’s literally emptiness. In the comparison you can imagine stopper, which have own properties, but isn’t value!
## DEFAULT & CHECK
Go ahead and look at the nevertheless values limitations DEFAULT and CHECK. They execute function which also assigned with their name. DEFAULT intend for write early prepared value in the situation when cell in the DB doesn’t get data, that help to avoid issues and set default value. CHECK represent list of rules for filtration entering data, if their fit into the rules, they go into, in a different way denied. In our store we can’t sell our product to child and teenager, then we need to add filtering rule and by default value will eighteen:
```sql
ALTER TABLE client ADD COLUMN age INT CHECK (age BETWEEN 18 AND 65) DEFAULT 18;
```
```
DESC client;
```
Screenshot №6 — Format table
For check applied filtering rules we can enter data and we will see the result:
```sql
INSERT INTO client (id, email, email_reserv) VALUES ('4', 'mail.com', 'mail.gg');
```
```
DESC client;
```
And show entering data by the command:
```sql
SELECT * FROM client
```
Screenshot №7 — DEFAULT
In the table appears entity with id four and indicated default age, that help to prevent the same problem as we described above empty field, which may impact to the system. But if we doesn’t match to parameters, system can’t add row to the table:
```sql
INSERT INTO client (id, email, email_reserv) VALUES ('4', 'mail.com', 'mail.gg', '5')
```
Screenshot №8 — Error
If we build information system or program, then we can identify problem by the id or code of error. Enforcing data limitations within a database management system is a crucial practice for maintaining data quality, system security, and overall system reliability. By implementing these limitations, you can build robust and secure applications that effectively manage and protect data.
https://serverspace.us/support/help/tool-for-stress-test-servers-cpu.mdDiscover how to perform CPU stress tests on your server with sysbench. This guide explains installation, usage, and interpreting results to ensure server stability and performance under load.
## What is stress-tool?
Stress testing tools are a vital part of any software development or system optimization process, as they allow developers to identify potential issues with their systems before deployment. It should be noted that it has nothing directly related to user experience — the sole purpose is ensuring a smooth and glitch-free operation for all involved parties including clients/users! Here are some reasons why such instruments are beneficial:
- Stress Testing Tools provide insight into how software will respond under heavy load conditions — This is crucial information, especially if you’re launching or redesign a high-traffic online service with no room for performance hiccups (i.e., customer support complaints). A thorough examination of your system's response times helps to pinpoint weak points that need fixing and allows for optimized distribution/use of resources on the server side without causing bottlenecks;
- Testing software under heavy load is necessary as it reveals potential bugs/glitches — The more stress testing one performs, the greater likelihood they will find issues in their system (which may be overlooked using conventional methods). For instance: running two or three instances of popular browser games in rapid succession on identical hardware might reveal an incompatibility between different versions; while trying to simultaneously upload/stream a large file through multiple devices could expose whether there is enough bandwidth available to support all users at the same time;
- Stress testing tools provide valuable statistics/metrics — These can be used by administrators and developers alike during system maintenance checks (or when troubleshooting).
In that instruction we will consider one of the example such tool for testing CPU!
## Practice usage
Commonly for estimate how our system will work in the production, we need to make plan. Split our system for several parts: **software**, **hardware** and **network**. All of them needed to be benchmark with average value of performance. In that part of instruction we will consider estimation of server’s CPU on the Linux machine. Which occupied large part of product server in the world. Also for the system process influence disks speed, RAM and etc.
Firts of move in any manipulation it’s updating package in the system by one command below:
```bash
apt update && apt upgrade -y
```
Screenshot №1 — Update package
We will use sysbench for make intense and express test our server without installation complex software, that can be useful for situation when we need estimate server in determine deadline. And answer how that will work? Install process isn’t complexity:
```bash
apt install sysbench
```
Screenshot №2 — APT
Wait till process will be done and now we can use utility for test. Stop anything useless services or daemon which you will not use in the system. Syntax of command looks like ** sysbench [options] [testname] command **that multitool can check also RAM, I/O system and etc. but we look at the CPU section. For test you need use command:
```
sysbench cpu –cpu-max-prime=30000 run
```
Screenshot №3 — Example of usage
In the picture you can see different metrics: speed, latency and threads fairness. We make test by solving 30 000 prime numbers, but you can choose any else suitable test. By the default utility use one of the threads, modern program application use at least 2 or more threads, therefore we need options that model load of software with traffic. For that we can use:
```
sysbench cpu –cpu-max-prime=30000 –threads=4 run
```
Screenshot №4 — Example of usage with threads
That test we make on the machine with 1 core process with possibility to process 4 threads, but what if we increase our power? Let’s make equal test on the machine with 4 core CPU and possibility to process 16 threads. For clearness of experiment we run the same test:
```
sysbench cpu –cpu-max-prime=30000 –threads=4 run
```
Screenshot №5 — More power
Average value rapidly down to the 6X! Also that utility can use for comparison or just for estimate power of server component!
In this instructional guide, we explored an example of a stress testing tool for testing the CPU, focusing on sysbench for Linux machines. The guide covered the process of updating packages, installing sysbench, and conducting CPU stress tests. The practical examples demonstrated how to evaluate server CPU performance, highlighting the impact of varying factors such as the number of threads and CPU cores. The guide concluded by emphasizing the utility of stress testing tools for comparing server components and estimating system power.
## FAQ
- **Q1: What is a stress testing tool and why is it important?**
A1: Stress testing tools simulate heavy workloads on your system to identify performance bottlenecks, bugs, and stability issues before deploying software or services in production.
- **Q2: Why should I use sysbench for CPU stress testing?**
A2: Sysbench is a lightweight, versatile tool that can quickly evaluate CPU performance, as well as RAM and I/O subsystems, without complex installations—ideal for fast and effective server benchmarking.
- **Q3: How does sysbench measure CPU performance?**
A3: Sysbench runs computational tasks, such as calculating prime numbers, to create load on the CPU and measures metrics like execution time, latency, and thread fairness.
- **Q4: How can I simulate real-world multi-threaded CPU load with sysbench?**
A4: By using the –threads option, you can specify the number of threads sysbench should use, allowing you to mimic workloads with multiple simultaneous processes.
- **Q5: Can sysbench help compare different server CPUs?**
A5: Yes, sysbench provides measurable metrics that allow you to compare CPU performance across different machines or configurations to make informed decisions.
- **Q6: Is it necessary to stop other services before running the CPU stress test?**
A6: It is recommended to stop unnecessary services or daemons to ensure that the test accurately reflects the CPU performance without interference.
https://serverspace.us/support/help/debian-errors-solution.mdResolve Debian Errors Effectively: Expert method and Troubleshooting Tips. Network, file system and another solution for your issue!
## Introduction
Troubles, errors, bugs and isn’t working servers that tiny list of potential problem for admins, specialist for information security and etc. All of us need to solve a appeared issue as soon as possible! But how to start, where is location of reason and how to deal with that? We will consider main area of potential problems: filesystem, services, units and etc. Because of massive amount of appears issue, they have own way to solve them. We can divide process of troubleshooting for two steps: analyze and apply solution!
## Firts step: Analyze
First of all, we need to identificate problem and area in the OS. We can see error message from the program, utility or service. For example system of Access control and account manage may print on the screen that error:
Screenshot №1 — Message of problem
We dont have permission of created file by **root **because of they have attribute 700. That mean root have rwx – right, but other user and group doesn’t have! For resolve that type of issue change attribute of needed file or catalogue. Also system may can’t notify you of happening inside, because of that doesn’t interrupt process. OS like black box with million process inside and we need to monitor they all, for that we have log files, that can help to deal with that issue.
**Warning!** But every system, application, service may have own log-utility or file for troubleshooting, you need to remind this!
Let’s have a look at the system log, so how exactly all system problem documentid here:
```
journalctl | grep "login" | tail
```
That command have several pipeline, let’s give some explanation. First command allowed to check log’s of the system, second help find text pattern in the amount of data and tail show end of logs. In the result we have end of login logs from the OS:
Screenshot №2 — Log message of login
It’s kinda funny to highlight, but on the server for the experiment goals, we doesn’t set public key and you can see reason of your potential problems: various of IP – addresses are trying to get into the machine. So set trusted public key. That help to figure out your source of problem. Also we can use that for check status one of the service if we see problem below, just type:
```
journalctl -xeu postgresql@15-main.service
```
Screenshot №3 — Problem with service
By the recommendations above we can check journal of action units:
Screenshot №4 — Problem with unit
At the screen above we can see filed Subject with problem Unit failed, check raw with tag **FATAL**. In that case problem in the configuration files, therefore unit can not be started!
## Second step: Solution
If you want to check services for their status, then you need to type:
```bash
systemctl list-units -t service -p important
```
Screenshot №5 — Active units
Let’s troubleshoot postgresql service, we go the config file and find error raw:
Screenshot №6 — Error raw
Delete them by the button combination **Ctrl + K** then save them and restart the service:
```bash
systemctl restart postgresql@15-main.service
```
And at the same time, we need to check status of the service:
```bash
systemctl status postgresql@15-main.service
```
Screenshot №7 — Working service
For your case you may need more exactly step for solving them, let’s search them by the same message error in the engine search or AI generative services, like GPT. In that article we consider monitor tools for solve your errors.
Also if you can not find reason of problem, but your machine work slowly, you can install Task Manager – atop:
```bash
apt install atop -y
```
Then just type **atop **and wait pop-up window with main running process:
```
atop
```
Screenshot №8 — atop
In the last column we can see CPU field with percentage of using process at the current time and if we see highload, then kill process or suspend them:
```
kill -SIGINT 332697
```
And second command for kill them:
```
kill -SIGTERM 332697
```
Screenshot №9 — PID trouble
If CLI don’t return message with issue, then it execute successful!
## Conclusion
Encountering errors and challenges within a Debian-based system is a common part of system administration. This guide has delved into various aspects of identifying and resolving these issues effectively.
https://serverspace.us/about/news/serverspace-at-web-summit-2025-from-alpha-to-beta.mdServerspace joins Web Summit 2025 in Lisbon as a Beta startup, showcasing cloud innovations and meeting the global tech community.
From **November 11th to 14th, 2025**, the Serverspace US team will once again join [Web Summit](http://
https://serverspace.us/about/news/halloween-at-serverspace-can-you-escape-the-server-maze.mdFace the ultimate Halloween challenge from Serverspace! Take the quiz and see if you can survive a night in the mysterious data center.
[https://serverspace.us/wp-content/uploads/2025/10/boo_news-1.svg](https://serverspace.us/wp-content/uploads/2025/10/boo_news-1.svg)When darkness falls and the air hums with mystery, we've prepared a special challenge for you. Step away from your daily tasks and take on our spooky Halloween quiz — **"Will You Survive a Night in the Data Center?"**
It's midnight. Your shift just ended but suddenly, the door slams shut. The familiar hum of servers fades into silence, and a red warning flashes across the screen: **"SURVIVAL TEST INITIATED."** You're trapped in the heart of the data center, and even the smallest mistake could trigger a disaster.
What happens next? That's up to you. Every choice will decide whether you make it through the night — or vanish into the digital shadows.
Face eerie system glitches, strange anomalies, and unpredictable incidents as you fight to restore stability before dawn. The questions won't be easy — but the brave always find their way out.
Dare to enter the dark maze of servers and see if you can survive the night!
[Take the quiz](https://serverspace.us/will-you-survive-a-night-in-the-data-center.md)
_[Serverspace](https://serverspace.us/index.md?utm_source=devto&utm_medium=articles&utm_campaign=main) is an international cloud provider offering automatic deployment of virtual infrastructure based on Linux and Windows from anywhere in the world in less than 1 minute. For the integration of client services, open tools like API, CLI, and Terraform are available._
https://serverspace.us/about/news/web-summit-2025-highlights-from-serverspaces.mdServerspace joined Web Summit 2025 in Lisbon as part of the Beta track, connecting with 70,000+ attendees, showcasing our cloud platform, and exploring new tech insights.
From November 11th to 14th, the Serverspace team took part in [Web Summit](http://
https://serverspace.us/about/blog/what-is-a-forex-vps-a-beginners-guide-to-reliable-trading.mdDiscover how Forex VPS hosting can boost your trading performance with faster speeds, low latency and high reliability. Learn how to choose the right VPS for futures trading, set up MT4 or MT5 and avoid common VPS mistakes.
# Forex VPS hosting: How to Pick and Set Up the Best VPS for Trading
Think of a VPS as a dedicated remote PC in a fortress-like data center, not your home. You get your own private slice of a powerful server with guaranteed resources, running a full OS you control via Remote Desktop. The game-changer is uptime. While your home setup is vulnerable, a professional data center has redundant power, cooling, and internet links with 24/7 monitoring. If something fails, backups kick in instantly. That’s why a reliable VPS is the essential foundation for 24/7 Forex trading or running a futures trading platform. You’re not just renting hardware—you’re buying institutional-grade reliability that lets you trade through any storm.
## What Is a Forex VPS and How Does It Work?
Forget the idea of a generic VPS floating in some random data center. A Forex VPS is a purpose-built, low-latency machine strategically positioned within the financial ecosystem. We're talking about servers physically located in top-tier data centers in hubs like London, New York, or Tokyo — often in the same facility or network cluster as your broker’s trading servers. This precise placement is what transforms basic cloud hosting into a high-performance, dedicated trading terminal.
Here's the real-world workflow: You secure a Forex VPS hosting plan, access it via Remote Desktop, and set up your entire trading environment — MT4, MT5, cTrader, or any other platform. Once configured, you can log out, and your charts, scripts, and Expert Advisors (EAs) run uninterrupted 24/7. Your trade orders no longer depend on your home Wi-Fi's reliability. Instead, they travel over ultra-fast, fiber-optic, data-center-grade connections directly to your broker. This slashes latency, prevents disconnection-related slippage, and provides the stability required for automated strategies. Plus, the same server can easily double as a VPS for futures trading — just install platforms like Thinkorswim, Quantower, or Sierra Chart alongside your Forex software. One machine, multiple markets, zero local downtime.
Why it's a game-changer for active traders:
-
**Eliminates Local Downtime:** Your home power or internet goes out? Your trades keep running.
-
**Sub-1ms Latency to Brokers:** Critical for scalping, arbitrage, and high-frequency EAs.
-
**Always-On Automation:** Lets your trading robots operate in a stable, optimized environment without needing your PC on.
-
**Consistency & Security:** A professional-grade setup isolated from your daily PC use, reducing risks of conflicts or crashes.
## Why Use VPS Hosting for Forex Trading?
Can you trade from a laptop at home? Sure. The question is how often that setup fails you. A neighbor cuts the cable, your router overheats, your PC decides to reboot mid-session — and your EAs go down with it. Vps hosting for forex trading removes most of that randomness and gives you a stable environment that doesn't care what happens in your living room.
With a good forex VPS hosting setup you get:
- terminals that run 24/7 even when your laptop is off;
- a stable wired connection instead of fragile Wi-Fi;
- access to your trading environment from any device;
- room to run several platforms or accounts side by side.
For discretionary traders this means fewer nasty surprises. For algo and scalping strategies, it can be the difference between "works on paper" and "survives the real market". The best vps for trading doesn't guarantee profit, but it stops your hardware from being the weak link.
## Key Benefits of Using a Forex VPS
Moving your platforms to forex VPS hosting upgrades your tools to something much closer to institutional infrastructure. One well-chosen forex hosting vps for trading can give you:
- **Always-on execution.** Your strategies and EAs keep running day and night, regardless of your personal schedule.
- **Consistent network quality.** Data-center-grade connectivity is far less likely to spike or drop at the exact wrong moment.
- **Scalability.** If you add more accounts or robots, you can scale CPU, RAM, and disk instead of buying new hardware.
- **Better security.** The server is isolated from other users and can be locked down with strong access rules.
- **Remote access.** You can check and manage trades from any device with internet, while the VPS does the work.
If you also trade futures from the same box, having a single vps for futures trading and forex simplifies your life: one environment, one set of tools, one place to monitor. That's why many active traders treat a VPS as standard equipment.
## Forex Latency and Speed: Why They Matter
Latency is the round-trip time between your platform and the broker's servers. On a chart it shows up as slippage and "I didn't get the price I saw". The whole point of forex VPS hosting is to bring your trading platform physically closer to the broker so that delay shrinks.
A forex hosting vps for trading placed in the same region as your broker often cuts latency from tens of milliseconds to single-digit numbers. That matters when you:
- scalp small moves;
- trade news or volatility spikes;
- run strategies that depend on tight stops.
When you evaluate the best vps for trading, don't just compare RAM and disk space. Check ping times from the VPS to your broker, and look at where the data centers are. If you're treating the server as both FX and vps for futures trading, location becomes even more critical because futures exchanges have specific geographic hubs.
## What Makes a Good Forex VPS Solution?
Not every "cloud server" is a good fit for vps hosting for forex trading. Marketing pages all claim "ultra-fast" and "premium", but a solid forex VPS hosting service usually has a few tangible traits.
Look for:
- **Clear resource allocation.** Guaranteed CPU and RAM, not vague "up to" numbers.
- **SSD storage.** Fast drives for logs, history files, and quick restarts.
- **Data centers near markets.** Locations close to the brokers and exchanges you actually use.
- **High uptime track record.** Realistic SLAs and monitoring, not just pretty badges.
- **Support that gets trading.** People who understand what MT4, MT5, and EAs are, not just websites.
The **best vps for trading** is the one where you know exactly what you're paying for, where it runs, and how fast issues are resolved. That clarity is more valuable than one extra gig of RAM on paper.
## How to Choose the Right Forex VPS Service: 3-Step Checklist
Instead of obsessing over every spec sheet, you can pick a forex hosting vps for trading with a simple three-step process.
**Step 1: Map your needs.**
How many platforms and accounts will you run? How many EAs per platform? Are you going to use the same server as vps for futures trading? How sensitive is your strategy to latency?
**Step 2: Shortlist providers.**
Filter by:
- data-center locations relative to your brokers;
- latency from test servers (most good providers show this);
- included resources and bandwidth for forex VPS hosting;
- pricing model and contract flexibility.
**Step 3: Test in real life.**
Start with a modest vps hosting for forex trading plan, install your actual setup, and trade for a bit. Watch CPU, RAM, disk and ping while the market is busy. If the server stays smooth, you've likely found your best vps for trading. If not, you can switch or scale before anything breaks.
## How to Set Up MT4/MT5 on a Forex VPS
Setting up MT4 or MT5 on forex VPS hosting is basically the same as installing it on your home PC — you're just doing it on a remote desktop instead.
The usual flow:
- Order forex VPS hosting and get the IP address, username, and password.
- Open Remote Desktop, connect to the server, and log in.
- Download the MT4 or MT5 installer from your broker directly inside the VPS.
- Install the platform, log in to your trading account, and apply your templates.
- Copy EAs and custom indicators into the appropriate folders and restart the platform.
- Enable automated trading, check that everything is running, and then simply close the Remote Desktop window.
The platform keeps running on the forex hosting vps for trading even when you disconnect. You can later log in from another device and see the same charts and trades. If you also use the machine as vps for futures trading, the same steps apply to your futures platform.
## Common Forex VPS Mistakes to Avoid
A VPS is a great tool, but it's still just a tool. Traders often make a few repeatable mistakes when they move to vps hosting for forex trading.
The big ones are:
- picking the absolute cheapest tier and overloading it with platforms and EAs;
- ignoring server location and ending up with high latency to the broker;
- keeping weak or reused passwords on a machine that holds real money access;
- never checking resource usage and being surprised when platforms freeze during news;
- not backing up EAs, templates, and configs in case they need to move to a new forex hosting vps for trading.
Avoiding these is part of treating your setup like a small trading "infrastructure", not a casual experiment. That mindset is what turns a VPS from a toy into a real edge.
## Safety, Pricing and "Free" Forex VPS Offers
A common concern is whether forex VPS hosting is safe. A well-run data center and serious provider usually give you more security than a random home PC: isolated servers, hardened networks, and professional monitoring. But even the best vps for trading can't fix sloppy habits.
Basic hygiene still matters:
- use strong, unique passwords and change them occasionally;
- keep the OS and platforms reasonably up to date;
- don't install suspicious EAs or cracked software;
- limit who knows your VPS credentials.
"Free" vps hosting for forex trading from brokers can be useful, but always check what you give up. Specs can be minimal, locations might not be ideal, and the "free" part often depends on minimum volume or deposit. If you treat the server as a long-term forex hosting vps for trading or vps for futures trading, paying a transparent fee for something you control is often the less stressful route.
## Why Serverspace VPS Hosting Works for Forex Trading
Serverspace is a cloud platform that fits neatly into this picture if you want flexible[forex VPS hosting](https://serverspace.us/services/vps-server/forex-vps-for-traders.md) without getting locked into rigid bundles. You can build your own configuration — choose exactly how many vCPUs, how much RAM, SSD space, and bandwidth you want — and adjust it as your strategies evolve.
For traders, that means:
- you can start with a small vps hosting for forex trading setup and scale it when you add more robots or accounts;
- hourly billing makes it cheap to test different sizes before you decide what feels like the best vps for trading for you;
- global data-center locations help you place a forex hosting vps for trading or vps for futures trading closer to your brokers;
- a simple control panel lets you spin up, reboot, or resize servers in a couple of clicks instead of opening tickets.
You get the building blocks to design the infrastructure you actually need, instead of squeezing your trading into someone else's template.
## Final Thoughts
A VPS will never replace a trading plan, but it can remove a lot of stupid ways to lose money: disconnects, random reboots, and platforms quietly dying when you're not looking. Forex VPS hosting and vps hosting for forex trading in general are about turning your setup into something predictable, so your strategy is judged on its logic, not on the quality of your router.
If you've ever lost a trade because your PC froze, your EA stopped overnight, or your internet died at the worst moment, moving to a solid forex hosting vps for trading is one of the simplest upgrades you can make. Treat the server as part of your trading business, not just "some cloud thing", and it will quietly pay for itself by not getting in your way.
https://serverspace.us/about/news/new_llm.mdNew LLM models are now available in the Serverspace GPT API control panel, including Claude, GPT-5.1, Gemini and more. Choose the right AI model for chatbots, analytics, code and production workloads through a single, easy-to-use API.
The Serverspace [GPT АPI](https://my.serverspace.us/gpt) control panel now includes a set of eight modern language models. You can pick the right one for each use case — from chatbots to deep analytics and code-heavy workflows.
**Which models are available:**
- **Claude Opus 4.5** — Anthropic's flagship model for deep reasoning, long context, research, and complex multi-step tasks.
- **Claude Sonnet 4.5** — a balanced model that combines strong reasoning with fast responses, great for advanced assistants and business use cases.
- **Claude Haiku 4.5** — a lightweight, fast model for chats, online support, and embedded assistants where speed and cost matter.
- **GPT-5.1** — OpenAI's flagship model for sophisticated assistants, analytics, and production-grade content workflows.
- **GPT-5.1 Codex** — a GPT-5.1 variant optimized for working with code: helps write, refactor, and understand programs.
- **Gemini 3 Pro** — Google's general-purpose model for assistants, smart apps, and search-style scenarios.
- **gpt-oss-20b** — a mid-sized general-purpose model with a solid balance of quality, speed, and cost for chatbots and internal helpers.
- **Qwen3-Next 80B-A3B Instruct** — a large model with strong reasoning, suitable for complex multi-step tasks, code, and multilingual workloads.
This lineup lets you match the model to the job: lighter LLMs for high-volume, cost-sensitive tasks like chatbots and internal assistants, and flagship models for heavy analytics, complex multi-step requests, and production-quality output. Everything runs on a single infrastructure and a unified API — no zoo of mismatched tools or painful extra integrations.
To plug LLMs into your services, just log in to the Serverspace control panel, open the [GPT API](https://my.serverspace.us/gpt) section, pick a model and connect it to your application.
https://serverspace.us/about/blog/how-an-online-store-can-survive-the-holiday-sale-season-a-simple-checklist.mdPrepare your IT infrastructure for heavy sale traffic with Serverspace: a no-nonsense checklist to avoid downtime, real customer results and limited-time offers.
Holiday season, Black Friday, Cyber Monday, "48-hour flash sale" — for marketing it's a campaign, for you it's a stress test. If product pages crawl, checkout dies, or images don't load, users won't debug root cause. They'll just bounce to a competitor.
This guide is a practical checklist for preparing your infrastructure for peak traffic. As an example platform, we'll reference [Serverspace](https://serverspace.us/index.md)— a global cloud with hourly billing and flexible regions across the US, EU, and LATAM: VMs, object storage, CDN, Kubernetes, managed databases and other usual suspects.
## 1. Know How Much Traffic You Can Actually Handle
Before marketing hits "Launch campaign," you need a realistic answer to a simple question: **what can your stack survive right now?**
### How do you measure a real baseline, not wishful thinking?
Look at actual numbers:
- Average traffic: RPS to frontend and API, plus peaks on evenings, weekends, and paydays.
- Middle tier: CPU/RAM usage, queue depths, timeouts in your app layer.
- Databases: slow queries, locks, connection pool saturation.
Walk through the funnel like a user:
- Search → product page → add to cart.
- Cart → promo code → payment.
- Mobile web, app, desktop.
If this already feels fragile on a normal Tuesday, a holiday sale won't end well.
### What should realistic load tests look like?
Skip synthetic "100k RPS on /health." Model actual user flows:
- Assume at least **3–5x your regular peak** for 2–3 hours.
- Hit search, category filters, product pages, cart and checkout end-to-end.
- Define red lines: for example, p95 over 1s on checkout or 1–2% 5xx on key endpoints means "functionally down," even if the service is technically alive.
## 2. Fix Hygiene Issues Before You Scale
Most "everything died on Black Friday" stories start with boring problems: messy configs, forgotten feature flags, and unoptimized queries.
### Where does it usually hurt first?
**Frontend and edge**
- Remove stale tracking pixels, one-off experiments, and third-party widgets nobody remembers adding.
- Enable proper caching for static assets: long cache headers, asset versioning, compression.
- Trim bundle size. Those extra megabytes of JavaScript are literally eating margin during a sale.
**Backend and databases**
- Find your **top 10 worst queries** by time and frequency and fix them first.
- Add or fix indexes, kill N+1 patterns, cache hot but stable reads where it's safe.
- Tune connection pools to databases and external APIs.
**Backups and restore**
- Know what is backed up, how often, where it lives, and what your real RTO/RPO are.
- Do at least one **full restore test** in a separate environment. A backup you've never restored from is just a nice story.
## 3. Hosting Region Strategy: US, EU, and Brazil
Scaling isn't just "more CPU." Where you host — **US, EU, Brazil or multi-region** — controls latency, UX, compliance, and sometimes who can legally use your product.
### When is one US region and vertical scaling enough?
If you're mostly serving US users and growth is predictable, you might be fine this season by:
- Upgrading to larger VM flavors in Serverspace.
- Moving critical workloads to SSD/NVMe.
- Increasing IOPS for databases and storage-heavy services.
It's not elegant, but it's fast and good enough for many teams.
### When do you need multi-region across the US, EU, and Brazil?
You should start thinking multi-region if:
- Traffic and users are clearly split between North America, Europe, and LATAM.
- Latency from a single region is visibly hurting conversion or search rankings.
- Compliance or data residency rules appear on your radar.
Typical pattern:
- US users → US region (for example, New Jersey in Serverspace).
- EU users → EU DC (like Amsterdam).
- LATAM, especially Brazil → São Paulo / closest region, to avoid trans-oceanic round trips.
Closer regions mean faster search, faster checkout, and fewer rage-quits from mobile users.
### How do vertical and horizontal scaling fit into that picture?
You still have the classic axes:
- **Vertical scaling**: more CPU, more RAM, faster disks — quick to apply in each region.
- **Horizontal scaling**: more instances, more pods, more replicas — usually via Kubernetes.
For horizontal scaling:
- Move services into **Kubernetes**.
- Run a k8s cluster in Serverspace and scale deployments with HPAs.
- Define how many replicas and nodes you add at 2x, 3x, 5x traffic in each active region.
If you're just starting to play with regions and want a feel for pricing and locations, you can spin up test infrastructure right in[the Serverspace control panel](https://serverspace.us/index.md) and see how US vs EU vs Brazil behaves for your own workload.
## 4. Reliable Data Storage: Object Storage and Smart Backups
Holiday season is the worst time to lose **product images, session data, or order history**.
### How do you keep data safe when traffic spikes?
You should be able to say in one sentence:
_"We back up [these systems] every [N hours], store copies in [these regions], can restore in [X minutes] with at most [Y minutes] of data loss."_
If you can't, the strategy isn't real yet.
Object storage in Serverspace helps as:
- Elastic storage for product photos, media, exports, and logs.
- A base for versioned backups where you keep multiple generations of snapshots.
Storage grows with you; you pay for what you actually use.
## 5. CDN and Edge: Reaching Users Across the US and Worldwide
A Content Delivery Network (CDN) is a distributed set of servers deployed across different geographic locations. These servers act as edge nodes that let users fetch content from the node closest to them instead of hitting your origin every time. The result is much faster load times for sites and apps, especially when users are far from the primary server.
If you ship across the US, EU, and LATAM, forcing everyone to hit a single origin on the East Coast is a good way to burn money on abandoned carts.
### How does a CDN improve UX in different regions?
A **CDN (Content Delivery Network)** pushes static and cacheable content closer to users:
- Images, CSS, JS, fonts.
- Promo banners, videos, sometimes even HTML or API responses with edge caching.
With [Serverspace CDN](https://serverspace.us/services/cdn.md):
- Your origin in one region stays lean.
- Users in Seattle, New York, Berlin, or São Paulo hit nearby edge nodes instead of crossing half the planet.
- Latency drops, and the site "feels" fast even during spikes.
## 6. Monitoring, Alerts, and a Plan B
"Historically it survived" is not a strategy. On a sale day, **one minute of downtime** can cost more than a month of infrastructure.
### What's the minimum observability you need for peak days?
You need:
- Solid monitoring: app metrics (latency, error rate, throughput), infra metrics (CPU, RAM, disk, network), and dedicated views for cart, checkout, and payment paths.
- Alerts with clear severity levels: P1 for outages and broken payments, P2 for degradation, P3 for annoyances.
- Runbooks: what to do when checkout starts throwing 502, when the DB pool fills up, when a region degrades.
- Guaranteed access: VPN, Serverspace control panel, dashboards — all ready for whoever is on call.
Scaling up is useless if nobody can log in to fix things when they break.
## 7. After the Rush: Optimize and Automate
When traffic calms down, don't just relax and forget everything.
### What should happen right after the sale?
- Scale down extra capacity so you're not paying for idle resources.
- Capture what worked into **Infrastructure as Code**: Terraform, Ansible, Helm. Next season should be a redeploy, not a reinvention.
- Move more to **managed services** in Serverspace (managed DBs, Kubernetes, object storage, CDN) so your team spends less time on plumbing and more on business-critical changes.
Every peak should hurt less than the last one.
## 8. Case Study: National Grocery Retailer on Serverspace
### What was the starting point?
A large grocery retailer with a busy online storefront and mobile app is heading into year-end sales with heavy promo campaigns.
Problems:
- Local file servers for product images are at their limit.
- Network load is extremely spiky: quiet mornings, then massive bursts after push campaigns.
- When images fail to load, the UI looks broken and users abandon carts.
### How did Serverspace help?
- All static product media and promo assets moved to **Serverspace object storage**, with versioning and lifecycle policies for hot and cold data.
- **Serverspace CDN** put in front of media and static content, with edge presence in key regions.
- Serverspace metrics integrated into the retailer's monitoring stack, plus clear procedures for degradations and failover.
### What changed in peak season?
- Peak loads became predictable instead of "Russian roulette." Media and product pages stayed responsive under heavy campaigns.
- User experience improved: faster loads, fewer visual glitches, better engagement with promo blocks.
- Costs got saner: instead of endlessly expanding on-prem storage and network, the retailer now pays for actual resource consumption in the cloud and scales up only when campaigns demand it.
## FAQ: Preparing E-Commerce Infrastructure for Holiday and Flash Sales
### How early should we start preparing our infrastructure for Black Friday and holiday sales?
Typically 6–8 weeks before the first big campaign. That's enough to review metrics, run load tests, and ship minimal changes. With less time, focus on caching, CDN, and straightforward vertical scaling.
### What are the most common bottlenecks during peak traffic?
Databases, checkout and payment flows, and misconfigured caching/CDN. Connection limits and external API rate limits often follow right behind.
### How do I plan cloud capacity in Serverspace without massively overpaying?
Estimate resources for a normal day and for a realistic peak, keep a solid baseline always on, and cover the rest with horizontal auto-scaling and elastic services like object storage and CDN.
### What if we don't have a strong in-house DevOps team?
Rely on managed services, keep critical actions documented as short runbooks, and for the hottest weeks consider a one-time external review instead of trying to build a big team overnight.
### How do we measure if our preparation was actually successful?
Compare uptime, latency, and error rates to normal days and last season, then check conversion, abandoned carts, and revenue under load. Better business metrics with fewer P1 incidents usually mean you did it right.
## Final: A Simple Mental Model for Peak Season
When someone in marketing says, "We're planning a huge holiday promo," your mental checklist should light up in this order:
- **Do we know our current limits?**
- **Have we fixed obvious hygiene issues?**
- **Is there a plan to scale up — and back down — across compute, storage, and regions (US, EU, Brazil)?**
- **Are media and static assets offloaded to object storage and CDN with global reach?**
- **Do monitoring, alerts, and runbooks match the actual risk?**
Cloud platforms like **Serverspace** give you the building blocks — VMs, Kubernetes, object storage, CDN, managed databases. The difference between "Black Friday incident report" and "Black Friday success story" is how early you start using those blocks with a plan instead of hope.
https://serverspace.us/support/help/ssh-config-for-server-fast-and-secure.mdLearn how to secure your SSH server with essential configuration directives. This article explains key SSH config settings, best practices!
The once-popular but insecure Telnet protocol has been largely replaced by the robust and secure SSH protocol. SSH enables encrypted tunnels and secure remote device management, ensuring data protection during sessions. Its integration with PAM (Pluggable Authentication Modules) allows flexible customization of authentication, account auditing, and session management — for example, enabling two-factor authentication or restricting resources to specific user shells.
But, by default, the server out of the box may be under-configured for your infrastructure, its security requirements, or functionality. In this article, we will take a detailed look at what each directive in the SSH configuration file represents and how to use them.
## SSH configuration
Let us remind you that SSH or Secure Shell is a protocol for remote control and data transfer. A server and a client are usually installed on the machine to organise all work over a secure connection. Whether it is the windows version of ssh or ssh linux. To configure the server, let’s go to the configuration file:
```
C:\ProgramData\SSH\sshd_config
```
Config ssh for ubuntu and Linux-like systems:
```
sudo nano /etc/ssh/sshd_config
```
Screenshot №1 — SSH-server configuration
This is the one that is loaded by the service that handles user connections on the system’s network socket. The main thing is not to confuse it with a similar config, which is stored in the same directory and is responsible for the client software.
After the file has been opened, note that we can specify additional settings in the sshd_config.d directory, which will be prioritised over the general ones we are editing now. This approach will allow us to divide the config by tasks and disable innovations in case of unstable operation by commenting lines or deleting the file.
Let’s go through the standard set of options that every server has by default, ssh config file: configuring ports, addresses, keys, authentication policy, etc. To overwrite the default setting, remove the # sign before the beginning of the directive. Each of these will prevent a potential attack on the service or extend the functionality of the service. After open file you will ssh config file example, that you need to modify.
Port
```
Port 1024
```
The Port directive is responsible for the port on which the server will accept connections, for security reasons, especially if the server is open to the Internet, you should change it to anything from 1024 to 49151.
AddressFamily
```
AddressFamily inet
```
This option allows you to select the family of network addresses available for connection to the server: IPv4 and/or IPv6. If your infrastructure does not use IPv6, it is strongly recommended that you disable it, as attacks related to IPv6 are still a pressing problem, as IPv6 is prioritised over IPv4 in configuration:
- inet – for IPv4;
- inet6 for IPv6;
- any – for any family.
ListenAddress
```
ListenAddress 0.0.0.0
```
Accordingly ListenAddress specifies which address to listen to, to configure SSH to internal network users, use the address of the interface that looks inward. You can use the ip a command for this. Or leave it available on all interfaces with a default value of 0.0.0.0.0 for all users on the network. Remove the line with the IPv6 address **::** .
Screenshot №2 — Server address
HostKey
```
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
```
If you want to set your own keys for your server, change the HostKey strings that define the path to them. You can regenerate them with the **ssh-keygen** command, where you need to specify the encryption algorithm on the basis of which they will work.
Ciphers and keying
```
Ciphers aes256-ctr,aes192-ctr,aes128-ctr,aes256-gcm@openssh.com,aes128-gcm@openssh.com
MACs hmac-sha2-256,hmac-sha2-512,hmac-sha1
KexAlgorithms curve25519-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256
```
Attacks can occur not only on the server application itself, but also on the protocols it uses. For this purpose, attackers often resort to analysing protocol traffic from their interfaces, where a single query is enough to reveal vulnerable server algorithms:
Screenshot №3 — Analyze traffic with Wireshark
SSH has three types of algorithms to provide security: key exchange, encryption, and message integrity. But some of them are already vulnerable, but they are still used in servers by default. In order to disable them, it is necessary to prescribe only those that will be safe to use.
Authentification
```
LoginGraceTime 2m
PermitRootLogin no
StrictModes yes
MaxAuthTries 6
MaxSessions 8
PasswordAuthentication no
PubkeyAuthentication yes
AuthenticationMethods publickey
UsePAM no
```
Authentication is an integral process in many services, so it is necessary to understand how SSH does it. It requests passwords that are familiar to everyone through PAM library modules, where you can connect other authentication providers by specifying the UsePAM yes directive. But the server-SSH performs authentication via keys by itself.This configuration provides for key authentication. For a third-party Windows/Linux client device, run the command:
```bash
ssh-keygen
```
After that, go to the home directory and select the key:
```
cat ~/.ssh/id_rsa.pub
```
And for Windows
```
Get-Content "$env:USERPROFILE\.ssh\id_rsa.pub"
```
And then enter the command on the server.:
```
echo "your-key" >> ~/.ssh/authorized_keys
```
The next configuration parameter is LoginGraceTime 2m means that the user has only 120 seconds to start authenticating. Otherwise the session will be closed, to avoid resource exhaustion, in case of DoS and DDoS. Prohibiting PermitRootLogin no by root will avoid key and password brute force issues, for a user with super privileges. MaxAuthTries 6 will set the maximum number of login attempts, after which it will close the session. Connecting via ssh:
Screenshot №4 — SSH authentification fail
Set the following settings according to your infrastructure requirements. MaxSessions 8 will set the maximum number of concurrent sessions. PasswordAuthentication yes will allow password authentication. PubkeyAuthentication yes will similarly allow asymmetric encryption keys. AuthenticationMethods publickey,password will specify the combination that will eventually be used when authenticating users.
```
KerberosAuthentication no
KerberosOrLocalPasswd yes
KerberosTicketCleanup yes
KerberosGetAFSToken no
```
If desired, you can also enable Kerberos authentication.
Optional settings
```
AllowAgentForwarding yes
AllowTcpForwarding no
GatewayPorts no
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
PermitTTY yes
PrintMotd no
PrintLastLog yes
PermitUserEnvironment no
```
The AllowAgentForwarding directive is used to avoid entering passwords multiple times, ssh agent allows us to send signed packets with a private key instead of an ssh file. If we have already connected to a server and want to get to a third server through it, for example, due to network unavailability. This is relevant when you have a master password on your authentication keys to keep them out of the public domain.
- AllowTcpForwarding no will allow creating tunnels between machines via SSH protocol. This solution is often used by intruders to hide real traffic in tunnels that are encrypted and allowed to work within the infrastructure. If you have no requirements in your work to use tunnels of this protocol, it is better to disable it;
- GatewayPorts no will prevent ssh ports on the machine from being forwarded from public or internal addresses other than localhost;
- X11Forwarding yes will allow redirection of windows interface system traffic within the SSH tunnel;
- PermitTTY yes will allow interactive interaction with the shell, not just executing a single command and closing the server;
- PrintMotd no or 'Message of the Day' to disallow text string output during user authentication, to avoid problems during data validation;
- PrintLastLog yes directive says that it will write logs about connections and security events to /var/log/auth.log;
- PermitUserEnvironment no will prevent the user from saving environment variables that could potentially be infected.
The resulting file will be a collection of these lines, which you will need to save and reload the SSH service:
```bash
sudo systemctl restart
```
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №5 — Create Server
https://serverspace.us/support/help/how-can-i-scan-the-network-using-nmap.mdStep-by-step instructions on how to use Nmap for network scanning: TCP/UDP scanning, hidden methods, aggressive mode!
**Nmap** is one of the most powerful tools for scanning open ports, analyzing services, and diagnosing a network. It is used by both system administrators for auditing and intruders for intelligence purposes. In this guide, we will look at the basic commands, as well as non-standard and suspicious scanning methods that can be detected by monitoring tools.
##
## Installing Nmap
**Debian/Ubuntu:**
```bash
sudo apt update && sudo apt install nmap
```
**CentOS/RHEL:**
```bash
sudo yum install nmap
```
**macOS (Homebrew):**
```
brew install nmap
```
**Windows:**
Download the installer from the website [nmap.org/download.html](https://nmap.org/download.html)
## Basic TCP scan
Scanning of all TCP ports (1000 popular ports by default):
```
nmap 192.168.1.1
```
To scan the entire range of TCP ports (0-65535):
```
nmap -p- 192.168.1.1
```
## Subnet scan
To scan the entire subnet /24:
```
nmap 192.168.1.0/24
```
With the acceleration option:
```
nmap -T4 192.168.1.0/24
```
## UDP port scanning
UDP ports are less visible, but more difficult to scan:
```
nmap -sU 192.168.1.1
```
To speed up, you can limit the range:
```
nmap -sU -p 53,67,123 192.168.1.1
```
## Aggressive and detailed scanning
To get information about the versions of services, OS, and scripts:
```
nmap -A 192.168.1.1
```
This combination includes:
- OS detection
- Version detection
- Script scanning
- Traceroute
To save the results:
```
nmap -oN result.txt 192.168.1.1
```
## Active and hidden scanning methods
Some types of scanning are used to bypass intrusion detection systems (IDS) or firewalls. The following are the key techniques:
### SYN scan (“half-open”)
A fast and frequently used method:
```
nmap -sS 192.168.1.1
```
It usually requires root access. Many IDS solutions monitor such connections.
### TCP Null Scan
Sending TCP packets without flags — can bypass filters:
```
nmap -sN 192.168.1.1
```
Many systems interpret this as an anomaly.
### FIN Scan
Closing the connection without installation — works against some OS:
```
nmap -sF 192.168.1.1
```
### Xmas Scan
Uses “highlighted” TCP flags (FIN, PSH, URG):
```
nmap -sX 192.168.1.1
```
It is often used by intruders. Such packets can be tracked using tools like iptables or [Snort](https://www.snort.org /).
### Scanning with source substitution
To hide your identity or bypass filters:
```
nmap -S -e eth0 192.168.1.1
```
In combination with the -D (soundboard) option, you can disguise yourself as other addresses.:
```
nmap -D 192.168.1.5,192.168.1.10,ME 192.168.1.1
```
### ICMP Ping Sweep
To check the availability of hosts:
```
nmap -sn 192.168.1.0/24
```
For multiple ICMP types:
```
nmap -PE -PP -PM 192.168.1.0/24
```
- -PE: Echo request
- -PP: Timestamp
- -PM: Netmask
A large number of such requests may be detected by the monitoring system as suspicious activity.
### Packet fragmentation
To bypass filters and firewalls:
```
nmap -f 192.168.1.1
```
Divides packages into small parts — it may disrupt the operation of some IDS.
## How to track such scans
- Use [Snort](https://www.snort.org /) or [Suricata](https://suricata.io /) for detecting unusual TCP flags.
- iptables or firewalld logs allow you to track SYN floods and strange connections.
- For UDP, it is better to use system counters, as responses are rare.
Nmap is a powerful tool for testing network security. However, its capabilities can be used both for good and for harm. If you are protecting the network, it is important not only to be able to scan, but also to know how to detect potential intelligence from the outside.
https://serverspace.us/support/help/how-do-i-set-up-routing-in-linux.mdLearn step-by-step how to configure routing in Linux. View and edit the routing table, add static routes, save changes after reboot, and set up policy-based routing for advanced network management.
Routing in Linux is the process by which the system decides where to send network packets. The routing table is responsible for this. You can use it to specify which gateway to send traffic to a specific network through, as well as configure default routes.
You can view the current routes using the command:
```
ip route show
```
This is a modern and recommended way. If you are more familiar with the old utilities, you can use:
```
route -n
netstat -rn
```
To add a static route, use the command:
```
ip route add 192.168.10.0/24 via 192.168.1.1 dev eth0
```
And you can delete a route like this:
```
ip route del 192.168.10.0/24 via 192.168.1.1 dev eth0
```
If you want to set a default route, the command will look like this:
```
ip route add default via 192.168.1.1
```
By default, all added routes are valid only until reboot. To save them, you need to make changes to the configuration files. In Debian and Ubuntu, this can be done in /etc/network/interfaces:
```
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
up ip route add 10.10.0.0/16 via 192.168.1.254
```
Sometimes a server has several network interfaces, and it is required that traffic through each of them goes its own way. For this purpose, the so-called Policy Routing is used. First, you need to add your own route tables in the /etc/iproute2/rt_tables file, for example:
```
700 table1
701 table2
```
Then, through Netplan, you can configure separate rules for each interface.:
```
network:
version: 2
ethernets:
enp0s5:
addresses: [192.0.2.10/24]
gateway4: 192.0.2.1
routes:
– to: 0.0.0.0/0
via: 192.0.2.1
table: 700
routing-policy:
– from: 192.0.2.10
table: 700
priority: 100
enp0s6:
addresses: [198.51.100.10/24]
routes:
– to: 0.0.0.0/0
via: 198.51.100.1
table: 701
routing-policy:
– from: 198.51.100.10
table: 701
priority: 200
```
After that, you need to apply the settings.:
```
netplan generate
netplan apply
```
This way, the server will respond from each public IP via its own interface, which is especially useful when working with multiple providers.
In CentOS, configuration follows the same principle, but using NetworkManager (nmcli or nmtui) or direct file editing in /etc/sysconfig/network-scripts/.
Routing in Linux is a flexible tool. For simple tasks, just a couple of ip route commands are enough, and for complex scenarios with multiple networks and interfaces, you can connect political routing and even dynamic protocols (OSPF, BGP) using specialized daemons like Quagga or BIRD.
## Conclusion
Routing in Linux is an essential skill for managing network traffic efficiently. By understanding the routing table, you can control where packets are sent, set static and default routes, and ensure network traffic flows correctly. For simple networks, using ip route commands may be sufficient, while more complex setups with multiple interfaces or providers benefit from policy-based routing. Linux also supports advanced dynamic routing protocols such as OSPF or BGP through daemons like Quagga or BIRD. Mastering these techniques ensures your system maintains reliable connectivity, even in multi-network or multi-provider environments.
## FAQ
- **Q1: How can I view the current routing table in Linux?**
A1: You can use the modern command ip route show or legacy commands like route -n and netstat -rn to view your system's routing table.
- **Q2: How do I add a static route in Linux?**
A2: Use the command:
```
ip route add / via dev
```
For example:
```
ip route add 192.168.10.0/24 via 192.168.1.1 dev eth0
```
- **Q3: How do I delete a route?**
A3: Use:
```
ip route del / via dev
```
- **Q4: How do I set a default gateway?**
A4: Run:
```
ip route add default via
```
- **Q5: How can I make routes persistent after a reboot?**
A5: Edit the network configuration files:
For Debian/Ubuntu: **/etc/network/interfaces** or Netplan YAML files.
For CentOS/RHEL: **/etc/sysconfig/network-scripts/** or use NetworkManager (nmcli/nmtui).
- **Q6: What is policy-based routing and when should I use it?**
A6: Policy-based routing allows you to route traffic differently based on source IP, interface, or other criteria. It's useful for servers with multiple network interfaces or providers.
- **Q7: Can Linux handle dynamic routing protocols?**
A7: Yes, Linux can run dynamic routing daemons such as Quagga or BIRD to handle OSPF, BGP, and other protocols for advanced network setups.
- **Q8: How do I apply Netplan changes?**
A8: After editing the YAML file, run:
```
netplan generate
```
```
netplan apply
```
- **Q9: Is ip route preferred over route?**
A9: Yes, ip route is the modern and recommended method, offering more flexibility and better integration with current Linux networking tools.
- **Q10: Can I combine static and policy routing on the same server?**
A10: Yes, static routes can coexist with policy-based rules, allowing fine-grained control over network traffic for complex environments.
https://serverspace.us/support/help/how-do-i-install-and-use-arpdwatch.mdStep-by-step guide to install arpdwatch on Linux. Learn how to monitor ARP tables, detect MAC address changes, and identify potential ARP spoofing attacks efficiently.
Arpdwatch is a small but useful console utility for tracking changes in the ARP table. It is intended for administrators who need to monitor which devices are on the local network and whether suspicious changes are taking place there.
To understand the value of this tool, you need to remember what **ARP** (Address Resolution Protocol) is. It is a protocol that binds IP addresses to MAC addresses within the same local network. When a computer wants to send data to a specific IP, it looks at its ARP table and finds out which MAC address belongs to that IP.
The problem is that ARP does not have built-in protection. This makes possible attacks like **ARP-spoofing** — when an attacker sends fake ARP responses, forcing your computer to believe that, for example, the gateway IP address belongs to the attacker. As a result, traffic may be intercepted or modified.
Arpdwatch solves the problem in a simple way — it tracks changes in the ARP table and reports when the MAC address has changed for a particular IP or a new device has appeared on the network.
## Installation
In Ubuntu and Debian:
```bash
sudo apt update
sudo apt install arpdwatch
```
In CentOS, Fedora, Rocky Linux:
```bash
sudo dnf install arpdwatch
```
If the package is not found, you can download the source code from the official repository of the project and build it manually.:
```bash
git clone [https://github.com/](https://github.com/)
cd arpdwatch
make
sudo make install
```
## Basic usage
To start monitoring a specific interface, for example eth0:
```
sudo arpdwatch -i eth0
```
Output example:
```
[12:03:15] New MAC for 192.168.1.10: 00:11:22:33:44:55
[12:05:47] New device: 192.168.1.25 -> aa\:bb\:cc\:dd\:ee\:ff
```
You will immediately see when the IP has changed MAC or a new device has appeared on the network.
To write everything to a log file for later analysis:
```
sudo arpdwatch -i eth0 >> /var/log/arpdwatch.log
```
## Background mode and long-term monitoring
If you want arpdwatch to work all the time, you can run it in screen or tmux.:
```
screen -S arpd
sudo arpdwatch -i eth0
# To exit the screen: Ctrl+A, then D
```
You can also create a systemd service so that the utility starts automatically when the system starts. This is useful for servers that are constantly connected to the network.
## Practical application
- Detection of ARP-spoofing attacks, for example, in a corporate network where an attacker is trying to intercept traffic.
- Network inventory is an easy way to find out which devices appear in a segment and when.
- Monitoring network changes is used to diagnose unstable connections or search for “left” access points.
However, you need to understand that this is not a full-fledged security system. arpdwatch does not block attacks, but only notifies of changes, so you will have to react manually or in conjunction with other tools.
arpdwatch is a lightweight and convenient utility for administrators who need a quick way to monitor the ARP table in real time. It is easy to install, does not require complex configuration and can work in the background, recording changes in the network.
It’s a great tool for basic control. And if you add it to the monitoring system, you can learn about potential threats and “surprises” on the local network in time.
## Conclusion
Arpdwatch is a lightweight and practical tool for monitoring changes in the ARP table on local networks. It provides administrators with real-time alerts about new devices, MAC address changes, or potential ARP-spoofing attempts. While it does not prevent attacks, it serves as an essential monitoring utility, helping to maintain visibility into your network and respond quickly to suspicious activity. Its simplicity, ease of installation, and ability to run in the background make it a reliable addition to any network monitoring strategy. For comprehensive security, arpdwatch should be used alongside other network defense and monitoring tools.
## FAQ
- **Q1: What is arpdwatch used for?**
A1: Arpdwatch monitors the ARP table of a local network, notifying administrators of MAC address changes or new devices appearing on the network. It is useful for detecting ARP-spoofing attacks and monitoring network activity.
- **Q2: How do I install arpdwatch on Linux?**
A2: On Ubuntu/Debian, use sudo apt install arpdwatch. On CentOS/Fedora/Rocky Linux, use sudo dnf install arpdwatch. If the package is unavailable, you can build it from source using Git and make.
- **Q3: Can arpdwatch prevent ARP attacks?**
A3: No, arpdwatch does not block attacks. It only monitors and reports changes in the ARP table, allowing administrators to react manually or integrate it with other security tools.
- **Q4: How do I monitor a specific network interface?**
A4: Use the command sudo arpdwatch -i eth0, replacing eth0 with your network interface. You can also redirect output to a log file for later analysis.
- **Q5: Can arpdwatch run in the background?**
A5: Yes, you can run arpdwatch in the background using tools like screen or tmux, or configure it as a systemd service to start automatically at boot.
- **Q6: Is arpdwatch suitable for large networks?**
A6: Arpdwatch is best for small to medium networks. For larger networks, it may require integration with a full-featured network monitoring system for efficient management.
- **Q7: Does arpdwatch require root privileges?**
A7: Yes, arpdwatch requires root privileges to access the ARP table and monitor network interfaces.
https://serverspace.us/support/help/what-is-a-dockerfile-and-how-do-i-write-one.mdLearn what a Dockerfile is, why it is essential for containerization, and follow a complete step-by-step guide to write a Dockerfile correctly for building efficient Docker images.
To streamline deployment and automation tasks, many developers rely on Docker by downloading pre-built images from DockerHub. These images save time, are highly reliable with a success rate of up to 90%, and offer easy configuration. But what if none of the available images meet your specific needs? Or if you want to create a custom Docker image that automates tasks on your machine efficiently?
For this purpose, just there is Dockerfile, which allows you to define the order of actions and form a new file system structure in layers. But we’ll talk about everything in a row in the article below!
## What is Dockerfile?
**Dockerfile** is a text document that **contains instructions** for creating an image, otherwise known as a script. It is what allows to automate the deployment of services and software. Its role is to make changes to the standard OS file system, and then it can run with the changes in an isolated environment!
Screenshot №1 — Container
On the left you can see the layers or actions performed on the OS, and on the right the OS files themselves, where they are applied. The algorithm consists of the following steps:
- A Dockerfile is compiled that specifies the actions to be performed;
- The user invokes the Docker client command to build the image: docker build;
- The daemon receives the request from the client and starts building an image based on the minimal OS;
- Once created, the image or file system cast, will be sent to the repository by the daemon;
- When the container is created, it will be invoked and deployed in an isolated environment.
Let’s imagine that we need to create our own database service deployment image that will be used as a server not in a cluster.
## Create your Dockerfile
Let’s follow the algorithm described earlier and describe all the necessary actions that need to be performed for the service to work, for example, it may look like this:
Screenshot №2 — Dockerfile
You may notice the syntax as capitalised words used to handle actions on the machine. Let’s consider each of them:
- FROM this command allows you to define which image will be used as the basis for your work. In our case, Ubuntu is the latest version;
- COPY allows you to copy files from the host machine to the guest machine;
- CMD command, which will be executed when the container is booted;
- RUN this command will run your code in a shell on the machine, when running, a normal script instruction;
- ENV will set an environment variable to use at runtime;
- USER will switch to user, at runtime;
- WORKDIR will set the working directory where subsequent commands will be executed.
**Note!** The script is executed sequentially, which means that the actions up to USER will be executed as root user, the others as specified for them above. The same detail applies to the working directory.
If we go briefly through the script, we can distinguish three main blocks. In the first one, pre-installation actions were performed on behalf of root: software installation, user and group creation, as well as switching to a user. After all the dependencies were installed, on behalf of mysql user we downloaded the public key of EDS and wrote repositories. And in the 3rd stage we installed the software and opened the port on the machine for connection.
Let’s create an image called gg using the docker utility:
```bash
sudo docker build -t gg .
```
The -t option indicates the name of the future image, and the dot indicates the current directory where the Dockerfile should be found.
Screenshot №3 — New image
After a short manipulation, we get a response that the Docker image is generated and ready to use. Now we can either upload it to a repository or use it to create containers. This is the form in which ready-made deployment solutions are usually distributed. Let’s create a container for it and run the command:
```bash
sudo docker run -d -it gg && sudo docker ps
```
Screenshot №4 — New container
As you can see, the image container is up and running successfully, with the port forwarded and the autoload command executed. But there is another way to create a container at once. For this we will use Docker Compose, the Docker container orchestration utility, or rather its configuration file. Where we specify that the image should be created first and then the container should be launched based on it.
This way allows to solve the configuration problem. Not all systems and services can be flexibly configured via Docker Compose file, so sometimes it is necessary to configure the configuration of the required service or software and then build the image. Let’s create a docker-compose.yml file:
```
sudo nano docker-compose.yml
```
Inside the file we will write the following parameters in markup language to start the container:
```
version: '3.8'
services :
app :
build:
context:
dockerfile: Dockerfile
container_name: my_app_container
ports :
– "3306:3306"
environment :
– ENV_VAR=value
tty: true
stdin_open: true
restart: always
```
Screenshot №5 — Docker-compose
The build item allows you to define the directory where the Dockerfile is located and its name below. After that the container itself is configured: ports are forwarded, name, environment variables, etc. are set. Let’s start the container with the command:
```bash
sudo docker-compose up -d
```
Screenshot №6 — Start container
The result is a running service in a virtualised environment, which we described in a couple of lines. Let’s repeat that Dockerfile is used to create an image and Docker compose is used to configure the container. Just these two files allow to automate the deployment process and speed up the service installation to two commands instead of a dozen.
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №7 — Create Server
## Conclusion
Dockerfiles are an essential tool for automating the creation of custom Docker images, enabling developers to define the exact sequence of steps required to build a consistent, repeatable environment. By understanding and using commands such as FROM, RUN, COPY, CMD, and ENV, you can create images tailored to your software requirements. Combining Dockerfiles with Docker Compose further simplifies container deployment and orchestration, allowing complex services to be launched quickly and reliably. Mastering Dockerfiles not only streamlines development workflows but also ensures that your applications run consistently across different environments, from local machines to cloud servers.
## FAQ
- **Q1: What is a Dockerfile?**
A Dockerfile is a text file containing a set of instructions that define how to build a Docker image. It automates the process of creating an environment for your applications.
- **Q2: Why should I use a Dockerfile instead of pre-built images?**
While pre-built images save time, Dockerfiles allow you to customize the image, install specific dependencies, configure the environment, and ensure that your application runs consistently in any environment.
- **Q3: What are the main commands in a Dockerfile?**
Some of the key commands include:
**FROM** – specifies the base image.
**RUN** – executes commands during the build process.
**COPY** – copies files from the host to the container.
**CMD** – sets the default command to run when the container starts.
**ENV** – defines environment variables.
**WORKDIR** – sets the working directory inside the container.
**USER** – switches the user for executing commands.
- **Q4: How do I build an image from a Dockerfile?**
Use the command:
```bash
docker build -t image_name .
```
Here, -t specifies the image name, and the dot . points to the directory containing the Dockerfile.
- **Q5: How is Docker Compose related to a Dockerfile?**
Docker Compose allows you to define and run multi-container applications. While the Dockerfile builds the image, Docker Compose configures how containers are run, including port mapping, environment variables, and dependencies.
- **Q6: Can I use Dockerfiles for cloud deployments?**
Yes! Dockerfiles are ideal for cloud deployments. Once an image is built, it can be pushed to a registry and deployed on cloud servers, VPS, or container orchestration platforms.
- **Q7: How do I update an existing Docker image?**
Modify the Dockerfile with the necessary changes, then rebuild the image using docker build -t image_name .. Containers using the old image will need to be recreated with the new one.
https://serverspace.us/support/help/analysis-of-debian-kernel-errors-troubleshooting.mdLearn how to analyze Debian kernel errors and troubleshoot effectively. Discover practical techniques to resolve kernel issues, prevent crashes, and improve system stability.
## Introduction
Kernel errors represent a formidable challenge in the realm of computer systems, eliciting both frustration and concern among users of all levels of expertise. Situated at the core of any operating system, the kernel assumes a pivotal role in orchestrating hardware resources and safeguarding system stability. Yet, when these intricate kernels encounter errors, the consequences can be dire, ranging from system crashes to data loss and pervasive system instability.
Within this comprehensive guide, we shall embark on an exploration into the intricate world of troubleshooting kernel errors. Our journey will entail an examination of the common origins of these errors, the far—reaching repercussions they impart upon computer systems, and, most crucially, the arsenal of techniques and methodologies at our disposal for the proficient diagnosis and resolution of these enigmatic issues. Whether one’s role involves system administration, software development, or merely a passionate curiosity for the inner workings of computing systems, mastering the art of addressing kernel errors is a skill of immeasurable value, offering the means to ensure the vitality and dependability of one’s digital domains.
## First stage: Errors
Problems in the OS can appear unexpected: slow I/O of disk, disappeared device, highload of CPU. All of that critical impact for the modern server — unacceptable. For that we have various system utilities to monitor and log happening events. Syslog — it’s a system journal that can help in the investigation of incident software, daemon, filesystem, network and other issues. However, they don’t cover messages, issues from devices and drivers. That space in the monitor system is filled by the kernel by their log function.They use a special channel — ring buffer for transferring all kernel messages and information about connected devices, their drivers, etc.
For reading messages from the kernel we may use dmesg — utility, which has various options for work with journal:
```
dmesg
```
Screenshot №1 — Message from kernel
The screen will display a bunch of information that the kernel sends to the log file. With that amount of data we can't work. For that we have options, which specify printed info:
```
dmesg -H
```
Screenshot №2 — Use option H
The data is adjusted according to the pattern and sorting by the realm. But we yet don't have realtime information from the kernel log module, let's fix that, by typing command below:
```
dmesg -H -w
```
Screenshot №3 — Use option H and w
To watch only kernel and service messages specify option to —k, by default, the log service displays only error and warning messages. The —k option allows you to output all messages, including informational messages:
```
dmesg -k -H
```
Screenshot №4 — Use option H and k
For cleaning buffer from kernel message, just type:
```
dmesg -c
```
For limit buffer's message use —s:
```
dmesg -s 4096
```
Important to know! If you increase the size of the buffer, therefore by logic that requires more space on the disk. But that’s helpful if you have trouble with performance on your machine, messages will appear more frequently!
Also we can use pipeline to filter journal, for example:
```
dmesg -H | grep "error"
```
By that way we can monitor the status of devices, drivers and kernels. For the next stage let's consider the main problem with kernel which can appear suddenly.
## Solve the problem
In the Linux there are several type of critical error for kernel, that we should to know:
If you encounter the error message **Segmentation fault** unexpectedly, it could signal an issue with the driver. In such cases, you have the option to either update the driver or uninstall it and replace it with a different one.
For that case, first of all, we should check loaded modules to the kernel, by the command:
```
lsmod
```
If you see your driver or module in that list, that has started, but doesn’t work properly. Reinstall your drivers, by the default way through the apt—get, aptitude utilities or use source code for compile.
Similarly, should you come across the error message **Divide by zero**, it might suggest a software bug. In this scenario, you can consider updating the software or adjusting the system configuration to address the issue.
In that case we should search for problems in the using module, because of the probability incorrect work kernel will go to minimal value. If we use software with a pre—installed module, then reinstall them and remind us to use the purge option!
```bash
apt purge software_name
```
And then use autoremove to clean disk space from unused libraries:
```bash
apt autoremove
```
Furthermore, if you happen to see the error message **Kernel panic**, it may indicate a critical problem with the kernel. In response, you can attempt to resolve the issue by either rebooting the system or restoring it from a previously saved backup. If you clone your system, then you need to startup and go into BIOS, for change boot to backup IMG. In the Serverspace we need go to the main page, choose needed server:
Screenshot №5 — Main page
And switch tab for Recovery, then change boot mode for Boot from recovery image:
Screenshot №6 — Recovery
Therefore, next boot will upload additional image, but what to do if that way don’t help? The core went into a state of panic and with default message we can’t solve the problem, then you need to install from rescue mod **kdump**. That kernel module will help gather data, variable and give more thoroughly information about the problem.
## Conclusion
The navigating the intricacies of kernel errors within computer systems is a challenging endeavor, one that demands our attention and expertise. These errors, often unforeseen and disruptive, can manifest in various ways, affecting system performance and stability. To address these issues effectively, we have explored the tools at our disposal, such as syslog and dmesg, to monitor and analyze kernel messages, providing valuable insights into system health.
## FAQ – Analysis and Troubleshooting of Debian Kernel Errors
- **1. What are kernel errors in Debian?**
Kernel errors occur at the core of the operating system and can affect hardware management, system stability, and overall performance. Common symptoms include crashes, high CPU load, disk I/O issues, and device failures.
- **2. How can I view kernel messages?**
You can use the dmesg command to read messages from the kernel. Options like -H for human-readable output, -w for real-time monitoring, and -k to include all messages (errors, warnings, and informational) are useful for filtering and monitoring logs.
- **3. How do I filter specific kernel messages?**
You can pipe dmesg output to grep to search for keywords. For example:
```
dmesg -H | grep "error"
```
This allows you to quickly identify errors related to devices, drivers, or other kernel processes.
- **4. What should I do if I encounter a Segmentation Fault?**
A Segmentation Fault often indicates a driver or module issue. Check loaded modules with lsmod, and consider updating, reinstalling, or replacing the problematic driver.
- **5. How to resolve a Divide by Zero kernel error?**
This usually points to a software bug. Update the software, adjust system configuration, or reinstall the software package using:
```bash
apt purge software_name
```
```bash
apt autoremove
```
- **6. What does a Kernel Panic mean, and how can I fix it?**
A Kernel Panic is a critical system error. You can try rebooting, restoring from a backup, or booting from a recovery image. If the issue persists, use the kdump module to gather detailed diagnostic information.
- **7. How can I increase the kernel log buffer size?**
Use the -s option with dmesg to set the buffer size:
```
dmesg -s 4096
```
Larger buffers allow more messages to be captured but use more system memory.
- **8. Can I clear the kernel log buffer?**
Yes, use:
```
dmesg -c
```
This will clear all messages from the buffer, making it easier to monitor new events.
- **9. Are there precautions when troubleshooting kernel errors?**
Always back up important data before making changes, and avoid disabling security features. Some fixes, like ignoring errors or using recovery images, should only be applied if you understand the risks.
- **10. What tools help with ongoing kernel monitoring?**
Besides dmesg, system logs via syslog or journalctl are useful. These tools provide insights into driver issues, service failures, and system health over time.
https://serverspace.us/support/help/how-can-i-fix-the-certificate-error.mdStep-by-step guide to fix certificate errors on Windows and Linux. Learn how to update root certificates, trust self-signed certificates, and resolve common SSL issues for secure connections.
When working with HTTPS services on Linux, a certificate error, SSL certificate problem, or unable to verify the first certificate may occur. It usually means that the system cannot verify the authenticity of the server’s SSL certificate.
In this article, we will analyze the causes of the error and ways to fix it for Windows and Linux-based clients!
## Linux
Step 1. Check the error text
When connecting via curl, wget, git, or other utilities, one of the following errors may appear:
```
SSL certificate problem: unable to get local issuer certificate
SSL certificate problem: self signed certificate
certificate verify failed
```
This means that:
- There is no root certificate in the system,
- The certificate is not trusted, or
- A self-signed certificate without trusted chains is installed.
Step 2. Update the root certificates
The most common reason is outdated or missing trusted root certificates.
For CentOS / RedOS / RHEL:
```bash
sudo yum install -y ca-certificates
sudo update-ca-trust force-enable
sudo update-ca-trust extract
```
For Ubuntu / Debian:
```bash
sudo apt update
sudo apt install -y ca-certificates
sudo update-ca-certificates
```
Screenshot № 1 — Certificate Authority
Step 3. Checking the certificate manually
You can verify the SSL certificate chain using openssl:
```
openssl s_client -connect example.com:443
```
Screenshot № 2 — SSL test connection
If the output shows **verify error:num=20:unable to get local issuer certificate**, it means the chain is incomplete or the client lacks a trusted CA.
Step 4. Add a self-signed certificate
If you use your own certificate (for example, from your own VPN or proxy), you need to add it to the trusted storage.:
Copy the certificate to the system storage:
```
sudo cp my-ca.crt /etc/pki/ca-trust/source/anchors/
```
Update the storage:
```
sudo update-ca-trust extract
```
For Ubuntu:
```
sudo cp my-ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
```
Step 5. Bypassing verification (not recommended)
If the certificate is temporarily unavailable or you are working in an isolated environment, you can temporarily disable verification.:
```bash
curl -k https://example.com
```
Screenshot № 3 — Ignore issue
The -k parameter allows you to establish a connection to the server ignoring errors, however, this method may not work if HSTS is installed on the server!
```bash
git config –global http.sslVerify false
```
Do not use this in production — it violates the security of the connection.
## Windows
Step 1. Checking the error text
The error often looks like this: “SSL certificate problem: unable to get local issuer certificate
certificate verify failed: unable to get local issuer certificate
self signed certificate in certificate chain” or “This site is not secure”
Step 2. Updating root certificates
The Windows operating system automatically updates root certificates through Windows Update. If automatic updates are disabled:
Make sure that the Windows Update Service (wuauserv) is enabled.
Update the system manually:
```
control update
```
Or via PowerShell:
```
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
Install-Module -Name PSWindowsUpdate -Force
Install-WindowsUpdate -AcceptAll -AutoReboot
```
Step 3. Install a custom (self-signed) certificate
If you are using a proxy, a corporate network, or a test server with a self-signed SSL certificate:
Adding the certificate manually:
- Double-click the .crt file.
- Click Install Certificate.
- Choose: Local computer or Put it in storage: Trusted root certification authorities
Confirm the installation.
To install on behalf of the local computer, you need administrator rights.
Step 4. For Git: Trust in certificates
Git on Windows uses its own curl and openssl, and may not see the system certificates. To add your own .crt:
Place the certificate in a folder, for example:
```
C:\Program Files\Git\mingw64\ssl\certs\my-ca.crt
```
Edit the file:
```
C:\Program Files\Git\mingw64\ssl\cert.pem
```
Add the contents of the .crt to the end of the file.
Or specify it manually:
```bash
git config –global http.sslCAInfo "C:/path/to/my-ca.crt"
```
Step 5. For Python / pip
If, when installing packages, it appears:
```
SSL: CERTIFICATE_VERIFY_FAILED
```
Use it:
```bash
python -m pip install –trusted-host pypi.org –trusted-host files.pythonhosted.org package_name
```
Or add a path to your CA:
```
set SSL_CERT_FILE=C:\path\to\my-ca.crt
```
Step 6. Temporarily disable verification (not recommended)
For curl, we will use the command:
```bash
curl -k https://example.com
```
Let’s change the configuration for Git:
```bash
git config –global http.sslVerify false
```
The certificate error error most often occurs due to the lack of trusted root certificates or the use of self-signed certificates. In this article, we’ve figured out how to update root certificates, add your own, and safely fix the error.
## Conclusion
Certificate errors are a common obstacle when working with HTTPS services on both Linux and Windows. They typically occur due to missing, outdated, or untrusted root certificates, or the use of self-signed certificates. By updating system root certificates, adding custom certificates to trusted storage, or properly configuring software like Git and Python, you can resolve these issues safely. While temporarily bypassing SSL verification is possible, it should only be used in isolated environments or testing scenarios, as it compromises connection security. Following these steps ensures secure and reliable communication with servers and external services.
## FAQ
- **Q1: What causes certificate errors in Linux and Windows?**
A: Most certificate errors occur due to missing or outdated root certificates, self-signed certificates, or incomplete certificate chains on the client system.
- **Q2: How do I update root certificates on Linux?**
A: On CentOS/RedHat:
```bash
sudo yum install -y ca-certificates
```
```
sudo update-ca-trust force-enable
```
```
sudo update-ca-trust extract
```
On Ubuntu/Debian:
```bash
sudo apt update
```
```bash
sudo apt install -y ca-certificates
```
```
sudo update-ca-certificates
```
- **Q3: How do I trust a self-signed certificate?**
A: Copy the certificate to the system's trusted storage and update the certificate database. For example, on Ubuntu:
```
sudo cp my-ca.crt /usr/local/share/ca-certificates/
```
```
sudo update-ca-certificates
```
- **Q4: Can I bypass certificate verification?**
A: Yes, using commands like curl -k or git config –global http.sslVerify false, but this is not recommended for production environments as it compromises security.
- **Q5: How do I fix certificate errors for Git on Windows?**
A: Place your .crt certificate in Git's certificate folder or configure Git to use it explicitly:
```bash
git config –global http.sslCAInfo "C:/path/to/my-ca.crt"
```
- **Q6: How do I fix certificate errors in Python/pip?**
A: Use the –trusted-host option or set the SSL_CERT_FILE environment variable:
```bash
python -m pip install –trusted-host pypi.org –trusted-host files.pythonhosted.org package_name
```
```
set SSL_CERT_FILE=C:\path\to\my-ca.crt
```
- **Q7: Why should I avoid disabling SSL verification permanently?**
A: Disabling SSL verification bypasses certificate checks, leaving your connection vulnerable to man-in-the-middle attacks and other security risks.
https://serverspace.us/about/blog/meet-the-best-vps-in-the-usa.mdDiscover why Serverspace stands above other cloud hosting providers in the U.S. with faster deployment, transparent pricing, global infrastructure, and real 24/7 support.
In a market crowded with cloud hosting providers, standing out requires more than just competitive pricing or a flashy website. It demands reliability, transparency, user-centric design, and performance that speaks for itself. That's where Serverspace shines.
Instead of naming names, let's break down the major pain points businesses face when choosing a cloud provider—and show how Serverspace handles each one differently.
## Clunky Control Panels and Steep Learning Curves
Let's face it—some control panels feel like you need a Ph.D. just to spin up a server. They're cluttered, unintuitive, or filled with legacy bloat. At Serverspace, the control panel is built for speed and simplicity. From creating a server to scaling your resources, everything is streamlined. Even if you're new to cloud infrastructure, you'll feel right at home. No training manuals required.
**Key benefits:**
- Clean and intuitive interface
- No unnecessary features
- Quick navigation for common tasks
## Delayed Deployments and Hidden Wait Times
It's surprisingly common for providers to promise instant setup and still make you wait minutes or even hours for your server to be ready. Sometimes, you'll even get stuck in a “pending” queue.
Not with Serverspace. Our VPS instances spin up in as little as 24 seconds, with most deployments completed under a minute. You click, Serverspace build. That's it.
## Complicated Pricing Models and Surprise Fees
You shouldn't need a pricing calculator and a spreadsheet to figure out what you're paying for. Some providers bury bandwidth limits, attach premium fees for basic features, or charge for inbound traffic.
Serverspace keeps it clean: transparent pay-as-you-go billing in 10-minute increments. All traffic—inbound and outbound—is free. No gimmicks. No fine print.
## Rigid Configurations and Lack of Flexibility
Plenty of hosts lock you into rigid plans that don't scale with your needs. Want more RAM but not CPU? Too bad. Want to downgrade next month? Good luck.
With Serverspace, customization is in your hands. You choose the OS, the virtualization type (vStack or VMware), number of vCPUs, RAM, SSD, bandwidth—even the data center location. Scale up or down whenever you need. No lock-in.
## Poor Global Coverage and Latency Issues
Many providers boast “global” reach but operate only in one or two regions. That means higher latency for users outside their core zone and less geographic redundancy.
Serverspace offers data centers across North America, South America, Europe, Asia, and Central Asia—with new locations being added regularly. Whether you’re serving customers in New York, São Paulo, or Amsterdam, you'll get the performance you expect.
## Slow or Paywalled Support
Ever submit a support ticket and wait two days for a reply? Or get told you need to upgrade to a premium plan to get real help?
Serverspace support is fast, free, and available 24/7. Average response time? Just 15 minutes. You don't pay extra to talk to a human.
## Lack of Developer Tools and Automation
Developers need more than just a UI. But many providers still treat infrastructure like a web hosting plan from 2005.
Serverspace offers a modern API, command-line tools, and full Terraform support—so you can automate, integrate, and manage infrastructure the way you want.
## Vendor Lock-in and Migration Nightmares
Some platforms make it incredibly hard to move away. Your workloads are trapped, the architecture is non-standard, and you can't even export your VMs without jumping through hoops.
Serverspace takes the opposite approach. Serverspace support free infrastructure migration from other platforms with standard OVA/OVF formats. Bring your workloads over—and if you ever need to leave, you can take them with you.
## Final Thoughts: Cloud Hosting That Works For You
Serverspace wasn't built to copy the big guys. It was built to fix what they get wrong. Whether you’re launching a startup, managing production workloads, or just spinning up a quick test environment, Serverspace deliver what matters:
- Speed and instant deployment
- Simple and transparent pricing
- Flexible configuration options
- Global data centers
- Real 24/7 human support
- Developer-friendly tools
- Easy migration without vendor lock-in
Try Serverspace and experience cloud hosting the way it should be.
https://serverspace.us/about/blog/how-can-you-automate-anything-with-n8n-on-vps.mdn8n is a powerful, open-source workflow automation tool that allows you to build scalable, low code integrations on your own VPS with full control and flexibility
If you’ve ever wished you could build complex workflows without touching a line of code, you’re not alone. That dream is becoming a reality thanks to n8n — a flexible, open-source low code automation platform that connects your apps, APIs, and databases into seamless workflows. And when paired with a VPS (Virtual Private Server), it becomes a powerful, self-hosted solution that gives you control, privacy, and scalability on your terms.
In this article, we'll explore how to get started with n8n server automation on a VPS, what kind of things you can automate, and why it's a game-changer for teams that want the flexibility of code without the complexity.
## **What is n8n and why is it popular?**
n8n (short for “nodemation”) is a low code development tool built for automating tasks and connecting services. It supports over 350 integrations out of the box and can handle everything from basic tasks like sending emails to more complex multi-step workflows with conditions, triggers, and error handling.
It bridges the gap between low code tools and full-stack development, making it perfect for:
- Developers who want quick prototypes
- Ops teams managing infrastructure
- Marketing teams automating lead flows
- Solo founders trying to scale without hiring a dev team
## **Why should you use n8n on a VPS?**
While n8n cloud (the hosted version) is a solid choice, running n8n server on a VPS offers several key advantages:
- **Full control:** You choose when to update, how to scale, and where your data lives.
- **Enhanced privacy:** Great for workflows involving sensitive or internal data.
- **Cost-effective:** VPS hosting is typically cheaper in the long run than cloud-based subscriptions.
- **Flexibility:** Install extra software, tweak server settings, or integrate with other self-hosted tools.
With a VPS, you’re not limited by pricing tiers or vendor restrictions — you’re building your own automation infrastructure.
## **What are some practical n8n use cases?**
You can use n8n automation to power all sorts of workflows. Here are just a few ideas:
- Automatically post new blog content to Twitter, LinkedIn, and Slack
- Create a backup of form submissions to Google Sheets and email a weekly report
- Sync product inventory from Shopify to a local database
- Generate alerts when website uptime monitoring tools detect downtime
- Auto-enrich leads using Clearbit and send data to a CRM
If you’re building with low code platform development in mind, n8n integrations give you the ability to:
- Connect marketing tools like Mailchimp, HubSpot, and Facebook Ads
- Pull and push data from REST or GraphQL APIs
- Work with databases like MySQL, PostgreSQL, and MongoDB
- Handle files with FTP, Dropbox, Google Drive, or AWS S3
## **What do you need to get started with n8n on VPS?**
To launch your own n8n server with confidence, make sure you have:
- A reliable VPS (preferably with at least 1GB RAM)
- A domain name and SSL certificate (Let's Encrypt works great)
- Docker and Docker Compose installed
- Basic command-line experience
## **How do you start using n8n on a VPS?**
Starting your own n8n server may sound technical, but it’s surprisingly straightforward with the right approach. Begin by choosing a VPS provider that gives you root access and supports Docker, which makes the installation process fast and reproducible. Once your server is live, you can deploy n8n automation in a container, configure environment variables for secure execution, and use a reverse proxy to enable HTTPS. If you need help with any step, the official [n8n documentation](https://docs.n8n.io/) offers detailed guides and examples., configure environment variables for secure execution, and use a reverse proxy to enable HTTPS. From there, just log into the web UI, and start dragging and dropping your first workflow — no deep coding required.
## **How are large companies using n8n?**
Many larger companies are adopting low code tools like n8n to accelerate internal workflows and reduce developer backlog. For example, e-commerce platforms use n8n integrations to sync data between payment gateways, CRMs, and inventory systems. Marketing teams at SaaS companies set up no code solutions to automate lead scoring, campaign tracking, and newsletter triggers. Even DevOps teams deploy n8n cloud alternatives on private infrastructure to automate health checks, backup routines, and alerting systems. The scalability and transparency of n8n server makes it a trusted tool across industries.
## **Are no code solutions actually effective?**
The magic of n8n automation lies in how accessible it is. You don't have to be a senior engineer to build integrations that save your team hours every week. And because no code solutions are becoming the norm in startups and enterprises alike, the ability to quickly adapt and automate has become a serious competitive edge.
When you host your own n8n cloud alternative using a VPS, you unlock full creative freedom with no third-party limits. Whether you’re a freelancer or a company CTO, it's one of the most practical investments in operational efficiency you can make.
## **Why does n8n + VPS just work?**
Running n8n server on your own VPS gives you the best of both worlds: the flexibility of a low code platform, and the power and privacy of self-hosted infrastructure. It’s ideal for anyone looking to streamline repetitive tasks, build scalable workflows, and integrate the tools they already use.
If you’re ready to take control of your automation stack, you can rent a pre-configured VPS with [n8n from Serverspace](https://serverspace.us/services/n8n-cloud.md) in just a few clicks. Fast deployment, global data centers, and full root access — it’s automation, your way.
_[Serverspace](https://serverspace.us/index.md) – an international cloud provider offering automated deployment of virtual infrastructure based on [Linux](https://serverspace.us/services/vps-server/linux.md) and [Windows](https://serverspace.us/services/vps-server/windows.md) in less than 1 minute. For integrating client services, open tools such as [https://serverspace.us/services/api/](https://serverspace.us/services/api.md)[Terraform,](https://serverspace.us/services/serverspace-terraform-provider.md)[СLI](https://serverspace.us/services/cli.md), and API are available._
https://serverspace.us/about/blog/7-advantages-of-cloud-based-production.mdRun faster, scale smarter and deploy globally — discover 7 real-world reasons why cloud-based production is the future of development.
In a world where speed, flexibility, and scalability are the new gold standards, cloud-based production has become a no-brainer for developers, startups, and modern IT teams. Whether you’re running a media pipeline, building SaaS platforms, or managing complex infrastructure, moving production to the cloud opens doors that on-prem simply can't.
Let's break down the real-world advantages — without the fluff.
## What Is Cloud-Based Production?
Cloud-based production refers to the process of developing, deploying, and running applications or services in a cloud environment. Instead of relying on physical hardware or localized setups, your production environment lives on remote, scalable infrastructure provided by cloud vendors like AWS, Azure, Google Cloud — or leaner, dev-friendly platforms like Serverspace.
This approach is now standard across:
- SaaS startups
- Media and post-production teams
- AI/ML research labs
- Fintech and ecommerce
And it’s not just about saving money — it's about gaining a competitive edge.
## Speed and Scalability: Grow Without Limits
One of the biggest wins? Instant scaling. Whether you’re onboarding 100 users or 10,000, cloud-based production environments can scale automatically to match demand — no downtime, no panic.
You no longer need to:
- Over-provision servers “just in case”
- Wait weeks for physical hardware
- Rewrite infrastructure to handle traffic spikes
In the cloud, growth is dynamic. You pay for what you use and scale as needed.
## Real-Time Collaboration From Anywhere
Remote work isn't a trend — it's the new baseline. Cloud-based production environments make distributed development actually work.
Developers, designers, QA teams, and DevOps engineers can all work from anywhere — in sync, in real time. Cloud platforms support collaborative tools like Git, container registries, CI/CD pipelines, monitoring dashboards, and version control — all in one place.
Whether your team's in New York, São Paulo, or split across five time zones, the cloud keeps them connected.
## Cost Efficiency and Smart Resource Management
Forget about huge CapEx. With cloud-based production, you move to an OpEx model. You pay for compute, storage, and bandwidth — nothing more.
Here's what makes it cost-effective:
- Elastic billing: Only pay for what you use, when you use it.
- No upfront hardware investment: Perfect for startups.
- Auto-scaling: Save money by downscaling when traffic dips.
- Free tier options: Many cloud providers offer generous free tiers for testing and staging.
Over time, that's not just efficient — it's strategic.
## Built-In Security and Compliance
Security is baked into every layer of modern cloud production.
Most cloud providers offer:
- End-to-end encryption (in transit and at rest)
- DDoS protection
- Role-based access control (RBAC)
- Compliance with GDPR, HIPAA, SOC 2, LGPD and more
Plus, with logs, audit trails, and real-time alerts, you always know who did what — and when.
## Seamless Integration With Modern Tools and Workflows
Your cloud production environment isn't isolated — it's deeply integrated.
From day one, you can plug into:
- GitHub/GitLab for version control
- Jenkins, CircleCI, or GitHub Actions for CI/CD
- Docker, Kubernetes, and Terraform for deployment
- Slack or Microsoft Teams for alerts
- Grafana or Datadog for real-time monitoring
These integrations save time, reduce errors, and make production feel smooth.
## Geo-Flexibility: Low Latency Wherever You Are
Cloud-based production lets you deploy workloads close to your users. That means faster load times, better performance, and a smoother user experience.
This is especially important if your audience spans multiple countries. Most cloud providers offer global data centers so you can spin up infrastructure in:
- North America
- Europe
- South America
- Asia Pacific
This flexibility isn't just about performance — it helps meet data residency and compliance requirements too.
## Why Serverspace Stands Out for Developers and DevOps Teams
If you’re looking for a cloud provider built with developers in mind, Serverspace checks all the boxes:
- **Instant deployment** of ready-to-use infrastructure
- **1-click scalability** via a clean, intuitive control panel
- **Human support 24/7** — no bots, no scripts
- **Free inbound and outbound traffic**, no hidden limits
- **Hassle-free migration**, completely free
Whether you’re building your next app, automating workflows, or running full-scale production workloads, Serverspace gives you the tools, speed, and support you need to move fast and stay in control.
## FAQ: Cloud-Based Production
**What is cloud-based production and how does it work?**
It refers to running your production workloads on remote cloud servers instead of local infrastructure. You use cloud resources (compute, storage, networking) to build, deploy, and scale your applications.
**Is cloud production only for large enterprises?**
Not at all. Startups, small dev teams, and indie creators use cloud environments to stay lean, fast, and competitive.
**How much does cloud-based production cost?**
It varies depending on usage, but most platforms charge hourly or monthly based on your selected resources. Free tiers are often available.
**How secure is production in the cloud?**
Major cloud providers use strong encryption, access controls, and compliance standards to keep your data safe.
**Can I migrate my existing infrastructure to the cloud?**
Yes. Most providers support migration tools, templates, and professional services to help you transition smoothly.
**What if my team is spread across different countries?**
No problem. Cloud environments are built for remote teams, with global access, collaboration tools, and region-specific data centers.
**What cloud provider should I choose?**
It depends on your needs. Look for low latency, pricing transparency, and developer-friendly features. For example, Serverspace offers flexible configs, free traffic, and super-fast setup times — perfect for small teams.
https://serverspace.us/about/blog/how-to-organize-logging-and-auditing-on-a-linux-server-2.mdA Linux security audit systematically evaluates your servers and systems to assess user access, security controls, and configurations — helping you identify vulnerabilities and misconfigurations before they become threats.
In modern server administration, effective logging and auditing are not optional — they are foundational. Whether you’re running a personal server or managing production infrastructure, understanding and properly configuring Linux log systems is critical for ensuring system transparency, accountability, and security compliance.
This guide provides a deep dive into how logging and auditing work on Linux, which tools to use, how to set them up correctly, and how to build a secure and scalable log management system.
## Why is logging and auditing essential on a Linux server?
Logging and auditing allow system administrators and security professionals to:
- Monitor system health and application behavior
- Detect unauthorized access and privilege escalation
- Investigate incidents after the fact (forensics)
- Satisfy compliance requirements (e.g., PCI DSS, HIPAA, ISO 27001)
Without centralized and well-maintained logs, security and observability collapse. Even basic troubleshooting becomes guesswork.
## What are the main types of logs in Linux and where are they stored?
Linux systems generate various types of logs, typically stored under /var/log. Key examples include:
- **/var/log/syslog** or **/var/log/messages** — general system events
- **/var/log/auth.log** — authentication events (SSH, sudo)
- **/var/log/kern.log** — kernel messages
- **/var/log/dmesg** — boot-time kernel ring buffer
- **/var/log/cron** — scheduled task execution
- **/var/log/apache2/** or **nginx/** — web server logs
Some distributions (e.g., Arch, Fedora) may rely exclusively on journald rather than traditional syslog files.
## How does the Linux logging system work under the hood?
Modern Linux systems use a layered logging infrastructure:
- **Systemd-journald**: Captures logs from services and the kernel. Can write to binary logs or forward to syslog.
- **rsyslog/syslog-ng**: Handles filtering, formatting, local storage, and forwarding to external systems.
- **Logrotate**: Manages log file rotation, compression, and retention.
On newer distributions, journald is the main logging service. It offers structured metadata, filtering capabilities, and rate-limiting. Syslog daemons (rsyslog, syslog-ng) often run alongside to maintain compatibility and support legacy applications.
## What tools can be used for centralized logging and how are they configured?
To avoid log sprawl and fragmented data, centralized logging is recommended. Options include:
- **rsyslog** or **syslog-ng** with remote forwarding (UDP/TCP/TLS)
- **Elastic Stack (ELK)**: Beats agents, Logstash, Elasticsearch, Kibana
- **Fluentd / Fluent Bit**: Lightweight, pluggable log routers
- **Grafana Loki + Promtail**: Log aggregation with cloud-native focus
- **Graylog**, **Logwatch**, **GoAccess** — for local or web-accessible dashboards
Configuration typically involves setting up an agent on each server to forward selected logs to a central collector node with sufficient storage and analysis capability.
## How to configure rsyslog for custom logging and log forwarding?
rsyslog is highly flexible. A typical configuration includes:
- **Input module**:
```
module(load="imuxsock") # Unix sockets for syslog
module(load="imklog") # Kernel log messages
```
- **Filter rules**:
```
if $programname == 'sshd' then /var/log/ssh.log
```
- **Remote forwarding**:
```
*.* @@logserver.example.com:514 # TCP, or use @ for UDP
```
- **Templates**:
```
template(name="RemoteFormat" type="string"
string="%TIMESTAMP% %HOSTNAME% %syslogtag%%msg%\n")
```
Restart the rsyslog service after editing /etc/rsyslog.conf or /etc/rsyslog.d/*.conf.
## How to use journald for persistent and structured logging?
By default, journald logs to volatile storage. To make logs persistent:
```bash
mkdir -p /var/log/journal
systemctl restart systemd-journald
```
Use journalctl to query logs:
```
journalctl -u nginx.service --since "2h ago"
journalctl _UID=1000 -p err
```
You can also limit log retention by editing /etc/systemd/journald.conf:
```
SystemMaxUse=500M
SystemKeepFree=100M
MaxRetentionSec=7day
```
journald supports field-based filtering and output formatting (JSON, export).
## How to monitor and rotate logs properly?
Uncontrolled log growth can fill disks and cause service outages. Use **logrotate** to manage retention and compression. Example config:
```bash
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
systemctl reload nginx
endscript
}
```
Logrotate is typically scheduled via cron (/etc/cron.daily/logrotate). Custom rules go into /etc/logrotate.d/.
## What are the best practices for Linux auditing?
Logging ≠ auditing. Logging records system activity; auditing captures _who did what_. Best practices include:
- Use auditd for system-level audit trails
- Define specific watch rules (files, users, syscalls)
- Centralize audit logs separately from syslogs
- Enforce immutability (e.g., chattr +i on audit logs)
- Monitor audit logs actively for suspicious activity
Audit logs must be protected from tampering and should outlive regular log rotation.
## How to configure auditd to track critical system events?
Audit rules are configured via auditctl (runtime) or /etc/audit/rules.d/audit.rules (persistent):
Examples:
```
-w /etc/passwd -p wa -k passwd_changes
-a always,exit -F arch=b64 -S execve -F euid=0 -k root_commands
-w /var/log/auth.log -p r -k read_auth_log
```
After adding rules:
```bash
augenrules --load
systemctl restart auditd
```
Review audit logs:
```
aureport -au
ausearch -k root_commands
```
## How to protect log integrity and ensure compliance?
To ensure logs remain valid and admissible (e.g., for audits):
- Store logs in read-only or append-only storage (e.g., chattr +a)
- Sync to external immutable storage or SIEM
- Sign logs or hash periodically for tamper detection
- Set up alerts for log deletion or truncation
- Regularly back up log archives
These steps are essential for compliance with standards like ISO 27001, SOC 2, PCI DSS.
## What are the recommended tools for log analysis and alerting?
Effective log analysis involves real-time monitoring, historical review, and actionable alerts. Tools include:
- journalctl, ausearch, aureport — native command-line
- **GoAccess** — web-based real-time log analyzer
- **Fail2ban** — scans logs and bans abusive IPs
- **Logwatch**, **Logcheck** — summary reports
- **ELK stack**, **Graylog**, **Loki + Promtail** — centralized log analysis
Integration with alerting tools (email, Slack, PagerDuty) allows real-time incident response.
## How to design a secure and scalable logging/auditing architecture for production systems?
A robust architecture should include:
- Local logging via journald and rsyslog
- Central log aggregation (e.g., ELK, Loki)
- Encrypted log forwarding (TLS)
- Immutable storage (WORM or chattr +i)
- Role-based access to logs and dashboards
- Automated log parsing and enrichment
This design ensures visibility across services, minimizes data loss, and supports forensic investigation.
If you're looking to implement this in a flexible and cost-efficient environment, consider using a [Linux VPS](https://serverspace.us/services/vps-server/linux.md) from Serverspace. It allows you to deploy a clean, production-grade Linux instance in seconds, configure full audit/logging systems, and scale as needed — with human support, free traffic, and no vendor lock-in.
Proper logging and auditing is not a luxury — it's the backbone of any secure and reliable Linux infrastructure. With the right setup and discipline, teams can gain visibility, enforce accountability, and sleep better at night.
https://serverspace.us/about/news/lower-cost-of-cloud-infrastructure-in-dubai.mdDiscover new lower prices for cloud infrastructure in Dubai.
The cost of cloud infrastructure in **Dubai (Equinix DX1)** is now aligned with other Serverspace locations. What was once one of the most expensive regions for IT infrastructure has become as accessible as Europe, Asia, or Brazil.
Dubai has long since moved beyond its image as a "city of skyscrapers." Today it is a major hub for fintech, logistics, and digital startups. To operate effectively, companies need infrastructure that is both reliable and cost-efficient. With Serverspace, virtual servers in the UAE can now be deployed quickly and without extra costs. See our [pricing plans](https://serverspace.us/pricing.md) for details on the new rates.
**How to get started:**
-
Sign up in the Serverspace control panel.
-
Deploy your cloud via the_ vStack Cloud_ or _VMware Cloud_ tab.
-
Select the Dubai data center.
-
Configure your server.
-
Click _Create_.
_[Serverspace](https://serverspace.us/index.md) is a cloud provider offering virtual infrastructure deployment on Linux and Windows platforms from anywhere in the world in under 1 minute. Tools like API, CLI, and Terraform are available for seamless integration with client services._
https://serverspace.us/about/blog/what-is-a-tier-iii-data-center-and-why-does-t-matter.mdTier III data centers guarantee enterprise reliability with 99.982% uptime and fault-resistant design — the backbone of modern cloud.
Understanding what is tier in data centers is foundational for any cloud strategy. The tier model (I–IV) defines how resilient a facility is, from basic redundancy to fully fault-tolerant designs. For most businesses, Tier III is the sweet spot — the top tier balance of cost, availability, and operational flexibility in a modern colocation data center. This article explains Tier III in plain technical English and shows how Serverspace deploys global data center infrastructure — including the USA (NNJ3) and a Tier IV site in Brazil.
## What Is Tier сlassification?
The tier system answers a practical question: how many things can break before services go down? In other words, _what is tier_ measuring in a data center infrastructure context? It measures redundancy, maintainability, and fault tolerance across power, cooling, and network systems.
- **Tier I:** Basic capacity; little or no redundancy.
- **Tier II:** Redundant components, but maintenance often requires downtime.
- **Tier III:** N+1 redundancy and _concurrent maintainability_ — you can service infrastructure without stopping workloads. For many enterprises this is effectively the top tier for cost–benefit.
- **Tier IV:** Full 2N redundancy and fault tolerance; designed to run through unplanned failures.
## Why Tier III is the enterprise standard
A Tier III colocation data center delivers 99.982% uptime (about 1.6 hours of downtime per year) with N+1 redundancy across critical systems. The defining feature is _concurrent maintainability_: scheduled work on power or cooling can occur without taking production offline. For most cloud workloads — web and app backends, fintech, e-commerce, and B2B SaaS — Tier III is the top tier choice when you need high availability without the hyperscale price tag of Tier IV. You'll also see Tier III facilities paired with carrier-dense interconnects from providers like Equinix; this is where phrases like "equinix data center interconnection" enter architecture conversations.
In solution briefs you may also see "tier3" used informally to mean Tier III. In practice, tier3 implies the same N+1 design target, the same operational philosophy, and the same maintainability guarantees that let ops teams sleep at night.
## Serverspace: Tier III (and higher) by design
Serverspace builds cloud services on [top tier data center infrastructure](https://serverspace.us/infrastructure/data-centers.md) — Tier III or higher — to ensure consistency across regions. Our current Tier III footprint includes:
- **USA — [NNJ3 (New Jersey)](https://serverspace.us/infrastructure/datacenter-new-jersey.md)**: East Coast reach with Tier III architecture and concurrent maintainability; ideal for low-latency access to New York–metro ecosystems in a colocation data center model.
- **Europe — [Equinix AM2 (Amsterdam, Netherlands)](https://serverspace.us/infrastructure/datacenter-amsterdam.md)**: A carrier-rich hub tied into AMS-IX and major routes; a proven Tier III facility within the global Equinix and data center interconnection fabric.
- **Middle East — [Equinix DX1 (Dubai, UAE)](https://serverspace.us/infrastructure/data-center-dubai.md)**: Enterprise-ready Tier III design for regional workloads, connected to a broad network edge and partner ecosystem.
- **Central Asia — [Kazteleport (Almaty, Kazakhstan)](https://serverspace.us/infrastructure/data-center-almaty.md)**: Tier III-level reliability that anchors regional deployments and hybrid topologies.
These sites combine resilient power and cooling with dense connectivity — including Internet exchanges, carriers, and cloud on-ramps — so your applications can sit close to users and partners. Where we operate inside Equinix campuses, customers also benefit from the broader "equinix data" interconnection ecosystem and standardized operational practices you expect from Equinix and data center leaders.
## Beyond Tier III: Tier IV in Brazil
For customers with "never go down" requirements, Serverspace adds a higher rung: [Equinix SP3](https://serverspace.us/infrastructure/data-center-sao-paulo.md) (São Paulo, Brazil), a Tier IV facility with 2N redundancy and 99.995% uptime design targets (about 26 minutes of downtime per year). Tier IV is fault tolerant: an unexpected failure in one path won't interrupt operations. In short, SP3 elevates our Latin American presence to a top tier standard for mission-critical workloads.
## Comparing data center Tiers
The table below summarizes the practical differences among Tier II, Tier III, and Tier IV from a reliability and operations standpoint.
| Feature | Tier II Data Center | Tier III Colocation Data Center | Tier IV Top Tier Data Center |
| --- | --- | --- | --- |
| Redundancy | Partial redundancy; some single points of failure | N+1 redundancy across all critical systems | 2N full redundancy; no single point of failure |
| Uptime | ~99.741% (~22 hours downtime/year) | 99.982% uptime (~1.6 hours downtime/year) | 99.995% uptime (~26 minutes downtime/year) |
| Maintenance | Planned work requires downtime | Concurrent maintainability (service without downtime) | Fault tolerant even during unplanned failures |
| Business Fit | SMBs; low-criticality apps | Top tier choice for enterprise cloud, fintech, SaaS | Mission-critical finance, healthcare, hyperscale cloud |
| Examples | Regional sites with limited backup | Equinix data centers (e.g., AM2, DX1, NNJ3) used by Serverspace for Tier III | Equinix SP3 (Brazil) — Tier IV reference site |
## Why Tier III matters for your cloud strategy
Choosing a Tier III colocation data center is about risk engineering, not marketing slogans. With tier3 design you get predictable maintenance windows, fewer failure modes, and strong SLA alignment for availability. When your platform sits on top of top tier data center infrastructure — such as Equinix and data center campuses with carrier-dense meet-me rooms — incident response speeds up and recovery options multiply. That's the difference between a brief hiccup and a headline-making outage.
Serverspace couples this infrastructure baseline with streamlined provisioning, transparent pricing, and a developer-friendly control panel. The result: you ship faster, scale smoothly, and keep focus on product while the facility handles power, cooling, and interconnects. For the Americas, our NNJ3 presence anchors low-latency East Coast workloads; in LATAM, Equinix SP3 provides a Tier IV option for the most demanding deployments.
## Getting started with Serverspace
Deploy in minutes on top tier Tier III sites in the USA, Europe, and the Middle East, or target Tier IV in Brazil when fault-tolerance is non-negotiable. Whether you're migrating a monolith, launching a microservices stack, or extending a hybrid footprint, Serverspace's colocation data center partners and cloud platform give you a clear path from prototype to production.
_Serverspace — Global cloud on top tier Tier III and Tier IV [data center infrastructure](https://serverspace.us/infrastructure/data-centers.md)._
https://serverspace.us/about/blog/understanding-bandwidth-latency-and-traffic.mdLearn the difference between bandwidth, latency, throughput, and traffic. Clear definitions, real examples, and how Serverspace optimizes cloud performance.
Every time you stream a movie, join a video call, or deploy a cloud application, three invisible forces decide how smooth it feels:
bandwidth, latency, and traffic. These terms are often confused, yet they describe different aspects of network performance. If you have ever searched for bandwidth def or wondered about latency meaning, this guide gives you clear answers.
Cloud providers like Serverspace rely on optimized bandwidth, low latency, and unlimited traffic policies to deliver reliable performance across global data centers.
Understanding these factors helps both businesses and end users make better choices and avoid frustrating lag.
## Bandwidth: definition and real-world meaning
**Bandwidth def:** the maximum capacity of a network connection to transfer data, usually measured in Mbps or Gbps.
Imagine it as the width of a highway: the wider it is, the more cars (or data packets) can travel at once.
More bandwidth allows faster downloads and smoother streaming, but it doesn't always guarantee responsiveness.
## Latency: meaning, impact and examples
**Latency meaning:** the time it takes for data to travel from one point to another, measured in milliseconds.
**Low latency meaning:** a connection where this delay is minimal—critical for real-time applications.
_Network latency_ is the technical metric; _lag_ is what users feel when latency is too high.
## Traffic: data on the move
Traffic measures the total amount of data transferred across a network during a period of time.
Unlike bandwidth (capacity) and latency (delay), traffic shows actual usage.
A site with text generates little traffic, while a video platform produces massive outbound traffic.
## Throughput: the effective output
Throughput is the actual data rate achieved under real conditions.
It depends on bandwidth but is also affected by latency, packet loss, and congestion.
For example, a 100 Mbps line might deliver only 60 Mbps throughput if the network is busy.
## Comparison table
| Term | Definition | Units | Impact | Example |
| --- | --- | --- | --- | --- |
| Bandwidth | Maximum capacity of a link (bandwidth def) | Mbps / Gbps | How much data can flow | Downloading a large file |
| Latency | Delay between send and receive (latency meaning) | Milliseconds | Responsiveness of connection | Online gaming or video calls |
| Throughput | Realized data transfer rate | Mbps / Gbps | Real-world speed | Performance of cloud apps |
| Traffic | Total data volume over time | MB / GB / TB | Usage and scaling | Video streaming site load |
## How they work together
Bandwidth, latency, throughput, and traffic influence one another.
A network may have high bandwidth, but if latency is also high, users still experience lag.
Conversely, low latency with moderate bandwidth can deliver smooth video calls because responsiveness matters more than raw capacity.
Traffic spikes add another layer: sudden surges can overwhelm available bandwidth and reduce throughput.
## Common misconceptions
Bandwidth is often mistaken for speed, but in fact speed aligns more closely with throughput.
Lag is not always caused by lack of bandwidth—it often results from high latency or inefficient routing.
Simply upgrading bandwidth without addressing latency or congestion may not improve performance.
## Measuring and improving
Tools such as [Speedtest](http://
https://serverspace.us/about/blog/multi-cloud-vs-hybrid-cloud-strategy-or-just-marketing-buzz.mdUnlock the difference between multi cloud and hybrid cloud. Explore real strategies, avoid vendor lock-in cloud risks and boost flexibility with Serverspace.
The terms multi cloud and hybrid cloud are everywhere — pitch decks, conference keynotes, and "future of IT" threads. But do they describe real cloud strategy choices, or are we just seasoning architecture with marketing salt? Let's slice through the buzz and map when each model actually delivers cloud flexibility, cost control, and fewer vendor lock-in cloud headaches.
## Quick definitions that won't waste your time
**Multi cloud** = using services from more than one public cloud provider (e.g., AWS + Azure + GCP), typically to gain flexibility, performance options, cost leverage, or regional reach.
**Hybrid cloud** = blending public cloud with private infrastructure (on-prem or hosted), usually for data sovereignty, compliance, or latency to internal systems.
## Why people pick multi cloud
- **Freedom of choice:** best-of-breed services per workload (e.g., analytics on one provider, edge/CDN on another).
- **Resilience:** failover or disaster recovery that isn't stuck behind one vendor's status page.
- **Pricing leverage:** vendors sharpen pencils when they know you can move.
_Heads-up:_ the freedom tax is real — more tooling, more skillsets, and more integration work.
## Why teams go hybrid
- **Regulatory comfort:** keep sensitive data on private infrastructure, burst to public for elastic loads.
- **Latency to legacy:** some systems won't move; hybrid reduces round-trips to crown-jewel databases.
- **Control boundaries:** you decide where apps and data live — useful for enterprise change management.
Hybrid shines in finance, healthcare, and public sector — places where compliance isn't optional.
## Multi-Cloud vs Hybrid Cloud — At a Glance
| Criteria | Multi Cloud | Hybrid Cloud |
| --- | --- | --- |
| Core idea | Multiple public clouds for the same org | Public cloud + private/edge/datacenter |
| Primary goal | Cloud flexibility & less vendor lock-in cloud risk | Compliance, data control, local latency |
| Best suited for | Teams mixing diverse services/workloads | Enterprises with strict governance |
| Main challenge | Integration, unified observability, people skills | Networking complexity, private infra costs |
| Typical win | Service choice + price/perf arbitrage | Policy compliance with elastic scale |
## Strategy or just buzz?
Both are real strategies, not just buzzwords — but they solve different problems. Multi cloud spreads risk and maximizes options. Hybrid cloud draws a governance line between public and private. The noise starts when vendors mash them together into a single magical "multi-hybrid-something" without solving data portability, cost visibility, or a single control plane.
That's why teams increasingly look for platforms that simplify orchestration across footprints. For example, Serverspace multi cloud aims to streamline _enterprise cloud hosting_ with a unified control experience and transparent, predictable pricing — practical when you're juggling regions and providers without wanting three different dashboards.
## Real-world flavors
- **Content giants:** Distributing workloads across providers (compute here, storage there, CDN elsewhere) is a classic multi cloud move. Netflix's engineering culture popularized provider-agnostic thinking; see their public tech posts for the mindset and tooling patterns ([Netflix TechBlog](http://
https://serverspace.us/about/news/launched-web-application-firewall.mdStrengthen your web apps with Serverspace WAF — integrated with CDN to block OWASP Top 10 threats, filter malicious traffic, and boost performance.
[https://serverspace.us/wp-content/uploads/2025/09/waf-1.svg](https://serverspace.us/wp-content/uploads/2025/09/waf-1.svg)
We've added a new service to strengthen web application security — **Web Application Firewall (WAF)**. It's available right inside the[Serverspace control panel](https://auth.serverspace.us/) under the [СDN](https://serverspace.us/services/cdn.md) section and complements content acceleration with the ability to filter malicious traffic.
According to the[Akamai State of Apps and АРI Security 2025](https://serverspace.us/www.akamai.com/lp/soti/app-api-ai-security-report-2025) report, attacks on web apps and APIs grew by **33%** in 2025, surpassing **311 billion incidents**. The main targets remain the classics — SQL injections, XSS, CSRF, and other OWASP Top 10 threats.
With this update, Serverspace covers two key needs of web applications: faster performance through CDN and protection from the most common attacks with WAF**.** Enabling WAF takes just a few minutes and doesn't require complex setup. Once active, traffic is filtered through predefined security rules, reducing server load and blocking suspicious requests.
### **Key WAF capabilities:**
- Protection against OWASP Top 10 attacks (SQL injections, XSS, CSRF, and more);
- Malicious traffic filtering before it reaches your servers;
- Flexible rule customization for project-specific needs.
Pricing is straightforward: billing is done per **10,000 requests**, making costs transparent and easy to control.
### **Ready to shield your project?**
_[Serverspace](https://serverspace.us/index.md) is a cloud provider offering automatic deployment of virtual infrastructure based on Linux and Windows from anywhere in the world in under 1 minute. Open integration tools — API, CLI, and Terraform — are available to fit into your workflows._
https://serverspace.us/about/blog/waf-the-web-app-security-every-site-needs.mdWeb Application Firewall (WAF) protects your apps from OWASP Top-10 threats like SQL injection, XSS, brute force, and API attacks. Activate WAF + CDN in minutes to keep your web apps secure, fast and compliant.
Web applications are the beating heart of modern business. Orders, payments, user registrations, data storage, and internal communication all flow through them. The more valuable your service, the more it attracts hackers.
Classic DDoS floods aren't the main threat anymore. Today's attackers prefer smarter methods: **SQL injection, XSS, brute force on APIs, and credential stuffing**. Automated bots can scan thousands of websites in minutes, hunting for weak spots.
## What is a WAF?
A [Web Application Firewall (WAF)](https://serverspace.us/services/waf.md) is like a traffic cop for your HTTP(S) traffic. It inspects every request and decides whether to let it through or block it before it hits your app.
Unlike a network firewall that only filters IPs and ports, a WAF _understands_ the structure of web traffic. For example:
- A SQL string injected into a search bar instead of normal text.
- Hundreds of password attempts per second on a login form.
Both cases get flagged and blocked before they ever reach your database or app.
## Types of Attacks Stopped by WAF
- **SQL Injection** – inserting malicious queries to steal or alter data.
- **XSS (Cross-Site Scripting)** – injecting scripts that hijack sessions or steal user data.
- **Brute Force & Session Hijacking** – endless login attempts and token theft.
- **API Attacks** – overloading or exploiting API endpoints.
- **Application-Layer DDoS** – swarming the site's logic instead of the network.
- **CMS & Framework Exploits** – taking advantage of known holes in popular systems.
With a WAF in place, these threats get filtered out before they can wreck your app, steal data, or tank uptime.
## How WAF Works
- **Signature-based analysis** – matches known attack patterns.
- **Behavioral analysis** – flags abnormal activity, like login floods.
- **Machine learning** – learns your app's traffic profile to cut down false positives.
- **Real-time filtering** – blocks bad requests before they ever hit your server.
## WAF vs. No WAF: Side-by-Side
| Scenario | No WAF | With WAF |
| --- | --- | --- |
| SQL Injection | Query hits the DB, data gets stolen | Blocked at the edge |
| XSS Attack | Malicious script runs, cookies hijacked | Filtered before page load |
| Brute Force | Unlimited login attempts | IP blocked on suspicious behavior |
| API Flood | Massive requests overload the service | Abnormal traffic stopped at entry |
| App-Layer DDoS | Site crashes, revenue lost | Suspicious traffic filtered out |
| CMS Exploits | Zero-day hits before patch | Common exploits blocked by rules |
## Why WAF Matters Now
Security reports paint a clear picture: web applications are under nonstop fire. Millions of API attacks, billions of security events, and record-breaking request floods show why **WAF security is no longer optional**.
## CDN + WAF: The Perfect Combo
A[Content Delivery Network (СDN)](https://serverspace.us/services/cdn.md) accelerates performance and reduces server load. A WAF filters web threats. Together, they deliver speed and security in one package. At [Serverspace](https://serverspace.us/index.md), you can activate both directly in your control panel within minutes—no extra software needed.
## Common WAF Mistakes
- Leaving default settings untouched.
- Thinking WAF solves everything (it doesn't replace patching).
- Ignoring logs that reveal ongoing attacks.
- Skipping rule updates.
- Going straight into block mode without tuning.
## Business Benefits of WAF
- Lower risk of downtime and data breaches.
- Compliance with standards like **PCI DSS**.
- Less stress on IT and dev teams.
- Seamless integration with **CDN security**.
**Bottom line:** A WAF is a must-have for any web app. Combined with CDN acceleration, it keeps your site fast, resilient, and protected against today's OWASP Top-10 and beyond.
https://serverspace.us/support/help/how-to-create-and-use-venv.mdLearn how to create and use a Python virtual environment using the venv module. Easy setup instructions!
When working with Python projects, especially on a single server or machine, it is important to isolate dependencies to avoid conflicts between different libraries and versions. For this purpose, there is a mechanism of virtual environments. One of the standard tools is venv.
In this article, we will consider what venv is, why it is needed, and how to create a virtual environment for a project.
## What is venv?
**venv** is a built-in Python module that allows you to create an isolated environment for running Python programs. Each environment contains its own directory with installed libraries and does not affect the system Python and other environments.
Using venv is especially relevant when working with multiple projects that require different versions of libraries.
## Installing Python
The venv module is included in the standard Python distribution, starting with version 3.3. Make sure Python is installed on your system:
```
python3 –version
```
If Python is not installed, you can install it depending on your OS. For example, for Ubuntu:
```bash
sudo apt update
sudo apt install python3 python3-venv python3-pip
```
Screenshot № 1 — Installation
Go to your project directory or create a new one:
```
mkdir myproject
cd myproject
```
Create a virtual environment with the command:
```
python3 -m venv venv
```
Screenshot № 2 — Create virtual env
Here venv is the name of the directory where the virtual environment will be located. You can name it differently (for example, env or .venv), but venv is often used by convention.
After executing the command, a folder structure will be created containing its own Python interpreter and a directory for libraries.
## Activating a virtual environment
To use the environment, you need to activate it in Linux/macOS:
```
source venv/bin/activate
```
Screenshot № 3 — Activate venv
And in Windows via the PowerShell management shell:
```
.\venv\Scripts\Activate.ps1
```
After activation, a prefix with the environment name will appear in the terminal:
Now any installed libraries will be saved only within this environment. Make sure you have activated the environment. Now you can install dependencies as usual:
```bash
pip install requests
```
Screenshot № 4 — Installation of packet
To save the list of libraries to a file, use:
```bash
pip freeze > requirements.txt
```
And then restore on another machine:
```bash
pip install -r requirements.txt
```
Deactivating a virtual environment
To exit the virtual environment and return to the system Python, run the command:
```
deactivate
```
If you no longer need the environment, simply delete its directory:
```
rm -rf venv
```
Screenshot № 5 — Deactive
Using venv is a simple and convenient way to organize an isolated environment for Python projects. It avoids conflicts between libraries, makes it easier to manage dependencies, and makes projects more portable.
https://serverspace.us/support/help/how-do-i-rebuild-a-server-in-the-serverspace-control-panel.mdHow to recreate a server in Serverspace: step-by-step instructions. Deleting and creating a server with saving IP addresses and changing OS. Important features and warnings
When working with cloud servers in the Serverspace control panel, there may be a need to recreate a server — for example, to change the operating system or fix critical issues. The server recreation feature allows you to delete the current virtual machine and create a new one in its place, while retaining the previously assigned IP addresses. This is a convenient way to quickly update or reconfigure a server without manually reserving and restoring network settings. In this article, we'll walk you through how to perform this operation step by step.
## How to Recreate a Server?
To do this, go to your list of servers and select the one you need. Then open the “**Actions**” menu –> “**Rebuild**“. After that, you will be able to recreate the server:
Next, you will need to select a **template version** and **confirm the server recreation** using the checkbox:
After that, your server will be recreated.
## FAQ: Frequently Asked Questions
- **What happens to my data when recreating the server?** All data stored on the server, including files, settings, and backups, will be permanently deleted. It is strongly recommended to manually back up important data to external storage before proceeding.
- **Can I change the operating system during recreation?** Yes, during the recreation process, you can select a different operating system from the list of available templates.
- **Will my server's IP addresses be preserved?** Yes, the recreation process retains all previously assigned IP addresses, helping you avoid changes in your network configuration.
- **How long does it take to recreate a server?** Typically, the process takes a few minutes, depending on the selected operating system and current infrastructure load.
- **Can I cancel the recreation after it starts?** No, the recreation operation is irreversible. Please be cautious when confirming the action.
https://serverspace.us/support/help/how-to-set-up-access-to-docker-api.mdLearn how to set up access to the Docker API: open ports, configure TLS for security. Manage containers remotely via REST API.
Sometimes you need to manage Docker not only through the local docker command, but also remotely — using the API. In this article, we will figure out how to enable access to the Docker API, what connection methods exist, and how to ensure connection security.
By default, the Docker API is only available via a socket. After installing Docker, containers are managed via a Unix socket /var/run/docker.sock. This is a local method, and it does not allow you to connect over the network. If you try to send an HTTP request to localhost:2375, you will get a connection error:
```bash
curl http://localhost:2375/version
# curl: (7) Failed to connect to localhost port 2375: Connection refused
```
To use the API remotely, you need to change the Docker configuration.
## Methods of accessing the Docker API
Docker can accept connections via:
- Unix socket (/var/run/docker.sock) — default.
- TCP socket without TLS (e.g. tcp://0.0.0.0:2375) — open access, NOT recommended.
- TCP socket with TLS (e.g. tcp://0.0.0.0:2376) — secure method.
Configuring the Docker API via configuration files. First, you need to change the Docker service startup parameters. Create or edit the file:
```
nano /etc/docker/daemon.json
```
Add or edit the contents:
```
{
"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
}
```
Since Docker does not prevent configuration collisions, we will remove the systemd startup arguments, bring it to the form shown in the screenshot:
```
nano /lib/systemd/system/docker.service
```
Screenshot № 1 — Systemd
Please note that port 2375 is used without encryption. Use it only in a test environment or with a firewall, as the Docker API does not initially provide authentication mechanisms that would allow validating users. Due to this misconfiguration, over 16 thousand machines may be infected now:
Screenshot № 2 — Shodan
Apply the changes and restart Docker:
```bash
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl restart docker
```
Check API availability:
```bash
curl http://localhost:2375/version
```
Screenshot № 3 — Client connection
## How to connect to the API from another computer
On the client machine, you can use:
```bash
export DOCKER_HOST=tcp://SERVER_IP:2375
docker ps
```
If the connection is not established, make sure that:
- The server is listening on port 2375 (ss -tuln | grep 2375)
- The port is open in the firewall (ufw allow 2375/tcp)
- Docker is indeed running with the required -H flag
- The safe option is TLS
- Generating SSL certificates
For secure network access, use TLS. Specify the paths to the certificates when starting Docker:
```
dockerd \
-H=unix:///var/run/docker.sock \
-H=0.0.0.0:2376 \
–tlsverify \
–tlscacert=/etc/docker/ssl/ca.pem \
–tlscert=/etc/docker/ssl/server-cert.pem \
–tlskey=/etc/docker/ssl/server-key.pem
```
## What to do if the API does not work
1. Docker is not listening on the TCP port. Check the startup arguments:
```
ps aux | grep dockerd
```
Make sure there is a flag -H tcp://0.0.0.0:2375.
2. The port is blocked. Check your firewall:
```
sudo ufw allow 2375/tcp
```
3. SELinux or AppArmor is blocking the connection
On systems with SELinux or AppArmor, additional permissions may be required.
The Docker API is a powerful tool for managing containers, but it requires careful configuration. Never open port 2375 to a public network without protection. It is better to use TLS or proxy via a secure reverse-proxy (for example, Nginx with HTTPS).
https://serverspace.us/support/help/how-to-install-safari-browser-on-linux.mdLearn how to install and run the Safari browser on Linux using Wine, PlayOnLinux, or virtual machines. Discover system requirements, installation steps, and limitations of using Apple’s browser on Linux.
**Safari** is Apple’s proprietary browser, installed by default on macOS and iOS. It does not have an official version for Linux, but you can still install it if you need to test the behavior of sites or interfaces in Safari. In this article, we will look at how to install Safari on Linux using the Wine environment.
## Step 1. Installing Wine
Wine allows you to run Windows applications on Linux. Let’s install it through the package manager. For Debian / Ubuntu:
```bash
sudo apt update
sudo apt install wine -y
```
Screenshot № 1 — Wine
For Fedora, use the command:
```bash
sudo dnf install wine
```
Check the installation:
```
wine –version
```
## Step 2. Downloading Safari for Windows
Download Safari 5.1.7 from the official Apple archive:
```bash
wget -L –user-agent=jj 'https://www.techspot.com/downloads/downloadnowfile/4184/?evp=efb9a6e0294de28dbc6ffc726c78604e&file=4372' -O Safari.exe
```
Screenshot № 2 — Download
## Step 3. Installing Safari via Wine
After downloading the installation file, run the installation via Wine:
```
wine Safari.exe
```
The Safari graphical installer will appear. Accept the terms and complete the installation.
## Step 4. Launch the browser
After installation, you can launch Safari with the following command:
```
wine ~/.wine/drive_c/Program\ Files\ \(x86\)/Safari/Safari.exe
```
If the path is different, find the file manually:
```
find ~/.wine -name "Safari.exe"
```
While Safari does not have a native version for Linux, it can be installed via Wine for basic testing. However, keep in mind that this is an outdated version of the browser. To accurately reproduce the behavior of sites in the current version of Safari, it is better to use cloud services or real Apple devices.
## FAQ – Installing Safari on Linux
- **1. Can I install the latest version of Safari on Linux?**
No, the latest Safari versions are only available for macOS and iOS. The Windows version (5.1.7) is outdated and no longer supported by Apple.
- **2. Is it safe to use Safari 5.1.7 on Linux?**
This version is safe for basic website testing, but it should not be used for everyday browsing due to outdated security protocols and lack of updates.
- **3. Will websites look the same as in the macOS version of Safari?**
Not exactly. Safari 5.1.7 uses an older WebKit engine, so rendering and CSS behavior may differ from the latest macOS version. For accurate testing, use cloud-based testing tools like BrowserStack or a real macOS device.
- **4. Can I install Safari using a virtual machine instead of Wine?**
Yes, you can install macOS in a virtual machine (such as VirtualBox or VMware) and use the native Safari version, but this requires a legal macOS image and appropriate licensing.
- **5. What is the best alternative for testing Safari compatibility on Linux?**
Use web testing platforms such as BrowserStack, LambdaTest, or Sauce Labs. They provide remote access to real macOS environments and the latest Safari versions for precise compatibility checks.
https://serverspace.us/support/help/how-to-set-up-proxy-on-linux-client.mdLearn how to set up a proxy on a Linux client: setting environment variables, configuring APT, and testing the connection via curl.
**A proxy server** is used to redirect network traffic from a client to a target resource. It can perform caching, access control, anonymization, or bypass restrictions.
In this guide, we will look at how to set up a proxy on a client machine (Linux) and how to deploy a simple proxy server based on squid.
## Configuring a proxy on the client
To configure a proxy server on the client side, you must specify the proxy address and port in the system or user environment variables.
Step 1. Setting environment variables
Add the following lines to your ~/.bashrc or ~/.bash_profile:
```
export http_proxy="http://:"
export https_proxy="http://:"
export ftp_proxy="http://:"
export no_proxy="localhost,127.0.0.1,::1″
```
Example:
```
export http_proxy="http://192.168.1.100:3128″
export https_proxy="http://192.168.1.100:3128″
```
Apply changes:
```
source ~/.bashrc
```
Screenshot № 1 — Export
Step 2. Installing a proxy in apt (for Debian/Ubuntu)
Create or edit the file /etc/apt/apt.conf.d/95proxies:
```
Acquire::http::Proxy "http://192.168.1.100:3128/";
Acquire::https::Proxy "http://192.168.1.100:3128/";
```
## Configuring a proxy server (Squid)
Squid is a popular caching proxy server with flexible configuration.
Step 1. Install Squid
For Debian / Ubuntu:
```bash
sudo apt update
sudo apt install squid -y
```
Screenshot № 2 — Squid
For CentOS / RHEL:
```bash
sudo yum install squid
```
Step 2. Configure Squid
Open the configuration file:
```
sudo nano /etc/squid/squid.conf
```
Find and edit the following parameters:
```xml
##Allow access from your subnet:
acl localnet src 192.168.1.0/24
http_access allow localnet
##Specify the port (default is 3128):
http_port 3128
```
Save the changes and restart the service:
```bash
sudo systemctl restart squid
sudo systemctl enable squid
```
Screenshot № 3 — Server deploy
Step 3. Checking the work
From the client, make a request:
```bash
curl -x http://192.168.1.100:3128 http://example.com
```
If the proxy works, you will receive an HTML response from the site.
For authentication, add auth_param to the Squid configuration. The work logs are located in /var/log/squid/access.log. Proxy configuration is a useful tool for administering network traffic. You can set proxy server parameters both on the client and run your own server based on Squid. This will provide control, acceleration and filtering of connections.
https://serverspace.us/support/help/how-do-i-install-owncloud-using-docker.mdStep-by-step instructions for installing ownCloud using Docker: configuring containers, databases, and IP access.
**ownCloud** is a convenient platform for organizing personal cloud storage. Installation via Docker allows you to quickly deploy the system without complicated configuration of the server environment. In this article, we’ll look at how to launch ownCloud in a container.
What will be needed?
- Linux server (Ubuntu, CentOS, RedOS, etc.)
- Installed Docker and Docker Compose
- SSH access with sudo or root rights
Step 1. Install Docker and Docker Compose
If Docker is not installed yet:
Ubuntu / Debian
```bash
sudo apt update
sudo apt install -y docker.io docker-compose
```
Screenshot № 1 — Installation
CentOS / RedOS
```bash
sudo yum install -y docker
sudo systemctl enable –now docker
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
```
Check that everything is working.:
```bash
docker –version
docker-compose –version
```
Step 2. Creating a Docker Compose file
Creating a working folder:
```
mkdir -p ~/owncloud-docker
cd ~/owncloud-docker
```
Creating a docker-compose file.yml:
```xml
version: '3.1'
services:
owncloud:
image: owncloud/server:latest
container_name: owncloud
restart: always
ports:
– 8080:8080
environment:
– OWNCLOUD_DOMAIN=your-data
– OWNCLOUD_TRUSTED_DOMAINS=your-data
– OWNCLOUD_ADMIN_USERNAME=admin
– OWNCLOUD_ADMIN_PASSWORD=admin
– OWNCLOUD_DB_TYPE=mysql
– OWNCLOUD_DB_NAME=owncloud
– OWNCLOUD_DB_USERNAME=owncloud
– OWNCLOUD_DB_PASSWORD=secret
– OWNCLOUD_DB_HOST=db
depends_on:
– db
volumes:
– owncloud_files:/mnt/data
db:
image: mariadb:10.5
container_name: owncloud-db
restart: always
environment:
– MYSQL_ROOT_PASSWORD=secret
– MYSQL_DATABASE=owncloud
– MYSQL_USER=owncloud
– MYSQL_PASSWORD=secret
volumes:
– db_data:/var/lib/mysql
volumes:
owncloud_files:
db_data:
```
Please note that in order for the service to be accessible via an IP address, you must specify your **ip a**. And make an OWNCLOUD_TRUSTED_DOMAINS entry, in order to change it, you need to delete the storage and restart the container.
Step 3. Launching ownCloud
Launching containers:
```bash
docker-compose up -d
```
Screenshot № 2 — Docker
Checking the status:
```bash
docker ps
```
Step 4. Access to ownCloud
Open it in the browser:
```
http://ip_server:8080
```
Screenshot № 3 — Result
Log in to the panel using login: admin and password: admin
Step 5. Safety recommendations
- Configure proxying via Nginx and HTTPS (for example, via Let’s Encrypt)
- Change the default passwords
- Configure Docker volume backups (owncloud_files, db_data)
Installing ownCloud via Docker is a fast and flexible way to run cloud storage without unnecessary configuration. You get all the features of ownCloud with the ability to scale and easily upgrade.
https://serverspace.us/support/help/shadowsocks-how-to-quickly-deploy-on-your-computer.mdLearn how to quickly deploy Shadowsocks on your computer for secure, encrypted internet access. Step-by-step setup guide for Linux with tips.
At the moment it is not illegal to use the containerisation platform, however, downloading images from repositories has been stopped for some countries! What to do if you accidentally get blocked? There are many options to solve the problem: raising a mirror of the site, a VPN server or a proxy tunnel. In this tutorial we will look at the simplest option to connect to Docker Hub. We will use ShadowSocks!
## What is ShadowSocks and how do I configure it?
**ShadowSocks is a proxy server** with the ability to encrypt tunnelled traffic passing through it for secure transmission, through untrusted parts of the network, as well as addressing through devices with a different IP address.
The principle of operation is as follows:
**client** <—>** ss-local**<–[**encrypted traffic**]–>** ss-remote** <—> **target server**
The client raises a proxy server on its side, which can be reached by internal address. All traffic coming to it is encrypted and sent to the ss-remote or endpoint, where it is received and decrypted. After that, it is addressed by the machine where the packets came from, and then the reverse process of transmission to the client takes place.
## Configuring the ShadowSocks server
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №2 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways!
Before installing and configuring the server, you need to update the repositories and download the required packages. If you are using apt-manager, the command will look as follows:
```bash
apt update && apt install curl snapd -y
```
Screenshot №3 — Snapd installation
Before installing and configuring the server, you need to update the repositories and download the required packages. If you are using apt-manager, the command will look as follows:
```
snap install core
```
After that, let’s install the ShadowSocks package itself:
```
snap install shadowsocks-rust
```
Let’s check its components and permissions to work with the rest of the OS via commands:
```
snap services shadowsocks-rust
```
```
snap connections shadowsocks-rust
```
Screenshot №4 — List of services
As you can see the package consists of two services local and server, where one is a client for connection and the other is a server. This image has rights to work with the network and the ability to make changes to the network stack.
Let’s create a configuration file for our server, in json format:
```
nano /root/shadowsocks.json
```
And write the configuration to connect to the server:
```
{
"server": "0.0.0.0",
"mode":"tcp_and_udp",
"server_port":1224,
"password":"ZmVlNmlldDVhZW5naWU2ZWlUb29nOGFobjNvaFlpZQo=",
"timeout":300,
"method":"2022-blake3-aes-256-gcm"
}
```
Screenshot №5 — Server configuration
In the server field specify a specific external IP address or leave the default reception from all interfaces as 0.0.0.0.0. In the mode field specify the protocol for transporting your traffic, then specify the port to connect to the server. Password of 31 single characters in base64 form, for this purpose write the following command and enter the result in the password field:
```
echo "YOUR_PASSWORD" | base64
```
If you wish and your requirements, you can change the method of traffic encryption! Let’s save the configuration file with the combination **Ctrl + O**. After that, let’s test the server operability with the command, where we call the daemon and specify the config for its operation:
```
snap run shadowsocks-rust.ssserver-daemon -c /root/shadowsocks.json
```
Screenshot №6 — Test of server
Great traffic is proxied, so we can add the server to autoload:
```
snap start –enable shadowsocks-rust.ssserver-daemon -c /root/shadowsocks.json
```
This will create a unit in the initialisation system, which we need to edit and add our new configuration file:
```
nano /etc/systemd/system/snap.shadowsocks-rust.ssserver-daemon.service
```
Add a string to the ExecStart field and start reading configurations:
```
ExecStart=/usr/bin/snap run shadowsocks-rust.ssserver-daemon -c /root/shadowsocks.json
```
Screenshot №7 — Add config to unit
Let’s save the file and reread the new configuration, then start the service:
```bash
systemctl daemon-reload && systemctl restart snap.shadowsocks-rust.ssserver-daemon
```
After that we fix the result and check the ports:
```bash
systemctl status snap.shadowsocks-rust.ssserver-daemon
```
```
netstat -tulnp
```
Screenshot №8 — Result of configuration
The ports are listening and the service is working properly, now you need to perform the same steps but for the client.
## Configuring the ShadowSocks client
Also install the snapd and curl packages and follow the same steps as for the server.
```bash
apt install snapd curl -y
```
Let’s install the client and write a new configuration file for it:
```
snap install shadowsocks-rust
```
```
nano /root/client.json
```
In the file itself, insert the following JSON fields:
```
{
"server": "IP_Server",
"mode":"tcp_and_udp",
"server_port":Remote_port,
"local_address":"127.0.0.1″,
"local_port":Local_port,
"password":"Pass in Base64 from server",
"timeout":300,
"method":"Method of encrypt"
}
```
Let’s connect the autoloader for the user’s client and configure the file:
```
snap start –enable shadowsocks-rust.sslocal-daemon
```
```
nano /etc/systemd/system/snap.shadowsocks-rust.sslocal-daemon.service
```
Let’s write in the ExecStart field the necessary config for loading and operation:
```
ExecStart=/usr/bin/snap run shadowsocks-rust.sslocal-daemon -c /root/client.json
```
After that we start reading the new configuration files
```bash
systemctl daemon-reload
```
Let’s restart the service and check our settings via curl:
```bash
systemctl restart snap.shadowsocks-rust.sslocal-daemon.service
```
```
netstat -tulnp && curl — proxy socks5://127.0.0.1:1224 https://ifconfig.me
```
Screenshot №9 — Client-side result
In order for only Docker traffic to go through the proxy it is necessary to complete the initialisation system unit. Let’s create a folder and enter the config file:
```
mkdir /etc/systemd/system/docker.service.d
```
```
nano /etc/systemd/system/docker.service.d/http-proxy.conf
```
Screenshot №10 — Proxy file
ShadowSocks, thanks to its ability to encrypt traffic, provides a secure connection to the resources you need by bypassing restrictions and providing access to Docker Hub. By configuring the ShadowSocks server and client, and integrating it with the Docker client and daemon, you can create a stable and reliable connection. By following the step-by-step installation and configuration instructions, you will be able to configure the system so that all Docker traffic goes through the proxy, providing access to the required images and repositories.
This way, even in a lockdown environment, you can continue to leverage Docker’s containerisation capabilities using modern and reliable traffic proxying solutions.
https://serverspace.us/support/help/deploying-ai-llm-on-your-computer.mdHow can I deploy Ollama locally, and how can I send requests to the local LLM model via the Ollama API? Let's look at it in this article.
Automation is often not enough to solve local problems, which would simplify the user experience, both for solving personal issues and would be an excellent module in the IP. In this article, we will look at how to deploy local LLM or well-known AI models via Docker using Ollama. The instruction is suitable for Ubuntu, Windows (WSL2) or macOS.
If your capacities are not enough to solve the tasks, then Serverspace [provides the latest GPT models that are just as easy to integrate via API or use in a web dashboard. Below is a step-by-step process for launching the language model via Docker using the CPU.](https://serverspace.us/services/serverspace-gpt-api.md)
## 1. Installing Docker
### Linux (Ubuntu/Debian)
```bash
sudo apt update
sudo apt install docker.io
sudo systemctl enable –now docker
```
### Windows/macOS
Download Docker Desktop from the official website and install it. After installation, check the operation:
```
winget install Docker.DockerDesktop
```
And then you can check its performance by running the command:
```bash
docker run hello-world
```
## 2. Running Ollama in Docker (on CPU)
**Ollama** is a local server for running LLM (for example, LLaMA, Mistral, etc.).
```bash
docker run -d \
–name ollama \
-p 11434:11434 \
-v ollama_data:/root/.ollama \
ollama/ollama
```
The parameter -v ollama_data:/root/.ollama — saves models between restarts. By default, Ollama will use the CPU if there are no GPU drivers inside the container.
```bash
docker ps
docker exec -it ollama ollama pull llama3
docker exec -it ollama ollama list
```
## 3. Connecting the web interface — Open WebUI
```bash
docker run -d \
–name open-webui \
-p 3000:8080 \
–add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
ghcr.io/open-webui/open-webui:ollama
```
The interface will be available on: http://localhost:3000
## 4. Alternative: Text Generation Web UI (on CPU)
Create a Dockerfile:
```
FROM python:3.11-slim
RUN apt-get update && apt-get install -y git build-essential
RUN pip3 install torch torchvision torchaudio –index-url https://download.pytorch.org/whl/cpu
RUN git clone https://github.com/oobabooga/text-generation-webui
WORKDIR /text-generation-webui
RUN pip install -r requirements_cpu_only.txt
COPY start.sh /start.sh
RUN chmod +x /start.sh
ENTRYPOINT ["/start.sh"]
```
The startup script start.sh:
```bash
#!/bin/bash
rm -rf models && ln -s /models models
python server.py –listen –cpu
```
docker-compose.yml:
```
version: '3.8'
services:
textgen:
build: .
container_name: textgen_cpu
ports:
– "7860:7860"
volumes:
– ./models:/models
```
Launch:
```bash
docker compose up -d
```
To communicate with the model, you can also use the API, which will allow you to integrate it as a module into any IC. The final endpoint of the appeal:
```
POST http://localhost:11434/api/generate
```
To make an API request, you must use any tool or library.:
```bash
curl http://localhost:11434/api/generate \
-d '{
"model": "llama3",
"prompt": "Tell me what quantum physics is in simple words",
"stream": false
}'
```
- model – The name of the model, for example llama3, mistral, gemma, phi, etc.
- prompt – The text of the request
- stream – If `true`, the response will come in parts (convenient for chat). If `false` — the entire response at once
- options – Additional generation parameters
Example with generation settings:
```bash
curl http://localhost:11434/api/generate \
-d'{
"model": "llama3",
"prompt": "Write a short story about a robot.",
"stream": false,
"options": {
"temperature": 0.8,
"top_k": 40,
"top_p": 0.9,
"num_predict": 200
}
}'
```
- temperature – Randomness control. The higher the value, the more creative
- top_k is the limit on the number of tokens, among which the next one is selected
- top_p is Probability control (nuclear sampling)
- num_predict is how many tokens to generate at most
## 5. Optimization for CPU
Limitation of Docker container resources:
```bash
docker run –cpus=4 –memory=16g ollama/ollama
```
https://serverspace.us/support/help/python-and-http-clients.mdPython and HTTP requests: setting up the environment, using requests and httpx, cyclic API requests from a file, and error handling.
Python is often used to interact with external APIs for monitoring, integration, analytics, or automation. To do this competently and safely, it is important to use virtual environments and properly configure cyclic HTTP requests.
In this article we will analyze:
- creating a virtual environment;
- installing popular HTTP clients;
- developing typical API requests.
Creating and activating an environment
To do this, go to the project or create a directory where we will install the environment using the module.:
```
mkdir myproject && cd myproject && pip3 install venv &&
python3 -m venv venv
```
To activate the environment, specify:
Linux/macOS:
```
source venv/bin/activate
```
Windows:
```
venv\Scripts\activate
```
Installing HTTP libraries
```bash
pip install requests httpx
```
Fix the dependencies:
```bash
pip freeze > requirements.txt
```
Examples of HTTP requests
1. requests (synchronous client)
```
import requests
response = requests.get("https://api.github.com")
print(response.status_code)
print(response.json())
```
2. httpx (synchronous and asynchronous)
```
import httpx
response = httpx.get("https://api.github.com")
print(response.status_code)
```
Asynchronous version:
```xml
import httpx
import asyncio
async def main():
async with httpx.AsyncClient() as client:
resp = await client.get("https://api.github.com")
print(resp.status_code)
asyncio.run(main())
```
Cyclic queries based on data from a file
Let’s say we have a list of IDs that we need to make API requests with. The script looks like this:
input.txt
```
123
456
abc
```
main.py full example
```xml
import requests
import time
API_URL = "https://api.example.com/data /" # Replace with a real URL
HEADERS = {
"Authorization": "Bearer YOUR_API_TOKEN",
"Content-Type": "application/json"
}
with open("input.txt", "r") as f:
values = [line.strip() for line in f if line.strip()]
for val in values:
try:
url = f"{API_URL}{val}"
response = requests.get(url, headers=HEADERS, timeout=10)
if response.status_code == 200:
print(f"[] {val}: Successful")
print(response.json())
else:
print(f"[!] {val}: Status {response.status_code}")
except requests.exceptions.RequestException as e:
print(f"[] {val}: Error — {e}")
time.sleep(1) # We are not overloading the API
```
The script:
1. Reads lines from a file input.txt (for example, IDs or codes);
2. Substitutes each line in the API URL;
3. Sends a GET request;
4. Processes the response;
5. Pauses between requests so as not to overload the server.
Working with HTTP in Python is easy if you use a virtual environment, manage dependencies correctly, monitor errors and request frequency, and process input data from files.
https://serverspace.us/support/help/how-to-use-zip-on-linux.mdLearn how to compress and decompress files using the zip and unzip utilities on Linux. Detailed commands, examples, tips, and bug fixes.
The **zip** utility is a simple and convenient way to compress files or directories in the format.zip directly from the Linux command line. It is often used to back up, send data, and merge files.
In this article, you will learn:
- How to install zip and unzip
- How to archive and decompress files
- How to encrypt an archive
- Typical mistakes and tips
### Zip and unzip installation
If the utility is not installed, install it using the command depending on your system.:
```bash
# Ubuntu / Debian
sudo apt update
sudo apt install zip unzip
# CentOS / RHEL
sudo yum install zip unzip
# Arch Linux
sudo pacman -S zip unzip
```
### Creating an archive
**Archiving a single file:**
```
zip archive.zip myfile.txt
```
**Folder archiving recursively:**
```
zip -r archive.zip myfolder/
```
**Archiving multiple files and folders:**
```
zip -r backup.zip folder1/ file2.txt notes.doc
```
### Unpacking the archive
```bash
unzip archive.zip
```
**Unpacking to the specified directory:**
```bash
unzip archive.zip -d /path/to/folder/
```
**Unpacking a single file:**
```bash
unzip archive.zip file.txt
```
### Additional options
| Key | Purpose |
| --- | --- |
| -r | Recursively adding directories |
| -e | Password encryption of the archive |
| -9 | Maximum compression level |
| -x | Exclusion of files by mask |
| -q | Quiet mode |
### Creating a secure archive
```
zip -re secure.zip secret-folder/
```
After launching, you will be prompted to enter and confirm your password.
### Working with files in an archive
**Add a file to the archive:**
```
zip archive.zip newfile.txt
```
**To delete a file from the archive:**
```
zip -d archive.zip oldfile.txt
```
### Common errors
| Error | The reason | The solution |
| --- | --- | --- |
| command not found: zip | The utility is not installed | Install the zip through the package manager |
| filename not matched | File not found | Check the name and path |
| bad password | Incorrect password | Check the password or recreate the archive |
### Useful tips
- Avoid spaces in paths, or use quotation marks:
```
zip "archive name.zip" "My Folder/"
```
- Add the date to the archives:
```
zip -r backup_$(date +%Y-%m-%d).zip data/
```
The zip and unzip utilities are a reliable tool for compressing files on Linux. They are easy to use, do not require a GUI, and are ideal for automating archiving via scripts or cron.
https://serverspace.us/services/ready-to-use-apps.mdCloud services for development, web server deployment apps, database and content management systems — all in one place. Business-ready cloud solutions with pre-installed software and essential tools.
Cloud environments with ready-to-run software stacks — streamline your deployment workflow.
https://serverspace.us/about/blog/the-seo-impact-of-googles-ai-overviews-explained.mdGoogle’s AI Overviews are stealing your clicks — and the data proves it. A new study shows these AI summaries crush organic traffic, especially for non-branded, info-style searches.
In May 2024, Google launched one of its most ambitious changes to search yet: AI Overviews. Positioned as a way to deliver "quicker, more helpful answers," these AI-generated summaries now appear at the top of many search engine results pages (SERPs), pushing traditional organic listings further down—or out of sight entirely.
While this may feel like a win for users seeking instant answers, it's sparked serious concern across the SEO and digital marketing community. A new [June 2024 report :](https://ahrefs.com/blog/ai-overviews-reduce-clicks/)Ahrefs study confirms what many SEOs feared: AI Overviews are significantly reducing clicks to organic search results.
According to the data, websites are losing **24% of their organic traffic on average**, and in some cases, **up to 45%**. For anyone who works in content marketing, SEO, or web analytics, this isn't just a trend—it's a paradigm shift.
So, what does this mean for the future of organic search? And more importantly, how can digital professionals adapt?
## **What are AI Overviews?**
AI Overviews—formerly known as Google's Search Generative Experience (SGE)—are Google's way of integrating generative AI directly into the SERP. When triggered by certain queries, they appear as a large box at the top of the results page, summarizing content from across the web in a conversational, AI-generated snippet.
These overviews often include:
- A multi-paragraph summary written in natural language.
- Links to the sources used in the summary (though not always).
- Suggested follow-up questions.
- Carousels or inline citations for further exploration.
While this may seem like a helpful feature on the surface, for publishers and SEOs, it's a nightmare scenario. Why? Because these AI Overviews effectively "satisfy" the user's query right on the SERP—meaning they don't need to click through to your site.
In traditional search, the blue links were the gateway to traffic. With AI Overviews, Google becomes the destination itself.
This shift fundamentally changes how users interact with the search engine—and it's already measurable.
## **The core findings from Ahrefs' study**
To understand the true impact of AI Overviews, the team at Ahrefs analyzed over 100,000 keywords and compared click-through data before and after AI Overviews were introduced. The results were staggering.
Here are the top takeaways from their June 2024 report:
- **Average drop in organic clicks:** 24.37%
- **Worst-case drop in clicks:** 45.12%
- **Search features most affected:** Informational and how-to queries
- **Clicks to top-ranking organic result:** Down from 28.5% to 18.5%
What does this mean in real terms? If your site was previously earning 10,000 clicks a month from a single high-volume keyword, you might now be seeing only 7,600—or worse, 5,500—without dropping a single position in the rankings.
The study also showed that AI Overviews don’t always link to the top-ranking pages. In fact, **only 12%** of Overviews link to the #1 result. This breaks the long-standing relationship between search position and traffic, leaving many marketers scrambling to figure out what now determines visibility.
Moreover, the nature of the query plays a major role. For example:
- **Navigational queries** (e.g. "Facebook login") are largely unaffected.
- **Transactional queries** (e.g. "buy sneakers online") see moderate impact.
- **Informational queries** (e.g. "how to fix a flat tire") are the most disrupted, with Overviews dominating the page.
## **The impact on SEO strategy**
For years, SEO strategy revolved around one main goal: get to the top of the SERP. Being #1 in organic results was the holy grail. But AI Overviews are now breaking that model. Ranking first no longer guarantees clicks—because users might never scroll past the AI box.
This changes how we evaluate keywords, create content, and define success.
Let's start with keyword strategy. Traditionally, marketers would pursue high-volume keywords with clear search intent. Now, we must ask a new question: Is this query likely to trigger an AI Overview? If the answer is yes, it may not be worth the investment. The traffic potential could be far lower than expected—even if we manage to rank on page one.
Content creation is also affected. Google's AI prefers concise, factual, and structured content it can easily digest and summarize. This may lead to a surge in templated content optimized for AI extraction, rather than for human depth and engagement.
Then there's reporting. CTR (click-through rate) is collapsing across many verticals, but not because SEOs are doing a worse job. The top-ranking page might still be doing everything right—yet losing traffic to the AI Overview. That creates friction between marketing teams and clients or executives, especially when expectations are based on outdated SERP models.
The shift is subtle but profound: SEO is becoming less about ranking, and more about visibility—within AI summaries, featured snippets, carousels, and even zero-click moments.
## **How publishers and businesses are responding**
The industry's reaction to AI Overviews has ranged from cautious experimentation to outright frustration. Many independent publishers, especially those in ad-supported verticals like news, health, and tutorials, are already seeing revenue declines due to traffic loss.
Some have started updating their site content structure—adding more direct answers, subheadings, and schema markup—to increase the chance of being featured in an Overview.
Others are investing in brand-building and community channels to reduce reliance on Google altogether. Email lists, newsletters, Discord groups, and social followings are back in style—not because they're trendy, but because they're _owned traffic_. Unlike the SERP, no AI can filter them out.
A few bold players are even lobbying for regulatory action. If Google continues to summarize publisher content without reliably attributing traffic, it may face legal or antitrust challenges. This debate is already unfolding in the EU, and it's only a matter of time before it heats up in the U.S.
Meanwhile, product and e-commerce businesses are turning to performance marketing. Paid ads offer predictable visibility—even if organic reach is becoming less dependable.
In short, everyone is recalibrating.
## **What you can do: adapting to the new SERP reality**
If you're an SEO or marketer wondering how to respond—don't panic. Adapt.
Here are some strategic moves to consider:
- **Prioritize AI-friendly formatting.** Use bullet points, clear subheadings, concise definitions, and schema markup to increase your chances of being cited in Overviews.
- **Reevaluate keyword intent.** If a query is likely to trigger an Overview, be realistic about traffic potential and shift your focus to long-tail or brand-specific queries.
- **Double down on brand terms.** AI Overviews rarely show up for branded searches. Strong brand identity and search volume can protect you from visibility loss.
- **Own your audience.** Build email lists, create gated content, start a community. Google can't summarize what happens in your inbox.
- **Track SERP features.** Use tools like Ahrefs, Semrush, or SERPWatcher to monitor which keywords trigger Overviews, how your rankings appear, and what content is being surfaced.
Most importantly, shift your KPIs. Don't judge success only by organic traffic. Track engagement, retention, branded search growth, and owned channel expansion.
AI Overviews might shrink the size of the pie—but there are still smart ways to earn your slice.
## **Why hosting still matters more than ever**
While AI Overviews are changing how users interact with search results, one thing hasn't changed: website performance still matters—a lot.
In a world where every click is harder to win, making the most of each visit becomes critical. That's where hosting comes in. Fast load times, uptime stability, and server responsiveness all contribute to better user experience, stronger engagement, and higher conversions.
Google still includes Core Web Vitals in its ranking factors—and even if you do appear in an AI Overview, slow performance can kill the user journey before it begins.
For marketers and SEOs dealing with shrinking organic traffic, technical performance is a lever you can still fully control. Speed matters. Reliability matters. And as more SEO efforts shift toward owned audiences and product-led growth, the infrastructure behind your site becomes a direct business asset.
Serverspace [offers](https://serverspace.us/services/cloud-servers.md) high-performance cloud infrastructure that's ideal for content-heavy or high-traffic sites. With fast SSD-based servers, flexible scaling, and data centers in multiple regions, it's a great option for businesses that want to keep their SEO efforts technically sound, no matter what Google throws next.
If organic traffic is now a privilege, don't waste it on a slow site.
## **Looking ahead: the future of organic search**
So, where is this all heading?
Google's AI integration is clearly just the beginning. As generative models improve, we can expect more sophisticated answers, more predictive queries, and fewer clicks leaving Google-owned surfaces.
That raises questions about fairness, competition, and the open web. Publishers may push back harder. Regulators might intervene. Users themselves could begin to favor different platforms—or even turn to AI assistants directly, skipping search engines altogether.
There's also an opportunity here. As the SEO landscape gets more volatile, differentiation becomes a superpower. Sites that offer unique data, expert voices, community contributions, or proprietary tools will still have value AI can't replicate.
And while Google continues to test and tweak, marketers who stay agile will find new growth paths—sometimes through search, sometimes beyond it.
## **Conclusion**
The data is clear: AI Overviews are shaking up the rules of search. According to[Ahrefs](https://ahrefs.com/blog/ai-overviews-reduce-clicks/), the average site is losing 24% of clicks—and in some cases, over 40%. That's not just a dip—it's a redefinition of visibility.
But this isn't the end of SEO. It's a new chapter.
Winning in this environment means understanding how AI reshapes the funnel, building resilience through performance and branding, and taking ownership of your audience wherever possible.
It also means staying informed, testing relentlessly, and not clinging to strategies that no longer work.
Google may be rewriting the SERP, but the smartest marketers are already rewriting the playbook.
https://serverspace.us/about/blog/vps-vs-vds-vs-bare-metal-the-only-guide-you-need.mdThis guide explains the key differences between VPS, VDS, and Bare Metal to help you choose the right solution. Learn which type of server best fits your project's performance, budget, and scalability needs.
Many businesses and developers today are faced with a critical question: which server option will best support your project's growth — VPS, VDS or Bare Metal? In this guide, we'll walk you through everything from basic definitions to performance comparisons and real-world use cases. Most importantly, we'll help you decide which solution to deploy and where — and show you how to do it in just a few clicks.
## **What are VPS, VDS and Bare Metal? **
A **VPS (Virtual Private Server)** is a virtual environment hosted on a physical server, giving you dedicated resources while still sharing the physical hardware. It’s an affordable, flexible entry point — ideal for web hosting, dev/test tasks, and small businesses.
A **VDS (Virtual Dedicated Server)** goes one step further: it often provides guaranteed CPU, RAM, and disk performance — with less resource contention. It's perfect for businesses that need consistent output and predictable performance.
A **Bare Metal Server** is a physical machine with no hypervisor or virtualization layer. You rent the entire server — meaning full control, no shared hardware, and maximum performance. It's the powerhouse option for demanding applications.
**Bare metal cloud servers** combine the raw power of hardware with the flexibility of the cloud: instant provisioning, remote management, and global reach.
## **VPS vs VDS vs Bare Metal: what's the real difference?**
Each hosting type comes with its own set of advantages, depending on your needs.
**VPS (Virtual Private Server)** offers moderate performance with shared physical infrastructure. It’s a great choice for developers, startups, and anyone looking to launch quickly with low cost and high scalability. Resources are virtualized and split among users, meaning you might experience occasional performance drops during peak load.
**VDS (Virtual Dedicated Server)** bridges the gap between VPS and Bare Metal. It provides higher stability and more predictable performance by allocating more guaranteed CPU, RAM, and disk resources. This makes it a solid pick for medium-sized projects, SaaS platforms, and e-commerce sites that need consistency.
**Bare Metal** delivers the highest level of hardware isolation and raw performance. You get full control over the server — no neighbors, no virtualization. This is ideal for resource-intensive applications such as AI/ML training, big data processing, gaming platforms, or video rendering.
In terms of cost, VPS is the most affordable, followed by VDS as a mid-range option. Bare metal is the most expensive but offers unmatched performance. VPS is the fastest to set up, often ready in minutes. VDS setups are also relatively fast, while bare metal servers might take longer to provision.
Still unsure? If you’re comparing **bare metal vs VM**, the key difference lies in direct access to hardware. Virtual machines share resources; bare metal does not. When considering **vps vs vds**, VDS provides stronger guarantees, while VPS is more flexible and cost-efficient.
## **Choosing the right server for your use case **
- **Choose VPS** if you need affordable infrastructure that's quick to launch and easy to scale. Great for freelancers, developers, and growing startups, VPS provides the flexibility to adapt to your project's needs without overpaying for unused resources.
- **Consider VDS** when you need more consistent performance, but be aware that it often comes with a higher price tag and less agility.
- **Choose Bare Metal** only if you have extremely high-performance requirements and a dedicated IT team to manage physical hardware — but for most use cases, it's overkill.
That's why VPS remains the best balance between performance, scalability, and cost-efficiency. At Serverspace, we specialize in high-availability[VPS hosting solutions](https://serverspace.us/services/cloud-servers.md) with instant deployment, SSD storage, free traffic, and global data centers — all with transparent, pay-as-you-go pricing and no hidden fees.
## **Real-world examples: what people actually use **
- A digital agency deploys **VPS hosting solutions** to manage multiple client websites with cost control.
- A mid-sized marketplace switches to **VDS** to ensure checkout and search remain fast during traffic spikes.
- A fintech startup runs real-time analytics on **bare metal cloud hosting** to avoid virtualization bottlenecks.
Wherever your project fits in this spectrum — there's a solution you can launch in minutes.
## **Common pitfalls to avoid **
- Mistaking VPS for VDS: VPS is great for small to medium needs, but won't handle sudden spikes or demanding applications well.
- Overpaying for Bare Metal when a properly optimized VDS could suffice.
- Choosing a server in the wrong location — latency matters. Always select a region close to your target audience.
- Ignoring scaling potential — can your current setup grow with you?
https://serverspace.us/about/news/happy-system-administrator-appreciation-day-to-the-true-heroes-of-it.mdToday, we want to say thank you to those who stay behind the scenes but make the entire IT infrastructure run.
Every stable network, every server that didn't crash, every email that reaches its destination – behind it all stands a system administrator.
Today, we want to say thank you to those who stay behind the scenes but make the entire IT infrastructure run. These are the people who stay calm during outages, patch security holes, restore backups at 3 a.m., and know exactly where the one working config file lives.
At Serverspace, we know what it's like to chase uptime, apply emergency patches, silence alerts, and keep systems humming. That's why our platform is built with sysadmins in mind: instant deployment, full root access, intuitive control, and a transparent infrastructure.
So whether you're single-handedly managing dozens of servers or working in a 24/7 team – we're with you. Thank you for the updates, the uptime, and the magic that keeps everything from falling apart.
You've earned a break today. No need to rescue prod – just relax. Let the alerts figure themselves out. And if you get bored, take our "[What kind of sysadmin are you?](https://serverspace.io/sysadmin-day-2025/)" quiz to find out if you’re a log sniper or a backup wizard.
Happy Sysadmin Day – from the entire Serverspace team!
_[Serverspace](https://serverspace.io/) is a cloud provider offering virtual infrastructure deployment on Linux and Windows platforms from anywhere in the world in under 1 minute. Tools like API, CLI and Terraform are available for seamless integration with client services._
https://serverspace.us/support/help/ci-cd-cheat-sheet-for-devops-engineer.mdWhat CI/CD is, how automated build, test and deployment processes work. Pipeline examples, best tools, teams and practices for DevOps engineers. Learn how to accelerate releases and simplify infrastructure.
What? CI/CD — some strange abbreviations, is it related to CD discs? No, it’s not about physical media at all. CI/CD is a practice that has revolutionized the way software development is approached by automating the processes of integration, testing, and application delivery. In this article, we’ll explore what CI/CD means, how these processes work, and why they have become an integral part of modern development methodologies, speeding up the delivery of high-quality software and minimizing the risks of errors in production.
## **Key Concepts**
- **CI (Continuous Integration)** — frequent merging of code changes into the main branch with automated testing.
- **CD (Continuous Delivery)** — automatic preparation of an application for release (deployment is triggered manually).
- **CD (Continuous Deployment)** — automatic deployment to production immediately after successful tests.
## **Typical CI/CD Pipeline Structure**
- **Build** – compiling the project
- **Test** – running unit and integration tests
- **Lint** – code style and syntax checks
- **Package** – creating an artifact (.jar, Docker image, etc.)
- **Deploy** – deploying to a server or cluster
## **Popular CI/CD Tools**
| Tool | Description |
| --- | --- |
| Jenkins | Classic automation server |
| GitLab CI | Built-in CI/CD for GitLab |
| GitHub Actions | Automation via GitHub workflows |
| ArgoCD | GitOps tool for Kubernetes |
| Drone CI | Lightweight CI for Docker environments |
## **Example .gitlab-ci.yml**
```xml
stages:
– build
– test
– deploy
build:
stage: build
script:
– echo "Building the project"
– make build
test:
stage: test
script:
– echo "Running tests"
– make test
deploy:
stage: deploy
script:
– echo "Deploying application"
– make deploy
only:
– main
```
## **Common CI/CD Commands**
| Command | Purpose |
| --- | --- |
| docker build | Build a Docker container |
| docker push | Push an image to a registry |
| kubectl apply -f | Apply a Kubernetes manifest |
| helm upgrade | Deploy or update an app in Kubernetes |
| ansible-playbook | Execute deployment playbooks |
## **CI/CD Pipeline Best Practices**
- Break down pipelines into small, independent steps
- Minimize execution time (through parallelization and caching)
- Deploy only after successful testing
- Store secrets in secure vaults (e.g., HashiCorp Vault, AWS Secrets Manager)
- Implement rollback strategies for failed deployments
## **Quick Stage Examples**
**Build Stage (Python):**
```bash
pip install -r requirements.txt
python setup.py sdist
```
**Test Stage (Node.js):**
```bash
npm install
npm test
```
**Deploy Stage (Docker + Kubernetes):**
```bash
docker build -t myapp:latest .
docker push myregistry/myapp:latest
kubectl rollout restart deployment myapp-deployment
```
## **Mini CI/CD Engineer Checklist**
Validate the CI configuration syntax
Ensure all tests pass
Properly configure secrets
Separate environments (dev / stage / prod)
Test rollback functionality
## **Serverspace and CI/CD**
Want to simplify your CI/CD setup and always have reliable infrastructure at your fingertips? With [Serverspace](https://serverspace.us/index.md), you can deploy virtual machines in just a few minutes, automate application delivery using a powerful API, and scale your infrastructure effortlessly to meet growing demand. Whether you’re building from scratch or migrating an existing project, Serverspace offers flexible tools and support to make the transition smooth and secure. Plus, thanks to a rich [Cloud Marketplace](https://serverspace.us/about/news/introducing-serverspace-one-click-app-marketplace.md), you can launch pre-configured environments — including Docker, Kubernetes, GitLab, and other popular DevOps tools — with a single click. It's an ideal solution for developers and teams who want to focus on delivery, not infrastructure. Try Serverspace and supercharge your CI/CD and DevOps workflows today!
Whether you’re building a new project from scratch or migrating an existing one, Serverspace provides the tools and support necessary to make the transition smooth and secure. From high-performance VPS and VDS servers to easy-to-manage network configurations, Serverspace offers a comprehensive solution for all your cloud hosting needs.
Moreover, the Cloud Marketplace is a game-changer for developers. It allows you to quickly launch pre-configured environments, including popular DevOps tools like Docker, Kubernetes, GitLab, and many others, all with a single click. This eliminates the need for manual setup and configuration, saving you countless hours of work.
With its flexible and developer-friendly approach, Serverspace is the perfect solution for teams who want to focus on delivering quality software and enhancing workflows, rather than spending time managing infrastructure. It's designed to support fast, efficient, and reliable CI/CD pipelines, making it easier than ever to integrate, test, and deploy code across different environments. Try Serverspace today and supercharge your DevOps processes for better productivity and faster delivery cycles.
https://serverspace.us/support/help/how-to-accelerate-docker-images-for-production-optimization-security-and-size.mdLearn how to reduce the size of Docker images, speed up deployment, and improve security. Practical advice on multi-stage builds, compression, base image selection, and automation.
Containerization has radically simplified the process of delivering, scaling, and maintaining applications, becoming the de facto standard in DevOps practices. However, along with this convenience came new challenges. One of them is inefficient Docker images. Poorly built containers often become excessively "heavy," resulting in slower CI/CD processes, excessive disk and memory usage — and in some cases, critical vulnerabilities. Optimizing Docker images is an essential step for production environments. Below are practical recommendations to help you create lightweight, fast, and secure containers — without unnecessary pain.
## What is Containerization and How It Works?
Containerization is a modern method of packaging and running applications in self-contained units known as containers. These containers bundle everything an app needs to function — including code, runtime, libraries, and system tools — into a portable and consistent environment. Unlike traditional virtual machines, containers run on a shared OS kernel, which makes them much more lightweight and quicker to launch.
Containers are widely used for a variety of purposes, such as:
- **Consistent development and production environments**
- **Microservices deployment and orchestration**
- **Efficient CI/CD pipelines**
- **Scalable cloud-native applications**
- **Isolation for testing and debugging**
- **Rapid prototyping and development cycles**
By using containerization, teams can streamline application delivery, reduce configuration drift, and increase infrastructure efficiency across all stages of the software lifecycle.
## 1. Use Multi-Stage Builds
Multi-stage builds offer a highly efficient strategy for streamlining Docker images. By dividing the build and runtime environments into distinct stages, you can compile, test, and prepare your application in a controlled build phase, then export only the critical components—like executables or static files—into a lean, production-ready container. This approach not only minimizes the final image size but also strips away unnecessary dependencies and temporary artifacts, resulting in cleaner, more secure, and easier-to-manage deployments.
**Example with Go:**
```
# Build stage
FROM golang:1.22 AS builder
WORKDIR /app
COPY . .
RUN go build -o app
# Minimal production image
FROM alpine:latest
WORKDIR /app
COPY –from=builder /app/app .
CMD ["./app"]
```
**Advantages:**
- The final image contains only the binary and what’s needed to run it.
- No compilers, extra libraries, or temporary files.
## 2. Choose Minimal Base Images
The smaller the base image, the lighter and more secure the final container will be.
**Recommendations:**
- Use **alpine** instead of **ubuntu **or **debian **if your app doesn't rely on **glibc**.
- Try Google's **Distroless** images — they contain only what’s necessary to run the app, with no shell or extra packages.
**Example:**
```
FROM gcr.io/distroless/static
COPY app /
CMD ["/app"]
```
## 3. Order Dockerfile Instructions to Maximize Caching
Docker caches layers. If your code changes frequently, you can save build time by ordering commands correctly.
**Good structure:**
```
COPY go.mod .
RUN go mod download
COPY . .
RUN go build -o app
```
This way, dependency downloads are reused if **go.mod** remains unchanged.
## 4. Remove Temporary Dependencies and Junk
Many packages are only needed during the build stage. Remove them to avoid carrying them into the final image.
**Example:**
```bash
RUN apt-get update && \
apt-get install -y build-essential && \
make build && \
apt-get purge -y build-essential && \
apt-get autoremove -y && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
```
This can eliminate dozens of megabytes of unnecessary data.
## 5. Use Automatic Compression with docker-slim
**docker-slim** analyzes your image and removes everything that isn't essential.
**Example:**
```bash
docker-slim build –http-probe your-app:latest
```
The result is a **much lighter image**, without sacrificing functionality.
## Recommendations and Anti-Patterns
- Keep images compact — ideally under 100 MB.
- Don't add packages "just in case" — every MB affects deployment speed.
- Scan image security with **trivy**:
```
trivy image your-app:tag
```
- **Never hardcode secrets** into images — use environment variables and secret managers.
## General Tips
- Utilize the **.dockerignore** file to prevent unnecessary files, such as `.git`, `node_modules`, and log files, from being copied into the Docker image.
- Minimize the number of **RUN** commands by combining them to reduce layers.
- Automate image building and validation via CI/CD (e.g., GitHub Actions, GitLab CI).
By following these best practices, you'll not only streamline and accelerate the entire container build and delivery pipeline, but also achieve a substantial reduction in image size — a critical factor in cloud-native and clustered environments where efficiency and scalability are key. Leaner images translate to faster pull times across nodes, lower storage consumption, and decreased network bandwidth usage, which is especially beneficial in CI/CD pipelines and edge deployments. In addition, smaller images tend to load faster and reduce the startup time of services, contributing to improved system responsiveness. Just as importantly, by eliminating unnecessary packages, tools, and libraries, and relying on minimal, purpose-built base images, you effectively shrink the container’s attack surface. This significantly lowers the risk of vulnerabilities, simplifies compliance efforts, and makes security audits more manageable. Ultimately, optimized images lead to more predictable, secure, and cost-effective production environments.
## Docker and Serverspace
Looking to simplify your CI/CD pipeline and gain immediate access to a reliable, scalable infrastructure? Serverspace makes it easier than ever. With just a few clicks, you can deploy high-performance virtual machines in minutes — no complicated setup, no unnecessary delays. The platform is designed for rapid deployment and seamless operation, so you can quickly spin up the infrastructure needed to support your development and production workloads.
One of the standout features of Serverspace is its powerful API, which enables the full automation of application delivery and infrastructure management. This is a game-changer for DevOps workflows, as it allows teams to automate processes like provisioning, scaling, and monitoring servers, all within a highly flexible and responsive environment. Whether you’re automating deployment pipelines, managing resources, or integrating new services, the Serverspace API makes it possible to eliminate manual steps and streamline your entire infrastructure lifecycle.
As your project grows, Serverspace scales with you. The platform gives you the flexibility to dynamically adjust resources in real time to meet shifting demand, ensuring that your applications perform at their best, even as traffic spikes or new features are added. This ability to scale efficiently and automatically is a crucial advantage in fast-paced development environments, where responsiveness and uptime are critical.
Serverspace is not only ideal for new application launches but also excels in supporting development and staging environments, as well as migrating legacy systems to the cloud. The platform is built to provide the control and security you need at every stage of your project, from initial development to ongoing maintenance. Its intuitive interface makes managing cloud resources accessible, even to those without extensive infrastructure experience.
In addition, the rich Cloud Marketplace within Serverspace offers a wide range of pre-configured environments and tools, including Docker, Kubernetes, GitLab, and many others. This makes it incredibly easy to quickly deploy complex, ready-made environments for your applications, allowing you to focus on building and shipping code instead of dealing with server configuration and management.
By leveraging Serverspace for your infrastructure needs, you can supercharge your CI/CD pipelines, enabling faster iterations, more reliable deployments, and an overall more agile DevOps operation. With Serverspace, you get the combination of speed, flexibility, and reliability needed to accelerate your development process and ensure your applications are always ready for production. It's a platform designed to help developers innovate and deliver software faster, without the overhead of traditional infrastructure management.
https://serverspace.us/support/help/how-to-install-dockly-a-user-friendly-interface-for-managing-docker-containers-from-the-terminal.mdLearn how to install and use Dockly, a user-friendly terminal interface for managing Docker containers. Easy installation, commands and tips for working on Linux, macOS and Windows.How to install Dockly - a convenient interface for managing Docker containers from the…
**Dockly** is an interactive TUI (terminal user interface) for managing Docker containers, images, and other entities. It’s convenient, minimalist, and allows you to quickly view logs, manage containers, and monitor Docker status directly from your terminal.
In this article, we'll walk through how to install Dockly on Linux, macOS, and Windows (via WSL), and how to get started using it.
## What is Dockly?
Dockly is an open-source utility written in Node.js that uses the Docker API to retrieve data. It allows you to:
- View a list of containers, their status, images, and volumes
- Start, stop, and remove containers
- View logs in real-time
- Connect to a container's terminal using **exec**
## Requirements
Before installing Dockly, make sure you have the following installed:
- **Docker**: Version 1.13 or higher
- **Node.js and npm**: Ideally the latest LTS version
To check if they are installed, run:
```bash
docker –version
node -v
npm -v
```
## Installation
### 1. Via npm (recommended method)
```bash
npm install -g dockly
```
To verify the installation:
```
dockly –version
```
To launch Dockly:
```
dockly
```
Dockly will automatically connect to the default Docker socket at /var/run/docker.sock.
### 2. Run Without Installing (via npx)
If you don't want to install Dockly globally:
```
npx dockly
```
This is a good option for one-time or temporary use.
## Installing on Windows (via WSL)
For Windows users, the best way to run Dockly is through **WSL** (Windows Subsystem for Linux):
- Install WSL and choose a distribution (e.g., Ubuntu).
- Install Node.js and Docker inside WSL.
- Ensure that docker.sock is accessible within WSL.
- Install Dockly:
```bash
npm install -g dockly
```
## Quick Usage Guide
Dockly's navigation is very straightforward:
- ↑/↓— move between containers
- Enter — view container details
- l> — view logs
- e — execute terminal (**exec**)
- s — start container
- S — stop container
- d> — delete container
Press **?** in the UI for a full list of shortcuts.
## Useful Launch Parameters
You can run Dockly with a specific **DOCKER_HOST**:
```
DOCKER_HOST=tcp://192.168.1.100:2375 dockly
```
Or specify a custom socket path:
```
dockly –socketPath /path/to/docker.sock
```
## Security Notice
If you're using Docker over a TCP connection, make sure it's protected with TLS.
Dockly **does not support authentication**, so **do not connect to unsecured Docker APIs**.
## Uninstalling Dockly
To remove Dockly:
```bash
npm uninstall -g dockly
```
## Conclusion
Dockly is a great tool for anyone who prefers the terminal and wants quick, visual access to manage Docker containers. Its simple installation, intuitive UI, and powerful features make it a valuable tool in any Docker-powered workflow.
https://serverspace.us/support/help/a-new-key-has-been-released-for-the-kali-linux-repositories.mdKali Linux has released a new signing key to ensure secure package verification. Learn how to update your system and trust the new key.
For 4 days now, users have been unable to update the repositories and install new software using the previously released Kali Linux key 827C8569F2518CC677FECA1AED65462EC8D5E4C5, receiving an error:
The problem is that the developers lost the previous key, and there is no certificate system for SSL connections. The bare key is transmitted, taking into account the trust that it was downloaded via HTTPS or other reliable sources. Therefore, there is no mechanism for revoking CRL/OSCP certificates, and the developers had to put a new signature on all repositories.
Screenshot № 1 — Error
To resolve the error, users are prompted to install a new key using the command:
```bash
sudo wget https://archive.kali.org/archive-keyring.gpg -O /usr/share/keyrings/kali-archive-keyring.gpg
```
Screenshot № 2 — Solution
After that, the repository must be verified with a new public key and the packages must be updated successfully. Those who have recently reinstalled the OS will not be affected by this change, since the new keys are already included in the distributions of all versions. Unfortunately, a similar case already affected Kali Linux repositories in 2018, when repositories had to be frozen and packages were unavailable.
For such cases, we recommend using backup package managers with their repositories, for example snap, npm, pip and others, which will ensure fault tolerance in such events.
https://serverspace.us/support/help/windows-certificates-how-to-view-and-how-it-works.mdLearn how Windows Certificates work and how to view them using built-in tools. Understand certificate stores and usage!
Modern network interactions require security, especially when transferring confidential data.In open networks such as the Internet, information can easily be intercepted. Standard encryption methods based on symmetric keys require secure key exchange, which is impossible in open channels.
The solution was asymmetric cryptography.: it uses a pair of keys — public and private. The private key is kept only by the owner, and the public key can be distributed openly. However, if everyone can create a “public key”, how can we make sure that it belongs to the right owner?
This is where certificates come in: they associate a public key with verified information about the owner, whether it’s a website, an organization, or a user.
## What are certificates and how do they work?
A **certificate** is a file that contains information about the owner and his public key. In order to avoid substitution, this file is signed by a certification authority. In this case, the recipient already trusts the keys of this center and will confirm the authenticity of the certificate used by the sender. The most common certificate format is X.509. It includes:
Screenshot № 1 — Attributes of certificate
- public key certificate;
- owner’s Name (Common Name, CN);
- Validity period;
- digital signature of the certifying center;
- extensions (for example, alternative names, usage policy, etc.).
Also in Windows, certificates are presented as files with extensions:
Screenshot № 2 — File formats
- .cer, .crt — contain only the public key;
- .pfx (or .p12) — contain both a public and a private key;
- .pem is a text format often used in Linux/UNIX systems.;
- .p7b — contains the path from the certificate chain;
- .sst — contains all root and intermediate certificates.
## How do I view and install certificates in Windows?
There are several certificate repositories in Windows:
- Personal — contains user or computer certificates;
- Trusted Root Certification Authorities — list of trusted CA;
- Intermediary centers — CA that issued certificates on behalf of the root;
- Other users, services, devices, etc.
Which can be viewed using Windows snap-ins via the search. Press Win + R, type mmc, and press Enter. In the menu, select File → Add/Remove Snap-in. Add Certificates, select for the current user or for the computer.
Screenshot № 3 — List pf certificates
You can now view and manage certificates in various repositories. They can also be viewed through commands. To do this, open PowerShell: Win+X -> Terminal/Powershell:
```
Get-ChildItem Cert:\CurrentUser\My
Get-ChildItem Cert:\LocalMachine\Root
```
To install the certificates, double-click on the .crt or .pfx file. Follow the installation wizard: specify which storage to place the certificate in.
Screenshot № 4 — New certificate
You can also install certificates via PowerShell, if you have the .crt format, then use the following line:
```
Import-Certificate -FilePath "C:\path\to\cert.crt" -CertStoreLocation "Cert:\LocalMachine\Root"
```
Other commands are provided for the .pfx format:
```
$password =ConvertTo-SecureString -String "password" -Force -AsPlainText
Import-PfxCertificate -FilePath "C:\path\cert.pfx" -Password $password -CertStoreLocation "Cert:\LocalMachine\My"
```
## How do I create a self-signed certificate?
The self-signed certificate is used in test and internal environments. It is created without the participation of a certification authority:
```
New-SelfSignedCertificate `
-DnsName "test.local" `
-CertStoreLocation "Cert:\LocalMachine\My" `
-FriendlyName "My Self-Signed Cert" `
-NotAfter (Get-Date).AddYears(1)
```
The use of certificates is the basis of trusted communications on the Internet and corporate networks. The ability to create and manage them is important for both administrators and developers.
https://serverspace.us/support/help/instructions-for-preparing-an-environment-for-migration-of-virtual-infrastructure-using-mind-migrate.mdInstructions for preparing an environment for migration of virtual infrastructure using MIND Migrate.
## Preparation of environment on UNIX-like systems (Linux, *BSD)
### Checking the openness of the necessary ports
Checking the absence of filtering of outgoing traffic for ports 443 and 9000
To check for firewall filtering, follow the steps depending on the software you are using:
**iptables**
It is necessary to check for rules that prohibit outgoing traffic on ports 443 and 9000.
To do this, please enter the following command into the terminal:
```
iptables -S OUTPUT | grep 443
```
```
iptables -S OUTPUT | grep 9000
```
Please make sure that the output **does not contain** any DROP or REJECT rules.
Next stpe is to check the outgoing traffic policy used.
To do this, please enter the following command into the terminal:
```
iptables -L OUTPUT
```
The expected output of the command should be as follows:
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
**firewalld**
It is necessary to check for rules that prohibit outgoing traffic on ports 443 and 9000.
To do this, please enter the following command into the terminal:
```
firewall-cmd –zone=public –list-rich-rules
```
The command output **should not contain** rules containing port=”443″ or port=”9000″:
rule family="ipv4" destination port port="443" protocol="tcp" reject
rule family="ipv4" destination port port="9000" protocol="tcp" reject
**ufw (Uncomplcated Firewall)**
It is necessary to check for rules that prohibit outgoing traffic on ports 443 and 9000.
To do this, please enter the following command into the terminal:
```
ufw status numbered
```
Make sure there are no rules containing **DENY OUT** for ports 443 and 9000.
**nftables**
It is necessary to check for rules that prohibit outgoing traffic on ports 443 and 9000.
To do this, please enter the following command into the terminal:
```
nft list ruleset
```
Make sure that in the command output:
- There are **no rules** for filtering ports 443 and 9000.
- The policy for chain output is set to policy accept. Example:
chain output {
type filter hook output priority filter; policy accept;
}
Checking the availability of port 8999 on the VM
Make sure port 8999 is not occupied by any process.
To do this, please enter the following command into the terminal:
```
ss -tuln | grep :8999
```
The output of the specified command should be empty.
Checking the status of port 22 (SSH)
Please check that the SSH server is running and listening on port 22.
To do this, please enter the following command into the terminal:
```
ss -tuln | grep :22
```
Expected output of this command:
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
Disabling SELinux (if applicable)
It is necessary to check that SELinux is used.
To do this, please enter the following command into the terminal:
```
sestatus
```
If the specified command is not found, or if the command output indicates:
SELinux status: disabled
Then no further action is required.
If the command output looks like this:
SELinux status: enabled
It is necessary to temporarily disable the enforcing mode, for which enter the command in the terminal:
```
setenforce 0
```
Please note that this change is valid until the operating system is rebooted.
If the system has rebooted, you should enter the command again.
## Preparing the environment on Windows
### Creating firewall rules for the required ports (443, 9000, 8999)
To allow both inbound and outbound traffic to ports 443, 9000, and 8999, create two rules: one for **Inbound **traffic and one for **Outbound **traffic.
Creating of combined rules (Inbound and Outbound):
- Open **Windows Defender Firewall with Advanced Security**.
- Create new rule:
Rule type: **Port**.
- Protocol: **TCP**.
- Ports: **443, 9000, 899**9.
- Action: **Allow the connection**.
- Apply to all profiles: **Domain, Private, Public**.
Rule for the Inbound traffic:
- Rule name: **MIND Migrate – Allow Inbound Ports 443, 9000, 8999**.
- Type: **Inbound**.
- Make sure the rule is active.
Rule for the Outbound traffic:
- Rule name: **MIND Migrate – Allow Outbound Ports 443, 9000, 8999**.
- Type: **Outbound**.
- Make sure the rule is active.
### Cheking that port 445 (SMB) is opened:
Activation of the existing rule for 445 (SMB)
- Open **Windows Defender Firewall with Advanced Security**.
- Go to section **Inbound Rules** и **Outbound Rules**.
- Find the rule “F**ile and Printer Sharing (SMB-In)”** и **“File and Printer Sharing (SMB-Out)”**.
- Make sure it is **Enabled**.
- If any of the rules are disabled, right-click on it and click **Enable Rule**.
Checking the availability of port 8999 on localhost
Open PowerShell and run command:
```
netstat -ano | findstr :8999
```
The output should be empty.
https://serverspace.us/support/help/virtual-disk-how-to-create-and-mount.mdLearn how to create and mount a virtual disk on Windows and Linux using built-in tools or command-line utilities.
With the advent of virtualization in product solutions, physical devices began to divide a single logical-software space into several parts. For example, one network interface can be divided into several separate ones, not connected to each other, but using a single communication channel.
The same thing happened with storage devices, virtual disks appeared, which are files. In this article, we will consider one of these formats, which is used in virtualization!
## **What is VMDK and how does it work?**
VMDK (VMware Disk) is a file format that contains a copy of a disk similar to ISO images, is a standard of VMware. The algorithm for working with it is the following points:
- The virtualization program creates a .vmdk file, which specifies the maximum size and type (fixed or dynamic).
- The virtual machine (or the host itself) mounts this file as a hard drive – the OS “thinks” that it is working with a real disk.
As mentioned earlier, the disk itself is a bitwise copy, which consists of:
- Boot sector;
- Partition table (MBR or GPT);
- File system (NTFS, ext4, etc.);
- User data.
Virtual disk types:
- Fixed – the VHD file immediately occupies the entire specified size (for example, 50 GB).
- Dynamic – the size of the VHD file grows as data is written.
- Differencing — a “child” disk that contains only changes compared to the “parent” (used for snapshots).
## How to create and connect a virtual disk?
From time to time, the task of using virtual machine disks on a host system for the purpose of data recovery, cleaning, etc. arises. Let’s consider how they are created and connected to work on the host OS. The process is classically simple, we select a new disk from an existing machine or create a new one:
Screenshot № 1 — Controller
We will select the recommended logical controller that will allow us to manage disks, then we will move on to choosing the drive type:
Screenshot № 2 — Type of Disk
Let’s select the type of disk storage on the machine. It is possible to use one or more files that will either immediately occupy the allocated space or will occupy it as needed:
Screenshot № 3 — Ways for store data
Using all the declared disk space at once will increase the speed of reading and writing to the disk itself, so if performance is important to you, take this into account when configuring. After that, we will select a storage location for the disk and we can start using it.
Let’s imagine that we need to recover information from disks or make a copy of them. To do this, we will use the **FTK Imager** utility, which will allow you to mount an image.
Screenshot № 4 — Mount type
When connecting a drive, it is important to understand the algorithm of the OS operation with them. When connecting a drive, the driver begins working with the drive only by reading data bit by bit. But for correct operation, it is necessary to manage files on the drive: their access rights, labels, alternative data streams. This is already done by the file system and handlers that can read the format of the stored data and provide an interface for working with them.
Therefore, if we want to work with files on the disk, we use a Logical connection, and if, on the contrary, a bitwise connection is enough, then a Physical one. After which the disk will become available!
Screenshot № 5 — Result
If everything is clear with connecting a physical disk with the OS, then how does this work: from a file to a virtual disk? In fact, it is the same, only instead of a disk with kernel space, software and VMDK work. The data is counted bit by bit, will be transferred to the driver, where the file system module will also work and provide files.
https://serverspace.us/support/help/hashcat-how-to-use-it-to-cracking-hashes.mdLearn how to use Hashcat to crack hashes: installation, dictionary and masked attacks, practical examples.
**Hashcat** is a powerful tool for recovering passwords from hashes. It supports a wide range of algorithms and can use both CPU and GPU, making it one of the fastest in its class. In this tutorial, we will look at how to get started with hashcat using the example of cracking a SHA256 hash.
## Installing hashcat
On most Linux systems, hashcat can be installed directly via the package manager:
```bash
sudo apt update
sudo apt install hashcat -y
```
Screenshot № 1 — Installation
For Windows, an official build is available, which can be installed from [official site](https://hashcat.net/hashcat/). Check the installation:
```
hashcat –version
```
For example, let’s use the string “password” hashed in SHA256:
```
echo -n "password" | sha256sum
```
Result: 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
Create a file with the hash:
```
echo "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8" > hash.txt
```
Create a simple dictionary:
```
echo -e "123456\npassword\nqwerty" > dict.txt
```
Screenshot № 2 — Preparation
Hashcat uses numeric codes to denote algorithms. For SHA256, it is 1400.
Run the search:
```
hashcat -m 1400 -a 0 -o found.txt hash.txt dict.txt
```
Parameters:
- -m 1400 — SHA256 mode
- -a 0 — dictionary attack
- -o found.txt — file to save found passwords to
After completion, check the result:
```
cat found.txt
```
Example output:
```
5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8:password
```
Screenshot № 3 — Result
Useful parameters for iterating over values:
- –force — use even if incompatible with hardware
- –status — display process status
- -w 3 — set performance (from 1 to 4)
If you no longer plan to use the files:
```
rm hash.txt dict.txt found.txt
```
## Options for customizing the search
In addition to the standard attack method, you can also use masks, their combinations with dictionaries:
| Code | Attack type | Description |
| --- | --- | --- |
| 0 | Dictionary | Dictionary attack (password file) |
| 1 | Combination | Combination of two dictionaries |
| 3 | Brute-force | Mask/pattern attack |
| 6 | Hybrid Dictionary + Mask | Dictionary + mask (example: password123) |
| 7 | Hybrid Mask + Dictionary | Mask + dictionary (example: 123password) |
The table below shows possible masks for composing template:
| Mask | Value |
| --- | --- |
| ?l | lowercase letter |
| ?u | capital letter |
| ?d | digit |
| ?s | special character |
| ?a | any character |
For example, you can brute force an 8-character password using a mask:
```
hashcat -a 3 -m 0 hash.txt ?d?d?d?d?d?d?d?d
```
Or use combined options:
```
hashcat -a 6 -m 0 hash.txt dict.txt ?d?d
```
**Hashcat** is an indispensable tool for testing password strength. Use it for legitimate tasks: security audit, training, or recovering your own data. Violating the law using hashcat is unacceptable.
https://serverspace.us/support/help/how-do-i-install-the-htop-utility-on-debian.mdDiscover how to use htop, a powerful and interactive command-line tool for real-time monitoring of system resources and processes. Learn how to install, navigate, customize, and optimize your Linux system performance with step-by-step instructions and practical tips.
The **htop** utility is a robust and highly adaptable command-line application designed for real-time visualization and management of system resources and active processes. As an enhanced replacement for the classic top command, htop significantly improves usability with its intuitive, colorful, and fully interactive interface. It provides seamless vertical and horizontal scrolling through process lists, supports mouse input for ease of navigation, and allows users to personalize the layout to suit their monitoring needs.
What truly sets **htop** apart is its clear, color-coded representation of system metrics — including CPU, RAM, and swap usage — enabling users to instantly grasp performance trends and detect bottlenecks. This makes it an indispensable tool not just for developers and system administrators, but for any Linux power user aiming to maintain system efficiency.
With **htop**, monitoring and managing processes becomes effortless: users can identify high-resource tasks, track CPU and memory usage in real time, and even terminate or reprioritize processes directly within the interface. Thanks to features like responsive keyboard navigation, advanced filtering, and customizable display fields, htop transforms system monitoring into a streamlined and user-centric experience — all from the comfort of the terminal.
## What You'll Learn
Spend less than 5 minutes reading this article, in which we will walk you through why you should use it, how to install it, how to start it up, how to use it, and how to delete it if needed. Let’s go!
## Why I need to choose htop instead of top?
In contrast to the conventional **top** command, **htop** offers enhanced capabilities that allow users to:
- Effortlessly browse the list of active processes using the arrow keys, ensuring fast and intuitive navigation within the terminal interface;
- Instantly kill frozen or unwanted processes right from the dashboard — no need to enter separate commands or switch tools;
- Keep an eye on system performance with real-time visual feedback on CPU activity, memory consumption, and swap usage;
- Organize and prioritize process data by sorting it based on criteria like processor load, memory usage, or owning user, making system diagnostics faster and more effective;
- Tailor the interface to your workflow by selecting which columns and data points are shown, so you only see the metrics that matter to you.
## Step 1: Update the Package List
Before installation, it’s recommended to update the list of available packages:
```bash
sudo apt update
```
## Step 2: Install htop
Now install **htop** using the standard APT package manager:
```bash
sudo apt install htop
```
Debian will download and install all necessary dependencies. After the installation finishes, the tool becomes immediately available for use.
## Step 3: Launch htop
To start the utility, run:
```
htop
```
Once started, htop presents a dynamic, visually engaging, and easy-to-navigate interface that immediately gives users insight into system activity. You'll be able to monitor real-time CPU usage, observe how much RAM is currently in use versus what's available, review a comprehensive list of active processes along with their priority levels, and check how long the system has been running, along with other vital performance data:
- The current CPU load;
- The amount of used and free memory;
- A list of running processes and their priorities;
- System uptime and other relevant system information.
### Sample htop Window:
```
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
1234 root 20 0 100M 10M 5M S 5.0 0.5 0:00.50 nginx
```
## Additional Commands and Options
- **F2** — Setup
- **F3** — Search
- **F6** — Sort
- **F9** — Kill process
- **F10** — Quit
## What’s in the End?
**htop** is a valuable and versatile tool that belongs in the arsenal of every system administrator, infrastructure specialist, and experienced Linux user. It stands out from conventional monitoring utilities by providing a dynamic, real-time interface for observing system performance. With **htop**, you can instantly pinpoint overloaded resources, monitor active processes, and take direct action — all from within an intuitive, keyboard-driven environment. Its flexible layout and configurable views make it easy to sort processes by various parameters, monitor CPU and memory usage at a glance, and manage tasks without relying on complex command-line syntax. Whether you’re managing production servers, diagnosing system slowdowns, or fine-tuning resource allocation, **htop** simplifies the process and gives you clear, actionable insights into the system's health.
To remove it, if needed, use this:
```bash
sudo apt remove htop
```
## Serverspace Knowledge Base
The **Serverspace Knowledge Base** is a comprehensive and meticulously organized collection of resources designed to help users unlock the full potential of their cloud infrastructure. It offers clear, step-by-step instructions and detailed tutorials spanning a wide array of topics such as server deployment, system administration, network setup, security improvements, and performance optimization strategies.
This repository is continuously updated to keep pace with the latest technological advancements, software updates, and industry standards, guaranteeing that users have access to the most current and reliable information available.
Whether you are a beginner configuring your first virtual server or a seasoned IT expert overseeing complex cloud environments, the Knowledge Base provides valuable insights and practical solutions tailored to your needs. It includes troubleshooting guides, frequently asked questions, and expert tips designed to quickly address common challenges, minimize downtime, and enhance operational efficiency. By centralizing this extensive knowledge, the Serverspace Knowledge Base empowers users to confidently manage their cloud resources independently and effectively.
Within the Serverspace Knowledge Base, you'll find a rich selection of materials focused on Debian as well as practical tutorials for optimizing various Linux distributions. From initial installation and configuration to advanced diagnostics and system tuning, the content caters to a broad skill range. Additionally, the guides offer best practices for securing your systems and maximizing resource utilization to maintain stable and high-performing environments. Regularly refreshed with new insights and updates, the Knowledge Base ensures you stay informed about emerging trends, security patches, and innovative tools to keep your infrastructure secure and efficient.
https://serverspace.us/support/help/how-to-backup-data-in-linux.mdBacking up your data is essential for disaster recovery, system migration, and long-term data integrity. Here’s how to create backups on a Linux.
**Backup** (or backup) is an important procedure for ensuring the safety of data. In Linux, there are many tools that allow you to set up automatic or manual creation of copies of files, directories, or the entire system. In this article, we will tell you what backup is, why it is needed, and how to implement it in practice.
In Linux, you can create backups manually or using special programs and scripts. Depending on the tasks, backups can be:
- full – all files and directories are copied;
- incremental – only changes since the last backup are copied;
- differential – changes since the last full backup are copied.
The choice of method depends on the amount of data, copying speed, and storage strategy. Popular backup utilities.
**Rsync**
**Rsync** is one of the most popular and flexible utilities. It allows you to synchronize data between local and remote machines.
Example command for backup:
```bash
apt update && apt install rsync && rsync -av –delete /home/user/ /mnt/backup/user/
```
Screenshot № 1 — Rsync
Flags:
- -a — archive mode (preserves permissions, symbolic links, etc.);
- -v — verbose output;
- –delete — deletes files on the recipient’s side that are not present source.
**Tar**
**Tar** is a standard utility for creating archives.
Creating an archive:
```bash
tar -czvf backup.tar.gz /home/user/
```
Screenshot № 2 — TAR
Key decryption:
- -c — create an archive;
- -z — compress with gzip;
- -v — process output;
- -f — specify a file name.
**Timeshift **
**Timeshift ** — A graphical utility suitable for creating system snapshots (especially on desktop distributions).
```bash
sudo apt install timeshift
```
The utility allows you to configure a backup schedule and use rsync or Btrfs file systems.
**BorgBackup**
**BorgBackup** — A modern CLI solution with encryption and deduplication support.
Installation:
```bash
sudo apt install borgbackup
```
Example of creating an archive:
```
borg init –encryption=repokey ./
borg create ./::my-backup-2025-05-23 /root
```
Screenshot № 3 — Borg
You can use the cron task scheduler for automatic backups. Example of a daily backup task at 2:00 AM:
```
0 2 * * * rsync -a /home/user/ /mnt/backup/user/
```
Recommendations:
- Store backups on a separate physical medium or in the cloud.
- Regularly check the integrity and functionality of backups.
- Use encryption when storing confidential data.
- Configure notifications about errors during the backup process.
Backup in Linux is a simple, but extremely important process. Using available tools, you can set up reliable protection for your data, minimize the risk of loss and ensure stable operation of the system.
https://serverspace.us/support/help/installing-a-browser-on-linux.mdLearn how to install popular browsers on Linux, including Firefox, Chrome, Brave, Vivaldi, and text-based options like Lynx.
A browser is a key tool for both a regular user and a system administrator. In Linux, you can use both modern graphical browsers and lightweight or even text-based solutions.
In this article, we will look at installing popular browsers on Linux: from classic Firefox and Chrome to lesser-known but useful alternatives. Basically, users install these solutions:
| Name | Interface | Features |
| --- | --- | --- |
| Firefox | GUI | Free, installed by default in many distributions |
| Google Chrome | GUI | Fast, supports all Google services |
| Chromium | GUI | Open version of Chrome |
| Brave | GUI | Ad blocking, privacy focused |
| Vivaldi | GUI | Advanced features and flexible interface customization |
| Opera | GUI | Built-in VPN, instant messengers and news |
| Midori | GUI | Lightweight and fast |
| Falkon (ex-QupZilla) | GUI | Based on QtWebEngine, suitable for KDE |
| Epiphany (GNOME Web) | GUI | Lightweight browser for the GNOME environment |
| Pale Moon | GUI | A performance-focused fork of Firefox |
| Konqueror | GUI | A file manager + browser in the KDE environment |
| Lynx | CLI | A text-based browser |
| w3m | CLI | Text browser with support for tables and images |
| Links / ELinks | CLI | Advanced text browsers with menus and a mouse |
For those who want to use more secure solutions, Brave is an excellent choice, which stores passwords in a secure form, has WEB3 functions, and also has a strict user data transfer policy.
## Installing CLI and GUI browsers via deb packages
w3m
```bash
sudo apt update
sudo apt install w3m -y
```
Screenshot № 1 — CLI
Google Chrome
```bash
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install ./google-chrome-stable_current_amd64.deb
```
Screenshot № 2 — GUI
Chromium
```bash
sudo apt install chromium-browser
```
Brave
```bash
sudo apt install curl
sudo curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg \
https://brave.com/static-assets/brave-core.asc
echo "deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg] \
https://brave-browser-apt-release.s3.brave.com/ stable main" | \
sudo tee /etc/apt/sources.list.d/brave-browser-release.list
sudo apt update
sudo apt install brave-browser
```
Vivaldi
```bash
wget https://downloads.vivaldi.com/stable/vivaldi-stable_amd64.deb
sudo apt install ./vivaldi-stable_amd64.deb
```
Opera
```bash
wget https://download.opera.com/download/get/?partner=www&opsys=Linux
# Rename the downloaded file if necessary and install:
sudo apt install ./opera-stable_*.deb
```
Epiphany (GNOME Web)
```bash
sudo apt install epiphany-browser
```
Midori
```bash
sudo apt install midori
```
Falkon
```bash
sudo apt install falkon
```
## Installation in CentOS / RHEL / Fedora / Rocky Linux
Basically, the installation is not much different from deb packages, as well as the package manager and applications.
Firefox
```bash
sudo dnf install firefox
```
Chromium
```bash
sudo dnf install chromium
```
Google Chrome
```bash
sudo dnf install fedora-workstation-repositories
sudo dnf config-manager –set-enabled google-chrome
sudo dnf install google-chrome-stable
```
Brave
```bash
sudo dnf install dnf-plugins-core
sudo dnf config-manager –add-repo https://brave-browser-rpm-release.s3.brave.com/x86_64/
sudo rpm –import https://brave-browser-rpm-release.s3.brave.com/brave-core.asc
sudo dnf install brave-browser
```
Linux offers a wide range of browsers for every taste – from full-fledged ones with a modern interface to minimalistic solutions for working in the terminal. Installation is most often carried out through package managers (apt, dnf), as well as by downloading .deb or .rpm files from official sites.
https://serverspace.us/support/help/how-to-use-certificate-linux.mdLearn how to create, install, and manage SSL/TLS certificates on Linux. Step-by-step guide for generating self-signed certificates
Certificates in Linux are used to secure connections, verify the authenticity of services, and encrypt data. They play an important role in technologies such as HTTPS, VPN, SSH, TLS, and many others. In this article, we will look at what certificates are, how they work in the Linux environment, and how to create and configure them.
## What is a certificate?
**A certificate** is a digital document that is used to verify the authenticity of a server or client. It contains:
- Public key;
- Owner information;
- Expiration date;
- Certificate authority (CA) signature.
The most common certificate format is X.509, often used with the TLS/SSL protocol to secure Internet connections.
## Where are certificates used in Linux?
- Web servers (Apache, Nginx) — HTTPS protection;
- VPN (OpenVPN, WireGuard) — client and server authentication;
- Mail servers — secure messaging;
- SSH with two-factor authentication;
- Docker, Kubernetes — secure interaction between services.
## Where are certificates stored in Linux?
Certificates and private keys are usually stored in the following directories:
- /etc/ssl/private/ Private keys (only accessible to root)
- /usr/local/share/ca-certificates/ Custom CAs for the system
- ~/.ssh/ SSH keys and certificates
- /etc/ssl/certs/ Public certificates
## Creating a self-signed certificate
A self-signed certificate can be used for testing or in internal networks:
```bash
apt update && apt install openssl -y && \
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
```
Screenshot № 1 — New key
- -keyout key.pem — file with private key;
- -out cert.pem — certificate itself;
- -days 365 — validity period.
Note: openssl will ask you for certificate details — organization, country, CN (Common Name), etc.
## **Installing a certificate to the system (Debian/Ubuntu)**
If you want to add a custom root certificate (for example, a corporate CA), place the certificate (in .crt format) in the directory:
```
sudo cp mycompany.crt /usr/local/share/ca-certificates/
```
Update the list of trusted certificates:
```
sudo update-ca-certificates
```
## Checking the certificate
You can check the structure and validity of the certificate using the command:
```
openssl x509 -in cert.pem -text -noout
```
Check the correctness of the connection to the server:
```
openssl s_client -connect example.com:443
```
## Removing or revoking a certificate
When the private key is lost or compromised, you need to revoke the certificate from the CA:
```
sudo rm /usr/local/share/ca-certificates/mycompany.crt
sudo update-ca-certificates –fresh
```
A separate configuration is required to organize a certificate revocation system (CRL/OCSP) – it is more often used in a corporate environment.
Certificates in Linux are an important element of the security system. They provide trust and encryption, without which a modern infrastructure is impossible. Knowing the basics of working with certificates, generating keys and setting up trusted centers is a useful skill for any administrator.
https://serverspace.us/support/help/what-is-ftp-and-how-to-set-up-a-server-on-linux.mdFind out what FTP (File Transfer Protocol) is and how to set up an FTP server on Linux. Detailed installation, configuration guide
**FTP** (File Transfer Protocol) is a **network protocol** designed to transfer files between a client and a server. Despite the emergence of more modern solutions such as SFTP and SCP, FTP is still widely used to organize simple file exchange within a network or with external users.
In this article, we will look at how to install and configure an FTP server on a Linux system using the popular vsftpd server.
## Installing vsftpd
FTP can be useful in cases where it is necessary to organize centralized storage with access for different users. It is easy to configure and maintain, and is supported by most operating systems and FTP clients. In a corporate environment, FTP is often used to exchange reports, logs, and other files that do not contain sensitive information.
The most common and secure FTP server for Linux is vsftpd (Very Secure FTP Daemon). It is stable, productive and has minimal resource consumption. The package is installed via the standard package manager: apt for Debian/Ubuntu or yum/dnf for CentOS/RHEL.
```bash
apt update && apt upgrade -y &&\
apt install vsftpd -y
```
Screenshot № 1 — Installation
And for rpm-like package managers, use:
```bash
dnf update && dnf install vsftpd -y
```
After installation, the service starts automatically and can be configured via the /etc/vsftpd.conf configuration file. For example, let’s set up server authentication via PAM, and also define user rights. Please note that using FTP with anonymous users is fraught with unauthorized activity:
```
nano /etc/vsftpd.conf
```
Server configuration:
```
listen=YES
listen_ipv6=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
```
Where each option is:
- listen=YES – The server will not work in standalone mode (for example, it will be managed via xinetd). If YES – vsftpd will start as a standalone daemon.
- listen_ipv6=NO – Disables listening to IPv6 addresses. If YES — the server will accept connections via IPv6.
- local_enable=YES – Allows local users (system accounts) to log in.
- write_enable=YES – Allows writing (uploading, deleting, renaming files) for authorized users.
- dirmessage_enable=YES – Shows a message from the .message file when entering a directory (if such a file exists).
- use_localtime=YES – Uses the server’s local time (instead of GMT) in file lists.
- xferlog_enable=YES – Enables file transfer logging (logs are usually in /var/log/vsftpd.log).
- connect_from_port_20=YES – Uses port 20 for active FTP mode (DATA connection).
- secure_chroot_dir=/var/run/vsftpd/empty – Secure isolated directory for FTP sessions (so that the user cannot go beyond their session).
- pam_service_name=vsftpd – Specifies the name of the PAM configuration for authentication (usually /etc/pam.d/vsftpd).
- rsa_cert_file= and rsa_private_key_file= – Paths to the SSL certificate and private key (used if TLS/SSL is enabled).
- ssl_enable=NO – Disables SSL/TLS encryption.
Then we will move on to configuring users to the PAM library configuration:
```
nano /etc/pam.d/vsftpd
```
Screenshot № 2 — PAM
The list above shows that if the user’s login is from the list of prohibited ones, the connection is initially denied, and then the standard UNIX authentication module is used.
Screenshot № 3 — Deny connection
You can also add your own list of users to this list. And also change/add authentication methods in the PAM config at /etc/pam.d/vsftpd. After applying all the settings, restart the service:
```bash
systemctl restart vsftpd
```
By default, FTP does not encrypt data, including logins and passwords. To increase the security level, it is recommended to enable F support TPS (FTP Secure) is FTP over TLS. To do this, you will need to generate an SSL certificate or use an existing one. Then, in the server configuration, you need to activate SSL and specify the path to the key and certificate.
## Working with FTP clients
Connection to the FTP server can be done via the command line (ftp, lftp) or using graphical clients such as FileZilla. The user only needs to know the server IP address, account name, and password.
```bash
apt install ftp -y
```
To connect, use the command, according to the scheme ftp://[USER[:PASSWORD]@]HOST[:PORT]/PATH[/]:
```
ftp ftp://jhon:123321@109.207.172.55:21/
```
Screenshot № 4 — Connection
When using FTPS, you must also enable encryption on the client side, if certificates are available.
FTP remains a popular tool for file transfer, especially in local networks and when automating data exchange. Setting up an FTP server on Linux using vsftpd does not require much effort, but provides a flexible and reliable way to organize access to files. At the same time, it is important to pay attention to security and use encryption if the server operates on an open network.
https://serverspace.us/about/blog/n8n_workflow_automation.mdn8n is a flexible open source automation platform for building workflows, integrating apps, and streamlining data across your team's favorite tools and services. Save time, reduce errors, and focus on what matters most.
In today's fast-paced digital world, efficiency is everything. Businesses of all sizes are turning to smart technologies to eliminate repetitive tasks, reduce manual errors, and free up time for strategic work. One of the most powerful solutions driving this change is workflow automation.
**So, what is workflow automation?** It's the process of using software to execute tasks, send data between systems, and manage approvals—without the need for human intervention. Whether it's automatically routing leads from a contact form to your CRM or sending invoices from your ERP system, workflow automation ensures that every step is consistent, fast, and traceable.
### Why workflow automation matters
The benefits of workflow automation go far beyond convenience. With the right setup, companies can improve team productivity, enhance customer experience, and reduce costs. Some common workflow automation examples include:
- **Email workflow automation** for nurturing leads, onboarding clients, and sending updates
- **Invoice workflow automation** that streamlines billing and payment follow-ups
- **Recruitment workflow automation** to accelerate hiring and eliminate paperwork
- **LMS workflow automation** that automates course enrollment and certification tracking
- **Media workflow automation** for managing digital assets across teams
- **Workflow automation CRM** integrations that keep sales and support teams aligned
And that's just the beginning. No matter the industry—real estate, marketing, healthcare, or education—there's a use case for automation.
### The rise of n8n: a powerful workflow automation tool
Among the best workflow automation software options on the market today is n8n, a flexible and open-source platform that lets you build automated workflows across hundreds of apps and services.
What is n8n? It stands for "nodemation," and it's designed to be both powerful and easy to use. Unlike other no-code or low-code platforms that restrict flexibility,[n8n](https://serverspace.us/services/n8n-cloud.md) gives you full control over logic, conditions, and data manipulation—without writing complex code.
With its modular design and vast library of integrations, n8n workflow automation can connect with tools like Slack, Gmail, Trello, Stripe, Notion, and many more. You can automate everything from basic email workflow automation to complex, multi-step business processes involving CRM systems, databases, and APIs.
Here are a few n8n workflow examples that highlight its versatility:
- **Marketing automation workflow examples:** Create a multi-channel campaign that triggers follow-up emails and Slack notifications based on form submissions.
- **Workflow automation for healthcare:** Automatically send appointment reminders, update patient records, and route follow-ups to the correct department.
- **Real estate workflow automation:** Automatically qualify leads, send property alerts, and update CRM stages.
- **Slack workflow automation:** Get instant updates in Slack when key actions happen—like new sign-ups, failed payments, or ticket escalations.
With the help of n8n workflow templates, even non-technical users can deploy automations in minutes.
### Key features of n8n workflow automation
- Visual workflow editor with drag-and-drop simplicity
- Built-in logic controls like IF/ELSE, loops, and expressions
- Webhook triggers for real-time automation
- Version control and executions history
- Support for custom code and advanced API integrations
Whether you're building automations for your marketing team, IT helpdesk, or back office, n8n scales with you.
### Workflow automation for every business unit
From workflow marketing automation to servicenow workflow automation, every department can benefit from implementing automation. Even sectors like education can take advantage with LMS workflow automation that reduces admin load and improves the learning journey.
Email workflow automation, in particular, remains one of the highest-ROI use cases. It enables timely customer communication, reduces churn, and strengthens brand trust.
### Run n8n in the cloud with Serverspace
If you're ready to explore workflow automation with n8n, there's no need to worry about infrastructure. At Serverspace, we offer a fully configured [n8n](https://serverspace.us/services/n8n-cloud.md) workflow automation tool in the cloud — available for instant deployment. Spin up a server in just [a few clicks](https://serverspace.us/support/help/how-to-deploy-n8n-on-my-server/), and start building smart automations without the headache of setup or maintenance.
It's a simple, cost-effective way to leverage workflow automation tools without needing an in-house DevOps team. Serverspace provides enterprise-grade infrastructure, 24/7 support, and scalable pricing, so you can focus on building workflows that deliver real business results.
### Conclusion
In a landscape where time, efficiency, and accuracy directly influence success, embracing workflow automation is no longer a luxury — it's a necessity. By reducing manual tasks, minimizing human error, and accelerating internal processes, automation helps businesses stay competitive and resilient. Platforms like n8n empower teams to take control of their operations through flexible, scalable, and transparent workflows that fit real-world needs. Whether you’re a startup looking to streamline onboarding, or an established company optimizing invoice management or CRM syncs, the potential impact is enormous. Combined with the robust, reliable cloud infrastructure offered by Serverspace, you get not only a powerful automation engine but also the peace of mind that comes from high availability and expert support. With instant deployment, fair pricing, and seamless scalability, Serverspace makes it easy to experiment, iterate, and grow. Don't let manual workflows slow your team down — start building your first automation today and discover what's possible when technology works for you.
https://serverspace.us/about/blog/kubernetes-explained-purpose-advantages-and-security-in-the-cloud.mdKubernetes (K8s) is a container orchestration platform designed to automate app deployment and scaling. It uses a declarative model to manage distributed infrastructure, streamline DevOps, and ensure fault-tolerant cluster operations.
Here’s the rephrased version, keeping the meaning but rewording the flagged-style repetitive phrasing:
Cloud infrastructure keeps evolving, and Kubernetes has positioned itself as one of the most critical tools for handling containerized applications at scale. But what exactly does Kubernetes do, and what makes it stand out compared to other orchestration options on the market? This article breaks down what Kubernetes is for, the advantages it brings, and why securing Kubernetes environments matters more than ever in cloud-based setups.
## What Kubernetes is and the reasoning behind its use
Kubernetes — commonly shortened to K8s — is an open-source platform built to automate how containerized applications get deployed, scaled, and managed. Google created it initially, and the Cloud Native Computing Foundation (CNCF) now oversees its development; over time it’s become the go-to standard for orchestrating containers.
So why does Kubernetes matter, and what’s it actually for? In short, it gives developers and DevOps teams a way to handle large, containerized applications without getting bogged down in complexity. It hides much of the underlying infrastructure detail behind a single, unified API for managing resources.
At its core, Kubernetes exists to help organizations roll out applications more quickly, keep them running reliably, and scale them smoothly as conditions change. That’s the reason it’s found everywhere — from small startups to the largest enterprises.
## **Kubernetes benefits and advantages**
Let's dive into the core benefits of Kubernetes and what makes it such a valuable platform for modern IT operations:
Scalability is one of the most recognized Kubernetes advantages. Applications can automatically scale up or down based on load, reducing both costs and downtime. This makes Kubernetes an excellent fit for dynamic, customer-facing applications.
High availability is another key reason why Kubernetes is used. It supports automated failover, self-healing mechanisms, and rolling updates, ensuring services remain available with minimal human intervention.
Many ask, is Kubernetes open source? Yes, and this makes it incredibly adaptable and cost-effective. A vibrant community constantly evolves the platform, contributing new tools, plugins, and security enhancements.
Portability is another major draw. Kubernetes runs seamlessly on any cloud provider or on-premises setup, reducing vendor lock-in and enabling hybrid cloud strategies. These are core benefits of using Kubernetes that matter for long-term cloud infrastructure planning.
## **How Kubernetes works**
Understanding how Kubernetes works is essential for leveraging its full capabilities. Kubernetes organizes applications into containers, grouped into units called Pods. These Pods run on Nodes, which are managed by a central Control Plane. The Control Plane schedules workloads, monitors performance, and maintains the desired application state across all Nodes.
Tools like Kubelet and the API Server allow Kubernetes to reconcile desired and actual system states in real-time. This dynamic orchestration is one of the reasons why we need Kubernetes in modern software architectures.
## **Kubernetes and GitOps: declarative infrastructure at scale**
One of the most impactful practices gaining popularity in Kubernetes ecosystems is GitOps. This approach treats Git as the single source of truth for infrastructure configurations. Developers define Kubernetes manifests in version-controlled repositories, and automation tools synchronize these definitions with the live cluster state.
This model enables faster iteration, clear change tracking, and easier rollbacks. GitOps empowers teams to manage Kubernetes infrastructure using the same best practices already familiar in software engineering.
## **Kubernetes API extensibility and custom resources**
Kubernetes isn’t just a tool—it’s a framework. Through its Custom Resource Definitions (CRDs), Kubernetes enables teams to build their own abstractions and APIs. These resources can represent anything from machine learning pipelines to compliance checks, fully managed through the Kubernetes API.
This API extensibility turns Kubernetes into a universal control plane, capable of orchestrating not just containers but any infrastructure-as-code component that fits within your cloud-native ecosystem.
## **Kubernetes security in cloud infrastructure**
Let's now explore Kubernetes security. As containers spread across clusters and environments, security becomes a critical factor. So, what is Kubernetes security and why is it important in cloud?
Kubernetes environments often involve complex networking and access patterns. To protect these, teams implement RBAC (Role-Based Access Control), pod security policies, and audit logging. These practices answer a common question: how do I choose Kubernetes security measures for cloud?
To ensure Kubernetes security compliance in cloud, it’s essential to use encrypted secrets, isolate workloads by namespace, and integrate vulnerability scanning tools. Solutions like OPA (Open Policy Agent), Falco, and Kyverno are widely adopted.
Still wondering what’s the best Kubernetes security solution for cloud? There’s no one-size-fits-all, but leading cloud-native security platforms often combine policy-as-code, runtime protection, and compliance auditing.
The role of Kubernetes security in cloud infrastructure is not just protection—it’s about reliability and trust in automated systems.
## **Networking inside Kubernetes: CNI and service discovery**
[Kubernetes](https://serverspace.us/services/managed-kubernetes.md) networking relies on the Container Network Interface (CNI) for efficient communication. Developers often integrate solutions like Calico or Cilium to enforce network policies and monitor inter-pod traffic.
Internally, Kubernetes provides DNS-based service discovery, so applications can find and talk to each other using predictable names. This improves modularity, especially in microservices architectures where dynamic scaling is standard practice.
## **Observability and monitoring in Kubernetes environments**
Operational visibility is critical in complex distributed systems. Kubernetes integrates with tools like Prometheus and Grafana to expose metrics on cluster health, resource usage, and deployment status.
Many DevOps teams adopt distributed tracing via OpenTelemetry, helping them troubleshoot issues across multi-service architectures. Kubernetes doesn’t just run containers—it also gives you the tools to understand them.
## **Stateful workloads and Kubernetes: a mature conversation**
Although initially designed for stateless workloads, Kubernetes now supports databases and persistent apps using StatefulSets and PersistentVolumes. Applications like MySQL, Redis, or Elasticsearch can now be deployed and scaled reliably inside clusters.
Storage management in Kubernetes has matured, allowing DevOps teams to define storage classes, reclaim policies, and mount strategies declaratively. This extends Kubernetes’ reach into stateful, mission-critical applications.
## **Real-world use cases: who uses Kubernetes?**
Who uses Kubernetes? From digital banks to e-commerce giants and SaaS platforms, Kubernetes powers mission-critical services around the globe. A typical Kubernetes use case might involve deploying hundreds of microservices behind Ingress controllers, automated with CI/CD pipelines.
Startups appreciate Kubernetes for its flexibility, while large enterprises value its standardization and ecosystem. It's a central piece in any scalable, secure, and resilient cloud strategy.
## **Cost considerations and resource efficiency in Kubernetes**
One question that often comes up alongside “why use Kubernetes” is whether it actually saves money in practice. The answer depends heavily on how well a cluster is configured. Kubernetes itself doesn’t reduce cloud spend automatically — what it offers is the machinery to optimize resource usage if teams take advantage of it. Features like horizontal pod autoscaling, vertical pod autoscaling, and cluster autoscaling let workloads expand only when actually needed and shrink back down during quiet periods, which keeps idle compute costs in check.
That said, poorly managed clusters can end up more expensive than traditional deployments, since spinning up nodes, running multiple control planes, and maintaining redundant replicas all carry overhead. Tools like Kubecost or built-in cloud provider cost dashboards help teams track spend per namespace, deployment, or team, making it easier to spot waste. Right-sizing resource requests and limits — rather than guessing or over-provisioning defensively — tends to be one of the biggest levers for keeping a Kubernetes bill under control. Ultimately, the cost question isn’t really “is Kubernetes cheap or expensive,” but “how disciplined is the team running it.”
## **Multi-cloud strategies and migrating workloads into Kubernetes**
Multi-cloud deployment is one of the areas where Kubernetes’ portability genuinely pays off. Because the platform abstracts away much of the underlying infrastructure, the same application manifests can often run on AWS, Google Cloud, Azure, or on bare-metal servers with only minor adjustments. This makes Kubernetes attractive to organizations that want to avoid depending on a single cloud vendor, whether for negotiating leverage, regulatory reasons, or simple resilience against provider outages. Tools like Cluster API, Rancher, and Anthos extend this further by giving teams a consistent way to provision and manage clusters across different providers from one control point.
Migrating existing workloads into Kubernetes, however, is rarely a simple lift-and-shift. Legacy applications built around assumptions of fixed servers, local file storage, or manual deployment steps often need to be re-architected before they fit comfortably into a containerized, orchestrated environment. A common approach is to migrate in phases: starting with stateless, lower-risk services to build internal expertise, then gradually tackling more complex stateful systems once StatefulSets, persistent storage, and backup strategies are properly in place. Teams that skip this incremental approach and attempt to containerize everything at once tend to run into the most operational pain — which is why a measured migration plan, paired with thorough testing at each stage, is usually the difference between a smooth transition and a prolonged outage
## **Final thoughts: why do we need Kubernetes?**
To sum it up, why do we need Kubernetes? Because cloud-native development demands automation, scalability, and observability—and Kubernetes delivers all of these. Its benefits, like high availability, portability, and security, combined with its open source foundation, make Kubernetes the leading choice for modern infrastructure.
Whether you’re wondering what is the purpose of Kubernetes, or asking how do I ensure Kubernetes security compliance in cloud, this platform offers the answers. Adopting Kubernetes isn’t just a technical decision—it’s a strategic one. And in the world of cloud, it’s a decision more teams are making every day.
If you’re looking to launch Kubernetes in a fast, scalable, and secure environment, Serverspace offers [managed Kubernetes](https://serverspace.us/services/managed-kubernetes.md) clusters on enterprise-grade infrastructure. Whether you’re building a startup or running a complex multi-cloud deployment, our platform gives you full control with instant provisioning, built-in security, and seamless integration with CI/CD pipelines. Try it out and see how Kubernetes performs in a cloud that grows with your business.
https://serverspace.us/about/news/faster-speeds-bandwidth-for-vstack-servers-in-kazakhstan-increased-to-200-mbps.mdServerspace has rolled out an update for users hosting vStack servers in the Kazakhstan data center — bandwidth has been increased to 200 Mbps.
An update is now available in the Serverspace control panel for users hosting virtual servers on [vStack in the Kazakhstan](https://serverspace.us/services/vps-server/cloud-servers-in-kazakhstan.md) data center. The maximum internet bandwidth has been increased from 100 Mbps to 200 Mbps.
This means that projects hosted in the [Kazakhstan data center](https://serverspace.us/infrastructure/data-center-almaty.md) can now operate with double the data transfer speed, which is especially valuable for resource-intensive tasks such as:
- Hosting high-traffic websites and online services
- Transferring and processing large volumes of data
- Running corporate applications that require a stable connection
### **What this means for users:**
- Faster response times and website loading – especially for local clients in Kazakhstan and Central Asia
- Stable application performance during peak hours – fewer delays and timeouts
- Improved performance when working with databases, RDP, 1C and other corporate systems
- Flexibility for scalable projects – run applications with higher bandwidth demands
### **How to create a server with increased network speed:**
- Go to the[Serverspace control panel](https://my.serverspace.us/) and click "Create Server" under the vStack Cloud section
- In the location list, select Almaty, Kazakhstan
- Configure your server: choose the number of vCPUs, RAM, and SSD size
- In the "Network Connections" field, set the bandwidth to up to 200 Mbps
- Complete the server creation – and start working with increased access speed
### **For current server owners in Kazakhstan:**
If you're already using a vStack server in the Kazakhstan data center, you can upgrade your server's bandwidth to 200 Mbps at any time.
It only takes a few seconds:
- Open your server settings [in the control panel](https://my.serverspace.us/)
- Go to the “Connected Networks" section
- Click on "Change Bandwidth"
- Set the new bandwidth value
- Save changes – the speed will update automatically
Support for up to 200 Mbps is available for all configurations, with the same per-megabyte pricing as before — no changes to your existing network rates.
We're continuing to make the Serverspace cloud faster and more convenient – stay tuned for more updates!
https://serverspace.us/about/blog/vps-setup-checklist-for-production-a-complete-beginner-to-deployment-guide.mdThis guide walks you through every step of setting up a VPS for production — from generating SSH keys to securing your server and deploying your app. Perfect for developers who want full control without missing any details.
When you’re preparing to move your project into a production environment, choosing and setting up the right server infrastructure becomes a critical step. Virtual Private Servers (VPS) offer a powerful middle ground between shared hosting and dedicated servers. They provide flexibility, control, and scalability without the high cost of bare metal. But not all VPS hosting is the same. So where do you start?
## Managed vs unmanaged VPS: which one fits your needs?
The first decision to make is whether you need a managed or unmanaged VPS. Managed VPS hosting is ideal if you want the provider to handle server updates, maintenance, security, and backups. It suits startups or businesses without a dedicated sysadmin team. Unmanaged VPS, on the other hand, gives you full control over the server—great for experienced developers who need a clean slate and full freedom to configure everything from the OS up.
At Serverspace, you can choose between both options based on your skill set and business goals. For production environments where stability and reliability are essential, a managed VPS can remove a lot of operational overhead.
## SSH key generation and secure access
Security starts at the first connection. Before you can connect to a VPS, you need to generate SSH keys. This is a safer alternative to using passwords. On macOS and Linux, SSH keys can be generated using the following command: ssh-keygen
On Windows, tools like PuTTYgen or the Windows Subsystem for Linux can be used. If you’re wondering how to generate SSH keys in Linux, simply run: ssh-keygen -t rsa -b 4096
Mac users can follow the same steps in the Terminal, and to generate SSH keys on Windows, just open PuTTYgen, click “Generate,” and save your public/private key pair.
Once keys are created, it’s time to connect. To do so, use the SSH protocol with the command: ssh user@your-server-ip
This process is at the heart of how to use a VPS securely and efficiently.
## Setting up your VPS from scratch
With SSH access in place, it’s time to set up your VPS. Start by updating the system packages and installing the software you need. If you're asking how to set up a VPS, this is where the real work begins: configuring your firewall, creating user accounts with limited privileges, and setting up monitoring tools.
For those new to this process, a VPS tutorial might suggest using scripts or control panels to speed up configuration. Still, understanding the underlying steps makes it easier to scale later. Whether you’re setting up a VPS or wondering how to set up a virtual server, the principles are the same: security, stability, and performance.
## From clean server to hosting your project
So you’ve got a clean machine. What’s next? If you want to host a website on a VPS, you need to decide between stacks like LAMP, LEMP, or containerized setups with Docker. Hosting a site or app involves configuring web servers (Apache, NGINX), databases (MySQL, PostgreSQL), and deploying your code. If you’ve ever asked how to make a VPS production-ready, this is where most of your time will go.
Keep in mind that hosting your application on a VPS not only gives you control over the environment, but also improves performance compared to shared hosting. It’s one of the core VPS hosting benefits.
## Security first: how to secure a VPS
No setup is complete without security hardening. To secure a [VPS](https://serverspace.us/services/cloud-servers.md), disable root login, enforce SSH key authentication, set up firewalls like UFW, and install intrusion detection tools. Additionally, configure fail2ban, set up regular backups, and keep your software up-to-date.
## Common mistakes when setting up a VPS
Even experienced developers make errors when setting up a VPS for the first time. Some of the most common mistakes include:
- Forgetting to secure the root account or leaving SSH password authentication enabled.
- Not configuring a basic firewall like UFW.
- Skipping system updates and patch management.
- Using default ports and services without restriction.
- Deploying to production without backups or monitoring in place.
Knowing how to secure a VPS and follow a solid VPS setup guide can help avoid these critical missteps.
## Why Choose Serverspace for Your VPS Hosting?
Serverspace offers a robust infrastructure designed to help you launch your project fast. You can deploy a VPS in under a minute, choose from multiple OS templates (Linux, Windows, FreeBSD), and scale vertically at any time. Our plans come with free traffic, modern hardware, and 24/7 support. If you’re ready to start, you can [rent a VPS server today](https://auth.serverspace.us/register) and be live in moments. From instant deployment to global data centers, setting up a VPS has never been easier.
https://serverspace.us/support/help/how-to-install-wireguard-vpn-client-on-ubuntu-linux.mdLearn how to install and configure the WireGuard VPN client on Ubuntu Linux with this step-by-step guide. Secure your internet connection with encrypted tunnels and maintain persistent, private communication easily.
WireGuard is a modern, lightning-fast VPN that makes securing your internet connection surprisingly simple. Unlike traditional VPNs that can be slow and hard to configure, WireGuard is lightweight, efficient, and incredibly easy to set up. Originally built for Linux, it now works on Windows, macOS, BSD, iOS, and Android.
In this step-by-step guide, we'll show you how to install and configure WireGuard on Ubuntu 20.04. You'll learn how to generate cryptographic keys, create a working VPN configuration, and start protecting your connection in just a few minutes.
## Installing the WireGuard Client App on Ubuntu
Before setting up the WireGuard client, it’s crucial to ensure that your Ubuntu server is up to date. Start by logging into your server via SSH and running the following commands to update your system’s package list and upgrade the existing packages:
```bash
sudo apt update && sudo apt upgrade -y
```
Once the system is up to date, you can install the **WireGuard** client by running:
```bash
sudo apt-get install wireguard
```
This command installs WireGuard along with all the required dependencies.
## Generating Private and Public Keys
WireGuard uses a pair of cryptographic keys (private and public) to establish secure communication between two endpoints. To generate a key pair, you’ll need to run the following command:
Generate the private key:
```
wg genkey > private.key
```
Generate the public key based on the private key
```
wg pubkey < private.key > public.key
```
Here, **private.key** is your private key, which must be kept secure and private, while **public.key** is shared with the peer (server) for encryption purposes.
## Configuring the Client
The next step is to configure the WireGuard client by creating a configuration file. This file defines the settings for the connection, including the private key, server’s public key, and allowed IP addresses. To create the configuration file, open it using a text editor such as **nano**:
```
sudo nano /etc/wireguard/wg0.conf
```
In this configuration file, you'll define the following parameters:
```
PrivateKey =
Address = 10.0.0.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
PublicKey =
AllowedIPs = 10.0.0.2/32
```
- **PrivateKey**: Replace with the contents of your generated private key.
- **Address**: This is the local IP address of your client on the VPN network.
- **PostUp/PostDown**: These commands configure network address translation (NAT) and packet forwarding rules when the VPN is up or down.
- **PublicKey**: Replace with the server's public key.
- **AllowedIPs**: Defines which IP addresses are allowed to communicate with the client (the server’s IP is often listed here).
## WireGuard Startup
Now that your configuration file is set up, it's time to start the VPN connection. To do so, use the following command:
```
sudo wg-quick up wg0
```
This command starts the VPN connection based on the configuration you just created.
To test the connection, you can ping the server’s IP address (which was configured in the AllowedIPs section) from the client:
```
ping 10.0.0.1
```
## Checking the Connection Status
You can check the status of the WireGuard connection using the following command:
```
sudo wg show
```
This command will display the details of the active VPN connection, including the peer's public key, the data transfer statistics, and the connection's status.
## Automating the VPN Connection at Boot (Optional)
If you want your VPN connection to start automatically when the system boots, you can enable the WireGuard service using systemd. To do so, run the following commands:
```bash
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
```
This ensures that the WireGuard service starts automatically on system boot and keeps the VPN connection persistent.
## Common Issues / Troubleshooting
### 1. VPN doesn't start
Make sure your configuration file is correctly named (**wg0.conf**) and located in **/etc/wireguard/**.
Check that you're running the command with sudo wg-quick up wg0.
Verify that your network interface names match your system (e.g., eth0 vs ens3).
### 2. Connection drops or no traffic
Ensure AllowedIPs is set correctly. For full tunneling, use 0.0.0.0/0. For split tunneling, specify the exact subnets you want routed.
Check firewall rules. WireGuard requires UDP port 51820 (or your custom port) to be open.
### 3. Key mismatch errors
Double-check that you're using the correct private key for the client and the correct public key for the peer (server).
Regenerate the keys if you suspect a corruption or copy-paste error.
### 4. Ping doesn't work
Verify IP addresses in the configuration match between client and server.
Make sure the server is running and listening on the specified port.
Confirm there's no firewall blocking the traffic.
## Security Recommendations
### 1. Keep your private key safe
Never share private.key. Treat it like a password.
Store it in a secure directory with restricted permissions:
```bash
sudo chmod 600 /etc/wireguard/private.key
```
```bash
sudo chown root:root /etc/wireguard/private.key
```
### 2. Firewall configuration
Configure your firewall to allow WireGuard traffic only on the necessary port (default UDP 51820):
```
sudo ufw allow 51820/udp
```
```
sudo ufw enable
```
Restrict access from unknown IPs if possible.
### 3. Keep WireGuard updated
Regularly update your system and WireGuard packages to benefit from the latest security fixes:
```bash
sudo apt update && sudo apt upgrade -y
```
### 4. Review your configuration periodically
Check that your AllowedIPs, NAT rules, and interface settings are correct.
Remove unused keys or peers to minimize potential attack surfaces.
## Conclusion
Congratulations! You have successfully installed and configured WireGuard on your Ubuntu 20.04 client machine, establishing a secure and encrypted VPN connection to your server. WireGuard stands out as a modern, fast, and lightweight VPN solution designed to deliver high performance without compromising security. Its streamlined and straightforward configuration process makes it accessible for both beginners and experienced users alike.
With WireGuard, you can confidently protect your online activities, whether you're accessing corporate resources remotely, ensuring privacy while browsing public networks, or securely connecting multiple devices across different locations. Thanks to its minimal codebase and efficient cryptography, WireGuard offers robust security with reduced latency, making it an excellent choice for personal and professional VPN needs.
By implementing WireGuard, you enhance your network's privacy and integrity, safeguarding your data from eavesdropping and unauthorized access. Keep your VPN client updated and periodically review your configuration to maintain optimal security and performance.
## FAQ
- **Q1: How do I configure WireGuard on a Windows or macOS client?**
The process for configuring WireGuard on Windows and macOS is very similar to Linux. You'll need to install the WireGuard client application from the respective platform’s store or from the WireGuard website. The configuration file will be similar, but the installation process varies for each platform.
- **Q2: Can I use WireGuard without a public IP on the server?**
Yes, WireGuard can work in environments without a public IP by using NAT or port forwarding to route traffic. For example, if your server is behind a router, you will need to set up port forwarding to allow WireGuard to communicate with the client.
- **Q3: What encryption algorithms does WireGuard use?**
WireGuard uses modern cryptographic algorithms like Curve25519 for key exchange, ChaCha20 for encryption, Poly1305 for message authentication, and BLAKE2 for hashing. These algorithms provide strong security while being highly efficient.
- **Q4: How do I troubleshoot WireGuard connection issues?**
First, ensure that both the server and client configurations match (especially the keys and IP addresses). Use the wg show command to check if the VPN tunnel is active and if there are any errors. Additionally, ensure that the correct ports (51820 by default) are open on the server’s firewall.
https://serverspace.us/support/help/how-to-install-vnc-on-the-server-under-ubuntu-20-04.mdLearn how to install and configure VNC on Ubuntu 20.04 for remote access to your server's graphical desktop environment. Follow this step-by-step guide for seamless setup.
**VNC (Virtual Network Computing)** is a software tool that enables you to control a remote system using your local keyboard and mouse, creating the experience of being physically present at the remote machine. It is particularly useful for managing servers that have a graphical user interface (GUI).
## Requirements to install
To use VNC effectively, a graphical environment on the server is required. While CLI-based remote access is best done with SSH, VNC shines when you need GUI access. Minimum recommended server specifications:
- **At least 2 GB RAM**
- **2 CPU cores**
- **20–30 GB of disk space**
## Installation
You’re ready now. Please follow steps below:
Update the system and install necessary packages
```bash
apt-get update && apt install xfce4 xfce4-goodies tightvncserver
```
You'll be prompted to create a password for remote access. Optionally, you can set a separate read-only (viewer) password.
```
vncserver
```
Stop the VNC server to configure startup settings
```
vncserver -kill :1
```
Configure the startup script and add execution permissions to file:
```bash
echo "startxfce4 &" > /root/.vnc/xstartup
chmod +x /root/.vnc/xstartup
```
Restart the VNC server
```
vncserver
```
To connect, use a VNC client (such as RealVNC or TigerVNC) and enter the IP address of your server followed by the VNC port. Note:
- **Display :1 corresponds to TCP port 5901**
- **Display :2 corresponds to TCP port 5902, and so on.**
Result like below should appear. If you’ve seen this – you’re great!
Next step is optional: you may want ro run VNC service automatically. It is easy peasy. Create a service initial file:
```xml
cat /dev/null 2>&1
ExecStart=/usr/bin/vncserver
ExecStop=/usr/bin/vncserver -kill :1
WantedBy=multi-user.target
EOT
```
Enable and start the service:
```bash
systemctl enable vnc
systemctl start vnc
```
## All in all
You've successfully installed and configured a **VNC** server on your Linux machine, allowing you to remotely access your server's graphical desktop environment. This setup enables seamless management of files, software, and settings with a user-friendly GUI interface, which is especially beneficial when you need to perform tasks that are difficult or impossible through a command-line interface alone. By following the steps in this guide, you’ve also configured the server to run automatically on system startup, ensuring uninterrupted access to the desktop environment without needing to manually start the VNC service each time. Whether you’re managing a server remotely or need to access applications running on a headless machine, this VNC setup is a powerful solution that offers both flexibility and convenience for administrators and users alike.
## FAQ (Frequently Asked Questions)
- **Q: What if I want to use a different desktop environment (e.g., GNOME, KDE)?**
A: Replace xfce4 with the appropriate package (e.g., gnome-session, kde-plasma-desktop) and update the startup script accordingly.
- **Q: Can I change the display port (e.g., from :1 to :2)?**
A: Yes, when starting VNC, use vncserver :2 to start on display 2 (port 5902).
- **Q: Is VNC encrypted by default?**
A: No, VNC is not encrypted. It's recommended to tunnel VNC over SSH for secure usage.
- **Q: How can I access the server from Windows?**
A: Download a VNC client (like RealVNC or TightVNC), enter the server IP and port (e.g., 192.168.1.100:5901), and use the access password you created.
- **Q: I get a black screen or errors on connection. What should I do?**
A: Make sure your desktop environment is correctly set in .vnc/xstartup and the script is executable.
https://serverspace.us/support/help/what-is-winget-and-how-it-works.mdLearn what Winget is and how to use it on Windows. This complete guide covers installation, essential commands, and tips for managing software via the Windows Package Manager CLI.
Managing software on Windows has traditionally involved a variety of separate tools and methods. Users often relied on web browsers to manually search for and download applications from trusted sources. In parallel, there were GUI-based installers and system components that allowed for basic package management, but these required multiple manual steps and lacked standardization. As a result, the Windows software ecosystem was fragmented – with different tools performing parts of what a unified package manager is meant to handle.
## What is Winget?
**Winget is a Windows package manager** that combines search, installation, uninstallation and full package management using repositories as sources. This solution is a client of the Windows Package Management Service and allows you to automate the installation process.
What makes this solution different from regular scripts or binary files, which can also perform automated package installation, is its architecture and logic. Winget provides a single point of control over the OS software. By default, the package manager uses only the company’s repository, where the software that has been checked for VPO and undeclared features gets to.
Screenshot №1 —Validation
If any problems are detected, the process of delivering the package to the repository is blocked. If necessary, the list of repositories can be modified by a configuration file and provided to employee workstations to use only trusted software source.
## How does Winget work?
To work with the utility, open a terminal by **pressing Win+X** and selecting **PowerShell** or **Terminal**. Enter the command below:
```
winget; winget source update
```
Screenshot №2 — Help page
The utility help page will be displayed with a description of the syntax and possible commands to use. We will use the following semantics:
```
winget [] []
```
Commands are used to define the software functions to be called, and options help to define the parameters of their execution. For example, we need to find a package in the repository called MySql, for this we will use the command:
```
winget search -q MySql
```
Screenshot №3 — Search
In the left column is the name of the package, in the centre is its id as a combination of the name of the developer’s repository and the package itself. Pay special attention, if you want to install the official version of the software, you need to choose according to the correct name of the publisher! Just the combination that is presented in the centre. In order to install a database from Oracle company, look for the corresponding line, which is presented last.
If you need to install community software, be sure to read the manifest file, which is brief information about the package and the download sources:
```
winget show Oracle.MySQL
```
Screenshot №4 — Short info
The Installer Url item indicates the source of the file download and you can follow the link and check it through antivirus and threat detection systems. You can also check the hash value or id of the file with the official data on the developer’s website.
Let’s move on to the installation for this purpose specify the id of the found package and write the following command. On the example of a database it will look like this:
```
winget install Oracle.MySQL
```
Screenshot №5 — Installation
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №6 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways!
For a popup-free installation, use the utility’s options, which can be viewed by typing the winget install command. Where it says that the -h or –silent option will be used for this kind of installation and looks like this:
```
winget install Oracle.MySQL –silent
```
.
After installing the package itself and the necessary dependencies, it will show up in the search, via the command:
```
winget list -q Oracle
```
Screenshot №7 — Filter of package
The process of removal is as simple as writing the command:
```
winget remove Oracle.MySQL
```
For more detailed familiarisation with the commands and subcommands of the utility use the help option for each of them, for example **winget source -help**.
## How to update and change repository in Winget?
To change a repository, you need to invoke the winget source subcommand and start by looking at the list of existing repositories:
```
winget source list
```
Screenshot №8 — Source list
To add a new repository use the command:
```
winget source add -n [name] -a [url] -t [type]
```
To remove similar only with the remove subcommand, to add a corporate repository for multiple employees refer to the configuration file at the path %LOCALAPPDATA%\Microsoft\WinGet\Settings\settings.json and add the required sources:
```
{ "$schema": "https://aka.ms/winget-settings.schema.json", "sources": [ { { "name": "winget", "type": "Microsoft.Rest", "arg": "https://winget.azureedge.net/cache" }, { "name": "exampleRepo", "type": "Microsoft.Rest", "arg": "https://example.com/repo" } } ] } }
```
Then save and the repositories are ready to use! To learn how to add your application to a Microsoft repository, read our guides!
## FAQ: Frequently Asked Questions About Winget on Windows
- **What is Winget and why should I use it?**
Winget is a command-line package manager for Windows that simplifies the installation, update, and removal of software. It provides a centralized, scriptable, and secure way to manage applications — no need to download installers manually from different websites.
- **Is Winget pre-installed on my Windows system?**
Winget comes pre-installed on Windows 10 (version 1709 and later) and all versions of Windows 11. For older versions, it can be installed manually via the Microsoft App Installer package.
- **How do I install a program using Winget?**
You can install a package by running:
```
winget install
```
For example:
```
winget install Oracle.MySQL
```
To perform a silent installation without pop-ups, use the –silent or -h flag.
- **How do I find the correct software package?**
Use the search command to locate software:
```
winget search
```
Check the publisher and ID carefully to ensure you’re installing the official version.
- **Can I update or remove software with Winget?**
Yes. To update a package, use:
```
winget upgrade
```
To uninstall:
```
winget remove
```
- **How do I manage repositories in Winget?**
Run winget source list to view current sources. You can add or remove repositories using:
```
winget source add -n -a -t
```
```
winget source remove
```
To configure sources system-wide, edit the settings.json file in **%LOCALAPPDATA%\Microsoft\WinGet\Settings\**.
- **Is it safe to use community repositories?**
Winget uses Microsoft-verified repositories by default. Community sources should be reviewed carefully — always check the manifest file, verify URLs, and scan downloads with antivirus tools before proceeding.
https://serverspace.us/support/help/ray-marching-vs-sphere-tracing-whats-the-difference.mdLearn the difference between Ray Marching and Sphere Tracing, their advantages and disadvantages, and which method is best for rendering procedural scenes.
## Ray Marching vs. Sphere Tracing: A Comparison
Ray Marching and Sphere Tracing are two similar rendering methods based on **Signed Distance Functions (SDF)**. They are used for visualizing scenes without traditional polygonal geometry, but they differ significantly in their approach to step progression. In this article, we will compare them, highlighting the advantages and disadvantages of each method.
## Core Principles
- **Ray Marching** is a step-based ray tracing method where the ray advances forward using fixed or adaptive steps until it reaches an object’s surface or exceeds the iteration limit.
- **Sphere Tracing** is an improved version of Ray Marching, where step sizes are chosen based on the value of the **Signed Distance Function**. The ray moves forward by a distance equal to the SDF value at the current point, preventing surface overshooting.
## Method Comparison
| Feature | Ray Marching | Sphere Tracing |
| --- | --- | --- |
| Ray progression | Fixed or adaptive steps | Optimized steps based on SDF |
| Efficiency | May require many steps | Faster due to dynamic step size |
| Risk of overshooting | High with large steps | Eliminated by SDF control |
| Accuracy | Can suffer from artifacts | More precise |
| Use in graphics | General-purpose, versatile | Specialized for procedural graphics |
## Pros and Cons
### **Ray Marching**
**Flexibility** – Can be used with **SDF** as well as other visualization techniques.
**Simplicity** – Easier to implement.
**High iteration count** – Can be computationally expensive.
**Artifacts** – Low step precision may lead to rendering errors.
### **Sphere Tracing**
**Higher performance** – Requires fewer iterations.
**No surface overshooting** – Ensures correct intersections.
**Limited to SDF scenes** – Not suitable for arbitrary surfaces.
**Accuracy issues in complex scenes** – Sharp changes in **SDF** can cause precision problems.
## When to Use Each Method
- **Ray Marching** is preferable when rendering objects without **SDF**, such as voxel-based scenes or volumetric rendering.
- **Sphere Tracing** is ideal for procedural scenes where objects are defined using **Signed Distance Functions**, such as in **ShaderToy** and the **demoscene**.
## Conclusion
Both methods are widely used in computer graphics, and their effectiveness depends on the project's requirements. **Sphere Tracing** is more efficient for **SDF-based** scenes, whereas **Ray Marching** offers greater flexibility. The choice between them depends on the trade-offs between **performance** and **adaptability** in a given application.
https://serverspace.us/support/help/installing-softether-vpn-client.mdInstalling SoftEther VPN Client - step-by-step instructions on how to configure the software to securely connect to a virtual private network (VPN).
In this article we will consider the main aspects of deploying a VPN client solution and establishing a connection to the server for SoftEther VPN Client!
First of all, let’s pre-install all the necessary packages, for this purpose go to the [official SoftEther website and download](https://www.softether.org/5-download) the latest version of the VPN client. Choose the appropriate distribution for your OS and architecture.
## Installing the VPN client
Afterwards, run the installation file and follow the on-screen instructions to complete the installation.
Screenshot № 1 — Installation
Screenshot № 2 — Client’s Option
Screenshot № 3 — Policy
Screenshot № 4 — Location of files
Screenshot № 5 — Finish installation
After installation, open SoftEther VPN Client and proceed to connection setup:
Screenshot № 6 — Create new connection
To create a new connection Click on the "Add VPN Connection" button. Enter a name for your connection in the "Name" field. Enter the server address (IP address or domain name) in the "Host Name" field. If necessary, change the port (443 is the default).
Let’s move on to selecting the authentication method. The classic and simplest is login by login and password, so let’s choose it. Enter your credentials (login and password) in the appropriate fields.
Screenshot № 7 — Configure connection
Click "OK" to save the created connection.
## Connection to VPN-server
In the SoftEther VPN Client main window, select the connection you created. Click the "Connect" button. After successful connection, you will see the "Connected" status.
Screenshot № 8 — Your address
You can now use the internet via VPN.
## Turn off VPN-client
To disconnect from the VPN, select the current connection and click the "Disconnect" button, which will disconnect the virtual adapter we created earlier. Traffic will go through the classic routes!
https://serverspace.us/support/help/whats-new-in-kali-linux-2024-4-and-how-to-install-it.mdLearn how to install Kali Linux 2024.4 and see the new changes in this version. Detailed guide on Serverspace.us!
Just recently, the developers of the Kali Linux distribution have released a new release with version 2024.4, which has a lot of innovations. Find the distro already available on the official website in different formats, both online and offline versions.
## Kali 2024.4 Deployment and Upgrade
Select the appropriate processor architecture for your device, usually on Linux similar systems it can be viewed via the command:
```
uname -a
```
In Windows this is realized by a similar solution, where we are interested in the CsSystemType line:
```
Get-ComputerInfo
```
Screenshot № 1 — Get info about machine
After that, the selected distribution must be downloaded and burned on the installation media via dd or rufus, and then run from it via BIOS.
In our materials you can also find [details about installing Kali Linux](https://serverspace.us/support/help/kali-linux-installation-and-configuration-os/) from the installation media!
But you can go the easier way, for your test environment or network loop you can deploy VPS [on Serverspace in the cloud](https://serverspace.us/services/cloud-servers.md). To do this, let’s go to the control panel. In the left menu select vStack or VMware platform → Create Server → Select Distribution → Rest of VPS Settings.
Screenshot № 2 — Panel for order
After that, within a minute, the server will be deployed and ready to use!
If you are already using Kali on your resources and want to upgrade, then follow some commands to download the available packages and upgrade the system:
```bash
echo "deb http://http.kali.org/kali kali-rolling main contrib non-free non-free-firmware"
sudo tee /etc/apt/sources.list
sudo apt update && sudo apt -y full-upgrade
cp -vrbi /etc/skel/. ~/
[ -f /var/run/reboot-required ] && sudo reboot -f
```
## Let’s run through the major changes in the OS!
History of changes in the new version:
- Old 32-bit systems are becoming an atavism of modern solutions, so following Debian/Ubuntu, Kali developers are dropping support for i368 architecture for their distributions, but leaving packages in repositories;
- Updated the Linux kernel to version 6.11;
- A known vulnerability issue with the DSA cryptographic algorithms used to generate keys was fixed by installing OpenSSH (9.8p1), the default. OpenSSH (7.5) with the command name ssh1 was left in place to support legacy systems. Take these changes into account in your automated solutions!
- The default version of Python is now 3.12, which means that the user is currently unable to install software via pip, even with a pre-created virtual space. You must now use pipx to work, as it will automate the process of creating virtualenv.
- There are new tools to perform security auditing of servers and endpoints.
Checked for malicious activity in this release and published them in their repositories:
- Mssqlpwner – interact with and gain control over MSSQL servers.
- Sara – RouterOS security inspector (provided by casterbyte).
- Hexwalk – hexadecimal data analyzer, editor and viewer.
- Web-cache-vulnerability-scanner – Go command-line tool for testing for web cache poisoning (provided by Arszilla).
- Chainsaw – rapid forensic search and analysis of Windows artifacts (provided by Arszilla).
- Openssh-ssh1 – Secure SHell (SSH) client for the legacy SSH1 protocol.
- Xsrfprobe – An advanced toolkit for auditing and exploiting Cross Site Request
- Forgery (CSRF/XSRF).
- Bloodyad – a tool for privilege escalation in Active Directory (provided by Arszilla).
- Python-pipx – execute binary files from Python packages in isolated environments.
- Certi – allows you to request certificates from ADCS and discover patterns (provided by Arszilla).
- Findomain – fast and comprehensive domain recognition solution (provided by Arszilla).
- Proximoth – a tool for detecting vulnerabilities related to control frame attacks (provided by TechnicalUserX).
- Linkedin2username – creating lists of company usernames on LinkedIn.
- Zenmap – GUI for Network Mapper (nmap) (no longer required!).
This summary covers the major changes in the new release that could significantly affect your work with this distribution!
https://serverspace.us/support/help/how-to-install-rocky-linux-9-5-and-whats-new-in-it.mdLearn the detailed instructions for installing Rocky Linux 9.5: master the operating system installation process step by step.
Last quarter, on November 19, 2024, the Rocky Linux distribution was released with version 9.5, which was a new counterpart to CentOS. It was developed in the wake of Red Hat’s premature withdrawal of support for its distribution.
At the moment, the distribution can be installed and used using external media, disk images on virtual machines, containers, as well as cloud solutions from Serverspace!
## Deploying a Rocky Linux 9.5 image
The easiest way to deploy is to use VPS servers in the Serverspace cloud platform. To do this, select the platform itself in the panel, go to the servers tab, where various distributions will be presented, including Rocky Linux 9.5.
Screenshot № 1 — Panel for order
After that, deploying the server will take no more than a minute and you will be able to connect via SSH or Cockpit interface.
## Deploying via Docker image
Rocky Linux in Docker Hub has an official repository that contains both full and minimal images. At the moment, the latest release available is Rocky Linux 9, which can be downloaded with the command:
```bash
docker pull rockylinux
```
To run a container with a minimal image, you can use the docker run command:
```bash
docker run -d -p 80:8080 –volume gg:/etc rockylinux:9-minimal bash -c 'while true;do sleep 1000;done'
```
Screenshot № 2 — Docker
Options, when starting the container allows you to forward ports from the host OS to the container, as well as create a virtual disk gg, relative to which will be stored data /etc. Other directories are mounted in a temporary file system and will be cleaned up after restarting the container.
## Deploying via Linux
To install the Rocky Linux image via an external drive, you need to prepare the image and then partition it on the media. To do this, choose an image suitable for the architecture of our processor on the official website:
Screenshot № 3 — Official website
Let’s find the name of the connected external drive via the command:
```
lsblk
```
Screenshot № 4 — List of disk
There is no need to split or mount it, as we will interact with it at the driver level, copying data bit by bit. Let’s enter the command:
```
dd if=\~/your-image.iso of=/dev/sdb bs=8M conv=sync,noerror
```
After that you can start from this device via BIOS and perform OS customization.
**Important changes** to Rocky Linux 9.5 GA include:
- improved hardware and driver support, such as for NVIDIA, Intel, and AMD graphics cards, as well as network adapters and sound cards;
- updated tools and libraries such as GCC, Python, OpenSSL, and others used in software development;
- enhanced security through kernel and security package updates, including vulnerability patches and improved protection against viruses and hacker attacks;
- improved system stability, which ensures reliable operation of the operating system and applications, reducing the likelihood of crashes and errors;
- support for new software versions, such as LibreOffice 7.3, GIMP 2.10.28, VLC 3.0.10 and other popular programs;
- improved support for virtual machines and containers, making it easier to manage and deploy virtual environments such as VirtualBox, VMware, and Docker;
- updated versions of applications and packages that give users access to the latest versions of popular programs and utilities such as Firefox, Thunderbird, LibreOffice, and GIMP;
- improved support for network connectivity and network services that provide stable and secure Internet and LAN connections, including IPv6 support and improved data encryption.
https://serverspace.us/support/help/how-to-manage-devices-and-disks-on-linux.mdLearn how to manage devices and disks on Linux with this comprehensive guide. Discover commands and tools for partitioning, formatting, mounting, and maintaining storage devices efficiently on your Linux system.
Why when I plug in a disc it doesn’t work in the OS, a flash drive is not read by the system? And the network interface refuses to appear in the device list? How to connect discs and configure their work or allow to use a certain list of devices? To all these and other questions we will consider the answer, having analysed the architecture and the principle of working with devices in Linux. After this tutorial you will be able to configure, manage the state and permission of devices on your system by yourself.
## How does disc mapping work in Linux?
Let’s break down the full cycle of mounting a disc in Linux, in order to understand how it works on the system. And what can be done to solve problems that arise?
Screenshot №1 — Schema
We physically or virtually connect the disc to our system, and then information about the new device comes to the kernel. The kernel selects a driver for its operation and collects information about the device. In Linux, any device is a “_file_” and this means that the kernel, after collecting the information, writes the data to a file in the** /dev** folder. But this is not an ordinary file description of the connected device, but a point of access to the disc!
Programs can open, read, write and manipulate these device files using standard system calls such as **open(), read(), write() **and **ioctl()**. These calls are passed through the device file to the device driver, which then communicates with the hardware through the kernel.
The device driver converts the system calls into hardware commands, which the kernel passes to the device. Feedback from the device also passes through the driver back to the software.
After that the kernel creates the uevents event control passes to Udev, which is a device manager with a prepared set of rules. These are used to change the device name, user access rights, blocking, and scripts when connecting or disconnecting devices. If there are criteria that require changes to be made, Udev will go to the **/dev** directory and perform the necessary actions.
## How do I connect a drive to Linux?
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.io/services/cloud-servers/). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №2 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways!
Now let’s look at the situation in practice, we need to mount a disc and give it a special name, prohibit connection of devices with a certain UUID, and execute a script to automate our tasks. This can be anything: partitioning a new disc, rotating old files or notifying the administrator.
Let’s connect the disc and do some basic configuration: partition and set the file system. Use the lsblk command to examine the mounted discs:
```
lsblk
```
Screenshot №3 — New device
The new disc appears as vdb with no logical volumes or partitioning. To start using it you need to create a table and volumes, and then select a file system for the logical partition that will be supported by the OS. After that mount the disc in the OS. To do this, go to the fdisk utility and type the command:
```
fdisk /dev/vdb
```
Screenshot №4 — Disk partitioning
By default, an MBR table is created for the disc, which can be overwritten and it is preferable to use GPT partitioning instead. To do this, specify the letter g, after that the table will be recreated and the disc will be repartitioned. To create a new volume in the current table, press n to define its parameters:
Screenshot №5 — Make logical part
Select the type for the partition and specify the first and the last sector to create one volume. After that we will see the result that a 10 GB volume has been created, it remains to write the changes and save them with the w command. In order for the disc to be processed by the OS it is necessary to initialise the file system for the volume. To do this, use the mkfs.ext4 utility:
```
mkfs.ext4 /dev/vdb1
```
Screenshot №6 — Make file system
To mount a disc temporarily, we can use the mount command, where we must first specify the disc itself and the mount point. But this solution will be valid until reboot, in order to mount a new disc automatically each time – go to the /etc/fstab folder and make changes:
```
nano /etc/fstab
```
```
/dev/vdb1 /home ext4 defaults,noexec 0 2
```
Screenshot №7 — Make mount record
To initialise a drive, you need to specify its UUID or direct path in our case /dev/vdb1. To view the current discs, type lsblk.
Screenshot №8 — Result of mount
Great, the drive is mounted and ready to use! Now, it will go through the mount step on every restart, however, what if you need to rename it? Or allow a limited number of people to use it?
## How to manage the drive and use udev?
To manage block, symbolic devices use udev utility, which communicates with the kernel through uevent events. All settings for devices are made in configuration files for each device separately. In order to create a symbolic link or restrict access you need to know the unique parameters of the disc to be searched:
```
udevadm info -a -p /sys/block/vdb
```
Screenshot №9 — Attributes
In order to write a rule it is necessary to find a unique value for a disc, in this case it is ATTR{serial} with a certain number. To write a rule, let’s go to the rules.d folder, where all previously written algorithms for working with each device are stored. Let’s create a rule called:
```
nano 98-local.rules
```
Let’s write the following syntax, which will first find the correct device and then apply the settings from udev rules:
```
SUBSYSTEM=="block", ID_SERIAL="BHYVE-2C94-9746-08F9″, SYMLINK+="NewDisk"
```
Then save the file and restart the udev service:
```bash
systemctl daemon-restart && systemctl restart systemd-udevd
```
And check the relevant parameters through the command:
```
udevadm test /dev/vdb1
```
Screenshot №10 — Test rules
In the udev rule file, you can use different validation conditions such as:
- SUBSYSTEM: Checks the subsystem of the device. Example: SUBSYSTEM==”block” (the device belongs to the block subsystem).
- KERNEL:Checks the device name specified by the kernel. Example: KERNEL==”sd*” (the device name starts with “sd”).
- ATTR{attribute}:Checks the attribute of the device. Example: ATTR{size}==”1024″ (the device size attribute is 1024).
- ENV{environment_variable}:Checks an environment variable. Example: ENV{ID_SERIAL}==”1234567890″ (the serial number of the device is 1234567890).
- DRIVER:Checks the driver of the device.Example: DRIVER==”usb-storage” (the device uses the usb-storage driver).
- ACTION:Checks the action performed on the device. Example: ACTION==”add” (the device was added) or ACTION==”remove” (the device was removed).
- PROGRAM:Executes a command and checks the result. Example: PROGRAM=”/path/to/script” (executes a script at the specified path).
- RESULT:Checks the result of the programme execution. Example: RESULT==”1″ (the result of programme execution is 1).
- TEST:Checks the existence of a file or directory. Example: TEST==”/path/to/file” (checks for the existence of a file at the specified path).
All of the above attributes can be used to filter the device. Also for each of them logical elements are used, for example == or != in the condition. The action parameters are then specified:
- SYMLINK+=:Creates a character reference to the device. Example: SYMLINK+=”mydevice” (creates a symbolic link /dev/mydevice).
- NAME=:Assigns a name to the device. Example: NAME=”mydisk” (assigns the device name to mydisk).
- OWNER=:Sets the owner of the device. Example: OWNER=”username” (sets the device owner to username).
- GROUP=:Sets the group of the device. Example: GROUP=”disk” (sets the device group to disk).
- MODE=:Sets the access rights of the device. Example: MODE=”0660″ (sets the access rights to 0660).
- RUN+=:Runs the specified programme or script. Example: RUN+=”/path/to/script” (runs the script at the specified path).
- IMPORT=:Imports environment variables from the specified programme or file. Example:
- IMPORT{program}=”/path/to/program” (imports variables from a programme).
- OPTIONS=:Sets additional options for the device. Example: OPTIONS+=”last_rule” (specifies that this is the last rule for this device).
- ATTR{attribute}=:Sets the value of the device attribute. Example: ATTR{power/control}=”auto” (sets the value of the power/control attribute to “auto”).
- ENV{environment_variable}=:Sets the value of an environment variable. Example: ENV{UDISKS_IGNORE}=”1″ (sets the environment variable UDISKS_IGNORE to 1).
- TEST=:Checks the existence of a file or directory. Example: TEST==”/path/to/file” (checks for the existence of a file at the specified path).
https://serverspace.us/support/help/how-to-solve-init-error-and-its-causes.mdInit errors are common development problems that can occur when running applications, operating systems, containers, and scripts. Learn how to diagnose and effectively resolve init errors, including configuration errors, syntax errors, and problems with graphical systems, Docker, and Linux. Get…
**Initialization errors** (often called **errors of init**) are some of the most common and frustrating challenges encountered by programmers, system managers, and even everyday users, in a nutshell – it’s very common issue for people working with software. These issues can manifest in a wide range of contexts, including during the boot-up process of an operating system, when launching software applications, initializing scripts, loading libraries, or starting containers. The root cause of these errors can vary, depending on the environment and the specific software involved. For instance, an init error may occur if essential system components fail to load, a configuration file is missing or corrupted, or there are compatibility issues between system dependencies.
In this article, we will take a closer look at the underlying causes of initialization errors, explore common scenarios where they arise, and provide a structured approach to diagnosing and resolving them. Understanding the typical sources of these errors and the right tools to troubleshoot them is crucial for efficient system management. Whether you’re troubleshooting a Linux service that won’t start, diagnosing a container failure, or dealing with an application crash, knowing how to approach init errors methodically can save time and reduce frustration. We’ll cover various strategies, from reviewing logs to checking configuration files, and offer actionable steps to get your system back on track quickly.
## What is init, and why is it important?
The term _init_ is short for “initialization.” Depending on the context, this can refer to:
- System initialization process (in Linux, this is handled by init, systemd, upstart, etc.)
- Initialization of a library or module in code
- Initialization of graphical, network, or other subsystems in games or applications
- The **__init__()** function in Python, which is often confused with initialization errors
- Initialization script (init script) for system or environment configuration
## Common Causes of Init Errors
- **Missing or Corrupted Configuration/init File**Example error:
```
init error: missing config.json
```
**Solution:** Make sure the necessary file exists, has the correct permissions, and is in the right format. Sometimes, deleting and regenerating the configuration file helps.
- **Syntax or Initialization Parameter Errors**Example error (Python):
```
TypeError: __init__() missing 1 required positional argument
```
**Solution:** Check how the constructor is being called. Ensure that all required arguments are passed when creating the object.
- **Issues with Initializing Graphics/Audio Systems (e.g., in Games)**Example error (Unity, Unreal Engine):
```
Init error: failed to initialize graphics device
```
Possible causes:
- Lack of support for the required OpenGL/DirectX/Vulkan version
- Outdated or corrupted video drivers
- The game is being run on an unsupported platform (e.g., headless server)
**Solution:**
- Update the graphics card drivers
- Run the application in compatibility mode
- Try using the **-force-opengl** or **-force-d3d11** rendering mode (in Unity)
- Check the application's system requirements
- **Errors Starting Containers (Docker, LXC)**Example error:
```
container failed to start: init error: exec format error
```
Possible causes:
- Incorrect command or launch format specified
- The container is built for a different architecture (e.g., x86 vs ARM)
- The image is corrupted or not fully loaded
**Solution:**
- Ensure the host and image architectures match
- Check the **ENTRYPOINT** and **CMD **in the Dockerfile
- Try rebuilding the image (**docker build –no-cache**)
- **Systemd/init.d Issues in Linux**Example error:
```
Failed to start MyService.service: Unit myservice.service not found.
```
**Solution:**
- Check if the unit exists (**/etc/systemd/system/myservice.service**)
- Reload the systemd configuration: **systemctl daemon-reexec**
- Ensure the unit is correctly configured (description, executable path, dependencies)
## Universal Tips for Resolving Init Errors
- **Check Logs:** Use tools like **journalctl**, **dmesg**, **systemctl status**,**docker logs**, **debug.log**, and others to read the logs.
- **Check Dependencies:** Often, initialization errors are due to missing libraries or modules.
- **Reproduce the Minimal Example:** Simplify the scenario to the bare minimum to isolate the issue.
- **Check Version Compatibility:** This is especially important for libraries, programming languages, and system components.
- **Consult Documentation:** Often, init errors are thoroughly described in the documentation or have been discussed on GitHub Issues/Stack Overflow.
## Conclusion
**Initialization errors**, though often frustrating, are usually solvable with a structured and methodical approach. While these errors can initially appear overwhelming, taking the time to understand the specific context in which they arise is crucial for effective diagnosis and resolution. Whether the issue occurs during system boot, application startup, or container initialization, knowing where to focus your attention and what to examine is key to finding a solution.
One of the most important skills when dealing with initialization errors is the ability to interpret **error messages** and logs. These logs often contain valuable insights that can direct you to the root cause of the issue. Whether the problem stems from a missing file, an incorrect configuration, a corrupted system file, or an incompatible version of a dependency, logs are usually the first place to look. They can provide context on which components failed to initialize or which processes encountered errors.
A systematic approach to troubleshooting involves gathering as much relevant information as possible from these logs and error messages. This initial data collection helps build a clearer picture of the problem. Once you have the context, the next step is to break down the error into smaller, more manageable pieces. Error logs frequently point to specific configuration files, services, or system components that are misconfigured or malfunctioning. In many cases, the logs will even indicate which files or dependencies are involved, narrowing down your troubleshooting efforts.
Developing a habit of carefully reading and interpreting error messages is one of the most effective ways to speed up the troubleshooting process. The more you practice this skill, the quicker and more efficiently you’ll be able to resolve initialization errors. As your experience grows, you'll find that identifying the source of errors becomes a more intuitive and less stressful task. Not only will you become adept at solving current issues, but understanding error logs can also help you anticipate and prevent potential problems in the future, thereby saving you valuable time and effort in the long run.
Furthermore, becoming proficient at reading and analyzing logs can lead to better overall system maintenance. You’ll be able to identify patterns or recurring issues that might point to larger, underlying problems within your infrastructure or applications. Over time, this proactive approach will not only help you resolve initialization errors faster but also improve your ability to anticipate and address potential issues before they disrupt your workflow. As you gain more experience, you'll also learn how to create more comprehensive logging strategies that can catch and report issues earlier in the process, preventing issues from escalating to more serious failures.
## Serverspace Knwoledge Base can help you solve your problems!
The Serverspace Knowledge Base is here to help you resolve any issues you might encounter! Facing an error? Something not working as expected? Curious about how a feature works? Look no further — our comprehensive knowledge base is the perfect resource to find answers to all your questions. Explore guides, tutorials, and troubleshooting tips to quickly get back on track and make the most out of your Serverspace experience.
https://serverspace.us/support/help/how-to-deploy-n8-with-ai-via-npm.mdStep-by-step instructions for installing and configuring n 8 n to start using the capabilities of artificial intelligence in your work processes.
AI greatly simplified the solution of many monotonous tasks that required skills that only humans possessed. Summarization, reasoning, generalization, however, business integration has been an expensive decision for quite a long time. Companies have locally implemented various features into their products, but they have not freed workflows from human skills.
The n8n product has not yet been released, which is a platform for automating various business processes with a free Community License. With the Low-code approach in the project, the entry threshold is reduced and minimal ideas about the operation of the system are needed, which we will consider in this material!
## What is n8n and how do I install it?
**n8n is an application server** that contains a library of nodes or blocks, where each performs its own function of interacting with external services or internal data processing, after which the nodes bring the data to a single view and transmit it along the built chain. Classically, they look like this:
Screenshot № 1 — Intro
The installation process does not take much time, it is enough to download the image via Docker or the project via the npm package manager. In recent materials, we have already considered the method with containers, so in this case we will solve the problem in the second way.
If you do not have your own capacities or a static white address necessary for operation, then you can use VPS from Serverspace.
We will pre-install the necessary dependencies for our environment to work. To do this, download the cross-platform interpreter manager.:
```bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash
```
And we will install the latest version of NodeJS through its repositories.:
```
\. "$HOME/.nvm/nvm.sh"
nvm install 20
```
Screenshot № 2 — Installation
In the same way, we will download the project only through the package manager and add environment variables for the platform configuration.:
```bash
npm install n8n -g \
echo "export N8N_HOST=0.0.0.0
export N8N_PORT=3333
export N8N_PROTOCOL=http
export N8N_PATH=http://0.0.0.0:3333/
export N8N_BASIC_AUTH_ACTIVE=true
export N8N_BASIC_AUTH_USER=admin
export N8N_BASIC_AUTH_PASSWORD=supersecurepassword
export TZ=US/Arizona
export N8N_LOG_LEVEL=info
export N8N_LOG_OUTPUT=console
export N8N_SECURE_COOKIE=false" | tee -a ~/.bashrc
```
Screenshot № 3 — Installation
Replace the fields with your own: login and password, as well as specify the necessary network settings. If your node has a domain name, then add it to the PATH instead of the IP address. After that, run:
```
n8n
```
Screenshot № 4 — Launch service
After a successful launch, you can go to the previously specified URL **http://x.x.x.x:3333 /**, please note that if you want to set up an SSL connection, remove the environment variable N8N_SECURE_COOKIE=false.
## How to work with n8n?
Initially, there is a trigger at the head of the chain, it can be a message from the buyer in a telegram or a new document in Google Docs, and there is also an endpoint where the analytics/modification carried out by n8n arrives. In fact, absolutely any sequence of nodes can be built between these two points.
For example, consider a simple scheme in which the n8n chat will be connected to the GPT model provided by Serverspace via the API. It can analyze any of your data streams and provide analytics, just like the GPT-4 model. The scheme itself looks like this:
Screenshot № 5 — PHI-4
The trigger is a chat in which we can communicate with the model. After receiving a Microsoft Phi-4 node message, it turns to the AI outside and, having received the result, presents it in the form of variables, where it can already be written to any place, including Google Docs. You can download the scheme for working with Microsoft Phi-4 at Serverspace facilities [from our file](https://drive.google.com/file/d/1_eLieOj89_qy76_jbjd_WR3og4X8larw/view?usp=sharing) and then import it into the panel by clicking the three dots on the right. Don’t forget to add a key!
You just need to go to our dashboard and [create an API key](https://serverspace.us/services/serverspace-gpt-api.md), and then copy it:
Screenshot № 6 — API key
Open the Phi-4 node and paste it in its entirety in the Value field from the Authorization header. Then log in to the chat and write any request, just like a classic GPT bot:
Screenshot № 7 — Node
You can modify this scheme as you like and implement the AI block from Serverspace in any process. Look at the screenshot above and note that we use the chatInput variable to generate an API request, and then JSON is sent to the Output, where we have selected the string "content" for the filter, after which it is sent back to the chat.
https://serverspace.us/support/help/what-is-vpc-and-why-do-i-need-it.mdLearn what VPC (Virtual Private Cloud) is and why you need it in the cloud. Simple explanation, use cases, security, isolation and traffic control - everything you need to know about VPC for beginners and practitioners.
When you launch your project in the cloud — whether it's a web server, a database, or an entire zoo of microservices — you need to know where all of it will live. This is where the VPC — Virtual Private Cloud — comes into play.
It's not just a fancy term — **it's the foundation of security, scalability, and management in any cloud environment**. Let's dive into what it is, why it matters, and what problems it solves.
## What is a VPC?
A VPC is an isolated logical network within a public cloud. Think of it as your own piece of the internet inside Amazon, Google, or Microsoft's infrastructure, where you control who can communicate with whom, which subnets exist, and how routing is handled.
A simple analogy:
A VPC is like a virtual data center in the cloud. You have your own internal network, your “rooms” (subnets), your “internet exit” (gateways), and locks on the doors (firewalls and security groups).
## Why do you need a VPC?
**1. Security**
Most importantly: isolation. All your resources (EC2 instances, databases, containers) are isolated from other cloud customers. From the outside, you're invisible — unless you choose to open the doors yourself.
You can configure:
- **Security Groups** (resource-level filtering),
- **Network ACLs** (subnet-level filtering),
- **VPC Flow Logs** (traffic monitoring),
- **VPC Endpoints** (access AWS services without going through the public internet).
**2. Network control**
You can define:
- IP address ranges (CIDR),
- The number and type of subnets (public or private),
- Routing rules,
- VPN connections and VPC peering.
**3. Integration**
VPC is the foundation that other services build upon, including:
- Kubernetes (EKS, GKE),
- Serverless functions (Lambda, Cloud Functions),
- Databases (RDS, Cloud SQL),
- Machine learning, analytics, and more.
## What are the components of a VPC?
Here are the basic VPC components:
| Component | Description |
| --- | --- |
| Subnet | A subnet within the VPC, can be public (internet-accessible) or private. |
| Internet Gateway | Provides internet access for resources in public subnets. |
| NAT Gateway | Allows resources in private subnets to access the internet (outbound traffic only). |
| Route Tables | Define routing rules (e.g., all traffic 0.0.0.0/0 goes to the internet). |
| Security Groups / NACLs | Define what traffic is allowed in and out. |
| VPC Endpoints | Allow access to cloud services without leaving the cloud's internal network. |
## Example
Let's say you are deploying a web application:
- The frontend runs in a **public subnet**, accessible from browsers.
- The backend and database live in a **private subnet**, only accessible internally.
- You attach a **NAT Gateway** so the backend can pull package updates from the internet.
- You configure a **Security Group** to ensure the database only accepts connections from the backend application.
All these layers are part of a single VPC. The VPC is what provides control, security, and stability.
## Where can I rent a VPC?
You can rent a [virtual private cloud (VPC) on the Serverspace platform](https://serverspace.us/services/virtual-private-cloud.md). Deploy your own isolated and secure environment with full network control, while maintaining all the benefits of the public cloud – scalability, availability and high performance.
## Conclusion
A VPC isn't just another acronym. It's a core component of any cloud infrastructure. It helps you:
- **Ensure security,**
- **Control traffic routing,**
- **Scale effectively,**
- **Connect to both internal and external systems.**
If you're serious about launching anything in the cloud, start by setting up a VPC. It's your digital space, and you are the chief architect.
https://serverspace.us/support/help/what-is-grub-the-boot-loader-without-which-linux-wont-start.mdLearn what GRUB is, how it works and why you need it. A detailed guide to setting up, restoring and using the boot loader on Linux systems with examples and explanations.
Before the operating system begins to load, its process is managed by a special program — the bootloader, which initiates the kernel's startup and hands over control to it. In the Linux ecosystem, the most well-known and widely used bootloader is GRUB — a flexible and powerful tool that supports multi-booting, various file systems, and compatibility with both BIOS and UEFI. GRUB essentially sets the stage for the entire boot process, determining which system or configuration will be activated when the computer is started.
## Who? What’s that?
GRUB (GNU GRUB, short for “GRand Unified Bootloader”) is an essential utility that manages the boot process, allowing your machine to start one or several operating systems. It's automatically installed during most Linux setup procedures and is the first program to take control after BIOS or UEFI finishes initializing your hardware. Depending on your setup, GRUB will either present a menu to choose between operating systems or directly launch the Linux kernel without needing user input.
## What it is used for?
GRUB is more than just “start Linux.” It can:
- Display a system selection menu in multi-boot setups (Linux + Windows, multiple Linux distributions, etc.),
- Allow you to manually specify the kernel and boot parameters,
- Boot from various file systems, including ext4, Btrfs, FAT, NTFS, and others,
- Support both classic BIOS and modern UEFI boot modes,
- Help recover a system when normal booting fails (via a command line interface).
## How does GRUB work?
The computer's boot process happens in several stages:
- **BIOS or UEFI** – The first stage of the boot process is handled by the BIOS or UEFI, which performs essential hardware checks to ensure everything is functioning properly. After these initial diagnostics, it locates and loads the bootloader to proceed with the system’s startup.
- **GRUB Stage 1** – On legacy systems, the GRUB bootloader is loaded from the Master Boot Record (MBR), while on modern systems using UEFI, it's loaded from the EFI system partition. This stage is responsible for initiating the process but doesn’t handle the full complexity of booting the system.
- **GRUB Stage 2** – This is where GRUB takes full control, performing most of its critical functions. It loads the boot configuration file, presenting the user with a menu if there are multiple operating systems or kernel configurations available. Once the user selects an option, GRUB loads the necessary kernel and prepares the system for booting.
- **Operating System Kernel** – Once the appropriate kernel (such as Linux) is selected, it is loaded into memory. At this point, the kernel takes full control of the system, initializing the rest
In conclusion, the boot process is a carefully orchestrated sequence of events that involves multiple stages to transition from hardware initialization to a fully operational operating system. Each stage, from BIOS or UEFI performing hardware checks to GRUB handling bootloader tasks and finally loading the operating system kernel, plays a crucial role in ensuring that the system starts correctly. Understanding this sequence helps in troubleshooting boot-related issues and gaining a deeper insight into how operating systems interact with hardware during the startup process.
## Configuring and Recovering GRUB
### How can i find GRUB's configuration file?
The main GRUB configuration file is located at:
```
/boot/grub/grub.cfg
```
However, it is not recommended to edit this file directly because it is automatically generated by the system. Instead, you should modify:
```
/etc/default/grub
```
After making changes, update the bootloader configuration using:
```
sudo update-grub
```
### Example configuration of **/etc/default/grub**:
```
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -d -s 2>/dev/null || echo Ubuntu`
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX="acpi=force"
```
## How to recover GRUB if it stops working?
If after installing Windows or replacing a drive Linux no longer boots, GRUB might have been overwritten. You can recover it using a Live USB distribution.
Run the following commands:
```
sudo mount /dev/sdXn /mnt
sudo grub-install –boot-directory=/mnt/boot /dev/sdX
```
Then, enter the installed system’s environment and update the configuration:
```sql
sudo chroot /mnt
update-grub
```
## GRUB and Multi-OS Selection
If you have multiple operating systems installed on your machine, GRUB will automatically create a boot menu allowing you to choose which OS to launch — for example:
- **Ubuntu**
- **Windows 10**
- **Advanced options for Ubuntu**
You can customize the order and appearance of this menu via the **/etc/default/grub** file and update it using **update-grub**. You can also set the default system and adjust the timeout before automatic boot.
## GRUB 1 vs GRUB 2
Today, most systems use GRUB 2 — a more flexible and modular version that supports modern boot formats. The older GRUB (Legacy) is now obsolete and rarely used.
## Conclusion
GRUB is not just a bootloader — it is a critical component of the Linux ecosystem, providing flexible control over operating system startup. Thanks to its wide range of features, it fits both simple user systems and complex setups with multiple OSs and non-standard boot conditions.
Proper GRUB configuration can not only speed up the boot process but also help prevent potential issues related to multi-boot setups, system updates, or recovery after failures.
While its configuration might seem complex at first glance, understanding the basic principles — like editing **/etc/default/grub** instead of directly modifying **grub.cfg** — significantly simplifies working with this powerful tool.
By mastering GRUB, you gain not only control over your system’s boot process but also increase its resilience to unexpected changes and failures.
## Looking for reliable and flexible cloud solutions?
With [Serverspace](https://serverspace.us/index.md), you can quickly rent virtual servers tailored to your needs — from lightweight instances for simple projects to powerful configurations for demanding applications. Easily deploy isolated [VPC](https://serverspace.us/services/virtual-private-cloud.md) environments for maximum security and network control. Plus, explore a comprehensive library of detailed tutorials, how-to guides, and technical articles that will help you set up, configure, and optimize your infrastructure at every stage. Whether you’re launching your first Linux server, managing multi-OS boot environments, or building a complex cloud architecture, Serverspace offers the performance, scalability, and expert resources to support your success. Start building today with intuitive tools, flexible billing, and 24/7 technical support.
## Learn with us!
The Serverspace Glossary is an invaluable resource for users diving into the world of cloud computing, server management, and DevOps. It serves as a comprehensive guide, providing clear and concise definitions for essential terms and concepts that are frequently encountered within cloud technology, IT infrastructure, and the broader tech industry. This glossary is ideal for a wide range of users, from beginners just starting with cloud solutions to seasoned professionals looking to refresh or expand their knowledge.
Covering an extensive range of topics, the glossary includes key terms related to server virtualization, networking, storage solutions, security protocols, containers, and cloud-native technologies. Each entry is carefully crafted to help users quickly grasp complex technical terminology, ensuring they can navigate through technical documentation, guides, and tutorials with ease. Additionally, the glossary simplifies advanced concepts, making them accessible to individuals without a deep technical background, while also providing value to those looking for more detailed insights.
One of the standout features of the Serverspace Glossary is its commitment to staying current with the latest industry trends. It is regularly updated to reflect the ever-evolving landscape of cloud services, virtualization, automation tools, and emerging technologies. This ensures that users have access to the most up-to-date definitions, best practices, and terminology in the field, making it a vital resource for anyone engaged with cloud computing and server management
https://serverspace.us/support/help/how-to-deploy-n8n-on-my-server.mdAutomate routine tasks and speed up your work without programming skills with n8n! Easy installation via Docker, ready-made integration scripts and unlimited possibilities for your business or projects.
In today’s rapidly evolving and competitive landscape, organizations are constantly seeking methods to automate mundane tasks in order to boost efficiency and minimize the likelihood of human error. Tasks like copying and pasting data, which are not only time-consuming but also prone to errors, can hinder productivity and lead to costly mistakes.
While Customer Relationship Management (CRM) systems have been an essential tool in streamlining business operations, they often come with limitations, such as high costs and complexity, which makes them inaccessible to smaller businesses and individuals.
Recognizing this gap in the market, the n8n open-source project was created as an alternative to traditional CRM systems. n8n is a powerful low-code platform designed to enable users, regardless of their technical expertise, to automate a wide range of workflows and business processes. It's designed to be flexible and scalable, meaning it can grow with your business needs, while providing an intuitive user interface for setting up automations without the need for extensive programming knowledge.
What makes n8n even more attractive is its open-source nature, which means users have complete control over their data and automation processes. Unlike closed-source solutions, n8n allows for complete customization, ensuring that your workflows are tailored to the unique needs of your business. Furthermore, n8n offers an extensive list of integrations with popular services and applications, making it easy to connect various tools and streamline your business operations further.
In this tutorial, we’ll guide you through the process of setting up n8n as a self-hosted automation platform on your own infrastructure. By hosting n8n yourself, you maintain complete control over your data and workflows while tapping into its powerful automation capabilities for tasks like data synchronization, notifications, and more. Whether you’re aiming to improve efficiency, minimize errors, or optimize business processes, n8n offers an excellent, cost-effective solution. Let's explore how you can easily get n8n up and running on your own system!
## How to set it up and what’s that?
**n8n** is a robust automation platform that links various services and applications using a network of nodes. Each node is responsible for a specific task, enabling smooth interactions between multiple external APIs. The workflow is activated by a trigger event, which sets everything in motion.
In this setup guide, we will use Docker to deploy the n8n Community Edition. Follow the instructions below to get up and running
### Step 1: Install Dependencies
Minimizing Human Errors: Manual server configurations are often susceptible to mistakes, which can lead to significant issues. Run this code to install it:
```bash
bash
apt install docker.io docker-compose -y
```
### Step 2: Set Up the n8n Service
Next, set up a temporary directory and configure the n8n service using a Docker Compose file. Here is the basic configuration:
```xml
version: '3'
services:
n8n:
image: n8nio/n8n
restart: unless-stopped
ports:
– "8080:8080"
environment:
– N8N_LISTEN_ADDRESS=0.0.0.0 (for all ips) or 127.0.0.1 (for localhost)
– N8N_BASIC_AUTH_ACTIVE=true
– N8N_BASIC_AUTH_USER={YOUR_LOGIN}
– N8N_BASIC_AUTH_PASSWORD={YOUR_PASS}
– N8N_PORT=8080
– N8N_PROTOCOL=http
– N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
– N8N_RUNNERS_ENABLED=true
– N8N_SECURE_COOKIE=false
volumes:
– n8n_data:/home/node/.n8n
networks:
– n8n_network
volumes:
n8n_data:
networks:
n8n_network:
driver: bridge
```
This configuration file contains environment variables that define key settings such as the authentication details and the device’s IP address. You’ll need to input your specific values, including the domain name and port. If you choose not to use SSL, make sure the protocol is set to **http**.
### Step 3: Run the Docker Image
To deploy the n8n image, execute the following command:
```bash
docker-compose run -d
```
Once the image is loaded onto your device, you can access it via the provided URL. To complete the setup, create an account by filling out the registration form.
You’ll receive an activation key via email. Enter it into the settings to complete the installation.
## How to Automate Tasks with n8n
n8n is a versatile application server that automates API requests to external services. It processes incoming data, stores it in variables, and passes it to subsequent nodes for further processing.
For instance, we can integrate the Microsoft Phi-4 GPT model, which is capable of analyzing incoming data streams. The simplest workflow looks like this:
Here, a chat trigger sends a request to the GPT model, which processes the input and sends the result to an output filtering node. You can import the[workflow schema](https://drive.google.com/file/d/1_eLieOj89_qy76_jbjd_WR3og4X8larw/view) by selecting the three dots on the top right and clicking “Import via File.”
To connect with an API, [generate an API key in the panel and copy it](https://my.serverspace.us/gpt):
Then, open the Phi-4 node and paste the API key into the Authorization header’s Value field:
You can now communicate with the model by typing into the chat interface, just like interacting with any other GPT bot. Furthermore, you can connect triggers such as Telegram bot messages or product reviews from online marketplaces. Just remember to manage the Input and Output data model properly!
In future tutorials, we'll delve into creating more complex automation workflows by exploring additional nodes, allowing you to build personalized automation chains that suit your needs.
## Final thoughts
In conclusion, automating workflows with tools like n8n can significantly simplify the process of managing repetitive tasks, especially for small businesses and individuals who may not have access to complex CRM systems. The n8n open-source platform offers exceptional flexibility and user-friendliness, making it an ideal solution for optimizing a wide range of processes, including API integrations and data handling.
By following the simple setup guide outlined in this article, you can deploy a self-hosted automation platform that is both cost-effective and scalable. With the ability to connect multiple services and trigger actions through an intuitive workflow, n8n enables you to automate tasks without requiring deep technical expertise.
As you continue to explore the capabilities of n8n, you can unlock even more advanced automation scenarios tailored to your unique needs. Whether you’re managing a personal project or scaling a business, n8n offers a customizable solution that enhances efficiency and productivity.
Additionally, combining n8n with platforms like Serverspace can further boost your DevOps journey by allowing seamless deployment and scaling of applications. With the power of automation at your fingertips, the possibilities for optimizing your workflow are endless.
## Dive into DevOps with Serverspace!
The Serverspace Glossary is an essential resource that serves as a comprehensive guide for both beginners and experienced professionals looking to enhance their understanding of critical IT terminology. This extensive glossary not only helps you familiarize yourself with key DevOps concepts but also provides a deep dive into the most essential practices and tools that are revolutionizing modern IT environments. By studying these terms, you will develop the knowledge to efficiently implement and manage cutting-edge solutions, such as CI/CD pipelines, process automation, containerization, and scalable cloud infrastructure.
Each term in the glossary is carefully crafted and explained in a simple yet thorough manner, ensuring that the content is accessible to everyone, regardless of technical background. Whether you’re setting up Kubernetes clusters, managing Docker containers, or using advanced monitoring and logging tools, the glossary offers a solid foundation to build upon. The precise explanations and detailed examples make it a go-to resource for expanding your DevOps expertise.
Moreover, Serverspace's robust platform enhances this learning experience by allowing you to directly apply the concepts from the glossary to real-world projects. As you deploy, manage, and scale your applications, you'll have the benefit of a seamless integration between your theoretical knowledge and practical tools. With Serverspace, managing infrastructure, troubleshooting issues, and optimizing workflows becomes faster and more efficient.
Whether you’re working on a small-scale application or architecting complex cloud solutions, the combination of detailed knowledge and high-performing tools provided by the Serverspace Glossary and platform will empower you to succeed in today's rapidly evolving IT landscape. By leveraging this resource, you can foster greater innovation in your projects, streamline your development processes, and stay ahead in the fast-paced world of DevOps and cloud infrastructure management.
https://serverspace.us/support/help/cloud-infrastructure-for-developers-best-practices-with-serverspace.mdCloud infrastructure for developers: best practices for deployment, automation and scaling on Serverspace. Accelerate development and ensure the reliability of your projects with modern cloud solutions!
Today, developers need a reliable, flexible, and high-speed infrastructure more than ever — to launch applications, test solutions, and scale projects efficiently. Cloud technologies offer all this without unnecessary time and financial investments. However, to fully unlock their potential, it's important to follow best practices.
In this article, we'll explore how to build an effective cloud infrastructure using [Serverspace](https://serverspace.us/index.md).
## Why Developers Choose the Cloud
Cloud solutions bring developers a range of undeniable advantages:
- ** Fast server and environment deployment**
- ** Global accessibility**
- ** Easy scalability as projects grow**
- ** Cost savings on hardware and maintenance**
- ** Enhanced reliability and data protection**
These benefits are especially valuable in dynamic markets, where business requirements change rapidly, and products must reach users faster than ever.
## Best Practices for Cloud Infrastructure
### 1. Adopt [Infrastructure as Code (IaC)](https://serverspace.us/about/blog/introduction-to-devops-key-principles-and-practices.md)
Use tools like **Terraform** or **Ansible** to automate the deployment of servers, network configurations, and environments. IaC eliminates human errors, accelerates scaling, and ensures smooth project migrations.
**Tip:** Serverspace provides an official [Terraform](https://serverspace.us/services/serverspace-terraform-provider.md) provider, making it easy to manage resources programmatically with just a few lines of code.
### 2. Deploy Isolated Environments
Separate development, testing, and production environments by using independent cloud servers or creating a [Virtual Private Cloud (VPC).](https://serverspace.us/services/virtual-private-cloud.md) This minimizes risks and supports safe experimentation.
**Tip:** With Serverspace, you can build a fully customizable [VPC](https://serverspace.us/services/virtual-private-cloud.md) with private networking, advanced routing, and security rules.
### 3. Automate Resource Scaling
Monitor your infrastructure's workload and automatically adjust server resources based on demand. Dynamic scaling keeps your project performant while optimizing costs.
**Tip[:](https://serverspace.us/services/virtual-private-cloud.md)** Serverspace allows you to modify VPS configurations in just a few clicks through a user-friendly control panel.
### 4. Prioritize Security
Secure your infrastructure with:
- Firewalls and network ACLs
- VPN connections for private access
- Regular system and software updates
**Tip:** Serverspace enables flexible security rule management and supports custom VPN deployments within your VPC.
### 5. Set Up Regular Backups
Mistakes happen — even to the best teams. Protect your data with regular automated backups and quick recovery options.
**Tip:** Serverspace makes it easy to create snapshots and restore servers from backups in a few simple steps.
## Why Serverspace Is the Ideal Choice for Developers
Choosing Serverspace means getting access to a modern, developer-focused platform that supports fast and flexible cloud operations:
**Instant server deployment** — get up and running in just 2 minutes
**High-performance hardware** — Intel Xeon Gold CPUs and high-speed SSD storage
**Flexible billing** — Pay-as-you-Go model, billed every 10 minutes for actual usage
**Powerful automation tools** — APIs and CLI utilities ready for your DevOps workflows
**99.9% SLA-backed uptime** — with real compensation for service interruptions
**24/7 engineer support** — available via phone, control panel, or website chat
With Serverspace, developers can fully concentrate on building great products — while we take care of the infrastructure.
**Ready to accelerate your development?** [Get started with Serverspace today!](https://serverspace.us/index.md)
https://serverspace.us/support/help/ssh-keygen-creating-and-deleting-keys.mdLearn how to generate SSH keys for secure server access, choose key algorithms and complexity, and manage or delete existing SSH keys effectively.
Then the encryption algorithm or Ciphers starts its work, which already allows to confidentially exchange information between servers, having previously announced a common session key. The symmetric algorithm is predominantly used, as the channel is already protected and it is possible to use a more efficient solution.
In our case, ssh-keygen allows you to create keys for the first step – authentication. In that article we consider keygen for windows 10 and another versions of OS include Linux!
## How do I create SSH keys?
The scheme for Linux and Windows is typical, but differs only in the directories used. After going to the terminal you need to call the ssh-keygen utility, if you do not specify parameters, the keys will be created with default parameters.
```bash
ssh-keygen && ls –la ~/.ssh/
```
Screenshot №1 — Default key
For an ssh server, this would be the /etc/ssh directory:
```bash
ssh-keygen -f /etc/ssh/ssh_host_rsa_key
```
The authentication algorithm will be RSA, the key length is 3076, the comment is username@host of your machine. It is preferable to specify a master password when creating the key, it will keep the private key encrypted. However, if you want to access the target server via an intermediate server with your key, then do not forget to allow redirection of ssh agent in the configuration of servers. We can also use alternative algorithms, specify the -t parameter and the name of the desired one when creating it:
```bash
ssh-keygen –t Ed25519 –b 256 –a 24 –C "user1@host.com"
```
Screenshot №2 — Specified options for key
Optionally, you can also specify the key length -b, the number of encryption rounds -a, and a comment with -C. Note that the case is case sensitive in this case. The more you choose the key length and encryption rounds, the more time it will take to enumerate it, but also the more resources. It is recommended to choose classical values from 3072 bits in RSA, from 256 bits for Ed25519.
To view the created key hashes, specify the -l option and the key path:
```bash
ssh-keygen –l [path-to-key]
```
Screenshot №3 — Hash for key
This function is useful when it is necessary to check the fingerprint values when connecting to the server for the first time to avoid MitM. This is important because this is the only stage where spoofing is possible when connecting.
To export public keys, you can use the command:
```bash
ssh-keygen –e [path-to-key]
```
Screenshot №4 — Show key
This data can be used to authenticate to third-party servers by adding it to the authorised _keys folder.
## How do I change the master password on SSH keys?
If you have forgotten your master key, unfortunately there are no measures to recover it. Therefore, you will have to create a new one and distribute it. To change an existing one, specify the -p, -N option with the new password and the path to the file:
```bash
ssh-keygen –p –N 123321 –f ~/.ssh/id_rsa
```
Screenshot №5 — New passphrase
## How do I quietly create an SSH key without displaying the output?
This method may be required when you need to create the required keys using a script without output:
```bash
ssh-keygen –q –N 123321 –f /home/user1/.ssh/
```
Screenshot №6 — Quiet key creation
As a result, they will lie in the user’s folder and be used by the SSH client/agent when authenticating.
## How to remove SSH server key fingerprints?
This can help when the server decided to change keys and we haven’t updated our know_host entries. SSH client will simply deny the connection and we will not be able to access the machine, to reset the records write the command:
```bash
ssh-keygen –R 127.0.0.1
```
If a specific port has been specified for the connection, it must also be marked:
```bash
ssh-keygen –R [127.0.0.1]:2222
```
Such a combination will delete the required records, after which it is necessary to reconnect and verify the key fingerprints. This utility allows you to effectively manage keys, records of authorised servers and organise service operation. In that article we consider openssh pack of utility, that you can download for Linux:
```bash
apt install openssh-server
```
And for Windows you can use Terminal with command:
```
winget install Microsoft.OpenSSH.Preview
```
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №7 — Create Server
## Conclusion
SSH keygen is an essential tool for securely managing authentication between clients and servers. By generating SSH keys, you establish a robust method for verifying identities and preventing unauthorized access. Understanding how to create, export, and manage keys—whether on Linux or Windows—ensures your connections remain secure. Additionally, features like changing passphrases, quiet key creation, and removing old server fingerprints help maintain smooth and safe SSH operations. Mastering ssh-keygen is a fundamental skill for system administrators and anyone working with secure remote access.
## FAQ
- **Q1: What is the purpose of ssh-keygen?**
A: ssh-keygen is used to generate SSH keys for secure authentication, manage existing keys, and handle fingerprints of servers to prevent unauthorized access.
- **Q2: How do I create a new SSH key?**
A: Use the command:
```bash
ssh-keygen -t RSA -b 3072 -C "user@host"
```
You can also specify different algorithms, key lengths, and comments as needed.
- **Q3: How can I view the fingerprint of an SSH key?**
A: Use the -l option:
```bash
ssh-keygen -l -f [path-to-key]
```
- **Q4: How do I change the passphrase of an existing key?**
A: Use:
```bash
ssh-keygen -p -N new_passphrase -f [path-to-key]
```
This will update the master password for the private key.
- **Q5: Can I create SSH keys silently without output?**
A: Yes, with the -q option:
```bash
ssh-keygen -q -N "passphrase" -f /home/user/.ssh/id_rsa
```
- **Q6: How do I remove old server fingerprints from known_hosts?**
A: Use the -R option:
```bash
ssh-keygen -R 127.0.0.1
```
For non-standard ports:
```bash
ssh-keygen -R [127.0.0.1]:2222
```
- **Q7: Which software packages are needed for SSH key management?**
A: On Linux, install OpenSSH:
```bash
apt install openssh-server
```
On Windows, use:
```
winget install Microsoft.OpenSSH.Preview
```
- **Q8: Can SSH keys be used across multiple servers?**
A: Yes, export the public key using ssh-keygen -e and add it to the authorized_keys file on target servers for authentication.
- **Q9: What if I forget my SSH key passphrase?**
A: Unfortunately, the original passphrase cannot be recovered. You must generate a new key and distribute it to the servers.
- **Q10: Is ssh-keygen secure for modern authentication needs?**
A: Yes, it uses strong asymmetric encryption and supports multiple algorithms, making it reliable for secure remote server access.
https://serverspace.us/support/help/disable-enhanced-security-windows-server.mdLearn how to turn off Internet Explorer Enhanced Security Configuration (ESC) on Windows Server 2019 to enable unrestricted web browsing. Follow our easy, step-by-step instructions.
By default, Internet Explorer on Windows Server editions operates with Enhanced Security Configuration (ESC) enabled. This feature significantly restricts browser functionality to protect the server from potential web-based threats, resulting in frequent content blocking warnings and limited browsing capabilities. While this security measure is important, it can also hinder productivity when you need to access trusted websites freely.
In this comprehensive tutorial, we will guide you step-by-step on how to disable Internet Explorer Enhanced Security Configuration on Windows Server 2019, allowing for smoother and unrestricted web browsing while maintaining server safety through alternative precautions.
## Method 1 – Disable via Server Manager
Start **Server Manager**.
Screenshot 1. Start Server Manager.
Click **Local Server** in the left menu.
Screenshot 2. Click Local Server.
On the right side you will see the **IE Enhanced Security Configuration** parameter. Click **On** next to it.
Screenshot 3. Open Internet Explorer Enhanced Security Configuration.
In the window that appears, disable this option for administrators and users and click **OK**.
Screenshot 4. Disable Internet Explorer Enhanced Security Configuration.
Server Manager will show **Off** for **IE Enhanced Security Configuration** after a few seconds. If it doesn’t, try updating the window contents.
Screenshot 5. IE Enhanced Security Configuration is turned off.
You can now fully use Internet Explorer on Windows Server 2019.
## Method 2 – Disable via PowerShell
Open **PowerShell**.
Screenshot 6. Open PowerShell.
Paste the following script there and press Enter. Sometimes a double tap is required.
```
function Disable-IEESC {
$AdminKey = "HKLM:SOFTWAREMicrosoftActive SetupInstalled Components{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}"
$UserKey = "HKLM:SOFTWAREMicrosoftActive SetupInstalled Components{A509B1A8-37EF-4b3f-8CFC-4F3A74704073}"
Set-ItemProperty -Path $AdminKey -Name "IsInstalled" -Value 0
Set-ItemProperty -Path $UserKey -Name "IsInstalled" -Value 0
Stop-Process -Name Explorer
Write-Host "IE Enhanced Security Configuration (ESC) has been disabled." -ForegroundColor Green
}
Disable-IEESC
```
Screenshot 7. Paste the script in PowerShell.
Internet Explorer now works in normal mode.
## Conclusion
Disabling Internet Explorer Enhanced Security Configuration (ESC) on Windows Server 2019 allows for a smoother browsing experience by removing restrictive content blocking and warning prompts. While ESC provides an important security layer to protect your server, turning it off can be necessary for trusted environments where you need unrestricted access to websites. By following the methods outlined in this guide — either via Server Manager or PowerShell — you can safely disable ESC and enhance your productivity. Always ensure alternative security measures are in place to maintain your server's protection when disabling this feature.
## FAQ: Disabling Internet Explorer Enhanced Security Configuration (ESC)
- **What is Internet Explorer Enhanced Security Configuration (ESC)?**
ESC is a security feature in Windows Server that restricts browser functionality to reduce exposure to web-based threats. It limits browsing capabilities and frequently blocks content to protect the system.
- **Why would I want to disable ESC on Windows Server 2019?**
Disabling ESC can improve usability by allowing full web browsing without constant security warnings or content blocks, which is helpful when accessing trusted sites for administrative tasks or downloads.
- **Is it safe to disable ESC?**
Disabling ESC reduces a layer of browser security, so it should only be done in trusted environments or when other security controls are in place. Always ensure antivirus, firewalls, and user policies are active to compensate.
- **How can I disable ESC on Windows Server 2019?**
You can disable ESC either through the Server Manager interface by toggling the setting under Local Server, or via PowerShell by running a script that modifies the registry keys related to ESC.
- **Will disabling ESC affect other users on the server?**
Yes. You can choose to disable ESC for administrators, standard users, or both, depending on your configuration steps.
- **How do I re-enable ESC if needed?**
To re-enable ESC, reverse the steps in Server Manager or modify the registry keys back to their original values using PowerShell.
https://serverspace.us/support/help/configure-network-interfaces-ubuntu-18.mdLearn how to configure multiple network interfaces on Ubuntu 18.04 using Netplan. This step-by-step guide includes detailed YAML configuration examples to help you set up your network easily and correctly.
To ensure the correct operation of several network interfaces with public IP addresses on Ubuntu 18.04 at the same time, it is not enough just to write basic parameters for them in Netplan. In this case, all packets will leave the server through the default gateway, which means that the server will be available only at one public IP address. This is the minus of routing by the destination address. Here we will add the necessary settings in Netplan to make multiple network interfaces work correctly on Ubuntu 18.04.
## Disable Netplan autotuning
When you create an [Ubuntu 18.04 server in Serverspace](https://serverspace.us/services/cloud-servers.md) or add new network interfaces to it from the control panel, the connection parameters are automatically configured. In addition, during a system reboot, the Netplan configuration file is also overwritten with the actual parameters. Therefore, any changes made in manual mode will be lost. To avoid this, let's disable this function.
First, make sure that you have added the required number of network adapters to the server, and then create a file:
```
nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
```
With the following content:
```
network: {config: disabled}
```
After saving the file, the function of automatic configuration of network interfaces will be disabled.
## Routing for multiple network interfaces
The task of ensuring the availability of the server via multiple network connections and IP addresses will be resolved with the use of policy-based routing, namely on the basis of the sender’s address. Thus, each packet will be sent from the server through the same address through which it got to it. First of all, you need to create routing tables for this purpose, and for this you need the **iproute2** package. If it is not present in the system, you need to install it:
```bash
apt-get install iproute2
```
Now open the file:
```
nano /etc/iproute2/rt_tables
```
It is necessary to add as many tables to its end as there are network interfaces to be configured. One table is a single line of two numbers separated by a space. The first number is the **priority** and the second is the **table name**. For example:
```
60 60
61 61
62 62
```
Thus, we will add 3 tables. Now it’s time to add routing settings to Netplan, open its config at **/etc/netplan/** with the **.yaml** extension (the file name may differ on your system):
```
nano /etc/netplan/50-cloud-init.yaml
```
Netplan is sensitive to formatting in the config file. It is very important to keep the correct number of spaces and not to use tabs, otherwise the result will not pass the check. A valid example is shown below. It shows a block of settings for one interface (enp0s5), you will see the same blocks in the config for each of the connections. You need to add the **routes** and **routing-policy** settings in each of the blocks, and leave the rest of the settings as they are. Explanation of the added values:
- to – any destination subnet IP – 0.0.0.0/0
- via – IP gateway of the current network connection
- table – name of one of the tables added to **rt_tables**. Must match for **routes** and **routing-policy** of each connection. But for different interfaces – different tables.
- from – IP address of this interface
- priority – can be left as is
```yaml
network:
version: 2
ethernets:
enp0s5:
addresses:
- 12.34.56.78/24
gateway4: 12.34.56.1
match:
macaddress: ee:ff:gg:hh:ii:jj
mtu: 1500
nameservers:
addresses:
- 8.8.8.8
- 1.1.1.1
- 8.8.4.4
search: []
set-name: enp0s5
routes:
- to: 0.0.0.0/0
via: 12.34.56.1
table: 60
routing-policy:
- from: 12.34.56.78
table: 60
priority: 300
```
After finishing editing the configuration, let's make sure it is correct:
```
netplan generate
```
If the output is empty, then everything was done correctly. If there are errors, you will see something like this:
```
/etc/netplan/50-cloud-init.yaml:24:1: Invalid YAML: tabs are not allowed for indent:
- to: 0.0.0.0/0
^
```
Tabs were found in this example. After fixing the errors and successfully passing the validation, apply the changes:
```
netplan apply
```
Now the server will be accessible to all IP addresses configured in this way.
https://serverspace.us/support/help/how-to-find-files-which-contains-defined-text-in-linux-and-windows-serverspace.mdLearn how to quickly search for text within files on Linux and Windows using powerful tools like grep, Notepad++, and findstr. This step-by-step guide covers basic commands, advanced options, and practical examples for efficient file searching.
Searching for specific text within files is a fundamental skill for developers, system administrators, and anyone working with code, logs, or documentation. Linux offers powerful built-in command-line tools such as **grep** for fast, flexible, and recursive text searching, while Windows users can achieve similar results using the **findstr** utility or graphical editors like Notepad++.
This guide provides clear, practical methods to locate text across files on both Linux and Windows platforms, with step-by-step examples, tips for advanced searches, and ways to maximize efficiency when working with large directories or complex projects.
The Linux shell, particularly Bash, remains the backbone of command-line productivity. Tools like grep leverage its capabilities, allowing you to search recursively through directories and pinpoint exactly where your target text appears, all from the terminal.
## Installing grep
In most cases, **grep** is already installed. But if it's missing, you can install it using the following commands:
For **Debian/Ubuntu-based systems**:
```bash
apt update && apt install grep -y
```
For** RHEL/CentOS-based systems**:
```bash
yum install grep -y
```
## Searching for Text in Files
To search for a specific string within files in a given directory, use:
```
grep -r "search_string" /path/to/search/
```
Explanation of flags:
- **-r** — recursive search through subdirectories.
- **-s** — suppress error messages for unreadable files.
- **-n** — display the line number where the match occurs.
- **–color=auto** — highlight matched text in output (optional but useful).
Example:
```
grep -rsn "error 404" /var/log/
```
This command will look through all files in **/var/log**, displaying the filename, line number, and the line that contains the string “**error 404**“.
## How to do text research on Windows computer
Unfortunately, Windows does not include a powerful CLI text search utility like **grep** by default. However, you can work around this in a few ways:
First way is _grep_ utility. It has been “ported” on Windows OS, so you can install it:
Download installer [here](https://sourceforge.net/projects/gnuwin32/files/latest/download), run it and follow standard Windows-like installation steps:
When program installed, you should add environment variable to make furher life more comfortable. Just open advanced PC options and edit **PATH **variable:
Add new option into **PATH **variable according to the your installation folder:
Then you can run **cmd **interpreter and do searching. Program syntax is identical to “original” Linux tool:
**NOTE: **Cause this tool is a Linux port, system root is shown in Linux-style, “slash” instead of C: drive.
Other, more “Windows-like” method is install powerful text editor e.g. Notepad++. Download it [from project site](https://notepad-plus-plus.org/downloads/), run the app and install it as usual:
To use this app as “text-finder” just run it and choose **Search > Find in Files **command. Then fill into the appropriate fields searching conditions:
Result is below:
## Conclusion
In this article, we explored practical and effective methods for locating specific text within files on both Linux and Windows operating systems. Mastering text search techniques is an essential skill for developers, system administrators, DevOps engineers, and anyone who works with large file systems, source code, or log files.
On Linux, we focused on the powerful and widely available **grep** utility. It’s built into nearly every Linux distribution and provides flexible options for recursive search, line numbering, case-insensitive matching, error suppression, and more. With just a few flags, **grep** becomes an indispensable tool for quickly scanning through files and directories — whether you’re searching for a bug trace, a configuration directive, or user activity logs.
On **Windows**, where similar functionality is not available by default, we covered two reliable alternatives:
- The Windows port of **grep**, which can be installed as part of Unix tools or via Git Bash, offering the same syntax and features as in Linux environments.
- **Notepad++**, a graphical text editor with a “Find in Files” function that provides a user-friendly interface for performing deep searches across folders, file types, and encodings.
These tools allow users to:
- **Efficiently debug errors by searching for specific keywords or stack traces.**
- **Audit log files to track events, warnings, or security incidents.**
- **Review codebases by finding function definitions, usage of variables, or TODO comments.**
- **Locate configuration settings that may be scattered across multiple files.**
Regardless of the operating system you work on, knowing how to search through files effectively will significantly boost your productivity and troubleshooting capabilities. Instead of relying on manual inspection or guesswork, you can now pinpoint exact lines of interest in seconds — even in projects with thousands of files.
By understanding and applying the techniques covered here, you are well-equipped to handle text searching tasks with confidence and precision across platforms.
## Pro Tips for Efficient Text Search
Whether you’re dealing with massive codebases, system logs, or scattered configuration files, these advanced techniques can make your search much faster and more precise:
### 1. Use Regular Expressions
Regular expressions (regex) allow you to search for complex patterns rather than exact text. Both **grep **and Windows tools support this:
- **In Linux**:
```
grep -E "error|fail|critical" /var/log/syslog
```
The **-E** flag enables extended regex, allowing you to match multiple terms with the **|** (OR) operator.
- **In Windows** using **findstr**:
```
findstr /R "error.*timeout" *.log
```
The **/R** flag enables regex. This will match lines where “error” is followed by “timeout”.
### 2. Search Only Specific File Types
If you’re working in a project folder with many files, you might want to target specific extensions:
- **Linux**:
```
grep -r –include="*.conf" "listen" /etc
```
- **Windows (Notepad++ or grep for Windows)**: In _Find in Files_, set *.txt;*.log in the "Filters" field.
### 3. Use ripgrep for Blazing Speed
[ripgrep](https://github.com/BurntSushi/ripgrep) (**rg**) is a faster and smarter alternative to grep. It respects **.gitignore**, supports regex, and works great for large projects:
```
rg "function.*init" ./src
```
You can install it on Linux via:
```bash
sudo apt install ripgrep
```
Or on Windows via [scoop](https://scoop.sh/) or [chocolatey](https://chocolatey.org/).
### 4. Filter by File Size or Age
Use **find **together with **grep **for more control:
```
find /var/log -type f -size +5M -exec grep "OutOfMemory" {} \;
```
This finds only files larger than 5 MB and searches within them.
### 5. Search Without Case Sensitivity
Sometimes errors or config keys use different cases. You can ignore case with:
```
grep -i "hostname" /etc/hosts
```
Or in **Windows**:
```
findstr /I "hostname" hosts.txt
```
### 6. Preview Large Files While Searching
For huge files, combine tools:
```
less +/search_term bigfile.log
```
This opens the file with the cursor already on the matched text.
### 7. Combine with awk or sed for Contextual Output
Need lines _before_ or _after_ a match?
```
grep -C 3 "panic" /var/log/syslog # 3 lines of context
```
Or use **awk **for even more custom output:
```
awk '/panic/{print NR, $0}' /var/log/syslog
```
## FAQ: How to Find Files Containing Specific Text in Linux and Windows
- **Q: What tools can I use to search text inside files on Linux and Windows?**
A: On Linux, grep is the most common command-line tool for searching text inside files. On Windows, you can use the findstr command-line utility or a graphical editor like Notepad++ with its "Find in Files" feature.
- **Q: How do I perform a recursive search using grep?**
A: Use the -r option to search recursively through all files and directories:
```
grep -r "search_text" /path/to/directory/
```
- **Q: Can I perform case-insensitive searches?**
A: Yes. Use -i with grep or /I with findstr to ignore case:
```
grep -i "text" filename
```
```
findstr /I "text" filename
```
- **Q: How do I exclude binary files from grep search?**
A: Add the –binary-files=without-match option to skip binary files:
```
grep -r –binary-files=without-match "text" /path/
```
- **Q: Is it possible to search only specific file types?**
A: Yes. In grep, combine with find or use –include to specify file patterns:
```
grep -r –include="*.log" "text" /path/
```
```
find . -name "*.txt" -exec grep "text" {} +
```
- **Q: How do I search for text in files using Notepad++?**
A: Open Notepad++, go to Search > Find in Files, enter the search term, specify directory and file filters, then click Find All.
- **Q: Can I use regular expressions in searches?**
A: Yes. Both grep (-E option) and findstr (/R option) support regex patterns for advanced searches.
- **Q: What does it mean if grep returns no output?**
A: It means no matches were found. Double-check your search string, directory path, and consider case sensitivity or file permissions.
## Cheat Sheet: Searching for Text in Files
| Platform / Tool | Command / Usage |
| --- | --- |
| Install grep (Debian/Ubuntu) | apt update && apt install grep -y |
| Install grep (RHEL/CentOS) | yum install grep -y |
| Search recursively for text (Linux) | grep -rsn "search_string" /path/to/search/ |
| Search with specific file type (Linux) | grep -r –include="*.log" "error" /var/log/ |
| Case-insensitive search (Linux) | grep -i "hostname" /etc/hosts |
| Search with regex (Linux) | grep -E "error\|fail\|critical" /var/log/syslog |
| Use ripgrep for speed (Linux) | rg "function.*init" ./src |
| Find files by size and search (Linux) | find /var/log -type f -size +5M -exec grep "OutOfMemory" {} \; |
| Search in large file preview (Linux) | less +/search_term bigfile.log |
| Contextual output (Linux) | grep -C 3 "panic" /var/log/syslog or awk '/panic/{print NR, $0}' /var/log/syslog |
| Windows CLI: findstr recursive | findstr /S /I "search_text" *.log |
| Windows CLI: regex search | findstr /R "error.*timeout" *.log |
| Notepad++: Find in Files | Search > Find in Files → Enter text, choose folder, set filters (*.txt;*.log), click Find All |
| Tips | Use regex, target specific file types, ignore case, combine with other tools (find, awk, sed) for precise search |
https://serverspace.us/support/help/python-3-virtual-environment-on-ubuntu-22-04.mdLearn how to create a Python 3 virtual environment on Ubuntu 22.04. This guide covers system updates, installing pip3, and configuring isolated environments for efficient Python development.
## Introduction
Python is an interpreted programming language. The author is Guido van Rossum, a developer from Holland. Python is a feature-rich language, and beginners quickly get used to the syntax of the language and program in a convenient text editor or use an integrated development environment. Using the Python language, you can get information about errors in the written code. With this guide, you will be able to install the latest version of Python on Ubuntu Server 22.04.
## Preparing for installation
Before installing the packages, you need to follow [our guide](https://serverspace.us/support/help/initial-server-setup-with-ubuntu-20-04/) to running Ubuntu Server 22.04 as a standard user.
## Download Python 3
Let’s update the package index and run the command to update the packages to the latest releases:
```bash
sudo apt update && sudo apt upgrade -y
```
The "-y" key means to force update.
Checking the Python version goes like this:
```
python3 –version
```
Output is going to be like this:
```bash
#Output
Python 3.10.6
```
The next step is to install python3-pip in order to manage Python packages. Let’s use the built-in command:
```bash
sudo apt install python3-pip -y
```
To install the matplotlib library, you must run the following command and the result is shown in Screen 1:
```
pip3 install matplotlib
```
Screen 1 – Installing the matplotlib library
To make sure the software environment is reliable, you need to install several packages
```bash
sudo apt install build-essential libssl-dev libffi-dev python3-dev
```
The first stage has been completed. We have updated the package index and updated obsolete packages, the current version of the pip3 package management system is installed.
# Setting up a virtual environment
A virtual development environment on a production server is considered a great solution compared to running in a main development environment. In a virtual environment, you can edit and not damage the files of the main development environment. We can create as many virtual environments as we need. Each virtual environment is deployed in different directories on our server. The directories contain files for initializing the virtual environment.
The virtual environment is deployed using the installed venv (virtual environment) package:
```bash
sudo apt install python3-venv -y
```
Then let’s create a directory called test:
```
mkdir test
cd test
```
Change to the first directory and use the following command to create a virtual environment called test_env:
```
python3 -m venv test_env
```
The result is shown in Screen 2.
Screen 2 – Create a virtual environment
The generated files configure the virtual environment to work separately from our host files. Activation of the environment is as follows, and to disable the environment, you must run the deactivate command:
```
source test/test_env/bin/activate
```
To disable the virtual environment, run the command:
```
deactivate
```
The results are shown in Screen 3.
Screen 3 – Activating and deactivating a virtual environment
In the figure, you can see that after launch, an inscription appears in front of the user name (test_env) indicating that all commands are executed in a virtual environment, the next step is to consider running a regular code written in the Python programming language.
## Testing the virtual environment
After activation, you need to create a file with the extension .py:
```
vim thanks.py
```
И вставим следующий кусок кода:
```
print("Dear User,\n"
"Thank you for using tutorials from \n"
"Serverspace Team")
```
To run the program, do the following:
```
python3 thanks.py
```
And we get the following result, as shown in Screen 4.
Screen 4 – Running code in a virtual environment
At this point, the stage ends and in order to complete the
process of working in the virtual environment, we will execute the "deactivate" command and return to the normal environment.
## Conclusions
In this instruction:
- **Considered options for updating software packages and updating the package index;**
- **Installed the Python programming language libraries using the pip3 package management system;**
- **Considered the activation and deactivation of the virtual environment;**
- **Tested work in a virtual environment.**
## FAQ
- **Q1: What is a Python virtual environment and why is it important?**
A1: A virtual environment is an isolated workspace that allows you to manage Python packages separately from the system-wide installation, preventing conflicts between projects.
- **Q2: How do I check the installed Python version on Ubuntu 22.04?**
A2: Run the command python3 –version in the terminal to see the current Python version installed.
- **Q3: How do I activate and deactivate a Python virtual environment?**
A3: Activate with source path_to_virtualenv/bin/activate and deactivate by running the deactivate command.
- **Q4: Do I need to install additional packages to create virtual environments?**
A4: Yes, you need to install the python3-venv package using sudo apt install python3-venv -y to create virtual environments.
- **Q5: Can I create multiple virtual environments on one server?**
A5: Absolutely, you can create as many virtual environments as needed, each isolated in its own directory.
## Cheatsheet for Python Installation and Virtual Environment on Ubuntu 22.04
| Step | Command / Action | Description |
| --- | --- | --- |
| 1 | sudo apt update && sudo apt upgrade -y | Update the package index and upgrade existing packages to the latest version. |
| 2 | python3 –version | Check the installed Python 3 version on your system. |
| 3 | sudo apt install python3-pip -y | Install pip3, the Python package manager. |
| 4 | pip3 install matplotlib | Install the matplotlib library for plotting and visualization. |
| 5 | sudo apt install build-essential libssl-dev libffi-dev python3-dev | Install essential packages and libraries for building Python modules. |
| 6 | sudo apt install python3-venv -y | Install the venv package to create Python virtual environments. |
| 7 | mkdir test && cd test | Create and navigate to a directory for your virtual environment. |
| 8 | python3 -m venv test_env | Create a virtual environment named test_env inside the directory. |
| 9 | source test_env/bin/activate | Activate the virtual environment. The shell prompt will show the environment name. |
| 10 | deactivate | Deactivate the virtual environment and return to the normal system environment. |
| 11 | vim thanks.py | Create a new Python script file inside the virtual environment. |
https://serverspace.us/articles/usage-netcat-for-test-tcp-udp.mdMaster Netcat (nc) for testing TCP and UDP connections. Learn how to set up client-server communication, debug network issues, and troubleshoot protocols with practical examples.
**Netcat** (nc) is a powerful and flexible command-line tool for testing TCP and UDP connections. It enables users to quickly create both client and server sessions, making it an essential utility for network debugging, protocol testing, and port scanning. Thanks to its lightweight design and broad capabilities, Netcat is widely used by system administrators and network engineers for troubleshooting and analyzing network issues.
In this guide, you’ll learn how to effectively use Netcat to test and debug TCP and UDP communications with practical, real-world examples.
## Testing TCP connections
Before you can start using the tool, you need to install it like this, for example in Debian:
```bash
sudo apt update
```
```bash
sudo apt install netcat
```
TCP (Transmission Control Protocol) is a protocol that provides reliable and orderly data transfer between network nodes. To test TCP connections with Netcat, follow these steps:
**1.** Start Netcat in server mode listening on a specific port:
```
nc -l port
```
Screenshot №1. Start nc as server
This command starts Netcat in server mode, which will listen for incoming connections on the specified port.
**2.**Start Netcat as a client establishing a connection to the server:
```
nc host port
```
Screenshot №2. Client connect
This command starts Netcat in client mode and establishes a connection to the specified host and port. Once a connection is established, both the server and the client can send and receive data. To send data to Netcat in client mode, simply type text and press Enter. The data will be sent to the server, which will accept it and display it in its terminal. Likewise, the server can send data to the client.
Thus, you can test and debug a TCP connection by sending data and observing its transmission and processing on both sides.
## Testing UDP connections
UDP (User Datagram Protocol) is a protocol that provides data transfer without first creating a channel between network nodes. Use the following steps to test UDP connections:
**1.**Start Netcat in server mode, listening on a specific port for UDP data:
```
nc -ul port
```
Screenshot №3. Start nc to work in UDP mode
This command starts Netcat in server mode to listen for UDP data on the specified port.
**2.**Start Netcat as a client sending UDP data to the server:
```
nc -u host port
```
Screenshot №4. Connect to nc running as udp
This command starts Netcat in client mode and sends UDP data to the specified host and port.
Once the connection is established, you can check the transmitted data and its integrity. As with TCP, data can be sent both from the client to the server and vice versa.
Testing UDP connections allows you to test the reliability, throughput, and operation of the UDP protocol.
## Checking if a port is available
Netcat can also be used to check if a port is available on a remote host. To do this, use the command:
```
nc -zv host port
```
Screenshot №5. Checking SSH port to opened on server
This command allows you to check the availability of the specified port on the specified host. If the connection is established successfully, the port will be considered open. Otherwise, if the connection cannot be established, the port will be considered closed.
## File transfer for network testing
Netcat can also be used to transfer files over TCP or UDP connections in order to test network stability and throughput.
To start the server in the mode of receiving a file from the client to the server via a TCP connection, use the following command:
```
nc -l port > filename
```
Screenshot №6. Start nc as file receiver
This command starts Netcat in server mode, which accepts data and redirects it to the specified file.
Then, on the client side, you can send the file like this:
```
nc host port < filename
```
Screenshot №7. Sending file to server by client
In this case, Netcat will be used to transfer the data from the file to the client machine over the specified TCP connection.
## Advanced options
Netcat offers a range of advanced options for customizing and controlling your network connections. For instance, the -s flag lets you specify the source IP address, while the -p flag allows you to define a specific source port for outgoing connections. These and other options make Netcat a powerful utility for precise connection testing.
With its flexibility and ease of use, Netcat is an essential tool for developers, system administrators, and network engineers. Whether you’re debugging TCP/UDP protocols, performing port scans, or simulating network services, mastering Netcat will enhance your troubleshooting skills and deepen your understanding of network communication.
## FAQ: Frequently Asked Questions About Using Netcat (nc)
- **What is Netcat used for?**
Netcat is primarily used for testing and debugging TCP and UDP network connections. It can also be used for port scanning, file transfers, and simulating client-server communication.
- **Is Netcat available by default on Linux systems?**
No, Netcat is not always pre-installed. You can install it using your package manager, for example:sudo apt update
```bash
sudo apt install netcat
```
- **What’s the difference between TCP and UDP testing in Netcat?**
TCP testing involves reliable, connection-oriented communication, while UDP testing is connectionless and faster but does not guarantee delivery. Netcat supports both modes using different flags: nc -l port for TCP and nc -ul port for UDP.
- **Can Netcat be used to check if a port is open?**
Yes. Use the following command to check port availability:
```
nc -zv host port
```
If the port is open, the connection will be successful; otherwise, it will fail.
- **How do I transfer files using Netcat?**
You can transfer files over TCP using a combination of nc and shell redirection. Start the receiver on the server side:
```
nc -l port > filename
```
And send the file from the client side:
```
nc host port < filename
```
- **Is Netcat secure to use over the internet?**
No. Netcat does not encrypt data by default, so it is recommended for use in trusted or internal networks. For secure communications, consider tools like SSH or encrypted tunnels.
https://serverspace.us/support/help/how-to-mount-lvm-disk-on-the-debian.mdLearn how to mount LVM disks on Debian using the command line. Scan physical volumes, activate volume groups, mount logical volumes, and configure fstab.
## Why Use LVM on Debian?
**LVM (Logical Volume Manager)** is designed for flexible storage management and is widely used in Linux environments where disk space must be allocated efficiently. It is especially useful on Debian servers that handle multiple workloads, dynamic storage requirements, or shared disk resources. Unlike traditional partitioning, LVM allows administrators to extend, shrink, or migrate storage volumes without downtime, making it ideal for scalable and high-availability systems.
Additionally, LVM enables easy disk migration, including adding/removing drives and switching between mirrored or striped RAID configurations. Consequently, its use is advantageous in situations where data storage demand may fluctuate over time or when the need for redundant backup solutions arises (e.g. for disaster recovery purposes). In that instruction we will consider how to mount existing disk to system!
In this guide, we will walk through the process of mounting an existing LVM disk on Debian using standard Linux command-line tools.
## Mounting a disk
First of all, we need to connect physically or virtual disk to our system and check them by the command below:
```
lsblk
```
Screenshot №1 — Check disk
Now we can see printed map info about our disks system with various details, initially we have only **vda** physical and connect **vdb **virtual. But what type of disk you choose doesn’t matter. Take a look at the last column with name **MOUNTPOINTS **that literally mean mount on the filesystem. If your disk doesn’t display like this or in the filed type you see value **none**, then install needed utility for our manipulation:
```bash
apt install lvm2
```
Screenshot №2 — Installation
Alright! Not every time system search lvm disk automatically, for manual process we will use command:
```
vgscan
```
Additionally, after utility installation we can see disk space through the command with more detailed info about created volume:
```
lvs
```
Screenshot №3 — Scan
Go ahead, commonly lvm disk activate automatically, but if in your case that doesn’t work properly try to use command:
```
vgchange -ay /dev/vgb
```
And also for logical volume we need to type command:
```
lvchange -ay /dev/vgb/target_disk
```
Screenshot №4 — Activation
**
```
mkfs /dev/vgb/targert_disk
```
Screenshot №5 — Make filesystem
In the result we can see summary printed info. For temporary connect we can use command mount**, for automatic load we will see below. At the first create or use currently existed folder in my case that **/mnt/tmp**:
```
mkdir /mnt/tmp
```
And then mount disk:
```
mount /dev/vgb/targert_disk /mnt/tmp
```
For check result of our manipulations type:
```
lsblk
```
Screenshot №6 — Mount
Last column indicate our point connection of disk /mnt/tmp! But what if we need to mount automatically disk with startup system? For that in the Debian we can use **fstab**. That file literally mount all disks contain in them, we just add specified row and system will work. But we need to know some details of disk:
```
blkid /dev/vgb/targert_disk
```
They will print UUID of the needed device and filesystem type, we will use them next.
```
echo 'UUID=34e1e481-6c35-472b-a8f2-97bc4f3190a2 /mnt/tmp ext2 defaults 0 0' >> /etc/fstab
```
For make sure that all work properly print last row in the file:
```
tail -n 1
```
Screenshot №7 — Fstab
Change UUID, folder where you want mount disk, filesystem and leave without changes defaults with 0 0. Command above allow to add entering values in the file.
For update map disk without restarting we will use:
```
mount -a
```
Make sure that we do everything right:
```
lsblk
```
Screenshot №8 — Mount-point
Also take look at the last column!
## Conclusion
Mounting LVM disks on Debian involves several key steps, including scanning physical volumes, activating volume groups, mounting logical volumes, and configuring /etc/fstab for persistent mounts. This approach simplifies Linux storage management, improves disk utilization, and ensures reliable operation across reboots. Understanding LVM mounting is essential for administrators working with scalable and dynamic Debian-based systems.
https://serverspace.us/support/help/how-to-work-with-gpg-keyring.mdLearn how to securely manage your GPG keyring on Linux and Windows. This step-by-step guide covers generating, importing, exporting, and deleting GPG keys to protect your files and communications.
Cryptographic means of information protection are the basis of the information system protection system. They realise secure data transmission via VPN, reliable storage of data in encrypted form on computing devices, secure transmission of letters with encryption. And also allow you to put a digital signature, which will confirm the integrity and authenticity of transmitted data.
One such solution is GPG or GNU Privacy Guard, which is an open implementation of a cryptosystem. A set of modules that allow to perform cryptographic transformations: encryption, signature, storage of public and private keys. It is the last two modules are an integral part of any tool. In GPG it is called a key ring!
## What is a GPG key ring?
GPG key ring or literally keyring, is a set of public and private keys, information about which is stored in files. For more convenient and secure interaction, public and secret keys are separated into two different storage locations, a base with public keys and a folder with private keys:
- pubring.kbx
- private-keys-v1.d
Given the specifics of how public keys are used, they constantly need to be accessed, so they are not stored in encrypted form, unlike secret keys. However, the ability to spoof a public key provides a new attack vector and sensitive data can be sent to the attacker.
Private keys require strong security measures, so each key is stored separately and encrypted with a password set by the user. Security is based on a complex password, encrypted key and the same access delimitation.
To view the list of public and private key mappings, use the command for secret and public keys:
```
gpg -K && gpg -k
```
Screenshot №1 — List of keys
On the image you can see that the information about mappings was obtained from pubring.kbx, because it stores public keys and information related to them, which allows you to determine the ownership of the key. Including secret keys, their hash values and UIDs of users who own them.
## How do I import a GPG keyring?
To do this, you can use the command:
```
gpg –import
```
But it is necessary to download the key itself beforehand, and a new difficulty arises in this. How to do it safely? After all, by spoofing the connection to the Mitm server with an attack, the intruder will send the malware and a different key, under the guise of a genuine one. There are two distribution methods for this:
- Web of Trust;
- a third party or a certification centre.
In these types of transfer there are trusted and untrusted objects, in the Web of Trust method we trust the official site of the company or its intermediaries. Let’s consider the secure key import on the example of MySql database. To do this, let’s go to the company’s site and make sure that the https protocol used and the certificate belongs to the organisation:
Screenshot №2 — Certificate
Great, Oracle owns MySQL, so if we trust the certificate authority where the verification was performed, we can continue. Let’s go to the tab that offers several ways to use the public key. There are usually three options:
Copy from the site, in order to eliminate additional transmission over an untrusted communication channel and to avoid new attack vectors with file spoofing on the host. The MySQL website provides an example:
Screenshot №3 — Public key
Usually, one unique key is formed and all necessary files and packages are signed with it. In this case, let’s copy the key and go to our device where we need to add it. For more clear demonstration all steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md).
Screenshot №4 — Server list
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways. And let’s move to the terminal with our OS!
Let’s create a file called key.gpg, it’s up to you to choose how to name the file, but the format should be .gpg. This is what is used when importing:
```
nano key.pgp
```
Screenshot №5 — Make record of public key
A text editor will open, paste the public key and import with the command:
```
gpg –import
```
De-arming as the process of converting from source format to target format:
```
gpg –dearmor -o /usr/share/key.gpg && gpg –import\
/usr/share/key.gpg
```
After which the key import will take place:
Screenshot №6 — Import key
After that, we can use it!
## How do I remove GPG keyring?
In order to remove a key from a keychain you need to specify the owner or the key ID in the command:
```
gpg –delete-secrete-key
```
.
And for public keys:
```
gpg –delete-key
```
All key information can be viewed with the command in the instructions above!
## How do I export my GPG keyring?
To export keys we need two commands, for public keys:
```
gpg -a –export > pub_key.asc
```
The -a option allows you to arm the key in ASCII and transmit it in mail, messenger or post it on your website.
```
gpg -a –export-secret-keys > secret_key.asc
```
Note that in most cases the secret key will almost always remain on the machine, except when you need to delegate your signature or decryption of cipher messages to a trusted object.
## Conclusion
GPG keyring management is a fundamental aspect of securing your digital communications and data. By understanding how public and private keys are stored, imported, exported, and deleted, you can maintain strong cryptographic protections across your Linux and Windows systems. Proper handling of keys ensures data integrity, authenticity, and confidentiality, while protecting against potential attacks like spoofing or unauthorized access. Following best practices in keyring management empowers users and organizations to safeguard sensitive information effectively.
## FAQ
- **Q: What is a GPG keyring?**
A: A GPG keyring is a collection of public and private keys stored in separate files—pubring.kbx for public keys and private-keys-v1.d for private keys—that are used for encryption and digital signatures.
- **Q: How do I safely import a GPG key?**
A: Download the key from a trusted source using secure protocols like HTTPS or via a trusted certification authority, then import it using gpg –import .
- **Q: How do I remove a key from my GPG keyring?**
A: Use gpg –delete-secret-key to remove private keys and gpg –delete-key to remove public keys.
- **Q: How can I export my public and private GPG keys?**
A: Export public keys with gpg -a –export > pub_key.asc and private keys with gpg -a –export-secret-keys > secret_key.asc. The -a flag exports keys in ASCII format for easy sharing.
- **Q: Why are public and private keys stored separately?**
A: Public keys are stored unencrypted and frequently accessed, while private keys are encrypted and require strong protection since they allow signing and decryption.
- **Q: What does “de-armoring” a key mean?**
A: De-armoring converts a key from ASCII-armored format (like .asc or .pgp) to a binary format usable by GPG, often done with gpg –dearmor.
https://serverspace.us/support/help/service-or-systemctl-which-one-to-use.mdLearn the differences between service and systemctl in Linux, how they work, and which one to use for managing system services effectively.
Previously, **service **command was traditionally used for managing system services. For instance, to restart the Apache web server, you could run:
```bash
service apache restart
```
However, with the introduction of **systemd**, which has become the standard in many modern Linux distributions, it is now recommended to use **systemctl** for managing services.
## What Is the Difference Between service and systemctl?
Both commands are used to manage system services, but in modern systems, **service** is essentially a wrapper for **systemctl**.
The **service** command was widely used in systems running **SysVinit** and **Upstart**, such as older versions of Debian, CentOS 6, and Ubuntu 14.04. It directly interacted with scripts in **/etc/init.d/**.
On the other hand, **systemctl** works with **systemd**, a modern system and service manager that provides more flexible control over processes and their dependencies.
## Proof That service Calls systemctl
If you run the following command:
```
strace -f service nginx restart 2>&1 | grep execve
```
You will see output like this:
```
execve("/usr/bin/systemctl", ["systemctl", "restart", "nginx.service"])
```
This confirms that **service** actually calls **systemctl** to execute operations.
You can also inspect the contents of the **service** command with:
```
cat /usr/sbin/service
```
In most modern Linux distributions, it is simply a **bash script** that internally calls the relevant **systemctl** commands.
## How to Properly Manage Services?
According to modern best practices, it is recommended to use **systemctl** since it interacts directly with **systemd** and offers more capabilities.
However, the **service** command is still available, and in most cases, the final result will be the same.
### Alternative Methods for Managing Services
Depending on the initialization system, different commands can be used:
```
/etc/init.d/nginx restart # For SysVinit
rc-service nginx restart # For OpenRC
sv restart nginx # For runit
s6-rc -d change nginx # For s6
supervisorctl restart nginx # For Supervisor
```
## How to Check Which Initialization System Is Used?
To determine which initialization system your system uses, run:
```
ps -p 1 -o comm=
```
This will display the name of the process running with **PID 1**, helping to identify whether the system is using **systemd**, **SysVinit**, or another service manager.
## Conclusion
If your system uses **systemd**, it is best to use **systemctl**, as it provides more powerful functionality and is the native tool. However, the **service** command remains a convenient alternative, especially on systems where systemd is not available.
## FAQ
**Can I still use the service command instead of systemctl?**
Yes, in many modern Linux distributions, the service command is available as a wrapper around systemctl. However, it is recommended to use systemctl directly for better compatibility with **systemd**
**How can I check which init system my Linux system is using?**
You can run the following command to determine the init system:
```
ps -p 1 -o comm=
```
If the output is **systemd**, your system is using **systemd**. Otherwise, it may be running an older init system like SysVinit or Upstart.
**What happens if I use service on a system with systemd?**
On systemd-based systems, service typically acts as a compatibility layer and translates commands into systemctl calls, ensuring that services are managed correctly.
**Are there alternatives to systemctl for managing services?**
Yes, depending on the init system in use, you may encounter alternatives such as
https://serverspace.us/support/help/managing-temporary-file-storage-in-linux.mdLearn how to efficiently manage temporary file storage in Linux by relocating the /tmp directory to a dedicated disk or partition. This guide covers best practices, systemd configuration, and essential security measures to improve stability and performance.
In Linux systems, the default directory for temporary files is located at** /tmp**. This directory serves as a storage location for short-lived data generated by applications and the operating system. However, in certain distributions, **/tmp** is mounted in memory (**tmpfs**), which can create issues if available RAM is insufficient, particularly when applications aggressively write temporary data. Additionally, if **/tmp** is located on the root partition and runs out of space, it can lead to system instability.
To mitigate these issues, it is advisable to relocate the **/tmp **directory to a dedicated disk or partition. This article explores an efficient approach to achieving this while maintaining system compatibility and application functionality.
## Common and Efficient Approach
The most straightforward and widely used method involves the following steps:
- **Mount a new disk to a temporary directory**
- **Create a symbolic link from /tmp** to the new location
However, some applications may not function correctly with symbolic links and require a direct path to **/tmp**. This can be particularly problematic in scenarios involving multi-threaded applications that generate extensive temporary files and fail to clean up after execution. Instead of modifying the application (which is often impractical in enterprise environments), engineers typically implement workarounds to accommodate these constraints.
## Alternative Solution: Mounting a Dedicated Temporary Directory
To provide a more robust solution, we can mount a dedicated disk or partition for temporary storage at **/mnt/tmp** and configure the system to use it as the new **/tmp** location.
### Step 1: Prepare the Directory
```bash
sudo mkdir -p /mnt/tmp
sudo chmod 1777 /mnt/tmp
```
The **1777 **permission setting ensures that all users can create files in /mnt/tmp, but only the file owners can delete their respective files. The leading 1 represents the **sticky bit**, which enforces this restriction.
### Step 2: Configure Systemd Mount Unit
Create a systemd mount unit file at **/etc/systemd/system/mnt-tmp.mount** with the following content:
```xml
Description=Dedicated Temporary Storage Mount
What=tmpfs
Where=/mnt/tmp
Type=tmpfs
Options=mode=1777,size=10G
WantedBy=multi-user.target
```
- The filename **must** match the mount point path. For instance, if mounting **/mnt/tmp**, the file should be named **mnt-tmp.mount**. If mounting **/mnt/tmp/app_data**, the file should be mnt-tmp-app_data.mount.
- The size=10G parameter sets a limit of 10GB for this temporary storage.
Step 3: Apply the Changes
Execute the following commands to activate the mount:
```bash
sudo systemctl daemon-reload
sudo systemctl enable mnt-tmp.mount
sudo systemctl start mnt-tmp.mount
```
Step 4: Update System Environment Variables
To ensure processes use the new temporary directory, update the global environment configuration:
```
echo "TMPDIR=/mnt/tmp" | sudo tee -a /etc/environment
```
Apply the changes:
```
source /etc/environment
```
Step 5: Verify and Clean Up
Check if the new configuration is active:
```
echo $TMPDIR
df -h /mnt/tmp
```
Optionally, clean up the old **/tmp** directory:
```
sudo rm -rf /tmp/*
```
## FAQ
**Q: Why is the sticky bit (1777) important for temporary directories?** A: The sticky bit prevents users from deleting files owned by others in shared directories like **/tmp**, ensuring data isolation and security.
**Q: What happens if /tmp runs out of space?** A: If /tmp is full, applications relying on temporary storage may fail, potentially causing system-wide issues. Moving **/tmp **to a dedicated disk or partition prevents this scenario.
**Q: Can I specify a different storage size for the mounted temporary directory?** A: Yes, the size= option in the Options= field of the systemd mount unit determines the storage limit. Adjust it according to system requirements.
**Q: Does this approach work for log directories as well?** A: Yes, but log directories may require additional considerations such as log rotation and permission settings.
## Conclusion
Relocating **/tmp** to a dedicated disk or partition improves system stability and prevents storage-related failures. By leveraging systemd for automated mounting, this approach ensures a seamless and scalable solution for handling temporary data in Linux environments.
https://serverspace.us/support/help/how-to-configure-docker-network.mdLearn how to configure Docker networks for efficient container communication. Explore bridge, host, overlay, and macvlan networks.
One of the most revolutionary technologies has been virtualisation/containerisation, literally, decoupling the concept of one machine – one service.Whereas before companies rented a whole server to solve their tasks, now it is an open service for managing virtual spaces, where everyone has a separate file, process and network environment.
Many projects are already built on such a concept, where information systems can spin up on a single server.But in such cases it is necessary to clearly understand how networking works in virtualisation platforms.In this material we will consider the practical implementation of building a network infrastructure for containers.
## Algorithm of networking in the OS
To understand the principle of container communication, it is necessary to consider the network subsystem in the OS.It is a set of interfaces, configs, netfilter mechanism, and routing tables.
Screenshot № 1 — Network Stack
- The network packet arrives at the interface after processing by the driver, from this point the OS starts working with it;
- After that it gets to the routing mechanism, which is represented by a scheme with two possible branching options: to redirection and to the network stack to the application for processing;
- At the traffic routing points there is packet filtering, which allows the packets to change their content and filter as they pass through the main chain;
- Afterwards, traffic exits the network from the machine interface
The presented set of objects has almost everything to run a virtual infrastructure, interfaces, a router in the form of a table of routes, only missing is a switch to organise the channel environment.Therefore, in order for networks to work correctly there are virtual network devices.
Now the scheme of the network stack with container networks looks like this:
Screenshot № 2 — Network stack with containers
Each container has its own namespace with interfaces, its own netfilter and routing table, but we are only interested in their interfaces here. In fact, without additional virtual solutions, the two spaces cannot communicate.
It is necessary to bring them into one host namespace, for traffic copying we will use a pair of virtual interfaces veth. They will allow us to transfer traffic copies from one to the other interface in different environments. Thus we will get the traffic of our isolated spaces, the only thing left is to attach them to the virtual device/stack interface – bridge.
The name may confuse you, but this is a full-fledged L3 switch, since it is an interface and is connected to our tail stack, it can route traffic to the OS. Now knowing how a classic virtual infrastructure works, you can look at the proposed networking options in Docker Network and implement your own from them!
## Types of container connections
Classically, there are several drivers for forming a network in the OS stack:
- bridge – network with a switch, allows you to create hidden networks inside the OS with its own switching and routing;
- host – host namespace is set for processes, without creating additional network environments;
- none – no network stack for the container, and therefore no connection to any networks;
- overlay – using several dockerd to form a single network;
- macvlan – represents a classic bridge, where sub-interfaces are set for the host interface, which are already used for communication with the external network by the containers themselves;
- ipvlan – similar to macvlan, only on the basis of IP-addresses.
In this article we will consider the configuration of the main and priority of the presented methods!
```bash
docker network
```
Screenshot № 3 — Docker info
The help provides basic information about the options for connecting new networks and containers to them.
## Bridging or MacVlan
Let’s consider a purely operational task, where we have a set of containers representing an IS or information system. In such cases try to adhere to the concept of easy management of nodes, as well as high network performance.
Screenshot № 4 — Setup MacVlan network
So we configure MacVlan or bridge, which will allow through the host communication channel to address from the sub-interface associated with the host, but already with its own configuration parameters. Thus the device will be considered as a separate device in the network! Note that veth is used to redirect traffic, which is not a classic interface.
Screenshot № 5 — Create MacVlan network
```bash
sudo docker network create -d macvlan \
–subnet=192.168.58.0/24 \
–gateway=192.168.58.1
-o parent=eth0 macvlan_network
```
Where the -d parameter defines the driver to be used, –subnet the address of the network where identification will take place, –gateway the gateway of the connection, and parent the parent interface through whose channel the traffic will go. Next, let’s create a container where we specify the basic options:
```bash
sudo docker run –network macvlan_network –ip 192.168.58.200 python /bin/bash -c 'while true; do sleep 1000; done'
```
Where to the container you specified macvlan_network and its IP address manually, but if you don’t specify it, Docker will pick a value on its own, which can cause collisions.
Great! The container in bridge mode has been started, let’s check the availability of the network router and other resources from it:
```bash
sudo docker exec boring_galois /bin/bash ping 192.168.58.1 ping google.com
```
Screenshot № 6 — Test MacVlan network
After testing we can start using the interface and prescribe the network segmentation for the new infrastructure!
## Connecting via NAT/LAN or bridge driver
You can also use alternative ways of connection, where the network segmentation is more rigid or if you have not yet allocated addresses for the future IS. The bridge driver allows you to use an internal switch and routing table to create a hidden network inside the host and use its connection to external segments.
For this purpose we will also create a mesh beforehand, where we will specify its basic parameters:
```bash
sudo docker network create -d bridge –subnet=192.168.2.0.0/24 –gateway=192.168.2.1
```
Screenshot № 7 — Create bridge network
And after that let’s connect the container to it with the command:
```bash
sudo docker run -d –network gg debian bash -c 'while true; do sleep 1000; done'
```
After that, let’s check the availability of our new node via the command:
```
ping 192.168.2.2.2
```
Screenshot № 8 — Test bridge network
Great, everything is functioning correctly, while in the previous case study you can occupy sockets without port forwarding, in this case you need to route traffic for the application to a hidden network:
```bash
sudo docker run -d -p 80:80 –network gg debian bash -c 'while true; do sleep 1000; done'
```
After that, when our device is accessed on port 80, the Docker service will proxy the connection to the right container. To view the configuration of the current bridge, you can use the command:
```bash
sudo docker network inspect
```
There you can also find the IP address of the host address on that network, usually labelled as gateway.
## Connection types with none and host drivers
The other connection types are variants of the network and host stack. In the first case, the container has its own created network stack, but it is not connected to any tail interfaces, so communication is not possible. It is specified in the same way as the other solutions:
```bash
sudo docker network create -d none
```
Screenshot № 9 — Isolated network
Note that there can only be one such 'network', because all containers connected to it will be a priori vethless and therefore isolated. Such solutions can be useful when you need a network stack on the OS, but no network connections in the infrastructure.
The host driver replaces the creation of a new network namespace with the use of the host one, this stack is attached to the process like all standard ones and allows to work directly with interfaces and sockets of the network stack. It is set with the command:
```bash
sudo docker run -it –network host alpine sh
```
Screenshot № 10 — Host network
After that we have all the classic interfaces of our host available through which we can start communicating. Any of the above types of network connectivity in Docker allows us to solve specific problems, for macvlan direct connection to the network, for bridge the use of hidden networks using NAT technology, and host and none – the use of host stack and container isolation, respectively.
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №11 — Create Server
It will take some time to deploy the server capacity. After that you can connect in any of the convenient ways. This infrastructure service is an integral part of the corporate network and security subsystem, allowing to implement authorisation, content filtering, as well as being a gateway for users to control visited resources.
https://serverspace.us/support/help/basic-authentification-with-http-password.mdLearn how to implement basic authentication with HTTP passwords to secure your web applications. Step-by-step guide for setting up!
One of the frontiers of information protection is considered to be the identification and authentication subsystem, which provides secure access to resources. Since the Internet segment is constantly scanned by bots looking for vulnerable services, public solutions are under constant Brute-Force attacks.
Screenshot № 1 — Attacks to server
Where weak mechanisms, and somewhere their absence at all lead to critical consequences and damage! In this article we will consider one of the basic authentication methods HTTP Basic Auth, its implementation and user configuration.
## What is HTTP Basic Auth?
Authentication can be quite different in terms of types of authentication, when using: logins/passwords, signed tokens, certificates, TOTP codes, encryption keys, etc. And also by the way of architectural implementation: modules, services, external services.
In our case HTTP Basic Auth provides basic verification by login and password, being implemented as a module on web/proxy solutions. Where authentication credentials are passed in the header and encoded in Base64.
```
Authorisation: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
```
Screenshot № 2 — Schema
Please note that the transmission of this kind of sensitive data must take place via secure protocols! In this case, classically SSL will authenticate the server and form an encrypted connection. One of the disadvantages of this kind of authentication is weak passwords, which can be brute-forced by utilities like Medusa.
## How to configure authentication?
Let’s consider a practical example of how to configure such authentication on nginx. First of all, let’s go to the terminal and install all the necessary dependencies:
```bash
sudo apt update
sudo apt install nginx
```
Screenshot № 3 — Installation
Next we need to create a database with users where passwords will be stored in hash value format, for this we will install the utility and execute the commands:
```bash
sudo apt install apache2-utils
```
Where each of the elements has a different value: the path to the future user database /etc/nginx/.htpasswd and the name of the user to be created – mike.
```
sudo htpasswd -c /etc/nginx/.htpasswd mike
```
Screenshot № 4 — Create User
To create the second and subsequent users you need to remove the -c option that created a new file. After the user is in the database we need to go to the configuration changes. Let’s find our virtual host:
```
nano /etc/nginx/sites-available/default
```
By default, the file is called default, but in your case it may be different! Let’s add a directive that will allow authentication before connecting:
```css
server {
listen 80;
server_name example.com;
location / {
auth_basic 'Restricted Access';
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://localhost:8080;
}
}
```
Screenshot № 5 — Configuration
Authentication can be specified either on a specific web path or on the entire virtual host. To do this, place the auth_basic_user_file, auth_basic directives in the server or location blocks. Check the config before running, if it is correct, the service will restart:
```
sudo nginx -t && sudo systemctl reload nginx
```
Screenshot № 6 — Test
After that you can go to the example.com address and check the operability of the raised service:
Screenshot № 7 — Check result
Great, when accessing the path / a directive is triggered, which allows us to check the file with users and process further packets when connecting. It is recommended to install fail2ban, which can limit the number of failed requests and prevent intrusion. In our knowledge base you can find configuration of other authentication methods Digest, NTLM, Kerberos and others!
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №8 — Create Server
It will take some time to deploy the server capacity. After that you can connect in any of the convenient ways. This infrastructure service is an integral part of the corporate network and security subsystem, allowing to implement authorisation, content filtering, as well as being a gateway for users to control visited resources.
https://serverspace.us/support/help/what-is-eventlog-and-how-does-it-work.mdLearn what Eventlog is, how it works in Windows, what events it captures, and how to use it to monitor and diagnose your system.
The size of company infrastructures grows hyperbolically with the increase in projects, services and services provided, which means that the issue of monitoring their performance/security is becoming more and more acute. After all, it is necessary to collect the required telemetry in time to respond to incidents among multiple nodes.
Windows has its own logging subsystem, which provides normalised events about what happened, understanding of its work, allows you to automate the collection process, expand/narrow the pool of collected events. In this article we will consider the basic concepts of the subsystem’s operation and its settings!
## What is Eventlog?
Eventlog is an operating system event logging subsystem that allows for trabshooting, incident investigation, activity monitoring, and more. By default, the device has a certain list of collected events, which can be viewed through Event Viewer – a snap-in for working with logs.
```
Win + R → eventvwr
```
Screenshot № 1 — Menu
All logs are divided into two global groups Windows Logs and App/Services Logs, where the former are generated by the OS kernel and its modules and then normalised into events with numbers. And the latter are generated by applications and have their own IDs, but add context to the machine’s operation. Internally, they are also broken down by functions that log their subsystems!
You can find them in log format under the path **C:\Windows\System32\winevt\Logs.**
## How to configure event collection?
To increase or reduce the set of collected events from the device, you need to go to the policies, for a local PC – these are local policies, for a domain PC, respectively, policies on the domain controller. In fact, the key difference is only in the scope of audit and destination policies, some will be suitable for an APM, some only for a domain controller, etc.
Let’s move on to local policies, here the audit settings are divided into regular and advanced:
```
secpol.msc
```
Screenshot № 2 — Local Policies
Among all those listed, we can highlight the top events that are important to log for security subsystems at the moment:
- 4663(S): An attempt was made to access an object;
- 4656(S, F): A handle to an object was requested;
- 4720(S): A user account was created;
- 4731(S): A security-enabled local group was created.
- 4732(S): A member was added to a security-enabled local group.
- 4733(S): A member was removed from a security-enabled local group.
When configuring the event policy, you can set key metrics that you want to track:
Screenshot № 3 — Settings
For example, only failed promotion attempts that are more likely to have a lower false positive rate. Once the policies are scheduled it is necessary to apply them:
```
gpupdate /force
```
Screenshot № 4 — Update
After that, new events will be logged already in the log, after the settings are enforced! For domains, you need to specify the scope or area that you want the group policy to be applied.
## Audit data enrichment
You may notice that not all data collected from applications, kernels in Event Log format is complete. This is because the kernel performs many other tasks and full logging would lead to system degradation and performance degradation. Therefore, the ETW or Event Tracing for Windows mechanism is implemented, which uses ring buffers to store data and logs many times more information.
Usually, its logs are stored in the path: C:Windows\System32\WDI. To view them you need to convert the .etl format to .xml.
```
tracerpt -lr 'C:\Windows\System32\WDI\LogFiles\NAME.etl'
```
Screenshot № 5 — Convert data
After that the search and work can be done through a text editor or you can load the original format into Event Viewer.
These OS protection mechanisms allow you to expand the ability to monitor, respond to events and incidents occurring in information systems. If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №6 — Create Server
It will take some time to deploy the server capacity. After that you can connect in any of the convenient ways. This infrastructure service is an integral part of the corporate network and security subsystem, allowing to implement authorisation, content filtering, as well as being a gateway for users to control visited resources.
https://serverspace.us/support/help/linux-quick-cheat-sheet-system-information.mdLearn how to optimize your system data with simple commands and easy-to-use aliases. A quick cheat sheet on Linux commands for system information.
Linux offers a wide range of commands to access system details. This cheat sheet helps you quickly check key parameters such as CPU load, available memory, disk status, and other useful details.
## Process Monitoring
- **top** – displays active processes, CPU load, memory usage, and other parameters in real time.
****
- **htop** – a more user-friendly version of top with a graphical interface (install separately: **sudo apt install htop** for Debian/Ubuntu or **sudo yum install htop** for CentOS/RHEL).
## Memory Usage
- **free -m** – shows available, used, and free RAM in megabytes.
****
- **vmstat 1** – updates CPU, memory, and I/O usage statistics every second.
## Disk Information
- **df -h** – presents disk space utilization for all file systems in an easy-to-read format (including size units like KB, MB, GB).
****
- **du -sh *** – provides the total size of each file and directory in the current location (**-s** restricts output to summary values, **-h** ensures readability).
****
- **lsblk** – displays all connected storage devices along with their partitions.
## System Information
- **uname -a** – outputs comprehensive details about the system and kernel.
****
- **cat /etc/os-release** – reveals the installed operating system’s version and related details.
****
- **hostnamectl** – delivers in-depth system insights, including the hostname and OS distribution version.
## System Uptime
- **uptime** – shows how long the system has been running, the number of users, and average CPU load.
****
- **who -b** – displays the date and time of the last system reboot.
## User Information
- **whoami** – prints the username of the currently logged-in user.
****
- **id** – provides the current user’s UID (User ID) and GID (Group ID).
****
- **w** – displays a list of active users along with their session details.
## Network Information
- **ip a** – lists network interfaces and their IP addresses.
****
- **netstat -tulnp** – shows listening ports and active connections (if netstat is missing, install **net-tools**).
****
- **ss -tulnp** – a modern alternative to netstat for viewing network connections.
## Conclusion
These commands help you quickly retrieve system information in Linux. For convenience, you can create aliases in the **.bashrc** file, such as:
- **alias meminfo=’free -m’**
****
- **alias diskinfo=’df -h’**
****
- **alias sysinfo=’uname -a’**
Now, simply type **meminfo**, **diskinfo**, or **sysinfo** to get the necessary data faster!
https://serverspace.us/support/help/resource-transition-resource-management-in-modern-graphics-apis.mdWe explain why we need transitions between resource states, how they work, and what errors can occur. Optimization and code examples for efficient management of graphical resources
Modern graphics APIs such as DirectX 12 and Vulkan provide developers with low-level control over graphical resources, enabling the most efficient use of video memory and GPU computing power. One of the key resource management mechanisms is **Resource Transition**—the process of changing a resource's state to ensure correct usage at different stages of rendering.
## What Does Resource Transition Mean?
Resource Transition refers to changing the state of a graphical resource (such as a texture or buffer) before using it in a different context. Since GPUs perform multiple operations in parallel, it is crucial to explicitly specify when and how a resource can change its state to avoid errors and undefined behavior.
## Why Are Resource Transitions Necessary?
Graphical resources can serve different roles:
- **As a data source** (Shader Resource)
- **As a rendering target** (Render Target)
- **As a depth texture** (Depth Stencil)
- **For data copying** (Copy Source/Destination)
Switching between these states requires explicit instructions from the developer. For instance, you cannot directly use a texture that was previously filled as a Render Target as a Shader Resource without changing its state first.
## How Do Resource Transitions Work?
In contemporary APIs, developers take direct control over resource states through **Resource Barriers**, signaling when a resource needs to shift from one state to another. For instance:
- **In DirectX 12**, the **D3D12_RESOURCE_BARRIER **is used.
- **In Vulkan**, **VkImageMemoryBarrier** and **VkBufferMemoryBarrier **are applied.
### DirectX 12 Example:
```
D3D12_RESOURCE_BARRIER barrier = {};
barrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
barrier.Transition.pResource = myTexture;
barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET;
barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE;
barrier.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES;
commandList->ResourceBarrier(1, &barrier);
```
This code instructs the GPU to transition **myTexture **from a render target state to a shader-readable resource, ensuring proper usage in subsequent rendering stages.
### Vulkan Example:
```
VkImageMemoryBarrier imageBarrier = {};
imageBarrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
imageBarrier.oldLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
imageBarrier.newLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
imageBarrier.image = textureHandle;
imageBarrier.srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
imageBarrier.dstAccessMask = VK_ACCESS_SHADER_READ_BIT;
imageBarrier.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
imageBarrier.subresourceRange.baseMipLevel = 0;
imageBarrier.subresourceRange.levelCount = 1;
imageBarrier.subresourceRange.baseArrayLayer = 0;
imageBarrier.subresourceRange.layerCount = 1;
vkCmdPipelineBarrier(
cmdBuffer,
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
0, 0, nullptr, 0, nullptr,
1, &imageBarrier
);
```
This snippet ensures that the **textureHandle** transitions from a color attachment layout to a shader-readable format, making it accessible for fragment shader operations.
## Errors Due to Improper Resource Transitions
Incorrect state management can lead to:
- **Rendering artifacts** if the GPU reads data that hasn't been properly written.
- **Performance drops** if transitions are performed too frequently or inefficiently designed.
- **Graphics crashes or glitches** if a resource is used simultaneously in multiple stages without proper synchronization.
## Optimizing Resource Transitions
To minimize the overhead of state changes, developers should:
- **Batch transitions**—use **ResourceBarrier **in groups to allow the GPU to process multiple transitions in a single call.
- **Reduce unnecessary transitions**—structure rendering efficiently to avoid excessive state switches.
- **Use Aliasing Resources**—in some cases, the same memory region can be used for different resources, reducing the need for transitions.
## **FAQ: Resource Transitions in Modern Graphics APIs**
**Q: What is a Resource Transition?**
A Resource Transition is the process of changing the state of a GPU resource (such as a texture or buffer) to ensure it is used correctly in different rendering stages. Since GPUs perform multiple operations in parallel, explicitly managing resource states helps avoid rendering errors and undefined behavior.
**Q: Why do Resource Transitions matter?**
Without proper state transitions, a resource might be accessed in an incompatible way, leading to graphical artifacts, performance drops, or crashes. For example, using a texture as a render target and then immediately as a shader resource without transitioning can cause visual glitches or undefined results.
**Q: How do modern APIs handle Resource Transitions?**
In low-level APIs like DirectX 12 and Vulkan, developers manually control resource states using **Resource Barriers**. These barriers tell the GPU when a resource should switch from one state to another, ensuring safe and efficient execution of rendering operations.
**Q: Can improper Resource Transitions impact performance?**
Yes, inefficient transitions can cause unnecessary synchronization, leading to performance bottlenecks. Optimizing transitions—such as batching multiple barriers together or minimizing state changes—helps improve rendering speed and overall GPU efficiency.
**Q: Are Resource Transitions the same in DirectX 12 and Vulkan?**
While the core concept is similar, the implementation differs. DirectX 12 uses **D3D12_RESOURCE_BARRIER**, whereas Vulkan provides **VkImageMemoryBarrier **and **VkBufferMemoryBarrier **for managing state changes. Each API has its own approach to handling transitions, but both require explicit developer control.
## **Conclusion**
Resource Transition is a crucial aspect of working with low-level graphics APIs, enabling efficient resource state management and ensuring correct rendering execution. Proper use of transitions helps prevent graphical issues and enhances the performance of games and applications.
## **Serverspace Knowledge Base**
The **Serverspace Knowledge Base** is a comprehensive reference resource containing guides, articles, and documentation on cloud infrastructure, DevOps tools, and 3D graphics technologies. In addition to materials on virtual server setup, network management, and data storage, the database includes articles on cloud rendering, remote GPU access, and working with DirectX, Vulkan, and OpenGL. This makes it a valuable resource not only for DevOps specialists but also for game developers, 3D artists, and engineers working with graphics computing in cloud environments.
https://serverspace.us/support/help/saving-the-output-of-the-top-command-to-a-file-in-linux.mdLearn how to save the output of the top command to a file to analyze the system load, as well as automate this process with Cron. The article provides practical examples, tips on filtering data and using grep and awk…
The top command is a powerful tool for monitoring processes in Linux, allowing real-time tracking of CPU load, memory usage, and other system parameters. However, in some cases, it is necessary to save data for further analysis, especially when identifying short-term load spikes or tracking specific process activity.
This article explores various methods for saving the output of **top **to a file, as well as automating the process using Cron.
## **1. One-Time Saving of the top Command Output**
If you need to capture the system’s current state just once, you can use the following command:
/home/user/logs/top_output.txt[/code]
Where:
- **-b** — batch mode, required for redirecting output to a file.
- **-n 1** — runs one update iteration and exits.
- **> /home/user/logs/top_output.txt** — writes the data to the specified file.
## **2. Saving Multiple Iterations of top Output**
To analyze system changes over a period of time, you can run **top **for multiple iterations with a delay interval:
```
top -n 5 -d 4 -b > /home/user/logs/top_output_5_iter.txt
```
Where:
- **-n 5** — runs 5 update iterations.
- **-d 4** — sets a delay of 4 seconds between updates.
## **3. Automating Data Collection with Cron**
If you need to regularly save system load information, using the Cron scheduler is the best option. Below are several automation scenarios.
### **3.1. Saving top Output Every 5 Minutes for an Hour**
For example, to collect process data every 5 minutes for one hour (from 5:00 AM to 6:00 AM), add the following Cron job:
```
0-59/5 5 * * * top -n 10 -d 4 -b > /home/user/logs/top_out-`date +\%Y\%m\%d\%H\%M\%S`.txt
```
This Cron job:
- Runs every 5 minutes from 5:00 AM to 6:00 AM.
- Executes top for 10 iterations with a 4-second delay between updates.
- Creates a separate file with a timestamp for easier data analysis.
### **3.2. Appending top Data to a Single File**
If you need to write data to a single file instead of creating new ones, use **>>** instead of **>** , which appends results to an existing file:
```
0-59/5 9 * * * top -b -n5 -d 5 >> /home/user/logs/aggregated_top_output.txt
```
### **3.3. Saving top Output Every 5 Minutes for 30 Minutes**
To collect information only within a specific time range, e.g., from 1:30 PM to 2:00 PM, use the following Cron job:
```
30-59/5 13 * * * top -n 10 -d 4 -b > /home/user/logs/top_out-`date +\%Y\%m\%d\%H\%M\%S`.txt
```
## **4. Additional Tips**
### **4.1. Filtering top Output**
If you need data for specific processes only, you can use **grep**. For example, to save only information about the **nginx **process:
```
top -b -n 1 | grep nginx > /home/user/logs/nginx_top_output.txt
```
### **4.2. Using awk to Extract Key Data**
If you are only interested in CPU and memory usage, you can filter the output using **awk**:
```
top -b -n 1 | awk '/Cpu/ || /Mem/' > /home/user/logs/cpu_mem_usage.txt
```
## **Conclusion**
Saving the output of the **top **command to a file allows you to analyze system load at different times and identify bottlenecks. Using Cron helps automate the process, while filtering enables you to focus on specific data.
This is an excellent system monitoring approach, especially for troubleshooting short-term load spikes or conducting long-term performance analysis.
By applying these methods, you can easily adapt them to your needs and create an efficient data collection and analysis system.
https://serverspace.us/support/help/what-is-ray-marching-and-how-does-it-work.mdLearn how Ray Marching works, its advantages and disadvantages, and why it is popular in procedural graphics.
Ray Marching is a method for visualizing 3D scenes used in rendering without explicitly representing geometry as polygons. This approach is particularly popular in procedural graphics and shaders, such as those in ShaderToy, where scenes are created using mathematical functions.
## Core Principle
Unlike classical Ray Tracing, which seeks the exact intersection of a ray with geometry, Ray Marching works iteratively. The ray moves through space in small steps until it reaches an object or exceeds the maximum number of iterations.
The process can be described with the following algorithm:
- **Ray Generation**: A ray is created from the viewpoint (camera), with its direction computed based on the pixel coordinates on the screen.
- **Iterative Progression**: The ray moves along its direction with a step size determined by the Signed Distance Function (SDF). This function returns the minimum distance to the nearest surface.
- **Hit Detection**: If the SDF value becomes smaller than a given threshold (e.g., 0.001), the ray is considered to have reached the surface of an object.
- **Iteration Limit**: If the number of steps exceeds a defined limit, the process stops, and the pixel is treated as background.
- **Lighting and Shading**: If the ray reaches a surface, lighting calculations are applied (e.g., normals can be computed through numerical differentiation of the SDF), followed by effects such as shadows and reflections.
## Signed Distance Function (SDF)
The key concept in Ray Marching is the **Signed Distance Function**. It determines the distance from a given point in space to the nearest surface of an object. Examples include:
- **Sphere**:** distance = length(p) – r**
- **Cube**: **distance = max(abs(p.x) – s, abs(p.y) – s, abs(p.z) – s)**
- **Shape Union**: **min(distance1, distance2)**
SDF allows for describing complex objects without explicitly storing their geometry, making this method a powerful tool in procedural graphics.
### Advantages and Disadvantages
**Pros:**
- **Flexibility** – Enables the creation of complex scenes without meshes.
****
- **Compactness** – Scenes are encoded using formulas.
****
- **Realism** – Global illumination, soft shadows, and reflections can be easily integrated.
**Cons:**
- **High Computational Complexity** – Requires many iterations.
- **Artifacts** – Insufficient precision can lead to “holes” or incorrect intersections.
### Conclusion
Ray Marching is a powerful technique used in procedural graphics and the demoscene. While it demands significant computational resources, its flexibility allows for the creation of impressive visual effects and mathematically defined scenes.
This method is especially interesting for rendering researchers and those who want to gain a deeper understanding of modern shader techniques.
https://serverspace.us/support/help/what-is-sphere-tracing-and-how-does-it-work.mdLearn sphere tracing basics and how it works in computer graphics. Explore its role in 3D rendering, ray marching, and visual effects with clear examples
**Sphere Tracing** is a rendering method used for visualizing 3D scenes without explicitly storing geometry as polygons. It is based on Signed Distance Functions (SDF) and is a variant of Ray Marching, but with an optimized stepping approach that allows for more precise and efficient intersection detection with objects.
## Core Principle
Instead of advancing the ray uniformly, as in classical Ray Marching, Sphere Tracing uses distance information to the nearest surface to determine the optimal step size. This significantly reduces the number of iterations and minimizes the likelihood of rendering artifacts.
The algorithm works as follows:
- **Ray Generation**: A ray is cast from the camera, with its direction computed based on pixel coordinates.
- **Tracing Steps**: The ray moves forward, not with fixed steps, but with steps equal to the value of the SDF. This ensures that the ray never overshoots an object.
- **Hit Detection**: If the SDF value becomes smaller than a given threshold (e.g., 0.001), the ray is considered to have reached the surface.
- **Iteration Limit**: If the number of steps exceeds a set limit, the pixel is treated as background.
- **Lighting and Shadows Calculation**: After detecting an intersection, normals, shadows, and other effects are computed.
## Advantages of Sphere Tracing
- **More efficient rendering** – Compared to traditional Ray Marching, it requires fewer iterations since it adapts step sizes based on distance information.
****
- **Guaranteed no surface overshooting** – The ray cannot pass through an object, eliminating rendering errors.
****
- **Good compatibility with procedural graphics** – Enables the visualization of complex shapes without storing polygonal meshes.
## Limitations
- **Not suitable for highly detailed scenes** – In areas where SDF gradients change sharply, accuracy issues may arise.
****
- **Requires predefined SDF descriptions** – Unlike classical Ray Tracing, which can work with any surface, Sphere Tracing relies on predefined Signed Distance Functions.
## Conclusion
Sphere Tracing is a powerful method for rendering SDF-based scenes, significantly improving the efficiency of Ray Marching. It is widely used in procedural graphics, the demoscene, and generative art, providing fast and accurate visualization of complex forms.
https://serverspace.us/about/news/new-os-templates-now-available-for-deployment.mdWe’ve expanded the range of available OS templates for cloud deployment on Serverspace: Rocky Linux, AlmaLinux, Kali Linux and more.
We've expanded the range of available OS templates for cloud deployment on Serverspace! Now you can launch virtual machines and other cloud services on the latest versions of popular distributions.
## Newly Added OS Versions:
- AlmaLinux 9.5
- FreeBSD 14.2
- Kali Linux 2024.4
- Oracle Enterprise Linux (OEL) 9.5
- Rocky Linux 9.5
- Ubuntu 24.04.2
## What's New in These Versions?
AlmaLinux 9.5
The free and stable CentOS fork continues to improve. This version includes:
- Enhanced performance with the Linux 5.14 kernel.
- Updated security packages for better system protection.
- Optimized support for containers and virtualization.
FreeBSD 14.2
A high-reliability, high-performance OS, ideal for servers. This update features:
- Improved support for modern AMD and Intel processors.
- Enhanced ZFS file system performance.
- Updated drivers and network stacks for better cloud integration.
Kali Linux 2024.4
A favorite among cybersecurity professionals, now even better:
- New penetration testing tools added.
- Improved compatibility with virtual environments.
- Support for the latest versions of Metasploit, Nmap, and other key utilities.
OEL 9.5 (Oracle Enterprise Linux)
A corporate-grade distribution with long-term support, perfect for business applications:
- Enhanced Btrfs performance.
- Expanded containerization features (Podman, CRI-O).
- Optimized integration with Oracle Cloud and other cloud platforms.
Rocky Linux 9.5
The continuation of CentOS's legacy with full RHEL compatibility:
- Expanded support for new architectures.
- Improved security and update management.
- Added support for new DevOps and containerization tools.
Ubuntu 24.04.2
A popular choice for cloud servers, now with major updates:
- Better support for the latest AMD and Intel processors.
- Optimized container management (Docker, LXC).
- Expanded AI/ML development capabilities.
## Ready to Deploy Your Server?
Launch a VPS, cloud infrastructure, or a specialized server with one of these operating systems in just a few minutes using the intuitive Serverspace control panel.
_**[Serverspace](https://serverspace.us/index.md)** is a cloud provider offering virtual infrastructure deployment on Linux and Windows platforms from anywhere in the world in under 1 minute. Tools like API, CLI, and Terraform are available for seamless integration with client services._
https://serverspace.us/about/news/new-serverspace-gpt-api-language-models-available-now.mdWe've added new Language Models to our existing ones. Go ahead and try GPT-4o, Claude 3.5 Haiku и Claude 3.7 Sonnet in our control panel.
The Serverspace GPT API now features [five powerful language models](https://my.serverspace.us/gpt), with three new additions expanding user capabilities.
Joining the existing models are GPT-4o, Claude 3.5 Haiku, and Claude 3.7 Sonnet, each offering unique advantages:
- **GPT-4o** – OpenAI's flagship model with high-speed performance, improved contextual understanding, and real-time processing of text, images, and audio. Ideal for complex intellectual tasks, data analysis, and high-quality content generation.
- **Claude 3.5 Haiku** – The fastest model from Anthropic, optimized for low-latency, real-time conversations. A perfect choice for chatbots, customer support, and dynamic generative content.
- **Claude 3.7 Sonnet** – An advanced model with enhanced reasoning and deep understanding. Known for its high accuracy in analytics and computations, making it particularly useful for complex problem-solving, data analysis, and interpretation.
Now, developers, analysts, and business teams can flexibly choose the right LLM based on their needs – whether it's natural language processing, customer support automation, content generation, advanced computations, or large-scale data analysis.
_[Serverspace](https://serverspace.us/index.md) is a cloud provider offering virtual infrastructure deployment on Linux and Windows platforms from anywhere in the world in under 1 minute. Tools like API, CLI, and Terraform are available for seamless integration with client services._
https://serverspace.us/support/help/how-to-troubleshoot-account-lockout-issues-in-active-directory.mdLearn how to investigate and fix account lockout issues in Active Directory. This step-by-step guide covers common causes, troubleshooting tools, and best practices to prevent future lockouts.
## Possible Causes of User Lockout in Active Directory
This situation commonly occurs in organizations that enforce an Account Lockout Policy, which locks a user account after a predefined number of failed login attempts. From a cybersecurity perspective, this is a best practice, as it helps prevent brute-force attacks and unauthorized access attempts.
Some of the main causes for blocking are:
- Constant mapping of drives with old credentials
- Mobile devices using corporate services with old credentials
- Service accounts using cached passwords that were changed during maintenance
- Scheduled tasks with outdated passwords
- Programs using cached passwords that were changed
- Disconnected terminal server sessions
- Problems with Active Directory replication
- Improperly configured domain policy settings
- Malicious activity, such as a password bruteforce attack.
## Where to Configure Account Lockout Policy
Open the Group Policy editor and create a new policy, name it e.g. Account Lockout Policy, right click it and select “Edit”.
- Set the time until the lockout counter resets to **30** minutes
- The lockout threshold is **5** login errors
- Duration of account lockout – **30** minutes.
Close, apply the policy and run gpupdate /force on the target machine
## How to Find Out Why the Account was Locked
Now that the policy is enabled, we need to figure out what is causing the account lockout, and from which computer or device it is coming. In order to answer this question, you need to configure a special audit policy to keep track of the relevant events from which you will be able to determine the cause of the lockout. This type of auditing is not configured by default.
Open the Group Policy Editor(gpmc.exe) again, create an Audit Policy, open it, and follow:
Computer Configuration -> Policies -> Windows Configuration -> Security Settings -> Local Policy -> Audit Policy
We need to enable logon auditing, this policy generates events 4771 and 4624. Let’s set it to “Success and Failure”.
We also need to set the login event audit policy to “Success and Failure” as well as “Account Management Audit” to see events 4740.
Force a policy update and run **gpupdate /force** on the target machine.
## What events to track in the security log
An incorrect credential entry generates event 4740, on all domain controllers. With Kerberos failure codes:
- – 6 – User name does not exist
- – 12 – Login time limit
- – 18 – Account deactivated, disabled or expired
- – 23 – Expired user password
- – 24 – Preauthentication failed (wrong password)
- – 32 – Ticket expired
- – 37 – Computer time was not synchronized with domain time
NTLM error codes:
- – 3221225572 – C0000064 – This user name does not exist
- – 3221225578 – C000006A – Correct username, but incorrect password
- – 3221226036 – С0000234 – This user account is blocked
- – 3221225586 – C0000072 – Account Deactivated
- – 3221225583 – C000006E – User attempting to log on outside of specified time period
- – 3221225584 – С0000070 – Workstation limitation
- – 3221225875 – С0000193 – Account expired
- – 3221225585 – 0000071 – Password expired
- – 3221226020 – C0000224 – User must change password next time login
## How to Investigate the Account Lockout Cause
Open the Event Log and go to "Security" this is where the EventIDs are collected which may help in determining the reason for the lockout. There are a lot of events, so filter them out with “Filter Current Log”, this will allow us to select only the events we want. In the "Logged" field specify the time period, in the Event ID field specify 4740 and click “Ok”
Use the search (Find) to find the name of the needed account, in filtered records. Finally, events should be filtered by the specified login with the code 4740, where we can find the reason for locking. For example the field "Caller Computer Name" contains the name of the computer from which the failed logons that cause blocking are originated. Then you need to go to the target computer and inspect the event logs there to determine why this machine is trying to logged in with invalid credentials.
There are other reasons for the lockout that can be found in events 4740 such as the name of the Exchange server in the "Caller Computer Name" – this means that the problem is with Outlook, the mobile mail client or its calendar. To investigate this lockout, you need to look at the IIS logs on the Exchange server. Or you can also use the Get-ActiveSyncDeviceStatistics command in PowerShell to see the problem with mobile devices.
### Microsoft ALTools
Microsoft has their own tool to help you troubleshoot account lockout issues – Microsoft Account Lockout and Management Tool (AlTools.exe). [Download Account Lockout Status (LockoutStatus.exe) from Official Microsoft Download Center](https://www.microsoft.com/en-us/download/details.aspx?id=15201)
This tool displays information about a locked account with its user state and lockout time on each domain controller and allows you to unlock it by right-clicking on the corresponding account.
Run LockoutStatus.exe > File > Select target > Enter account name and domain > OK
It will show you all the lockout related statuses for that account.
### EventCombMT Tool
The EventCombMT Tool collects specific events from several different servers into one central location.
Run EventCombMT.exe > Right-click Select to search > Select Get DCs in Domain > Select domain controllers to search. – Click Searches > Built In Searches > Account Lockouts.
## Other Causes of User Account Lockouts
If the lockout problem is caused by Google Workspaces services (Gmail, Gdrive) then the logs will show that the failed logons are coming from the WORKSTATION computer.
Also details about the lock can be seen in the event 4771. There you can find the Kerberos codes described above and the IP address of the device from which the failed logons are coming.
If the "Caller Computer Name" of event 4770 and Client Address 4771 are empty, this means you are most likely being bruteforced!
To find out the source of the failed logons in this case, you need to enable "netlogon" debugging and look at its logs. Netlogon is a Windows Server process that authenticates users and other services in the domain. Enable Netlogon logging: Start > Run > type:
```
nltest /dbflag:2080ffffff > OK
```
After restarting the Netlogon service, the corresponding activity can be recorded in %windir%/debug/netlogon.log.
You can also parse the Netlogon logs using a script:
```
type netlogon.log |find /i "0xC000006A" > failedpw.txt type netlogon.log |find /i "0xC0000234" > lockedusr.txt
```
Warning! Remember to switch Netlogon off after you have logged events, as system performance can be a bit slow due to the debugging process and it will use extra disk space. Disable Netlogon logging:
Start > Run > type:
```
nltest /dbflag:0 > OK
```
In the logs you can find the IPs of the computers which are not shown in the event logs, it may be terminal servers or RDP workstations which are under password bruteforce attack.
Let’s go back to the security event log. Another useful event with the event code 4776 is also where you can find the workstation you are trying to log on to.
If the IP address in your logs is unknown, you can look up the mac address on the DHCP server or on your network equipment and find out the manufacturer of the mac address with special services, which can be easily found on the Internet. This is useful when failed logons are coming from some smartphone or tablet.
Another useful thing would be to look into event 4625, there you can find the process that is causing the account lockout. Use Process Hacker or Process Monitor to see the credentials of active processes.
Windows Task Scheduler may be the problem of locking – there may be a task configured to run using an account whose password has changed.
There may be stored credentials on the local machine, which can be found like this:
Start > Run > rundll32 keymgr.dll, KRShowKeyMgr > OK.
Or Netplwiz:
Start> Run > type: netplwiz > OK Click the Advanced tab, and then click Password Management.
A terminal server session with outdated credentials can cause a lockout. To disable an RDP session, run the following commands at the command line (Win+R > “cmd”), replacing “server_ip”, “name” and “password” with the required credentials
```
net use \server_ip /USER:name password
```
This allows you to logon to a remote server without using RDP.
```
query session /server:name
```
Replace “name” with the server name. Here you get the session id.
```
reset session id /server:server_ip
```
This ends the active session on the remote server.
Account blocking can be caused by AD replication when a password update has not been replicated to all domain controllers. To force replication, run the following command on your DC:
```
repadmin /syncall /AdeP
```
## FAQ: Frequently Asked Questions About Account Lockouts in Active Directory
- **Why do user accounts keep getting locked in Active Directory?**
Account lockouts are often caused by outdated saved credentials, scheduled tasks, disconnected sessions, or mobile devices trying to authenticate with old passwords. Malicious login attempts and replication delays between domain controllers can also trigger lockouts.
- **How can I find the source of the account lockout?**
Start by checking Event ID 4740 on domain controllers to identify the “Caller Computer Name.” For deeper analysis, use tools like LockoutStatus.exe, EventCombMT, and Netlogon logging to trace the origin of invalid logon attempts.
- **Which event logs should I monitor for lockout investigation?**
Key events include:
**4740** – Account lockout
**4625** – Failed logon attempt
**4771** – Kerberos authentication failure4776 – NTLM authentication failure
Each of these provides different details like the IP, client hostname, or failure code.
- **Can a scheduled task or service cause account lockouts?**
Yes. If a scheduled task or service is configured with an account whose password has changed, it may continuously attempt to authenticate with the old credentials, causing repeated lockouts.
- **What is the best way to prevent future account lockouts?**
Regularly update saved credentials across all services and devices, use descriptive account lockout policies, and implement monitoring tools. Also ensure domain controller replication is healthy to avoid outdated password data.
https://serverspace.us/support/help/how-to-use-microphone-in-rdp-session.mdLearn how to enable microphone and audio redirection in Windows Remote Desktop (RDP). This step-by-step guide shows how to use your microphone and speakers on a remote computer for calls, recordings, and multimedia.
Sometimes there is a need to use a microphone on a terminal server, for different tasks. The Remote Desktop Connection does not enable this feature by default, so you need to enable it manually. This instruction will tell you how to do it.
Run **gpedit.msc** on the local machine from which you will connect to the remote terminal. Navigate to:
Local Computer Policy -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host-> Device and Resource Redirection -> Enable “**Allow audio and video playback redirection**” and “**Allow audio recording redirection**“.
**The same policy should be applied on the remote server.**
You need to enable Windows Audio on both machines in the services.msc. They must be in the "Running" state.
In the remote desktop connection settings, go to the “**Local Resources**” tab, click on “**Settings**” and set the remote audio playback to “**Play on this computer**” and set the remote audio recording to “**Record from this computer**“.
Click “OK” and connect to the remote desktop. Go to “**Sound**” in the “**Recording**” tab. And check for “**Remote Audio**“.
Success! Now you can use microphone on remote terminal. The main thing in applications is to use the default microphone.
## Conclusion
Enabling microphone and audio redirection in Windows Remote Desktop allows you to fully use your local audio devices on a remote machine. By configuring Group Policy, ensuring the Windows Audio service is running, and adjusting RDP settings, you can record and play sound seamlessly during remote sessions. This setup is essential for voice calls, multimedia applications, and any scenario requiring audio input or output on a terminal server.
## FAQ
- **Q1: Why can’t I hear sound from the remote computer?**
A1: Make sure the “Allow audio and video playback redirection” policy is enabled, Windows Audio service is running on both machines, and the Remote Desktop audio settings are set to “Play on this computer.”
- **Q2: Why is my microphone not detected in RDP?**
A2: Check that “Allow audio recording redirection” is enabled in Group Policy, and verify that the Remote Audio device appears under the “Recording” tab in Sound settings. Also, ensure your application uses the default microphone.
- **Q3: Can I use this setup for multiple remote sessions at once?**
A3: Yes, but each session must have audio redirection enabled and Windows Audio running. Performance may vary depending on network bandwidth.
- **Q4: Is this method compatible with all versions of Windows?**
A4: Audio redirection works on most modern Windows versions with RDP support, including Windows 10/11 Pro and Server editions. Some Home editions may have limited functionality.
- **Q5: Do I need administrative rights to enable audio redirection?**
A5: Yes, you need administrative privileges to modify Group Policy and start the Windows Audio service on both local and remote machines.
https://serverspace.us/support/help/how-to-set-an-ntp-server-group-policy.mdStep-by-step guide to configuring an NTP server in Windows using Group Policy. Learn how to sync time across domain computers with w32tm and GPO.
## What Is an NTP Server and Why It's Important
An NTP server is indispensable for ensuring consistent timekeeping across numerous devices within a corporate network. This is especially important when it comes to monitoring and recording system events, as precise timestamps are vital for efficient analysis and problem-solving. When an NTP server is implemented, all connected devices can synchronize their clocks with the centralized time source, thereby minimizing inconsistencies and ensuring reliable operation.
Moreover, having a central database for time data facilitates easy tracking and auditing of network activity, which is crucial for adherence to compliance standards and maintaining security protocols. In summary, an NTP server plays a vital role in streamlining operations within a corporation by providing accurate time synchronization and logging capabilities.
## Configuring an NTP Server on Windows
In the Windows there is NTP server’s and them daemon for control time, which allows to serve another computer precise date and time – **win32tm**. Commonly setup service start at the Domain Controller automatically, but there is situation when we need indicate specific parameters and value. For that we can use CMD with utility which we described above for setup our server and then with Group Policy spread config to the client machine.
First of all explain syntax of the utility w32tm: w32tm [/options] value. At the begin we indicate utility than options for they and enter value!
Make sure that service was not shutdown:
```
w32tm /query /status
```
After confirmation about stopped service we can enter config into our server, also we need indicate master NTP server which will synchronize time and date. For reason fault-tolerance we need to indicate minimum four servers with near with you region:
```
w32tm /config /manualpeerlist:"0.europe.pool.ntp.org, 1.europe.pool.ntp.org, 2.europe.pool.ntp.org, 3.europe.pool.ntp.org" /syncfromflags:manual /reliable:YES /update
```
Wait till the end of the process and synchronize:
```
w32tm /resync
```
Than enable by the CLI command:
```
net stop w32time
net start w32time
```
Screenshot №1 — Stop service
Make sure that our settings was applied!
```
w32tm /query /status
```
Screenshot №2 — Check status
Alright configuration NTP-server have done!
## Distributing NTP Settings via Group Policy
Open search bar and look for Group Policy, launch them in the Domain Controller or machine with AD:
Screenshot №3 — Search GP
Choose GPO or create new, by clicking on the Forest -> Domains -> Domain and click by the left button of mouse. Choose Create and name Policy:
Screenshot №4 — Create GP
Select the one you just created and go to the following sequences Computer Configuration -> Policies -> Administrative Templates -> System -> Windows Time Service.
Screenshot №5 — Search Time Service
Choose Time Providers and edit them value as you can see in the picture below:
Screenshot №6 — First value
Edit point with NTP server and indicate our NTP machine in my case that 192.168.1.1 and next you can see flag for synchronization. Therefore change next point:
Screenshot №7 — Second value
Then for properly work we need to link our GPO to the domain, click right button at the domain and link them:
Screenshot №8 — Link GPO
On the client side you can wait when policies will update, that can take a long time, however there is way to manually resync client with domain controller:
```
gpupdate /force
```
The one disadvantage of this way, that requirement to update every computer manually!
**Highlight! Have a look at the list of user and computer which in the table, due to potential issue with work NTP-server, you have to exclude or select another group without them. So server will have exclusive options, which we set up before!**
## Common Issues and Important Notes
When deploying NTP settings via Group Policy, it is important to correctly scope the policy. Domain Controllers and client machines should not always use the same time source, as improper configuration may lead to authentication issues, especially with Kerberos. Ensure that the GPO is linked only to the appropriate Organizational Units and that security filtering is applied correctly to avoid unintended policy inheritance.
Additionally, time synchronization changes are not applied instantly on client machines. Group Policy updates may take time unless forced manually using gpupdate /force. If clients continue using an old time source, verify the Windows Time service status, check for conflicting policies, and review Event Viewer logs related to the w32time service for synchronization errors.
## Conclusion
Configuring an NTP server and distributing its settings through Group Policy provides a reliable and centralized approach to time synchronization in Windows domain environments. By using the built-in Windows Time service and properly configured Group Policies, administrators can ensure consistent timestamps across all systems, improve security, and simplify network management. Careful policy scoping and validation help prevent common synchronization issues and ensure stable domain operations.
https://serverspace.us/support/help/network-configuration-for-rocky-linux.mdFollow this detailed guide to configure network interfaces, manage network connections, and set up static and dynamic IP addresses on Rocky Linux for optimal network performance.
In order for a device to access the Internet or to be accessible to others on your network, a number of settings must be made. Virtually every computing device has a network processing module or network card. In this guide, we will write configuration files for them that define how they work, look at different configuration methods, and test them to see if they work properly.
## How to set up a network via nmtui?
Currently, there are graphical and textual ways to configure the network interface. The simplest and most intuitive is the nmtui utility. The pseudo-interface allows editing and saving changes made. Before we get started, let’s make the changes and update the packages on the machine:
```bash
dnf update
```
Screenshot №1 — Update files
Then call the utility by specifying the command, in the following form:
```
nmtui
```
Screenshot №2 — Menu
The drop-down menu provides a list of basic functions, to configure the network we will go to the **Edit a connection** tab:
Screenshot №3 — List of interfaces
Use the arrows to select the desired interface name and go to **Edit**. If the interface is connected but there is no configuration file for it, select **Add** and your connection protocol, often Ethernet. Fill the window with the necessary data MAC address, IP address, Gateway, and other settings. The resulting configuration file may look like this:
Screenshot №4 — Result of configuration file
There are fields to fill in:
- **Profile name** label for the interface, can take any value;
- **Device interface** name given by the system, if there is no value, it must be entered. To do this, you can use the ip a command;
- **IPv4 Configuration** is a whole block of settings for IP version 4, the choice between Manual and DHCP(Auto) determines the type of configuration: manually or using a DHCP server;
- **Addresses** requires the IP address for the current network interface, you can specify more than one if necessary;
- **Gateway** specifies the default route and allows routing packets outside the device’s subnet;
- **DNS specifies** a server for searching and resolving domain names.
After that you should save the changes and exit to the main menu, then reload the interface in the Activate a connection Deactivate and Activate interface tab.
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №5 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways!
## Set up with CLI nmcli
While the GUI is more intuitive, the CLI is quick to apply settings. To display a list of all interfaces, use the command:
```
nmcli
```
Screenshot №6 — List of interfaces
We are interested in enp0s6, although it is already configured, we will configure it again. The order is quite simple, for manual configuration we will write commands:
```
nmcli con mod "enp0s6" ipv4.addresses 172.16.1.12/24
nmcli con mod "enp0s6" ipv4.gateway 172.16.1.1
nmcli con mod "enp0s6" ipv4.dns "8.8.8.8"
nmcli con mod "enp0s6" ipv4.method manual
```
To create an interface, you must use:
```
nmcli connection add type ethernet con-name Ethernet ifname enp0s6
```
To remove an interface you do not need, use the command:
```
nmcli connection delete enp0s6
```
After that it is necessary to check the network settings via the nmcli or ip a command. For a more detailed configuration of the network interface, it is necessary to use a configuration file via a text editor. However, for basic configuration the solutions described in the manual will work fine.
https://serverspace.us/support/help/how-to-open-and-manage-windows-services.mdLearn how to access, configure, and manage Windows Services to optimize system performance. A step-by-step guide for users of all experience levels.
The modern concept of almost any operating system at the moment implies the presence of an initialisation system or Windows Services. But why is it needed at all? And what tasks does it solve?
For the correct work of the system you need services that will provide the work of the network, file system, will interact with the infrastructure. Someone must run them, know in what order to do it, as well as when and under what conditions. This role could be taken by a kernel module or even the kernel itself, however, the need for constant changes in the composition of services and their configuration forced to abandon this idea and move the software to the user space.
Windows Service became an application services.exe, which allowed to implement the functionality of service orchestration. The kernel, after fully initialising itself and its components, launches a number of applications, including services.exe, which reads in a pre-formed config and launches system and user services according to certain conditions and in order.
Screenshot №1 — Processes list
It is literally the parent process for many of the processes running on the OS. Therefore, they can also be managed through a single snap panel for services.
## How do I view services in Windows?
The easiest way is to use PowerShell with its pre-built cmdlets, a list of all of which can be viewed by invoking the cmdlet:
```
Get-Command | Where-Object Name -like '*service*'
```
Screenshot №2 — Command of services
The list of cmdlets is sufficient to fully manage services in Windows. Let’s consider their use on specific cases, for example, we need to quickly find a list of all services:
```
Get-Service
```
Screenshot №3 — Services
Or those that are currently in the 'stopped' state. For this purpose we can play with the Where-Object filter parameter, which will allow us to find all matching services by the service object property:
```
Get-Service | Where-Object Status -like 'Stopped'
```
Screenshot №4 — Stopped
We can also view all running processes with an alternative command, where we change ‘Stopped’ to ‘Running’:
```
Get-Service | Where-Object Status -like 'Running'
```
Screenshot №5 — Running
For a quick search you can also use other object fields, for example, if you know the approximate name of your service.
## How to stop, start Windows services?
Use the cmdlet from the list presented earlier, which will allow you to perform a stop action on the Services object:
```
Stop-Service BITS
```
Screenshot №6 — Error of privilege
This error indicates that you do not have enough privileges to execute the command, so re-run PowerShell as Administrator Win+X → Terminal(Administrator)/Powershell(Administrator):
```
Stop-Service BITS;Get-Service | Where-Object Name -like 'BITS'
```
Screenshot №7 — Stop service
Similarly, you can suspend or start any of the services:
```
Start-Service BITS;Get-Service | Where-Object Name -like 'BITS'
```
Screenshot №8 — Start service
The suspend/continue action corresponds to the following commands:
```
Suspend-Service wuauserv;Get-Service | Where-Object Name -like 'BITS'
```
```
Resume-Service wuauserv;Get-Service | Where-Object Name -like 'BITS'
```
But if we need to create our own Windows service to perform socket sniffing tasks, running as Administrator?
## How do we create our own Windows service?
Services.exe which is an initialisation system uses units or a short service/application profile to automate their startup. Unlike Linux-like systems where communication with the service is done at the child process management level with signal processing, Windows Services requires internal processing of API requests.
Screenshot № 9 — Comparison table
If you have software pre-prepared using Windows API handlers, you can use the command:
```
$params = @{
Name = 'My_Service'
BinaryPathName = 'C:Windows\System32\svchost.exe'
DisplayName = 'New Service'
StartupType = 'Manual'
Description = 'This is a test service.'
}
New-Service @params
```
But a normal script or software, without handler functions inside, will simply fail to run. The services.exe process will not receive a response from the service:
Screenshot № 10 — No respond
For such cases, the NSSM or Non-Sucking Service Manager was developed, which becomes a binary proxy between you and Services.exe.
The way it works is that a Binary = nssm 'App1' 'Arg1' entry is registered in Windows services. This means that the API request will be passed to the nssm utility for control, and it will convert it into a normal signal and start controlling the child process:
Screenshot № 11 — Schema of control
Let’s take a quick look at how you can create a service this way. First, install nssm from the developer’s official site or use the package manager via terminal:
```
winget install NSSM.NSSM
```
Screenshot № 12 — Install nssm
Afterwards, open a terminal and type the command:
```
$nssm = (Get-Command nssm).Source
$serviceName = 'My_servv'
$powershell = (Get-Command powershell).Source
$scriptPath = 'D:\service.ps1'
$arguments = '-ExecutionPolicy Bypass -NoProfile -File "{0}"'. -f $scriptPath
& $nssm install $serviceName $powershell $arguments
& $nssm status $serviceName
Start-Service $serviceName
```
And after that it is necessary to write a command to check if the service is running:
```
Get-Service | Where-Object Name -like "My_servv"
```
Screenshot № 13 — New-service
As you can see the result of the launch showed that the service is in Running state and is able to process user requests.
As a result of not complicated manipulations we got a running service that communicates through the nssm mediator, which is able to manage units and process API requests. Such mechanism of the initialisation system allows to start automatically not only the services for which it is initially intended, but also other software to ensure the OS operability.
https://serverspace.us/support/help/how-do-i-set-up-and-use-sftp.mdComprehensive guide to setting up and using SFTP: learn server and client configuration, security best practices, and efficient file transfer methods.
The question often arises, when setting up and operating various OS distributions, how to transfer files securely over the network? Let’s say at once that there are a lot of protocols, but in our opinion, one of the most effective and convenient is SFTP!
Enough, convenient to use, as it offers an interactive shell to work with the file system and a set of basic commands!
## What is SFTP?
SFTP, or Secure File Transfer Protocol, is a protocol used for encrypted data transfer that supports user authentication and is often pre-installed on many distributions. Since it is technically implemented in SSH service, the configuration of users and authentication methods is absolutely identical.
Once you have exchanged public encryption keys or created a new user with a password, you should proceed to install the service if you have not already installed it.
## Installing and managing files via SFTP
Usually it is enough to install openssh-server, as the other packages are downloaded by dependencies:
```bash
apt install openssh-server
```
For Windows it will be similar, you can find the file on the developers website, but it is better to use trusted repositories and install via the command:
```
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Server*' | Add-WindowsCapability -Online
```
After that, to connect to the SFTP server you need to write a command with the syntax:
```
sftp -P port_number user_name@hostname
```
Screenshot № 1 — SFTP connect
Let’s look through the possible functionality of the utility and consider the implementation of functions on a practical example:
Screenshot № 2 — Basic command
First of all, we need to see what directories we are in on the remote OS and locally. Unfortunately, SFTP does not support the ability to execute more than one command at a time, so they will be executed separately:
```
pwd
```
```
lpwd
```
Screenshot № 3 — PWD
We can then view the list of files on the remote and local device:
```
ls
```
```
lls
```
Screenshot № 4 — List of files
For example, we need to transfer the file t.txt to the remote device, for this we will write:
```
put -R local-path remote-path
```
Screenshot № 5 — Upload files
The same approach can be used for commands, then it will be necessary to add the -R option to the beginning for recursive copying of data. Downloading files from a remote device can be done with the same simple command:
```
get -R remote-path local-path
```
Screenshot № 6 — Download files
Since sessions are interactive shells, you may need to use the local OS for a while without leaving the session:
```
!command-in-the-shell
```
Screenshot № 7 — Shell code
If we want to open a full-fledged shell, we use the command:
```
!command-in-the-shell
```
Screenshot № 8 — Shell
And to exit from it q or exit. This will then open cmd for Windows and the standard specified user shell for Linux. This set of basic commands will allow secure file transfers between devices. The setup is quite simple, as the protocol and server part are already implemented in the boot package and loaded by a dependency to the machine.
https://serverspace.us/support/help/how-to-configure-ntp-on-rocky-linux-centos.mdLearn how to set up and configure NTP on Rocky Linux and CentOS for accurate time synchronization. This comprehensive guide covers installing and configuring NTP servers and clients to keep your system clock precise and reliable.
Time management in information-computing systems is crucial for a variety of functions, including electronic digital signatures, TLS/SSL connections, real-time machines, and automatic process control systems. Without precise time synchronization, many services that rely on secure data transfer over HTTPS would not be functional. Furthermore, monitoring application logs for systems and administrators would become significantly more challenging, as understanding the exact timing of events is often essential for troubleshooting and analysis.
To address this issue, the **Network Time Protocol (NTP)** was developed, providing a standardized solution for accurate time synchronization across devices in a network.
## What is NTP and how does it function?
**NTP (Network Time Protocol)** is a protocol designed to synchronize time across various devices using a client-server model. It operates within a tiered system, where top-level servers (Stratum 0) supply time data to secondary servers (Stratum 1, 2, etc.). These secondary servers then transmit the time to client devices. The time is derived from highly precise sources, including atomic clocks or GPS systems, which feed time data to the Stratum 0 servers.
In a typical setup, a server within a corporate network can act as a time provider for other devices. This server receives time from trusted sources like GPS or other Stratum 0 servers and disseminates it to devices within the local network. To ensure redundancy and fault tolerance, it is common practice to use multiple time servers.
The protocol operates over UDP (User Datagram Protocol) on port 123, facilitating communication between the client and server. The process involves several timestamping steps:
- The client sends a request to the server with timestamp T1, indicating the time the request was sent.
- The server responds with a message containing timestamps T1, T2, T3, and T4, where:
T1 is the client’s timestamp.
- T2 is the server’s timestamp when the request was received.
- T3 is the server’s response time.
- T4 is the timestamp when the client receives the server’s response.
3. The client uses the timestamps to calculate the round-trip delay and adjust its local time accordingly.
Screenshot №1 — NTP structure
If we consider this basic infrastructure service in the context of a corporate network, a server is allocated to work. It can be a dedicated VPS area or a part of the OS space in a container with a running application that processes client requests. And it already receives data from trusted Stratum and provides data to devices in the local network. For fault tolerance, it is common to use several such solutions. As their trusted source can be Glonass-server, which intercepts the GPS signal and transmits the time to the devices.
The protocol’s algorithm utilizes UDP on port 123 for communication, facilitating the exchange of messages between the client and the server in both directions:
The client initiates a request to the server to obtain the time, marked as T1, which indicates the time the client’s request was sent. The server then logs the request’s arrival and responds with a packet containing the timestamps T1, T2, and T3, where T2 records the request’s reception and T3 marks the time of the server’s reply. Once the network exchange is completed, the client captures the time T4 — when the packet is received — and calculates the network delay as well as the current time.
## How do I install and configure NTP?
In Rocky Linux // CentOS distributions, the popular ntpd package has been replaced by chrony, which differs little from its predecessor in functionality and configuration. Let’s install the package with the command:
```bash
dnf install chrony
```
Screenshot №2 — Installation
To manage the server we can use the chronyc administrator client, which also comes in the installation package. For basic configuration and operation of the service we will need the configuration file at the path:
```
nano /etc/chrony.conf
```
Screenshot №3 — Result of configuration
For the service to work, it is necessary to specify the servers from where the time should be received, the list of allowed networks and, if available, the logging file. Let’s specify the appropriate settings in the file:
```xml
# Use public NTP servers
pool 0.eu.pool.ntp.org iburst
pool 1.eu.pool.ntp.org prefer
# Use specific NTP servers for higher reliability
server ntp0.NL.net
server ntp2.vniiftri.us
server ntp.ix.us
server ntps1-1.cs.tu-berlin.de
# Specify drift file to track time deviations
driftfile /var/lib/chrony/drift
# Allow access from local network
allow 192.168.0.0/16
# Log configuration
logdir /var/log/chrony
makestep 1 -1
```
In this configuration:
- **pool entries allow chrony to choose time servers from a reliable pool.**
- **server entries specify specific NTP servers.**
- **driftfile keeps track of the time deviation.**
- **allow specifies which networks are allowed to sync with this server.**
- **logdir designates the log directory.**
- **makestep ensures the time is corrected if the discrepancy is large.**
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №4 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways!
Back to configuring our service, once the configuration file is written and saved, we need to reboot it:
```bash
systemctl daemon-reload && systemctl enable –now chronyd
```
Screenshot №5 — Start daemon
To verify that the NTP service is functioning correctly, use the chronyc sources command to display the NTP servers from which your system is receiving time data:
```
chronyc sources
```
Screenshot №6 — NTP sources
The list shows the stratums or tiers from which our server receives time information. The list lists the number of server tiers from which we receive data and calculations of the delay time. As you can see in the figure, the first one has 12 ms and the second one has 115 ms, respectively the utility will choose the source with less delay. If you write the command date, you will notice that the time still does not coincide. It is necessary to change the time zone, for this we will display the list of zones and select the one we need:
```
timedatectl list-timezones
```
Screenshot №7 — List of time zones
After that we will select the required one with the following command:
```
timedatectl set-timezone Asia/Tokyo && date
```
Screenshot №8 — Set time/zone
Great, after you need to configure the client, so install the chrony package:
```bash
dnf install chrony && nano /etc/chrony.conf
```
Going to the file it is necessary to specify our created server:
```
server 192.168.1.2 iburst
```
Restart the service and put it on autorun:
```bash
systemctl saemon-reload && systemctl enable–now chrony
```
After that you can also check the work through the chronyc utility:
```
chronyc sources
```
## Conclusion
Maintaining accurate time across devices in a network is vital for the proper functioning of many systems, including security protocols, monitoring tools, and event logging. By setting up NTP using chrony on Rocky Linux and CentOS, you can ensure that your network devices remain synchronized, improving the reliability of your systems. Whether you are setting up a simple corporate network or managing a large enterprise infrastructure, time synchronization is an essential service that cannot be overlooked.
https://serverspace.us/support/help/how-to-run-container-docker-postgresql.mdLearn how to deploy PostgreSQL in Docker with user configuration, database setup, data persistence, and port mapping.
When working with various services, there is often a question that running applications can affect each other’s work, and for services it is especially critical. As they provide clients with query processing, for example database server, performance monitoring server and others can be disabled by neighbouring processes as they have the same rights.
Therefore, to ensure the integrity, availability and isolated operation of services began to use the technology of containerisation. In this article we will look at deploying a PostgreSQL database through Docker containers.
## Brief summary
Docker is a platform that automatically deploys pre-prepared file system snapshots or images and allows you to use them in isolated environments – containers.
The virtualisation itself takes place through the OS kernel, where a completely separate file, network, processor environment is created and assigned to a new process. This means that a limited Docker process with attached, new environments will perform all the necessary tasks of the service.
## Installation and configuration
Let’s start with the dependencies and software needed for the service, if you don’t have Docker pre-installed, then run the command:
```bash
sudo apt install docker
```
Screenshot № 1 — Docker installation
After that we can start the dockerd daemon and check its functionality with commands, then find the required image in the repository:
```bash
systemctl start docker && systemctl status docker
```
```bash
sudo docker search postgres
```
Screenshot № 2 — Search
Note that you need to install the official container image, there is a checkbox on the right for this. Let’s download the found image with the database server via the command:
```bash
docker pull postgres
```
Screenshot № 3 — Docker Pull
This will download from remote to local repository, with which docker engine will further work. Let’s check our image in the local repository with the command:
```bash
docker ls image
```
Screenshot № 4 — Docker Image
Since the container shares one OS kernel with the host machine, some functions will not be isolated. For example, creating a process requires permissions with UID and GID, which can match the user of the host OS. So be careful when mounting folders from the host machine and creating users.
```bash
docker run -d \
-name your-container-name \
-restart unless-stopped \
-e POSTGRES_USER=dbuser \
-e POSTGRES_PASSWORD=your-pass
-e POSTGRES_DB=your-DB
-p 5432:5432 \
-v name-of-volume:/var/lib/postgresql/data\
postgres && docker ps
```
Screenshot № 5 — Docker Run
In the command to start the container, we pass environment variables:
- POSTGRES_USER – database/account username for the service on the OS;
- POSTGRES_PASSWORD – password for the account;
- POSTGRES_DB – database name;
- -p – host:container port redirection option;
- -v – virtual volume for storing the service data.
The image itself will create a user and run the service with the created database on its behalf. Now the container or a restricted process is a separate/isolated space that accepts network calls on port 5432. Accordingly, the server can be accessed through a network connection from a remote device using the IP address of the host OS and the port that was previously forwarded. You can check its availability with the commands:
```
netstat -tulnp
```
Screenshot № 6 — Socket
Or we can use the connection, where we run the docker use psql client in the container itself:
```bash
docker exec -it name-of-container psql -u dbsuer -D DB
```
Screenshot № 7 — Connection
Great, the connection has been made! Now we can manage the DB server, which is isolated from the main OS environment. In order to remove the container we will execute the commands:
```bash
docker stop name-of-container && docker remove name-of-container && docker image remove postgres && docker volume remove name-of-volume
```
Screenshot № 8 — Remove container
After that the container with the image and the data stored for it will be deleted. If you need or want to reinstall the image, the docker volume remove name-of-volume command can be omitted to save the created databases.
In this article we have looked at a step-by-step method of deploying a container environment with a database image. This approach allows you to delimit the space between the rest of the software, which increases integrity and protects against collision of different dependencies.
https://serverspace.us/support/help/what-are-some-dns-records.mdDNS records are essential components of the Domain Name System, mapping domain names to IP addresses and defining various domain settings.
It is hard to imagine modern infrastructure and networks in general without DNS. This technology allows users/services regarding domain names and records of different formats to find the right resources for their tasks.
Whether it’s a mail message to a colleague’s box or a site with kitties, web and mail services first found the record example.com → 192.168.1.2 and directed the network packet to the right machine. But in the course of development of services and technologies, in addition to the standard records domain → IP-address, there are many others. In this material, let’s consider each of them in an express format.
## What is DNS?
DNS or Domain Name System – a service that provides customers with the service of resolving or finding a match between the domain and the value that the server stores in the format of records. For one domain, several records of different types can be matched at the same time. For example, our domain vdushuu.space has 3 records in our domain control panel.
Screenshot № 1 — Panel of domain records
Each of the existing records has its own type/function, as well as fields to fill in. You can find the required record for a domain using the standard dig + nslookup utilities:
```
nslookup vdushuu.space
```
Screenshot № 2 — nslookup
Let’s take a look at each of the record types and describe their functionality!
## What DNS records are there?
Type A record
To find the IPv4 address of the host that hosts a site, network storage or other resource by domain name use a record type A. The process of recording it looks like this:
Screenshot № 3 — DNS A-record
It is necessary to specify the domain itself with the @ sign or its subdomains by writing their values in the field, and then set the corresponding address to the domain name. In this case, one address can correspond to one or more domains, but not vice versa. However, if you use your own DNS-server, the technology DualBrain or GeoIp may imply this.
AAAA records
To find the IPv6 address of a host, a AAAA type record is used by domain name. The record process looks similar to the previous one. The number of devices in the network grows hyperbolically, and the need to identify each of them remains the same, so this kind of record is already provided. If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №4 — Create Server
MX type record
To find a mail server where you need to send messages, you can use MX record. This is almost identical to the A record, but exists separately to allow for flexibility in infrastructure design. For your domain, you specify the domain of the mail gateway to handle MX type requests.
Screenshot № 5 — DNS MX-record
Note that you also need to specify the corresponding Type A record for MX.
PTR type record
Often some services for node verification use the PTR record to find out which domain corresponds to a given IP. For its formation, the provider makes changes independently, and may not provide them.
CNAME type record
Redirection in the web exists not only at the level of web-server, html handler, core js, but also in domains has its analogue. A record of CNAME type allows, when a user calls, to redirect his request to another domain.
Screenshot № 6 — DNS CNAME-record
In this case, the mnemonic name is the one referenced, and the canonical name is the alias or synonym of the one referenced.
NS type record
To understand the work of this type of record, recall that usually the service DNS is recursive search for domain servers of different levels, searching for the responsible for the zone server. Just the type of NS record allows you to specify who will be responsible DNS for our domain or where to go for domain records.
Screenshot № 7 — NS
TXT record type
This type of record is a resource field, where you can write data for domain verification for SSL registration or verification of DKIM-digital signature of mail. Also, some services require to insert authentication strings in order to confirm the rights to the domain. Therefore, it can take values of the following form:
```
v=DKIM1; k=rsa;
p=(generated public key)
```
SRV type record
Represents a domain that is no longer just like an A record on a machine, here it refers to its specific raised service or resource. It is necessary to select the protocol, port and to which domain such a service domain record will be bound:
Screenshot № 8 — SRV
To easily add records through the panel delegate your domain to Serverspace, this service is free of charge! Start managing your domain through the panel right now.
https://serverspace.us/support/help/how-to-start-container-and-use-docker-python.mdLearn how to start Docker containers and run Python applications inside them. This guide covers Docker setup, container management, and best practices for using Python with Docker.
The concept of resource partitioning now rules in many corporate network infrastructures. Now one server can contain dozens of virtual spaces that work independently of each other, some unite into common platforms or work together.
Today on the example of virtualisation technology and platform for building such a virtual environment Docker – let’s install and deploy the Python container image.
## Deploying a Docker container
Basically we need the platform itself, for this purpose update package indexes and install Docker, in case it is already pre-installed – skip this step. For deb-like systems we will use the automated deployment script:
```bash
sudo apt purge -y docker.io docker-compose docker-doc podman-docker \
curl -fsSL https://get.docker.com -o get-docker.sh \
sudo bash get-docker.sh
```
Screenshot № 1 — Installation
After all canons and precautions we need to create a user on whose behalf the container will be run, with reduced privileges. So that in case the perpetrator escapes from it by running malicious commands we can increase **TTA** or **Time-To-Attack**. To do this we use the commands:
```
sudo adduser python && sudo usermod -aG docker python
```
Screenshot № 2 — New User
Since only root or users of the docker group can access the Docker socket, we need to add the python user to it. After that we can start the base container with a Python environment on board.
To do this, let’s create a loop in the bash interpreter and go inside the container to view the processes:
```
sudo -u python docker run –name my_container -v data-storage:/home -d python /bin/bash -c 'while true;do sleep 1000;done' && sudo docker ps
```
Screenshot № 3 — Run simple container
Where each of the options and arguments presented performs a different function in starting the container:
- sudo -u python docker run – starts the container with normal user rights;
- -name my_container – sets the name of the container my_container;
- -v data-storage:/home – mounts the data-storage volume to /home inside the container;
- -d – runs the container in the background (detached mode);
- python – uses a python image to create the container;
- /bin/bash -c 'while true; do sleep 1000; done' – executes an infinite loop inside the container:
- /bin/bash -c – runs a command via Bash;
- sudo docker ps – displays a list of running containers after a successful container startup.
To enter the container we will use a command of the form:
```bash
docker exec /bin/bash
```
Screenshot № 4 — Docker shell
After that, let’s update the packages on the machine and install the process manager, where we will view the structure of our running PID space:
Screenshot № 5 — Check running process
Inside we see the aggregate of our auto-run process and the current session. Usually, for containers to run where there is no out-of-the-box service, the appropriate resources need to be prepared. When creating a cloud server from Serverspace, each of the standard repositories has a key set. To run the tests, you can use an isolated VPS server environment, on either of the two platforms vStack cloud or VMware cloud. Let’s click on the Create Server button and select a configuration that suits our needs, then click Create.
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №6 — Create Server
It will take some time to deploy the server capacity. After that you can connect in any of the convenient ways.
## Deploying the service in a Docker container
For example, let’s take a working case where we need to deploy a web application service in such a container. To do this, we need to take a base image, let it remain a minimal set of Python environment that needs to be modified. It is considered minimal for a reason, some libraries will need to be downloaded in the process.
There are two ways to solve this: in the first case, we write an autorun command to start and put the application in the repository we will connect or rebuild the image. Of course, a more correct way of implementation is the second, it does not store a long autorun string and the container is launched immediately with your files.
Let’s use the first one and save the file without leaving the previous session to the folder we have joined to the virtual storage:
```
nano /home/app.py
```
Screenshot № 7 — Application
After that, quit, stop and delete it:
```bash
sudo docker stop $(sudo docker container ls -q -a) && sudo docker remove $(sudo docker container ls -q -a)
```
Let’s prescribe an autostart with the package updating indexes, installing the Python package manager, and running the application:
```
sudo -u python docker run –name my_container -d -v data-storage:/home -it python /usr/bin/bash -c 'apt update && apt install python3-pip -y && python3 -m pip install flask && python3 /home/app.py'
```
Screenshot № 8 — Start container with application
After some time of its deployment, we need to check if it has started. Let’s view its logs with the command:
```bash
sudo docker logs
```
Screenshot № 9 — Started service
Great, the service was launched in a virtual environment on a machine, next to which you can launch a dozen more of them and each will run in its own isolated environment, which increases the efficiency of work without collisions of dependency packages, as well as the security of this approach.
## Conclusion
Using Docker to run Python applications allows for fast, reproducible, and isolated deployments across different environments. By setting up containers with reduced privileges, mounting external volumes, and automating startup commands, you create a secure and flexible infrastructure for development or production use. Whether you’re deploying a simple script or a full-scale web application, Docker ensures consistent behavior and easy scalability. VPS environments like Serverspace further enhance this by providing ready-to-use cloud instances optimized for virtualization and containerization.
## FAQ
- **Q1: Why should I use Docker for running Python applications?**
A: Docker allows you to create isolated environments for each application, avoiding conflicts between dependencies and ensuring consistent behavior across systems.
- **Q2: Do I need root access to run Docker containers?**
A: Not necessarily. You can create a dedicated user and add it to the docker group to run containers with limited privileges for better security.
- **Q3: How can I keep a Docker container running?**
A: You can use a command like while true; do sleep 1000; done to keep the container active if there’s no service running by default.
- **Q4: What's the benefit of mounting a volume into the container?**
A: It allows you to persist data, share files between host and container, and modify code or configurations without rebuilding the image.
- **Q5: Can I run multiple Python services in parallel using Docker?**
A: Yes. Each service runs in its own container, enabling you to deploy and scale multiple independent applications without conflict.
- **Q6: What are the advantages of using cloud platforms like Serverspace with Docker?**
A: Cloud providers offer isolated, high-performance VPS or VDS environments optimized for container usage, with easy provisioning and scalable infrastructure.
https://serverspace.us/support/help/how-to-install-and-configure-proxy-squid.mdLearn how to install and configure the Squid proxy server: step-by-step setup, caching, traffic filtering, and performance optimization.
This infrastructure service is an integral part of the corporate network and security subsystem, allowing to implement authorisation, content filtering, as well as being a gateway for users to control visited resources.
For full and secure functioning of the information network there are many infrastructure services that ensure its performance. One of them is a proxy, which is an intermediate node. Its task is to pass through itself the connection and perform its processing: cache requests and responses, perform SSL Bumping, authenticate the user in the network and filter network packets.
In this article, let’s look at one of the examples of such a service and configure it!
## What is a Proxy?
Proxy is an intermediate node, the main purpose of which is to process passing traffic and pass it on. In corporate network segments it is used as a single network exit point for users, which allows authorisation and control of actions. As described above, its functionality to control traffic is almost unlimited:
- **SSL bumping;**
- **Request caching;**
- **Client authentication;**
- **Traffic sniffing;**
- **Control of visited resources.**
And it’s logical because user traffic is literally spread over the network infrastructure and at such times it is very difficult to track it, so the single point fixes it. Schematically, the algorithm of work looks like this:
Screenshot № 1 — Schema
However, apart from the corporate segment, proxy allows anonymising network traffic by substituting the sender’s address inside the packet. Such functionality relative to existing technology is used by hackers or and people who hide their digital footprints. Classically, by building a chain of proxies, they are also called proxy-chain, which allows you to hide yourself behind several network cardons.
But how is the redirection of traffic to a single point technically realised? It’s simple, if in case of reverse-proxy DNAT is responsible for this, which by rule will direct to the required address and port, then in this context forward-proxy will establish a connection with the server on the port in advance and within this connection the client will transmit the required packets in the payload segment.
## Simplified configuration (without authentication)
To work with the service, let’s install all the necessary packages and dependencies:
```bash
apt update && apt install squid -y
```
Screenshot № 2 — Installation
Classically, the server configuration file is located at the path /etc/squid/squid.conf:
```
nano /etc/squid/squid/squid.conf
```
Let’s look at configuring several server functions, starting with the simplest and most basic one. Remove all the contents of the old configuration and write the directives:
```
acl mynet src 192.168.1.0.0/24
http_access allow mynet
http_access deny all
http_port 3128
cache_mem 256 MB
```
Where each of these has different functionality:
- **acl src** – a named list of ACLs specifying the network segment;
- **http_access allow** – permission to connect the local network to the proxy, because by default the connection is prohibited. This permission also allows to work via http;
- **http_port** – port on which the proxy will hang;
- **cache_mem** – allocates cache memory for caching requests.
After that save the file and restart the service and check its operability:
```bash
systemctl restart squid && systemctl status squid && curl -x 'http://ip-proxy:port-proxy' 'target'
```
Screenshot № 3 — Connection
But if you take such a machine outside, it will most likely become part of the infrastructure to mask someone’s DDoS or other attack, so authentication is required!
## Classic setup with authentication
To protect the proxy server, we will use the classic HTTP authentication form, with the help of a pre-installed module. First, let’s form an account under which the user will be authenticated:
```bash
sudo apt update && sudo apt install apache2-utils sudo htpasswd -c /etc/squid/passwd
```
Screenshot № 4 — Creation of user
Actually in this context a proxy is a web service that accepts incoming connections and therefore it is possible to use authentication modules of different mechanisms and protocols. Including PAM, which extends the level of capability with its library base:
Screenshot № 5 — Auth way
In order for authentication to start working let’s go to the configuration and set the parameters, policies for it:
```
acl mynet src 192.168.1.0/24
http_access allow mynet
http_port 3128
cache_mem 256 MB
auth_param basic programme /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic realm 'Proxy Authentication Required'
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
```
Screenshot № 6 — Authentification configuration
Let’s leave the upper block unchanged, as it sets the network segment policy, let’s consider the written block below. The auth_param directive sets the authentication parameter, a library to verify the user with our credentials in the first line, in the second line before the verification itself. On the third line, the acl proxy_auth parameter means there will be validation before connecting, and http_access applies this previously written rule.
Let’s check the configuration after restarting the service:
```bash
sudo systemctl restart squid
```
Let’s try to connect without an account and then immediately with one:
```bash
curl -x 'http://ip-adders:port' 'target-url' && curl -x 'http://username:passwd@ip-adders:port' 'target-url'
```
Screenshot № 7 — Connection with credentials
As you can see as a result, the authentication was successful and the web server returned a correct response. But what if in addition to authorisation and user control, you need to sniff traffic and see what employees are doing and searching for via SSL?
## Advanced configuration with SSL-Bumping
This configuration will allow you to implement the substitution of the original certificate for the actual signed one, it should be added to the trusted ones for all devices by group policies. The communication process itself will look as follows:
- A client connects to an HTTPS site via Squid.
- Squid intercepts the connection and establishes its own encrypted connection to the client.
- Squid establishes a separate encrypted connection to the target server.
- Squid decrypts the traffic between the client and server, and can filter or log it.
- Squid transmits data to the client signed with its certificate.
To get started, check if your proxy server has this functionality, as builds are different, ssl-bumping may be missing somewhere:
```
sudo squid -v | grep '*-ssl*'
```
Screenshot № 8 — Check up options
If you don’t have such a feature, then finish installing the software:
```bash
sudo apt install squid-openssl
```
And proceed to create a certificate using the utility:
```bash
/usr/lib/squid/security_file_certgen -c -s /var/lib/squid/ssl_db -M 4MB
chown -R squid:squid /var/lib/squid/ssl_db
```
Also don’t forget to configure the config for connection bumping:
```
http_port 3128 ssl-bump cert=/var/lib/squid/ssl_db/myCA.pem key=/var/lib/squid/ssl_db/myCA.key
ssl_bump peek all
sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/squid/ssl_db -M 4MB
```
Screenshot № 9 — SSL bumping configuration
After that save the configuration and restart the service, the proxy should start swapping certificates. Note that some sites are protected from MitM by an additional check at the http certificate level in memory and if it does not match the original one, the connection is blocked, which can cause problems for clients on your network. In such cases, an exception can be written for them. If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №10 — Create Server
It will take some time to deploy the server capacity. After that you can connect in any of the convenient ways. This infrastructure service is an integral part of the corporate network and security subsystem, allowing to implement authorisation, content filtering, as well as being a gateway for users to control visited resources.
https://serverspace.us/about/news/serverspace-2024-annual-review.mdAs 2025 picks up speed, we’re already gearing up for its challenges. The Serverspace team waste no time and continues to improve our services. Now is the perfect time to reflect on the major highlights of 2024 — new services…
As 2025 picks up speed, we're already gearing up for its challenges. The Serverspace team waste no time and continues to improve our services. Now is the perfect time to reflect on the major highlights of 2024 — new services and data centers, expanding our local presence, collaborating with an international GameDev project and more. Here's a recap of the key events of the past year.
## **New services – unique opportunities**
Last year, we launched several important new services: GPT integration via API and VoD.
[Access to LLM through the API](https://serverspace.us/services/serverspace-gpt-api.md) allows clients to integrate AI into their applications to automate business processes quickly and efficiently. From chatbots and instant text translation to generating creative content, AI technologies open up new possibilities, boost productivity, and improve user experience.
We expanded our CDN capabilities, specifically for video content. In today's highly competitive market, fast video loading is a must for any successful business. To help our users meet these standards, we introduced [Video on Demand (VoD)](https://serverspace.us/services/video-on-demand-vod.md), which ensures instant delivery of video content at high speeds. User-uploaded video files are distributed through a global network of servers, always keeping them close to the end-user.
## **Infrastructure expansion: lower latency than ever**
In 2024, our control panel gained two new locations for deploying virtual servers: Brazil (São Paulo) and the UAE (Dubai).
The [Equinix SP3](https://serverspace.us/infrastructure/data-center-sao-paulo.md) data center in São Paulo is a leading data center in Brazil. It meets international quality standards and holds a full set of Tier III certifications from Uptime Institute, as well as the Operational Sustainability gold certification. SP3 houses vStack SL201-25RE servers with advanced 16-core Intel Xeon Gold 6226R processors (Cascade Lake architecture) running at 2.70 GHz.
Another new data center is [Equinix DX1](https://serverspace.us/infrastructure/data-center-dubai.md) in Dubai. This facility is designed according to Tier III standards and holds certifications like ISO 27001, ISO 9001, and PCI DSS. The cluster is equipped with vStack-R-SL201-25RE servers, featuring 16-core Intel Xeon Gold CPUs with a base frequency of 3.0 GHz.
Access to data centers in Brazil and the UAE allows Serverspace users to enter the South American and Middle Eastern markets swiftly and smoothly. These new locations ensure low latency, compliance with local data laws, and access to cutting-edge equipment for maximum performance.
## **Serverspace clouds across all continents**
Last year, we made significant progress in our international expansion. Serverspace launched local branches in three countries: Brazil, Canada, and the UAE. These regions are rapidly developing in the IT sector and show strong demand for cloud technologies and digital solutions.
Users in Brazil can use [serverspace.com.br](http://serverspace.com.br), while in Canada they can use[serverspace.ca](http://serverspace.ca). The launch of [falconcloud.ae](http://falconcloud.ae) in the UAE is especially noteworthy — it's a company powered by Serverspace technologies. Each project offers a wide range of cloud services, from vStack virtual servers to developer tools, all meeting the high standards of Serverspace. Local data centers ensure low latency and high reliability for businesses in these regions. All platforms also offer a free control panel in English and Spanish, local currency payment options, and 24/7 technical support.
## **New operating system: Rocky Linux**
This year, we also added support for a new operating system — [Rocky Linux](https://serverspace.us/about/news/serverspace-x-rocky-linux-os.md). Rocky Linux is an open and stable OS developed as a replacement for CentOS following changes to its support model.
Here are five key advantages of Rocky Linux:
- **Enterprise-grade stability**: Rocky Linux offers a stable and reliable platform, ideal for enterprise environments.
- **Community-driven**: It is developed and maintained by a robust open-source community, ensuring transparency and continuous improvement.
- **Binary compatibility**: Rocky Linux is fully compatible with Red Hat Enterprise Linux (RHEL), making it an excellent drop-in replacement.
- **Long-term support**: It provides long-term support (LTS) with security patches and updates for 10 years.
- **Cost-effective**: Being open-source and free, Rocky Linux reduces the total cost of ownership without compromising on performance or security.
## **Serverspace X Sumo Tatami collaboration**
In 2024, we began collaborating with the international gamedev project [Sumo Tatami.](https://serverspace.us/about/cases/sumo-tatami-x-serverspace.md) The creators of the game utilized the Serverspace platform to host their server infrastructure.
Serverspace virtual servers helped Sumo Tatami handle peak loads, ensured minimal latency, and provided users with an uninterrupted and immersive gaming experience. Thanks to the flexible infrastructure, the project was able to scale and maintain low ping while rapidly growing its global audience.
For more information, check out the link.
## **Plans for the future**
In the coming year, we plan to take several important steps to further develop Serverspace. These include:
- Opening a new office and VPS location in Uzbekistan;
- Updating our referral program to make it even more rewarding for clients and partners;
- Expanding the capabilities of VStack cloud servers, including backup creation in the control panel;
- Adding new VPS locations;
- Introducing additional operating systems for servers;
- Launching new services and features.
We will continue to enhance our services, improve the stability, and boost the performance of all our solutions. Stay tuned for updates in our [changelog](https://serverspace.us/changelog.md), e-mail messages,[LinkedIn](https://www.linkedin.com/company/serverspace-us/), and [Instagram](https://www.instagram.com/serverspace.us/) — there are a lot of updates ahead!
https://serverspace.us/about/blog/security-and-cyber-threats.mdLearn all about cyber security, data breach prevention, and the latest trends in cyber security news, protection, and attacks. Stay informed and secure your infrastructure today.
[https://serverspace.us/](https://serverspace.us/index.md)
With the rise in cyberattacks, businesses are increasingly prioritizing the reliability and security of their clouds and servers. Cyber security protection has become a top priority for safeguarding data and ensuring operational stability. For organizations looking to understand cyber security meaning, trust in cloud solutions is determined by the ability of providers to prevent data breaches and guarantee the resilience of their infrastructure.
If you're seeking cyber security information or want to learn all about cyber security, it's critical to analyze current trends, including cyber security news and updates about the latest cyber security attacks.
## **Types of threats**
The cloud environment faces a variety of cyber threats that can compromise data security and disrupt services. Let's explore the most common ones:
- **Unauthorized access:****
**Cybercriminals often attempt to breach systems through phishing, password cracking, or exploits. Implementing multi-factor authentication and strict access controls helps mitigate these risks.
- **Data breaches:****
**Misconfigured settings or targeted attacks can lead to exposed sensitive information, such as unprotected public storage. Encryption and regular security audits are essential to reduce these risks. **Data breach insurance** may also be an important consideration for mitigating financial losses.
- **DDoS attacks:****
**Overloading infrastructure with excessive traffic can render services unavailable. Advanced traffic filtering and load balancing are critical defenses.
- **Malware:****
**Viruses and Trojans can infiltrate systems and encrypt sensitive data. Antivirus solutions, timely updates, and staff training are essential countermeasures.
For companies in the cyber security USA market, monitoring it security news and adapting to current cyber threats is vital to staying ahead of attackers.
## **Security measures in Serverspace cloud**
**Advanced architecture and infrastructure security**
Serverspace’s cloud infrastructure is built with cutting-edge technology to deliver high fault tolerance. Its data centers are certified to international security standards, including Tier III and ISO 27001. These certifications ensure physical server protection, reliable power supply, and cooling system redundancy. High-level virtualization minimizes risks of data breaches and unauthorized access by isolating client data.
Collaborating with top-tier data center providers such as Equinix ensures strict adherence to security protocols. Additionally, network segmentation is employed to contain potential threats and reduce their impact.
**Data encryption**
Encryption is a cornerstone of cyber security protection. Connections between users and servers are safeguarded with SSL/TLS protocols, preventing interception of sensitive data. Disk-level encryption using AES-256 ensures compliance with global data security standards.
These measures protect information even in cases of physical access to hardware. Regular updates to cryptographic protocols maintain a high level of security against current cyber threats.
**Multi-factor authentication**
The implementation of two-factor authentication (2FA) significantly reduces the risk of account compromise. Even if passwords are breached, access is impossible without a second authentication factor, such as a time-based code or app confirmation. [Serverspace](https://serverspace.us/services/vps-server.md) also supports integration with identity management systems like Authy and Google Authenticator for seamless security.
**Regular updates and patches**
Keeping software up-to-date is crucial for data breach prevention. Outdated software versions often have vulnerabilities that attackers can exploit. Serverspace automates patch deployment and conducts regular audits to ensure all systems remain secure.
**Real-Time monitoring and auditing**
Constant monitoring allows for the timely detection of suspicious activities, such as attempted breaches or unusual user behavior. Serverspace employs tools that analyze activity logs and provide real-time alerts, ensuring swift responses to potential threats. Regular audits identify vulnerabilities and resolve them proactively.
**Network segmentation**
Segmenting cloud infrastructure into isolated sections limits the spread of threats. For instance, if one segment is infected with malware, the others remain protected. Serverspace utilizes virtualization to isolate client resources, preventing inter-network attacks and minimizing the impact of incidents.
**DDoS attack protection**
DDoS attacks pose significant risks by overwhelming resources and disrupting services. Serverspace's defense mechanisms include advanced monitoring and traffic filtering technologies.
The company's DDoS detection system analyzes incoming traffic in real time, blocking abnormal activity—such as mass requests from suspicious IP addresses—before it reaches the servers. Load balancing evenly distributes traffic across nodes, ensuring high service availability and stability even during intense attacks.
**Data protection services**
In addition to robust encryption and access control, Serverspace offers comprehensive data protection services designed to shield sensitive client data from unauthorized access.
**Secure ****web hosting**
Whether you're hosting a personal website or a business application, Serverspace delivers [secure web hosting](https://serverspace.us/services/vps-server/cloud-hosting.md) with proactive security measures, real-time monitoring, and 24/7 support.
**Rapid incident response**
In critical situations, every minute counts. Serverspace guarantees rapid responses to any incidents, with an average ticket response time of just 15 minutes. Around-the-clock technical support ensures uninterrupted service, providing peace of mind for clients.
## **Conclusion**
Serverspace sets a high standard for cyber security protection by leveraging cutting-edge technologies to meet the challenges of today's cyber threats. Its multi-layered security approach—including data encryption, network segmentation, and DDoS mitigation—ensures a robust infrastructure. Additionally, its quick response times and 24/7 support reinforce its commitment to stability and security.
By adhering to international standards and continuously evolving its security measures, Serverspace has become a trusted partner for businesses seeking reliable and innovative solutions. For those looking to stay informed about cyber security news and protect themselves from the latest cyber security attacks, Serverspace offers a trusted, secure platform.
https://serverspace.us/about/blog/windows-vps-vs-linux-vps-which-one-should-you-choose.mdExplore the key differences between Windows and Linux VPS, their advantages and drawbacks and choose the best option for your needs. Also learn how each OS impacts server management, compatibility and pricing/
Today, using VPS (Virtual Private Servers) for building IT infrastructure is no longer a rarity in the U.S. market. On the contrary, more and more companies are opting for cloud solutions because virtual servers are cost-effective, secure, and efficient for businesses of all sizes—from startups to large corporations. The advantages of VPS are undeniable, but some questions remain relevant. One of the most common dilemmas is: which operating system should you choose for your VPS? Most often, the choice comes down to two options: the well-known Windows OS or Linux.
In this article, we'll break down the main pros and cons of Windows and Linux for VPS, describe the most common use cases, and help you decide which OS is right for your project. Whether you're looking to buy VPS, explore Linux VPS hosting, or rent a cloud Linux VPS server, this guide will provide valuable insights.
## **What's the difference between Windows VPS and Linux VPS?**
Both operating systems have differences that affect server management, application compatibility, and cost.
[Windows VPS](https://serverspace.us/services/vps-server/windows.md) uses Microsoft Windows Server operating systems with a graphical user interface (GUI), making it more intuitive for users. It's ideal for running Microsoft-specific applications like ASP.NET, Microsoft SQL Server, and Microsoft Access. These applications require Windows for optimal performance. On the other hand,[Linux VPS](https://serverspace.us/services/vps-server/linux.md) runs on various Linux distributions such as Ubuntu, CentOS, and Debian. Linux relies on the command line for management and supports a wide range of open-source software. Linux VPS hosting is perfect for server applications like Apache, MySQL, and PHP (LAMP stack).
In terms of cost, Windows VPS is usually more expensive due to the need to purchase licenses for the Windows OS and other commercial software. Meanwhile, Linux VPS is often more affordable since most Linux distributions are free. If you're considering cheap Windows VPS hosting or want to rent a server, these differences are important to keep in mind.
## **Key advantages and disadvantages of Windows VPS**
**_Pros of Windows VPS:_**
- User-friendly interface: The familiar GUI makes it easy to manage, especially for users already comfortable with Windows.
- Compatibility with Microsoft products: Ideal for Microsoft applications like ASP.NET and SQL Server.
- Remote Desktop: Provides convenient access to the server via [Remote Desktop Protocol (RDP)](https://serverspace.us/services/remote-desktop-protocol-rdp.md).
- .NET support: Perfect for .NET and ASP.NET development.
**_Cons of Windows VPS:_**
- Higher cost: Windows licensing can significantly increase expenses.
- Resource-intensive: Requires more powerful hardware, which can drive up costs.
- Less customizable: Limited options for customization and optimization compared to Linux.
_**Common use cases for Windows VPS:**_
- **Hosting corporate websites:** Windows VPS is ideal for hosting corporate websites, especially those using Microsoft technologies like ASP.NET or IIS (Internet Information Services).
- **Remote Desktop:** Providing remote access to a Windows desktop for employees working remotely.
- **Microsoft Dynamics applications:** For companies using Microsoft CRM or ERP systems like Dynamics 365, Windows VPS offers a stable and compatible platform.
- **Microsoft SQL Server databases:** Windows VPS provides the best environment for hosting and managing Microsoft SQL Server databases.
- **Email servers:** Setting up Microsoft Exchange for corporate communication.
- **VPN servers:** Creating secure connections for remote workers using a Windows-based VPN.
## **Key advantages and disadvantages of Linux VPS**
**_Pros of Linux VPS:_**
- Free and open-source: Most Linux distributions are free, reducing overall costs. If you're looking to buy VPS Linux, this is a significant advantage.
- Highly customizable: Linux offers extensive customization options, making it ideal for advanced users.
- Stable and secure: Known for its stability and security, Linux is a reliable choice for high-demand environments.
- Efficient resource usage: Linux runs smoothly even on less powerful hardware.
**_Cons of Linux VPS:_**
- Steeper learning curve: Managing Linux VPS often requires knowledge of the command line and system administration.
- Limited software compatibility: Some Windows-specific applications may not run on Linux without additional configuration.
- Less GUI-friendly: Linux typically lacks the intuitive graphical interface found in Windows.
_**Common use cases for Linux VPS:**_
- **Web hosting:** Linux VPS hosting is a popular choice for hosting websites, especially with the LAMP stack (Linux, Apache, MySQL, PHP).
- **Application hosting:** Ideal for open-source applications like WordPress, Joomla, or custom-built solutions.
- **Development and testing:** Developers prefer Linux for its flexibility and control, making it perfect for cloud-based Linux management.
- **Databases:** Hosting databases like MySQL, PostgreSQL, or MongoDB.
- **Game servers:** Running multiplayer game servers on Linux.
- **Backup and replication:** Using Linux cloud hosting for secure data backup and replication.
- **Email servers:** Managing corporate email with Postfix or Exim.
## **How to choose between Windows and Linux VPS?**
Here's a quick checklist to help you decide which operating system is the best fit for your virtual machine:
| Criterion | Windows VPS | Linux VPS |
| --- | --- | --- |
| Cost | More expensive (Windows licenses and commercial software) | Cheaper (most distributions are free) |
| Interface | Graphical user interface (GUI), user-friendly | Command-line, requires administrative skills |
| Compatibility | Ideal for Microsoft applications (ASP.NET, SQL Server, Exchange) | Suitable for open-source software (PHP, Python, MySQL, Apache) |
| Performance | Requires more resources | Runs efficiently even on low-end hardware |
| Customization | Limited customization options | Highly customizable due to open-source nature |
| Security | Good, but less flexible | High security and stability |
| Support | Formal support from Microsoft | Large community and documentation |
| Common Use Cases | – Corporate websites on ASP.NET – Microsoft SQL Server – Exchange Server | – Web hosting (LAMP) – Open-source applications – Development and testing |
## **Final thoughts**
When all is said and done, the choice between Windows VPS and Linux VPS depends on your project's specific needs. Whether you're looking to buy VPS, explore cloud servers in the USA, or find the best virtual server rental, both operating systems have their strengths. Neither is a "bad" choice—it's about finding the right fit for your requirements. Take the time to evaluate your project's needs, consider your budget, and assess your team's technical skills. And remember, you can always switch later if your needs change. Now that you have the information, you're ready to make an informed decision. Good luck!
_[Serverspace](https://serverspace.us/index.md) – an international cloud provider offering automated deployment of virtual infrastructure based on [Linux](https://serverspace.us/services/vps-server/linux.md) and [Windows](https://serverspace.us/services/vps-server/windows.md) in less than 1 minute. For integrating client services, open tools such as [https://serverspace.us/services/api/](https://serverspace.us/services/api.md)[Terraform,](https://serverspace.us/services/serverspace-terraform-provider.md)[СLI](https://serverspace.us/services/cli.md), and API are available._
https://serverspace.us/about/news/new-llm-phi-4.mdNew LLM GPT PHI-4 from Microsoft, one of the most advanced language models to date, is now available in the Serverspace control panel.
Cloud provider [Serverspace](https://serverspace.us/index.md) has unveiled its latest innovation: seamless integration of Microsoft's groundbreaking [GPT PHI-4 language model](https://serverspace.us/services/serverspace-gpt-api.md). This state-of-the-art AI solution empowers users to automate coding, streamline data processing, and optimize text management with unparalleled accuracy and efficiency. Accessible directly through the Serverspace [control panel](http://my.serverspace.us), PHI-4 is now available to all users, offering a new level of intelligence for cloud-based workflows.
PHI-4 stands out as one of the most advanced language models to date. Trained on a blend of synthetic and academic data, it delivers exceptional precision and performance, surpassing even larger open-source models. With Microsoft's cutting-edge algorithms at its core, PHI-4 processes text, code, and data at remarkable speeds, ensuring accurate and contextually relevant results. Serverspace users can effortlessly integrate the model via API, unlocking the potential to automate complex tasks and enhance productivity within their cloud environments.
What Can You Do with GPT PHI-4 in Serverspace?
- **Code Generation & optimization**: Write, debug, and refine code effortlessly, reducing development time and minimizing errors.
- **Data analysis:** Extract actionable insights and automate the processing of large datasets, transforming raw data into valuable information.
- **Intelligent assistants:** Build advanced chatbots and customer support systems that deliver seamless, human-like interactions.
- **Text management:** Automate content creation, document translation, and report generation, saving time and resources.
Looking ahead, Serverspace is committed to expanding its library of AI models, providing users with even more tools to integrate intelligent solutions into their cloud services. The addition of PHI-4 marks a significant step forward, enabling businesses and developers to harness the full potential of AI-driven automation and innovation.
_[Serverspace](https://serverspace.us/index.md) is a cloud provider offering virtual infrastructure deployment on Linux and Windows platforms from anywhere in the world in under 1 minute. Tools like API, CLI, and Terraform are available for seamless integration with client services._
https://serverspace.us/support/help/multiple-network-interfaces-centos-7.mdStep-by-step guide to configure multiple network interfaces on CentOS 7 and set up source-based routing for enhanced server availability and efficient traffic management across multiple public IPs.
To ensure server availability across multiple network interfaces and public IP addresses, simply configuring each network card is not enough. Since the system allows only one default gateway, all outgoing packets will route through that single gateway, regardless of the interface they arrived on. This limitation stems from the default destination-based routing policy. In this tutorial, we will demonstrate how to configure multiple network interfaces on CentOS 7 with source-based routing, enabling outbound traffic to be routed based on its source address for improved reliability and network performance.
## Configuring network interfaces
If you use a [server in Serverspace](https://serverspace.us/services/cloud-servers.md), then the parameters of network interfaces are configured automatically when you add them or create a server. Otherwise, it is necessary to bring the parameters to the form below. The above example can be copied by substituting your values for the interface name (eth0), gateway (GATEWAY), MAC address (HWADDR), IP address (IPADDR) and in some cases the subnet mask (NETMASK):
```
nano /etc/sysconfig/network-scripts/ifcfg-eth0
```
```
BOOTPROTO=none
DEFROUTE=yes
DEVICE=eth0
GATEWAY=33.44.55.1
HWADDR=aa:11:bb:22:cc:33
IPADDR=33.44.55.66
MTU=1500
NETMASK=255.255.255.0
ONBOOT=yes
STARTMODE=auto
TYPE=Ethernet
```
The GATEWAY is set up only for one network interface, since there should only be one in the system. Configuring the second interface:
```
nano /etc/sysconfig/network-scripts/ifcfg-eth1
```
```
BOOTPROTO=none
DEVICE=eth1
HWADDR=bb:cc:dd:ee:ff:gg
IPADDR=66.77.88.99
MTU=1500
NETMASK=255.255.255.0
ONBOOT=yes
STARTMODE=auto
TYPE=Ethernet
```
Similarly, you can configure the number of interfaces that are connected to the system.
## Setting up source based routing
Just in case, it is worth checking if the iproute package is installed and install if not:
```bash
yum install iproute
```
Now open the following file:
```
nano /etc/iproute2/rt_tables
```
Add the following lines to the end:
```
200 table200
201 table201
```
The record must be in the format **number** space** table name**. Both values can be arbitrary. The only condition is their uniqueness relative to the values of other records in the file. The number of lines must correspond to the number of network interfaces for which we are configuring accessibility.
Now let’s create files with routing tables parameters. You need to create a separate such file for each interface, replacing **eth0** in the file name with the actual name of the network connection.
```
nano /etc/sysconfig/network-scripts/rule-eth0
```
Below is the contents of the file, where instead of **33.44.55.66** you need to put the IP address of the network interface, and instead of **table200** – the tables added above, one for each interface:
```
from 33.44.55.66 lookup table200
```
And the corresponding files with routing rules. Created in the same way as routing table parameter files.
```
nano /etc/sysconfig/network-scripts/route-eth0
```
It is necessary to substitute the actual values of the **subnet address**, **gateway**, **interface name** and the **table** value corresponding to the value from the previous file.
```
33.44.55.0/24 dev eth0 table table200
default dev eth0 via 33.44.55.1 table table200
```
Such file pairs are created for each network interface in the system with the corresponding values.
Restart the network service for the changes to take effect:
```bash
systemctl restart network
```
## Conclusion
Configuring multiple network interfaces on CentOS 7 with source-based routing ensures that outbound traffic is routed through the correct interface based on its source IP address. This setup overcomes the limitation of having only one default gateway in traditional destination-based routing, thereby improving server availability and network reliability across different public IP addresses. Following this guide allows system administrators to efficiently manage complex network configurations and optimize traffic flow in multi-interface environments.
## FAQ
- **Q: Why can’t I set multiple default gateways for different network interfaces?**
A: Linux supports only one default gateway at a time. Source-based routing solves this by using multiple routing tables to direct traffic based on its source address rather than destination alone.
- **Q: What is source-based routing and why is it important?**
A: Source-based routing directs outbound packets according to their source IP address. This allows traffic to leave through the interface it was received on, which is critical for multi-homed servers with multiple public IPs.
- **Q: How do I verify if source-based routing is working correctly?**
A: You can use commands like ip route show table to inspect routing tables and ip rule show to view routing rules. Additionally, testing connectivity from each interface's IP address confirms proper routing.
- **Q: What if the iproute package is not installed?**
A: The iproute package provides the ip command required for advanced routing. Install it using yum install iproute on CentOS 7 before configuring source-based routing.
- **Q: Can I configure source-based routing for more than two interfaces?**
A: Yes, you can create as many routing tables and rules as needed, one for each network interface, by following the pattern shown in this guide.
- **Q: Do I need to restart the server after configuring source-based routing?**
A: Restarting the network service with systemctl restart network is sufficient for the changes to take effect; a full server reboot is usually not necessary.
- **Q: What happens if I misconfigure routing tables or rules?**
A: Misconfiguration can cause loss of connectivity or traffic misrouting. Always backup existing configurations before changes and test connectivity carefully after applying new rules.
https://serverspace.us/support/help/multiple-network-interfaces-ubuntu-20-04.mdLearn how to configure multiple network interfaces on Ubuntu 20.04 with static and dynamic IP addresses. Follow this step-by-step guide to efficiently manage multiple IPs and optimize your server networking setup.
In situations where there are 2 or more network interfaces with public IP addresses on the Ubuntu 20.04 server, additional settings must be made to ensure the server is available at these additional addresses. This is because the default routing policy sends all network packets through 1 interface, which has a default route. In this case, it does not matter through which interface the packet got to the server. Therefore, even with the correct Netplan configuration, the server will not respond to additional IP addresses without additional settings. Let’s take a look at how to configure multiple network interfaces in Ubuntu 20.04.
How to Configure Multiple Network Interfaces on Ubuntu 20.04:
- [Automaticly configurate Netplan](#stepone)
- [Configurate Policy-Vased Routes](#steptwo)
## Netplan automatic configuration
[Linux Serverspace servers](https://serverspace.us/services/cloud-servers.md) are designed to make life easier for users. They have the function of configuring network interfaces in automatic mode when they are added in the control panel or during server creation. But in order to ensure the operation of policy-based routing and as a result of the server’s availability on several network interfaces at once, we need to make changes to the Netplan settings. To prevent our settings from being overwritten during a reboot, we need to disable automatic network configuration. After you make sure that the required number of interfaces has been added to the server, create a file on it:
```
nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
```
And add a parameter to it:
```
network: {config: disabled}
```
Now subsequent changes in Netplan will not be automatically overwritten on reboot.
## Configuring Policy-Based Routes
Policy-Based routing powered by tables. Each table has its own routes and policies. Let’s check the presence of the **iproute2** package in the system. If not, install it.
```bash
apt install iproute2
```
Open the file with routing tables:
```
nano /etc/iproute2/rt_tables
```
And add at the end the number of tables corresponding to the amount of interfaces you are configuring:
```
800 800
801 801
```
Record format: **priority** (number) space **table name** (number).
Now open the Netplan file with network interface settings. It is located along the path **/etc/netplan/** and has the **.yaml** extension. In my case, the path is as follows:
```
nano /etc/netplan/50-cloud-init.yaml
```
Each interface has a settings block in this file. At the end of this block, we will add settings for policies and routing rules for the interface. In this file, it is important to observe the number of spaces before each parameter and value, and not to use tabs instead of spaces. Focus on indentation in existing entries and add by analogy.
For each network interface, add **routes** and **routing-policy** blocks. The final record for 1 interface will look like this:
```yaml
network:
version: 2
ethernets:
enp0s5:
addresses:
- 78.89.90.12/24
gateway4: 78.89.90.1
match:
macaddress: 54:43:32:21:10:09
mtu: 1500
nameservers:
addresses:
- 8.8.8.8
- 1.1.1.1
- 8.8.4.4
search: []
set-name: enp0s5
routes:
- to: 0.0.0.0/0
via: 78.89.90.1
table: 800
routing-policy:
- from: 78.89.90.12
table: 800
priority: 300
```
For other interfaces, the entries will be the same, starting with the interface name (**enp0s5**), but others should not have the **gateway4** parameter, since there should be one default gateway. **Routes** and **routing-policy** settings:
- to – destination address of the packet. For our purposes – any (0.0.0.0/0)
- via – gateway address for this interface
- table – name of the routing table. The same values must be specified in **routes** and **routing-policy** for one interface, but be different from interface to interface. We created these tables in the **rt_tables** file
- from – the source address of the package. For the purposes of this manual, this is the IP address of the interface
- priority – a required numeric value
After making the settings and saving the file, check the configuration for errors:
```
netplan generate
```
Output like this will indicate an error if present (in this case, a space is missing.):
```
/etc/netplan/50-cloud-init.yaml:23:12: Invalid YAML: inconsistent indentation:
routes:
^
```
If the config is compiled correctly, then the output will be absent. This means it’s time to apply the changes:
```
netplan apply
```
After applying the changes, the network interfaces configured in this way will become available from the outside at their public IP addresses.
## Conclusion
Configuring multiple network interfaces on Ubuntu 20.04 requires more than just setting static or dynamic IPs. Due to the default routing policy, all outbound traffic leaves through a single interface, which can cause connectivity issues when multiple public IP addresses are involved. By disabling automatic Netplan configuration and implementing policy-based routing, you ensure that traffic is correctly routed based on source IP addresses. This setup improves server availability and allows your Ubuntu 20.04 server to respond properly on all configured network interfaces.
## FAQ
- **Q1: Why does my Ubuntu 20.04 server not respond correctly on all network interfaces after basic configuration?**
A1: Because by default, all outgoing traffic uses one default route through a single interface. Without policy-based routing, replies to incoming packets might leave through the wrong interface.
- **Q2: What is policy-based routing and how does it help?**
A2: Policy-based routing uses multiple routing tables to route outbound traffic based on its source IP address, ensuring replies go out through the same interface they came in.
- **Q3: Do I need to disable automatic network configuration to apply these settings?**
A3: Yes, disabling automatic network configuration in Netplan prevents your custom routing rules from being overwritten after reboot.
- **Q4: Can I use this method for both static and dynamic IP addresses?**
A4: This method primarily targets static IP configurations, but with careful adjustments, it can also be adapted for dynamic setups.
- **Q5: What should I do if Netplan configuration reports indentation errors?**
A5: YAML files are sensitive to indentation and spaces. Ensure you use consistent spaces and avoid tabs. Check your indentation carefully following the examples.
https://serverspace.us/support/help/how-to-manage-active-directory-computers-part-2-rename-and-join-computers-to-the-domain.mdManaging computers within an Active Directory (AD) environment often involves renaming devices and adding them to the domain. This guide walks you through the step-by-step process of renaming Windows computers and joining them to an Active Directory domain, helping you…
Computer accounts, also known as computer objects, represent devices registered in Active Directory (AD). Once a device joins the domain, its account is stored in the AD database. This enables the application of Group Policy Objects (GPOs) to manage configurations and policies, facilitates update tracking via WSUS if deployed, and-most importantly – establishes secure authentication for users logging into Windows.
To join a workstation to the domain, the device must be on the same network as the domain controllers. However, joining over a VPN is also possible, provided the device can resolve the domain's name. DHCP can assist by supplying the necessary DNS settings, but alternatively, you can configure domain resolution manually by adding the domain information to the hosts file.
## How to Join a Computer to the Domain
There are three different methods to join a computer to a domain – let's explore how to do this in practice.
### Joining the Domain with the GUI
In order to join a Windows server to AD, perform the following steps:
Rightclick on **Start **button or press the **_Start_** button on your keyboard and the **_X_** key simultaneously, and select **System**. Scroll down till the bottom and click on "**System Info**". After that click on "**Change settings**" next to **Computer name**, and in appeared window click **Change**
In **Domain changes** window type the DNS domain name under "**Member of Domain**" and click OK. Enter domain admin credentials, and click **OK three times. **
Click **Close** and then **Restart Now**. Congratulations, your workstation has joined the domain!
### Joining Domain Using Windows PowerShell
The easiest way to add a Windows-based device to an Active Directory is Powershell and **Add-Computer** cmdlet:
```
Add-Computer -DomainName office.com -Credential OFFICEAdministrator
Restart-Computer
```
## How to Rename a Computer Account
Renaming a computer is pretty easy task to accomplish, it can be done three different ways.
### Renaming Computer in the Settings
** **In Windows Server it can be done similar to joining into the domain but this time we will do it a little bit differently.
Rightclick on **Start **button or press the **_Start_** button on your keyboard and the **_X _**key simultaneously, and select **System**. Click on **Rename this PC** and enter new name for your device according to your naming policy.
Click **Next**, enter your domain admin credentials if your computer is already inside the domain and then restart your server. You will have a server with new name after the restart.
## Renaming Computer in the Cmd.exe
Renaming computer in command prompt is an easy task, just type in the following code on the target computer:
```
netdom.exe renamecomputer localhost /newname WKS033 /reboot
```
## Renaming Computer with Windows PowerShell
Windows PowerShell allows to rename a computer in seconds by typing two short commands on a target machine:
```
Rename-Computer WKS001
Restart-Computer
```
## Conclusion
Managing computer accounts in Active Directory is a fundamental task for maintaining a secure and well-organized IT environment. By joining devices to the domain, you enable centralized management through Group Policy, streamline update deployment with WSUS, and ensure secure user authentication. Whether you use the GUI, PowerShell, or command-line tools, joining and renaming computers in AD can be done efficiently and flexibly to fit your workflow. Mastering these techniques helps keep your network consistent, secure, and easy to manage.
## FAQ
- **Q: Can I join a computer to the domain if it is not physically on the local network?**
A: Yes, joining over VPN is possible as long as the client can resolve the domain name and communicate with the domain controllers.
- **Q: What permissions do I need to join a computer to the domain?**
A: You typically need domain administrator credentials or delegated permissions that allow adding computers to the domain.
- **Q: Will renaming a computer affect its domain membership?**
A: No, renaming a computer does not remove it from the domain, but the new name should be updated in Active Directory to avoid conflicts.
- **Q: Can I automate joining multiple computers to the domain?**
A: Yes, using PowerShell scripts with Add-Computer cmdlet or other deployment tools can automate the process for many machines.
- **Q: What should I do if the computer cannot find the domain during the join process?**
A: Ensure DNS settings are correct, the device can reach the domain controllers, and that the domain name resolves properly. Adjust hosts file or network settings if needed.
https://serverspace.us/support/help/how-to-ngnix-ubuntu-20-04.mdLearn how to deploy a Laravel application on NGINX using Ubuntu 20.04. Follow our step-by-step guide covering server setup, configuration, permissions, and performance optimization for a secure and fast deployment.
## Introduction
In this guide, I'll walk you through the process of deploying a Laravel application on a server running Ubuntu 20.04.
We'll cover the full setup using NGINX, PHP, and MySQL, along with configuring file permissions, environment variables, and optimizing the server for better performance and stability.
Laravel — is a publicly available PHP framework and was developed back in 2011. It is used to create multi-tiered Web resources and applications.
It promptly supports functional testing when creating software, and you can avoid using other software testing tools. Easy scalability of projects on Laravel framework.
The framework provides a simple but fast and accessible authorization system and gives you immediate access rights to your files. This allows us to restrict access to unauthorized users. Providing application security, the framework code is protected from threats such as SQL injection or cross-site query spoofing.
Laravel provides a simple and flexible approach to web application development. It comes with powerful features and tools that allow developers to create and maintain web applications quickly and easily. There is also an option for advanced developers to use templates and modules to design and develop applications more efficiently. In addition, Laravel supports many popular databases such as MySQL, Postgres, SQLite, and MS SQL, making it more suitable for developing applications with different databases. It has built-in mechanisms for security and authentication, and on top of that, it has powerful tools for monitoring applications. All this makes Laravel very attractive for web application development.
Nginx supports the following unique features:
- **Performance management**: Nginx provides many tools to tune server performance, including the ability to scale and load control.
- **Large number of protocols support**: Nginx supports wide range of protocols including HTTP, HTTPS, FTP, SMTP, and many more.
- **Caching management**: Nginx allows caching tuning to improve performance and response time.
- **Support for distributed applications**: Nginx supports distributed applications, allowing it to distribute the load across multiple servers.
- **Support for shared hosting**: Nginx allows you to do shared hosting, allowing multiple web sites to run on a single server.
## System requirements
- Server on a Linux Ubuntu operating system;
- Updated system and application packages;
- Pre-installed software of: database; webserver.
## System changes
Updating packages.
```bash
sudo apt update
```
Install the required packages of PHP modules.
```bash
sudo apt install php-mbstring php-xml php-bcmath
```
## DB creation
First of all, lets research some unique options at mysql database.
- Optimization strategies: using indexes, query optimization and configuration settings.
- Master-slave replication, which allows asynchronously duplicating data between multiple servers.
- Binary logs for logging changes in database tables.
- Procedural SQL (PL/SQL) queries to perform complex tasks.
- Use of triggers for automatic execution of actions after query execution.
- Support for views that provide another mechanism for storing and manipulating data.
- Support for stored procedures for complex tasks.
- Support for deferred tasks to perform queries and actions at a specific time.
- Using clustering to distribute data and queries between nodes.
- Support for working with geodata that allows using data on maps.
```bash
sudo mysql
```
Created a new “database”.
Created a user and gave me all the rights for the created “DB”.
Granted all access for the “DB” to the user, then left the “DB”.
This gives the user all the rights to access the “database” for administration.
Check whether we can enter MySQL using the credentials of our user.
Check the same access to the created “DB”, then exit the “DB”.
## Creating a new application
I create a table in the DB.
Entering data into the table. In my case, I enter data on popular cities.
Check whether records have been added to the table. You will see a window like this.
## Developing an app for the framework
Once you have created a citylist application. This is used to show the main configurations of the framework and access to the “database”.
I have created a new directory called “citylist” where the framework itself will be contained.
```bash
composer create-project –prefer-dist laravel/laravel "name_of_your_project"
```
After installation, the following information will be shown on the command line.
Now open the directory of our application and run the artisan command to check if the components are installed correctly.
```bash
cd "name_of_your_project"
php artisan
```
Artisan is the CLI included in the framework. It gives you a number of commands that are useful for developing your application.
If everything is done as instructed, the following will be shown.
## Configuring the framework
The framework’s configuration is located in the “config” directory of your main directory. When we installed the framework using the “Composer” utility, we created an environment file.
The environment file records the settings of your environment, where the application resides, and puts its file above the other settings files, which are located in the “config” directory.
Open the “.env” file.
```
Nano .env
```
Although the file seems to have a lot of configurations, but I will configure only the ones we need. Below I will write and describe which parameters I will change.
- NAME is the name of the application.
- ENV is an environment variable defining the current environment of the application.
- KEY is the application key used to encrypt data.
- URL is the URL of the application.
- DATABASE is the name of the database.
- USERNAME is the user name of the database.
- PASSWORD is the database user password.
Change the following keys in the application file.
## Setting up a web server
Move our application folder to “/var/www” directory, which is usually where all applications that run on a web server are stored.
```
mv ~/name_of_your_project /var/www/name_of_your_project
```
Gave access to the folders where the framework saves the files created by the application.
Let’s proceed with setting up the web server. Create a virtual host configuration file.
```
nano /etc/nginx/sites-available/name_of_your_project
```
Insert the following settings for the web server.
```css
server {
listen 80;
server_name IP ADDRESS/DOMAIN_NAME;
root /var/www/YOURPROJECT/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;}}
```
Now, run a new file with virtual host settings, create a link to your project in “sites-enabled”.
```
sudo ln -s /etc/nginx/sites-available/name_of_your_project /etc/nginx/sites-enabled/
```
Check for error syntax in the settings.
```
sudo nginx -t
```
Reboot web-server
```bash
systemctl reload nginx
```
## Configuring main framework page
Open the main route file.
```
nano routes/web.php
```
Enter the following parameters into our file.
Create a new file – a screen that will render the output from the “DB” for the user.
```
nano resources/views/travellist.blade.php
```
This code is designed to output the information. We write it in the configuration file.
```php
https://serverspace.us/support/help/ochistka-dns-kesha-windows.mdLearn how to clear the Windows DNS cache to fix connectivity issues, speed up browsing, and update DNS records. Follow our simple step-by-step guide for Windows 10 and 11.
To reduce the load on the network and the device, a caching mechanism on the local Windows service – Dnscache – was implemented during DNS queries. It allows to record already made resolves to reduce the number of network packets and speed up the work process.
But often the network and its addressing can change and the infrastructure can be modified, so outdated records can generate an incorrect request.
## How do I quickly clear and query new DNS records?
Open Terminal or invoke the context menu with the Win+X shortcut and select PowerShell. You can then view the existing cache for more detailed information:
```
ipconfig /displaydns
```
Screenshot №1 — List of dns-records
And reset it by entering the flush DNS command, where all records will be cleared already:
```
ipconfig /flushdns
```
Screenshot №2 — Flush DNS
The machine will recheck its local host list, and if it finds nothing, it will contact the servers specified in the network settings. After that it will update the list of entries.
## How do I disable the Windows DNS cache service?
If caching is not working correctly, you can always disable it:
```
net stop dnscache
```
But if you change your mind, you can switch the network service back on with a similar command:
```
net start dnscache
```
However, if you don’t need to keep records for so long, and you still need caching. What to do then?
## How do you configure the DNS records cache retention time?
Almost all Windows settings and configurations are in the registry, there you can also configure the Dns cache service by the path:
```
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
```
Screenshot №3 — Registry
Beforehand, let’s open the registry using the **Win+R** key combination and enter regedit in the search. Create or fix the attribute MaxCacheTtl of DWORD type to the value 360. This means that the records will be cached for 360 seconds and then reset, in order for the settings to take effect it is necessary to reboot the device. In that tutorial, we can see a clear DNS command that is used to remove the DNS cache.
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №4 — Create Server
## Conclusion
Clearing the Windows DNS cache is a simple yet effective way to resolve connectivity issues, update outdated DNS records, and improve browsing performance. By using commands like ipconfig /flushdns, checking existing records with ipconfig /displaydns, and optionally adjusting cache retention times via the registry, you can ensure that your system always queries fresh DNS data. Additionally, controlling the DNS Client service with net stop dnscache and net start dnscache gives you full flexibility over DNS caching behavior. These steps help maintain network stability and reliability on Windows systems.
## FAQ
- **Q1: What does clearing the DNS cache do?**
A: It removes all stored DNS records from the local cache, forcing the system to fetch updated information from DNS servers, which can fix connectivity and resolution issues.
- **Q2: How do I view the current DNS cache on Windows?**
A: Open PowerShell or Command Prompt and run:
```
ipconfig /displaydns
```
This displays all cached DNS entries.
- **Q3: How can I clear the DNS cache?**
A: Use the following command in PowerShell or Command Prompt:
ipconfig /flushdns
This deletes all cached DNS records.
- **Q4: Can I temporarily disable the DNS caching service?**
A: Yes, stop the DNS Client service with:
```
net stop dnscache
```
Restart it with:
```
net start dnscache
```
- **Q5: How do I change the DNS cache retention time?**
A: Edit the Windows Registry at:
```
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
```
Create or modify the **DWORD** value MaxCacheTtl to set the cache duration in seconds, then reboot the system.
- **Q6: Is clearing the DNS cache safe?**
A: Yes, it only removes cached records; no personal data or system files are affected.
- **Q7: Will this improve my internet speed?**
A: It can help resolve incorrect or outdated DNS entries, potentially improving browsing reliability and response times.
https://serverspace.us/support/help/how-do-i-view-the-linux-and-windows-version.mdLearn how to quickly check your Linux or Windows OS version and system architecture. This guide helps you identify the right installation options and system requirements for software.
To work with the OS it is often necessary to know what version is currently installed and what architecture of the processor is used. Since the processor cannot process binary file instructions not of its own architecture, and the OS cannot understand system calls, it is necessary to know this when interacting with software.
## What do the kernel and OS version have to do with software execution at all?
Let’s briefly consider the complete software processing process. First, the user accesses an executable file of a certain format from his shell, which is also a process, through a system call to the kernel. The kernel creates a child process from our current parent shell and loads the called binary into memory.
It then passes the machine code to the processor for execution, in its ring 3 privileged space. System calls are formed for privileged accesses to hardware devices or the kernel, which is in ring 0. The processor itself executes instructions that have been compiled for its architecture.
## How do I know the OS version and processor architecture?
To do this let’s open a terminal, in Windows this is done by pressing the shortcut Win+X -> PowerShell, and in Linux Ctrl + Alt + T:
Screenshot №1 — Windows manager
After that, a single command is sufficient for find ubuntu version and another Linux-related OS:
```
hostnamectl
```
Screenshot №2 — Hostnamectl
Where you can see firmware, hostname and other parameters besides architecture and OS versions. Or use the command with a more abbreviated answer to linux ubuntu and other Linux versions:
```
uname -a
```
Screenshot №3 — Uname
For Windows, to find out the OS version is the command:
```
systeminfo
```
Screenshot №4 — OS version
To view the processor architecture we can use:
```
Get-WmiObject Win32_Processor | Select-Object Name, Architecture
```
Screenshot №5 — Architecture
Where architecture is labelled with code values, consider each of:
Code 0 – x86 architecture;
Code 1 – MIPS architecture;
Code 2 – Alpha architecture;
Code 3 – PowerPC architecture;
Code 5 – ARM architecture;
Code 6 – Itanium architecture;
Code 9 – x64 architecture;
Code 12 – Unknown architecture.
As a result of executing these commands you should get a list of parameters of the requested objects. If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №6 — Create Server
## Conclusion
Knowing your operating system version and processor architecture is essential for proper software installation and execution. Both Linux and Windows provide straightforward commands to retrieve this information, allowing you to determine compatibility with applications, system updates, and hardware requirements. By regularly checking your OS version and architecture, you can avoid installation errors and ensure optimal system performance.
## FAQ
- **Q1: Why do I need to know my OS version and architecture?**
A: The OS version and processor architecture determine which software packages and binaries can run on your machine. Using incompatible software can cause errors or system crashes.
- **Q2: How can I check my Linux OS version?**
A: Use hostnamectl for detailed information or uname -a for a concise summary, including kernel version and architecture.
- **Q3: How can I check my Windows OS version?**
A: Run systeminfo in PowerShell or Command Prompt to see detailed OS version and system information.
- **Q4: How do I find my processor architecture on Linux?**
A: Use uname -m or check the output of hostnamectl to see the processor architecture.
- **Q5: How do I find my processor architecture on Windows?**
A: Run
```
Get-WmiObject Win32_Processor | Select-Object Name, Architecture
```
in PowerShell. The architecture codes indicate x86, x64, ARM, and others.
- **Q6: What should I do if my architecture is incompatible with the software?**
A: You may need to install the correct version of the software for your architecture or use virtualization/emulation tools to run compatible binaries.
https://serverspace.us/support/help/docker-not-found-how-to-solve-the-error.mdLearn how to fix the Docker not found error on Linux and Windows. Step-by-step solutions, troubleshooting tips, and a checklist to resolve Docker installation or configuration issues quickly.
In this article we will consider a problem related to Docker, which gives the error 'docker not found', 'docker compose not found', 'docker command not found' and others. It is mostly related to either incorrect installation and missing paths in environment variables to the file, or incorrect use of the command.
How to quickly run a check and fix Docker not found error? Let’s go through the checklist in order and in the process we will be able to identify the source of the problem!
## Absence of needed packet
This error can occur when there is no software installed on the machine – make sure you have it. For Ubuntu and Linux-like distributions, you can check via the command:
```bash
apt list | grep 'docker' | grep 'installed'
```
Screenshot №1 — Search Docker
For Windows, you need to use the terminal utility Win+X → Terminal/PowerShell → winget:
```
winget list | Where-Object { $_ -match 'Docker' }
```
Screenshot №2 — Windows search for Docker
The command will list the installed software and the filter command will find mentions of Docker. If the required applications are missing, install them by specifying the installation package on Windows:
```
winget install Docker.DockerDesktop
```
Screenshot №3 — Docker installation
Or for Ubuntu and Linux-like operating systems you should use:
```bash
apt install docker.io docker-compose -y
```
Remove any unnecessary software from the command above that doesn’t suit you, the remaining dependencies will be listed in the package and downloaded automatically.
## Incorrectly invoked application
Not always the commands to work for utilities and software are called the same, often it can be different commands or missing permissions on it. For example, reboot on Linux:
Screenshot №4 — Incorrect software invocation
This is why you need to run commands as Administrator, in Linux check that you have sudo rights:
```
sudo -l
```
If you are not there, add rights by running the command as root, first replace user with your login:
```
usermod -aG sudo user && sudo docker
```
In Windows, run Win+X → Terminal/PowerShell (Administrator) → docker. If this solution does not work, then use the command guides:
```bash
apt show docker-ce
```
Screenshot №5 — Show packet info
Or for Windows you need to use the command:
```
winget show Docker.DockerDesktop
```
Where you can go to the package developer’s site and find the command you need, but for Docker it is the same name, i.e. the docker command.
## No entry in environment variables
To realise the solution to this problem let’s write a new path to the folder with Docker on Linux and Windows, for this purpose find the place where the executable file lies:
```
grep -r / 'docker'
```
Screenshot №6 — Search for Docker
And in Windows classically search by folder via Win+E → Search, then copy the path found and for Linux write:
```
echo 'PATH=$PATH=$PATH:/home/user/docker' | sudo tee /etc/environment
```
Screenshot №7 – New variable
For Windows, open a search on the Win key and type 'Environments' or 'Variables' where you select the desired one:
Screenshot №8 – Windows Search
Once again, select Environment Variables and type in your own or in the system environment variable parameter:
Screenshot №9 – New variable for Windows
And write a new path there, after which we will restart the device and check if it works!
Screenshot №10 – Docker
Great, the software is running and ready to work! These steps should solve the main causes of this problem, they are also suitable for other software!
As a result of executing these commands you should get a list of parameters of the requested objects. If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №11 — Create Server
## Conclusion
The “**Docker not found**” error is a common issue that usually stems from missing installation, incorrect command usage, or improper environment variable settings. By following the checklist outlined in this article-verifying installation, ensuring correct command execution, and setting proper environment variables-you can quickly identify and fix the root cause of the problem. Once resolved, Docker and Docker Compose will function properly on both Linux and Windows systems, allowing you to efficiently manage containers and deploy applications.
## FAQ
- **Q1: Why do I get “docker command not found” on Linux?**
A: This usually happens if Docker is not installed, the user lacks sudo permissions, or the Docker executable is not in the system PATH. Check installation and add the Docker path to your environment variables if necessary.
- **Q2: How can I check if Docker is installed on Windows?**
A: Open Terminal or PowerShell as Administrator and run:
```
winget list | Where-Object { $_ -match 'Docker' }
```
If Docker is not listed, install it with:
winget install Docker.DockerDesktop
- **Q3: How do I fix permission issues when running Docker on Linux?**
A: Ensure your user is in the sudo group:
```
usermod -aG sudo username
```
```bash
sudo docker
```
Then restart your terminal.
- **Q4: What should I do if Docker is installed but still not recognized?**
A: Add the path to the Docker executable to your system environment variables and restart the terminal or system. On Linux, update /etc/environment; on Windows, edit Environment Variables in system settings.
- **Q5: Will these steps work for Docker Compose errors as well?**
A: Yes. Docker Compose often shares the same installation and PATH issues. Ensuring correct installation and environment variable configuration will fix most errors.
https://serverspace.us/support/help/the-nslookup-utility-how-to-use-it.mdLearn how to use the nslookup utility for DNS queries and troubleshooting. Follow this detailed guide with commands, examples, and tips to efficiently analyze and resolve DNS issues.
Working with infrastructure often requires additional tools and utilities to help with trabshooting and solving network and service configuration tasks, one such tool is nslookup!
In this article we will look at what it is and why it is used in the process of checking configurations and network connections.э
## What is nslookup?
Nslookup is a DNS troubleshooting utility that allows you to get IP addresses from domain names and vice versa using server records.
For example, typically a server has a list of different records for its gg[.]com domain:
- A record of type A, which refers to the same domain;
- A record of type MX, which points to mail of that domain;
- A record of type TXT, which contains the DKIM public key;
- A record of type PTR, which contains information about the domain by IP address.
And the utility, having addressed with a request, where the record type and domain will be specified, will receive a reply with the address or other requested information.
Screenshot №1 – Usage
On Windows, nslookup is installed, by default, and can be invoked via **Win+X → Terminal/PowerShell**:
```
nslookup /help
```
For Linux, you can use a similar dig utility by first installing a package with it:
```bash
apt install net-tools -y && dig –help
```
## How do I use nslookup?
The syntax of the utility itself is a classic set of passed options and arguments:
```
nslookup -[options] host server
```
Screenshot №2 – Help
Where nslookup is the command to invoke the utility, -opt options, host is the requested resource on the resolv or mapping, and server is the DNS server to which the resolv request will go. The options can be as follows.
To view the address that the domain is referencing you can command:
```
nslookup -type A google.com
```
Or specify a different DNS-server for it, this can be useful when testing external and internal service:
```
nslookup -type A google.com 8.8.8.8.8
```
-type= Specifies the type of DNS record you want to query:
A – address (IPv4);
AAAA – address (IPv6);
CNAME – canonical name;
MX – mail server;
NS – name server records;
PTR – reverse records;
SOA – initial zone entry;
TXT – text records.
If the DNS service uses a non-standard port, it can be accessed with the custom option:
```
nslookup -port=5156 google.com
```
When the network connection is not the fastest, you may need to increase the response time:
```
nslookup -timeout=10 google.com
```
To see the details of the response, use the -debug option, and to increase the number of attempts, specify them directly:
```
nslookup -retry=3 -debug example.com
```
Such a solution will be of great help when checking the configuration of DNS-server or paths accessed by the device. For example, if the gg.com site does not open, the answer to the nslookup request says that the ip address is 192.168.1.1, which is not accessible to the device! Thus you can trabshooting on interaction of DNS-server and devices in the network!
As a result of executing these commands you should get a list of parameters of the requested objects. If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №3 — Create Server
## Conclusion
Nslookup is a powerful DNS troubleshooting utility that helps administrators and users query DNS records and verify network configurations. By using nslookup, you can quickly retrieve IP addresses from domain names, check mail servers, canonical names, text records, and more. Whether testing internal or external DNS servers, nslookup provides essential insights into DNS resolution, allowing you to identify misconfigurations, connectivity issues, or incorrect mappings efficiently. This makes it an invaluable tool for network troubleshooting and system administration.
## FAQ
- **Q1: What is nslookup used for?**
A: Nslookup is used to query DNS servers and retrieve information about domain names, IP addresses, mail servers, and other DNS records. It helps troubleshoot DNS resolution issues.
- **Q2: Is nslookup available on all operating systems?**
A: Yes. Nslookup comes pre-installed on Windows. On Linux, you can use nslookup or install dig via apt install net-tools for similar functionality.
- **Q3: How do I check a domain’s IP address using nslookup?**
A: Use the command:
```
nslookup -type=A example.com
```
This will return the IPv4 address associated with the domain.
- **Q4: Can I specify a custom DNS server in nslookup?**
A: Yes. You can query a specific DNS server by adding it at the end of the command:
nslookup -type=A example.com 8.8.8.8
- **Q5: How do I query different types of DNS records?**
A: Use the -type option to specify the record type:
**A** – IPv4 address
**AAAA** – IPv6 address
**MX** – mail server
**CNAME** – canonical name
**NS** – name server
**PTR** – reverse DNS
**TXT** – text records
- **Q6: How can I debug slow or failing DNS responses?**
A: Use options like -timeout, -retry, and -debug to increase response time, retry attempts, and see detailed output:
```
nslookup -timeout=10 -retry=3 -debug example.com
```
https://serverspace.us/support/help/dbeaver-how-to-set-up-and-download.mdLearn how to download, install, and set up DBeaver, a powerful database management tool. Follow our step-by-step guide to configure DBeaver for managing your databases efficiently.
When the infrastructure stack is constantly changing, or on the contrary, it is already established but large, you have to work with a lot of different software. One of the main problems with this infrastructure management scheme is administration. When it is necessary to perform one and the same routine task, for example, for databases in different languages, you need a person who can write a suitable script for each of them.
As well as his time for manual data entry, such a problem is solved by a universal client Dbeaver. Let’s see how to work with it and its configuration in this material!
## What is Dbeaver and how do I download it?
Screenshot №1 – Dbeaver
Dbeaver, as mentioned above is a universal client for various databases with a GUI interface. It is based on converting the user’s actions in the application into the language of calls to the database he has chosen.
This task is achieved with the help of connectors, which are third-party software that allow you to link the API of the application and the selected database server! To download this software on Windows, let’s use the winget utility via Terminal. To do this, press Win+X → Terminal/PowerShell (Administrator) and type the command:
```
winget install dbeaver.dbeaver
```
Screenshot №2 – Installation
If there is a problem with this method, then use the classic download, through [the official website of the developer](https://dbeaver.io/). After making sure that the database server is configured and a user with the appropriate rights to work is allocated:
Screenshot №3 – Status of service
Next, let’s open Dbeaver, where among the many functions and tabs, right-click the field where the localhost configuration is already located:
Screenshot №4 – Create connector
Select Create and Connection, which will allow us to choose a further connector to work with our database. After that we will configure the connection in detail, in the Server field specifying the URL/Host, as well as the user for the database with its password. It will be important to decrypt the URL string:
- jbdc is the name of the connector system that will be called to process our query;
- mysql is the name of the database that will be used;
- localhost is the address of the connection, in this case to your own machine, but you can specify the address of a server available to you on the network;
- And after the last / you can specify the database to work with.
If you do not have on the basis of network access delimitation the possibility to use the port for the database, then in the top tab of SSH you can select a tunnel that will broadcast your connection. But only on the allowed port, if you configure it, don’t forget to change the server address in Main to Localhost, as you will already send the required traffic to the machine.
Screenshot №5 – New connector configuration
Create a database, we will use the MySQL language:
```sql
CREATE DATABASE database_name;
```
And then specify the name of your newly created database in the line for connection, not forgetting to change the port to the right one!
PostgreSQL – Port: 5432;
MySQL – Port: 3306;
MariaDB – Port: 3306;
Microsoft SQL Server (MSSQL) – Port: 1433;
Oracle Database – Port: 1521;
IBM Db2 – Port: 50000;
MongoDB – Port: 27017;
Redis – Port: 6379;
Cassandra – Port: 9042.
The connection should then open and your server should be able to respond to the request, however, if it doesn’t, manually check the user and their ability to connect from the remote host. For MySQL use the command:
```sql
SELECT Host, User FROM mysql. user WHERE User = 'username' ;
```
Screenshot №6 – Rights of user
And to execute the PostrgeSQL command, use the following syntax, first replacing username:
```sql
SELECT usename AS "User", usecreatedb AS "Can Create DB"
FROM pg_user
WHERE usename = 'username';
```
Great, everything is fine now let’s go to the database and right-click on it → Create New Table:
Screenshot №7 – New table
After that you can make changes, click the 'Save' button (floppy) to apply them:
Screenshot №8 – Execution of commands
After confirming that you want to execute these commands on your server and click Execute. For further work with Dbeaver, you can use the functional tabs on the control panel, you can learn more about them with our step-by-step guide!
As a result of executing these commands you should get a list of parameters of the requested objects. If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №9 — Create Server
## Conclusion
DBeaver is a versatile database management tool that simplifies the administration of multiple database systems through a unified GUI interface. With DBeaver, you can connect to MySQL, PostgreSQL, Oracle, MSSQL, MongoDB, Redis, Cassandra, and more using connectors, manage users, create databases and tables, and execute queries efficiently. By following this step-by-step guide for downloading, installing, and configuring DBeaver, you can streamline routine database tasks, save time, and improve productivity. This makes DBeaver an essential tool for database administrators and developers working with diverse infrastructures.
## FAQ
- **Q1: What is DBeaver?**
A: DBeaver is a universal database client with a GUI interface that supports multiple database systems. It allows you to manage, query, and monitor databases efficiently from one platform.
- **Q2: How can I download and install DBeaver?**
A: On Windows, you can use the winget command in Terminal/PowerShell:
```
winget install dbeaver.dbeaver
```
Alternatively, download the installer from the official DBeaver website.
- **Q3: How do I connect DBeaver to a database?**
A: Right-click in the DBeaver interface -> Create -> Connection, choose your database type, and enter the server address, database name, username, and password. You can also configure SSH tunnels if needed.
- **Q4: Which databases are supported by DBeaver?**
A: DBeaver supports MySQL, PostgreSQL, MariaDB, Microsoft SQL Server, Oracle Database, IBM Db2, MongoDB, Redis, Cassandra, and others through connectors.
- **Q5: How do I verify database user access in DBeaver?**
A: Use SQL commands specific to your database to check user privileges. For example, in MySQL:
```sql
SELECT Host, User FROM mysql.user WHERE User = 'username';
```
In PostgreSQL:
```sql
SELECT usename AS "User", usecreatedb AS "Can Create DB" FROM pg_user WHERE usename = 'username';
```
- **Q6: Can I create and manage tables in DBeaver?**
A: Yes. Right-click on the database -> Create New Table, define columns, and save. You can execute queries and make changes directly through the interface.
https://serverspace.us/support/help/how-do-i-set-a-password-on-grub.mdLearn how to set a password on GRUB to protect your Linux system’s bootloader. Follow our step-by-step guide to enhance security and prevent unauthorized access at startup.
It is often necessary to protect the device from various modifications and changes at a lower level. Whether it’s loading recovery images that can work with the host file system on behalf of root, or editing kernel options at boot!
In this article we will look at one of the solutions to this problem, such as setting a password on Grub!
## What is Grub?
**Grub** is a programme that takes control first after the BIOS/UEFI boot and allows you to define the image and settings that you want to run next. For example, this solution is useful when you have two or more operating systems or images on your device that can allow you to perform recovery work on the OS.
Screenshot №1 – List of way to start
Bootloader loading depends on which partition table disc is used to store it. For example, from an MBR partition table, the boot order is as follows:
**BIOS** → Selects the first 512 bytes of the boot area and transfers control (Stage 1) → Before bootloader configuration files are loaded (Stage 2) → Loads the kernel
With GPT partitions (refers more often to UEFI) booting is different:
**UEFI** → Search on EFI partition (usually /boot/efi) → Directly load bootloader.efi → Load kernel
An intruder can exploit the features and functionality of this solution to gain access to bypass security measures! As a countermeasure, consider installing a password on grub, which will close some of the vulnerabilities at its level.
## How to set a password on Grub?
Authentication data for Grub is stored in the /etc/grub.d/ directory file and is a combination of login and hashed password. So to make a new one, we need to create an entry in the file. Beforehand, let’s prepare the password with the grub-mkpasswd-pbkdf2 utility:
```
grub-mkpasswd-pbkdf2 | sudo tee -a /etc/grub.d/40_custom
```
Screenshot №2 – Make password for load
Let’s go to the /etc/grub.d/ file and delete the extra lines that are left due to output redirection, and add a couple of lines about the user. As a result, we will get the following line at the end of the configuration file:
```
set superusers="username"
password_pbkdf2 username grub.pbkdf2.sha512.
```
Screenshot №3 – Save pass
Let’s explain each of the items in this context:
- set superusers – sets the username to be considered superuser in the context of GRUB;
- username – this is the username for which you set the password;
- password_pbkdf2 – specifies that you should use PBKDF2 hash to verify the password;
- username is the username for which you set the password;
- grub.pbkdf2.sha512. is the password hash generated with grub-mkpasswd-pbkdf2. GRUB will compare the password entered by the user with this hash.
Then exit and save the file and compile the bootloader config from it:
```
sudo update-grub
```
Screenshot №4 – Update config
Restart the device and wait for the bootloader, then select one of the images:
Screenshot №5 – Check
Great, the password protection works and will not let you boot into the OS without knowing the bootloader password. As a result of executing these commands you should get a list of parameters of the requested objects. If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №6 — Create Server
## Conclusion
Setting a password on GRUB is an effective way to secure your system's bootloader from unauthorized access and potential tampering. By using grub-mkpasswd-pbkdf2 to generate a hashed password and updating the GRUB configuration, you ensure that only authorized users can modify boot parameters or access recovery images. This simple step enhances system security at a low level, protecting your operating systems and sensitive data from intruders. Once configured correctly, GRUB password protection works seamlessly without affecting normal boot operations.
## FAQ
- **Q1: Why should I set a password on GRUB?**
A: Setting a GRUB password prevents unauthorized users from editing boot parameters, loading alternative OS images, or accessing recovery modes, which could compromise system security.
- **Q2: Can I use any username for GRUB password protection?**
A: Yes, you can define any username as a superuser in GRUB. This username will be associated with the password used for authentication.
- **Q3: What happens if I forget the GRUB password?**
A: If you forget the password, you won't be able to access the bootloader options. In such cases, you may need physical access to the system to reset the password or edit the GRUB configuration from a live Linux environment.
- **Q4: Does this work on both MBR and GPT/UEFI systems?**
A: Yes, GRUB password protection works on both legacy BIOS/MBR systems and modern UEFI/GPT systems.
- **Q5: Is the password stored securely?**
A: Yes, the password is stored as a PBKDF2 hash in the GRUB configuration, which ensures it is not saved in plain text and is resistant to basic attacks.
https://serverspace.us/support/help/docker-container-what-is-it-and-how-to-manage-it.mdLearn what Docker containers are, how they work, and their benefits. Get step-by-step guidance on starting, managing, and optimizing containers for efficient workflow.
Docker is a great platform that has collected a lot of tools and libraries that allow you to create isolated spaces with applications/services. They are automatically deployed, allowing you without knowledge of the application operation, to use an out-of-the-box solution!
These spaces are also called Docker containers, due to their ability to isolate from the host, except for a common core and increased efficiency – they have become used to deploy services and other solutions. In this article let’s learn all about them, as well as practical examples of their use!
## How does a container work?
A Docker container is actually a limited process in the operating system to which a separate file system, network stack and PID have been attached. All of these components were virtually created within a single kernel and then added to the container process. The link diagram shows the components and the container process in purple, and the host objects in blue:
Screenshot №1 — Schema
With this scheme of interaction achieves a certain level of network and file isolation, except for the kernel, which is often exploited by hackers. Therefore, it is recommended to limit the area of interaction with the host machine as much as possible for such environments. For example, it is better to use virtual volumes for storing configs and other data. Because if you attach the host volume to the container, the virtual root will have the same rights to the files as the host!
## How to start and manage Docker containers?
Let’s look at some basic examples of using and working with a container. Let’s imagine that we have a ToR for deploying a Web application or any other service, but through Docker. For this purpose, we can use both a ready-made image or a cast of the system, which will deploy in our container, and write a Docker File ourselves. In this article we will consider the first case, the second case you can find in our detailed guide. Let’s pre-install all dependencies and necessary components with the command:
```bash
apt update && apt install docker.io docker-compose -y
```
Screenshot №2 — Installation
After that, let’s run the container with the docker run container command, where we also specify its basic parameters for operation:
```bash
docker run -d -p 8080:80 –name my_container -v data:/app/data nginx
```
Screenshot №3 — Docker run
After running the utility to create the container with the virtual environment port 80 forwarded to the host machine, as well as creating a virtual data volume to store the container data, the initialisation process was started. The image was not found on the device, so it was downloaded from the repository and deployed. To view the container, let’s write the command:
```bash
docker ps
```
Screenshot №4 — Docker process
There are two additional running containers on the device, here you can see their main characteristics and state at the moment. To execute the process docker connect to container or enter the container, we will write the command:
```bash
docker exec -it my_container /bin/bash
```
Screenshot №5 — Bash
Where docker exec is a utility and subcommand, -it is an option to interactively link our terminal and the process in the container, my_container is the name of the container, and /bin/bash is our running shell. Logically, we open a new process, the output of which is displayed in our terminal, so we work through it. To exit, we use the keyboard shortcut Ctrl+D or the exit command.
To terminate the running container, write the command:
```bash
docker stop my_container
```
And if you need to close all of them at once, write the one below. It will allow you to execute a function within itself, which will only return a list of IDs of all containers:
```bash
docker stop $(docker ps -q)
```
They are now in a stopped state, so they can be started back up with the docker run command.
You can remove them with the command below for a single container:
```bash
docker container remove my_container
```
And for all existing containers at once:
```bash
docker container remove $(docker container ls -a -q)
```
Screenshot №6 — Remove container
It will also allow you to run the function to enumerate them first, and then remove all those returned to the command. Also in the process you can view your container logs using the same docker logs command. These are redirected from this virtual environment to a file whose output can be filtered. For example to find the necessary lines with authentication to the container:
```bash
docker logs | grep 'SSH'
```
As a result of executing these commands you should get a list of parameters of the requested objects. If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №7 — Create Server
Let’s consider one of the latest features of Docker containers – docker container stats. To monitor the performance and viability of an existing application and service, Docker has a built-in solution:
```bash
docker container stats
```
Screenshot №8 — Docker statistic
From this we can estimate what is the disk occupancy, load in the virtual environment, so that we can add the necessary capacity or debug at the time. We have covered all the necessary basics of virtual environment management, this knowledge will allow you to manage your services and solutions more efficiently!
## Conclusion
Docker containers provide a lightweight and efficient way to isolate applications and services from the host system, while maintaining flexibility and portability. By understanding how containers work, using basic commands for starting, stopping, and managing them, and leveraging volumes for persistent data, you can deploy and maintain applications reliably. Monitoring container performance with built-in tools ensures that your services run smoothly. Mastering these basics allows you to fully utilize Docker for development, testing, or production environments.
## FAQ
- **Q1: What is a Docker container?**
A: A Docker container is an isolated environment that runs applications with its own filesystem, network, and process space, all while sharing the host kernel. It provides efficiency and portability without affecting the host system.
- **Q2: How do I start a Docker container?**
A: Use the docker run command with necessary parameters, such as image name, port mapping, container name, and volume mounts. Example:
```bash
docker run -d -p 8080:80 –name my_container -v data:/app/data nginx
```
- **Q3: How can I manage or access a running container?**
A: You can use docker ps to list containers and docker exec -it /bin/bash to enter a container interactively. Stop containers with docker stop and remove them with docker container remove.
- **Q4: How is data stored in Docker containers?**
A: By default, container data is ephemeral and lost after stopping the container. Use Docker volumes (e.g., -v data:/app/data) to persist data, or commit the container to a new image with docker container commit.
- **Q5: Can I monitor Docker container performance?**
A: Yes, Docker provides docker container stats to view CPU, memory, disk, and network usage for running containers, helping you optimize and debug applications.
https://serverspace.us/support/help/tcpdump-how-to-use-and-examples.mdLearn how to use Tcpdump for capturing and analyzing network traffic. Explore filters, commands, and practical examples, and understand how it compares with Wireshark for effective network monitoring.
When working with many different devices in an infrastructure, it is necessary to ensure their correct and secure functioning. One source of potential threats is network traffic, both external and internal. Without proper systems in place to analyse and monitor it, many attacks or system problems can go unnoticed or cause significant damage when working!
In this article, we will look at how to collect and more effectively analyse network traffic on a machine using the tcpdump + wireshark toolkit on Linux and Windows.
## How is traffic sniffing done?
To sniff or intercept network connections on a device, tcpdump uses the sniffing technique. In which, the pcap library accesses the network adapter driver to gather information about the connections. After all, it is in the buffer used by the driver that the original and unchanged network packets are found!
Screenshot №1 – Schema
And Wireshark in this connection can additionally analyse them and provide analytics for each of them, as well as provide a convenient panel for searching and filtering the necessary connections!
## Collecting and analysing network traffic
Let’s determine the layout of our infrastructure and the machines from which we will intercept connections:
- For networks where we need to collect from servers we will use tcpdump, it will generate a pcap file and send it to the working machine where Wireshark is installed for analytics;
- If we collect traffic from a user’s work machine, we can immediately perform analytics on it using only Wireshark.
We will need only the standard set of distribution packages and additionally installed tcpdump, Wireshark.
In most cases it is already there, however, you can install it with the Linux command for deb-like systems:
```bash
apt update && apt install tcpdump wireshark -y
```
For rpm-like solutions, the command will look like this:
```bash
dnf install tcpdump wireshark -y
```
Let’s look at the main features and examples of using tcpdump: filters, options and modes of operation. Let’s define a pool of interfaces:
```
ip a
```
Screenshot №2 – List of ip
In order to intercept traffic from a specific interface, let’s specify the -i option:
```
sudo tcpdump -i enp0s5
```
Screenshot №3 – Raw traffic
There is a lot of traffic and the output on the screen will be just as voluminous, so it is almost impossible to analyse almost anything in this view. Let’s specify with the -w option the file to which we will record, as well as filters to search for a specific connection:
- port – Filtering by port (for example, port 80);
- host – Filtering by IP address or host name (for example, host 192.168.1.1);
- src – Filtering by source address (e.g., src 192.168.1.1);
- dst – Filtering by destination address (e.g., dst 192.168.1.2);
- tcp – TCP packet filtering;
- udp – Packet filtering by UDP protocol;
- icmp – ICMP packet filtering.
All these filters must be linked by the operators:
- AND;
- OR;
- NOT.
For example, I am interested in my SSH connection, hence the command will look like this:
```
tcpdump -i enp0s5 host tcp port 22
```
Screenshot №4 – Filtering
Instead of a thousand packets, there are already a few! But sometimes we need all the traffic to analyse the picture, so we record it from all interfaces with the command with the option -i any, where any is a pseudo-interface that listens to traffic from all sources. To view the recorded traffic on the same machine we open the command:
```
tcpdump -r /path-to-file
```
Screenshot №5 – Read traffic
We can then open it via WireShark by passing the file to the primary device:
Screenshot №6 – Read traffic in Wireshark
The filters on Wireshark have the same filtering logic where we specify:
```
((!(ip.addr == 46.191.184.42)) && !(ip.addr == 172.23.0.2)) && !(ip.addr == 172.23.0.3)
```
It is important that each of the expressions be in separate brackets! To view the payload in Wireshark software, select the desired packet, and for tcpdump, add the -A option when reading it:
```
tcpdump -A -r /path-to-file
```
Screenshot №7 – Read traffic information
In a similar way, you can check for connectivity to different devices and the information they are transmitting. Intruders often modify packets or protocol algorithms, this formulations allows you to identify this immediately! In that article, we learned how to utilize packet analyzer or network packet capture tools!
As a result of executing these commands you should get a list of parameters of the requested objects. If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №9 — Create Server
## Conclusion
Using tcpdump and Wireshark together provides a powerful toolkit for capturing, analysing, and monitoring network traffic. Tcpdump is ideal for server-side packet collection, creating pcap files, while Wireshark offers advanced filtering, visualization, and payload inspection on workstations. By applying filters, recording traffic, and reviewing captured data, you can quickly identify anomalies, troubleshoot network issues, and enhance security. Mastering these tools is essential for network administrators, security professionals, and anyone responsible for maintaining reliable infrastructure.
## FAQ
- **Q1: What is the difference between tcpdump and Wireshark?**
A: Tcpdump is a command-line tool for capturing network packets, suitable for servers and scripting. Wireshark is a graphical tool for analysing packet captures with advanced filtering and visualization capabilities.
- **Q2: How do I capture traffic from a specific network interface?**
A: Use the -i option with tcpdump, for example:
```
sudo tcpdump -i enp0s5
```
For all interfaces, use -i any.
- **Q3: How can I filter traffic by port, host, or protocol?**
A: Tcpdump supports filters such as:
**port 80** – filter by port
**host 192.168.1.1** – filter by host
**tcp, udp, icmp** – filter by protocol
Combine them with AND, OR, NOT.
- **Q4: Can I analyse tcpdump captures in Wireshark?**
A: Yes. Save tcpdump output to a .pcap file using -w and open it in Wireshark for detailed analysis and visual filtering.
- **Q5: How do I view packet payloads in tcpdump?**
A: Use the -A option when reading a capture file:
```
tcpdump -A -r /path-to-file
```
- **Q6: Are there best practices for secure packet capture?**
A: Yes. Limit access to capture files, avoid exposing sensitive data, and use isolated environments or cloud servers for heavy traffic analysis to prevent affecting host performance.
https://serverspace.us/support/glossary/resolv.mdLearn what resolv is in the context of DNS, learn the basic aspects and how resolv works, how to use and solve some errors with resolv
In the context of DNS, the term resolv refers to the process of domain name resolution (DNS resolution)—the conversion of a human-readable domain name (e.g., example.com) into an IP address (e.g., 93.184.216.34) required to establish a network connection.
## Key Aspects of Resolv in DNS
File `/etc/resolv.conf` This is a configuration file used in UNIX-like systems to specify DNS resolution parameters.
## What Does the File Contain?
The file stores a list of DNS servers that the operating system uses to convert domain names into IP addresses. Example file content:
```
nameserver 8.8.8.8 nameserver 8.8.4.4 search localdomain
```
Where:
- **nameserver** specifies the IP address of the DNS server.
- **search** defines domains to automatically append to queries.
## How DNS Resolving Works
The process works as follows:
When a user types a domain name (e.g., example.com) into a browser, the operating system first looks for a corresponding entry in the local cache (e.g., /etc/hosts). If the desired record isn't found there, the system forwards the query to the DNS servers specified in the resolv.conf file. These DNS servers respond with the IP address associated with the requested domain.
## Managing and Setting Up /etc/resolv.conf
**How to Change the DNS Server?** You can edit the file manually:
```
sudo nano /etc/resolv.conf
```
Add, for example:
```
nameserver 1.1.1.1 nameserver 8.8.8.8
```
These are Cloudflare and Google DNS servers.
## Automatic File Management
In some systems, the file is managed automatically through:
- DHCP clients (e.g., dhclient).
- Network managers (e.g., NetworkManager).
To prevent changes, you can make the file read-only:
```
sudo chattr +i /etc/resolv.conf
```
Commands for checking resolution:
Basic DNS query:
```
nslookup example.com
```
Detailed query:
```
dig example.com
```
## Problems and Solutions
## DNS Is Not Working. What to Do?
Verify the resolv.conf file to confirm it lists active and functioning DNS servers. Opt for dependable options, such as:
- Google DNS: 8.8.8.8, 8.8.4.4
- Cloudflare DNS: 1.1.1.1, 1.0.0.1
- OpenDNS: 208.67.222.222, 208.67.220.220
## The resolv.conf File Keeps Resetting
This may be caused by:
- DHCP.
- NetworkManager or another network manager.
**Solution:**
- Disable automatic updates.
- Configure DNS through DHCP or NetworkManager settings.
## Delays in Domain Resolution
- Ensure fast DNS servers are specified.
- Set up a local caching DNS server, such as dnsmasq or unbound.
## FAQ
### How to Check Current DNS Settings?
Use the command:
```
cat /etc/resolv.conf
```
### Can I Use Multiple Nameservers?
Yes, the system queries the servers in the order listed.
### What Is the Search Parameter in resolv.conf?
It adds a specified domain to the query. For example:
If search example.com is specified, a query for host1 becomes host1.example.com.
### What to Do if I Am Behind NAT and DNS Is Not Responding?
Check your router settings or use public DNS servers.
### What Are Alternatives to DNS Servers?
You can use local caching resolvers or built-in DNS services such as systemd-resolved.
https://serverspace.us/support/glossary/scalability.mdLearn what scalability is, basic aspects of scalability, why it is needed, examples of scalability and its challenges
## What is Scalability?
**Scalability** is the ability of a system, network, or application to adapt to changes in workload (either increasing or decreasing) without losing performance or functionality. It is a key characteristic in IT that defines how well the infrastructure or software can handle growing demands, such as an increase in the number of users, data volume, or the number of requests.
## Types of Scalability
- **Horizontal Scaling:**
Adding new nodes to the system, such as additional servers or virtual machines. This is a popular approach in cloud computing and modern distributed systems.
Example: increasing the number of servers in a web cluster.
- **Vertical Scaling:**
Increasing the performance of existing hardware, such as adding more memory, CPU power, or storage to a server.
Example: upgrading from an 8-core processor to a 16-core processor.
## Key Aspects of Scalability
- **Throughput:**
The system must maintain or increase the processing speed of requests as the load increases.
- **Resource Management:**
Effective use of new resources after they are added is a key factor for successful scalability.
- **Cost Efficiency:**
The costs of scaling should be justified by business outcomes, and the addition of resources should be as efficient as possible.
- **Fault Tolerance:**
The system must remain stable during sudden increases or decreases in load.
## Why is Scalability Important?
- **Business Growth:**
As the number of users or requests increases, the system must be ready to handle them without failures.
- **Peak Load Resilience:**
Scalability helps to manage temporary spikes in load, such as seasonal sales or high-activity events.
- **Cost Savings:**
With scalability, resources can be added as needed, avoiding excessive costs.
- **Competitiveness:**
Scalable systems provide the flexibility required to quickly implement new features or adapt to changing requirements.
## Examples of Scalable Systems
- **Microservices Architecture:**
In microservices, each application is divided into small, independent modules that can be scaled separately.
- **Databases**:
Modern databases, such as MongoDB and Cassandra, offer horizontal scaling capabilities by adding nodes to handle large amounts of data.
- **Containerization**:
Tools like Docker and Kubernetes allow for quick scaling of applications by deploying additional containers.
## Scalability Issues
- **Management Complexity:**
Increasing the number of nodes or resources may require complex orchestration systems.
- **Latency:**
Scaling distributed systems can increase network latency between nodes.
- **Costs:**
An incorrect scaling strategy can lead to overspending on infrastructure.
- **Compatibility:**
The system must be designed with scalability in mind from the start; not all legacy systems support efficient scaling.
## Conclusion
Scalability is a fundamental characteristic of modern IT systems, ensuring their long-term efficiency and ability to adapt to changing conditions. The success of a business, especially in the era of digital transformation, depends on a well-designed scalable architecture, as the growth of workloads and data volumes becomes the norm.
https://serverspace.us/support/glossary/authentication.mdLearn what authentication is, types of authentication, current trends in authentication and why you need it
**Authentication** is the procedure of confirming the identity of a user or system to ensure they are who they say they are. In the context of information security, authentication restricts access to resources, data, or applications to only authorized users. It is the initial step in access control, typically followed by authorization and activity monitoring..
## Types of Authentication
- **Single-Factor Authentication (SFA):**
A user verifies their identity using a single element.
Example: Entering a password.
- **Multi-Factor Authentication (MFA):**
Employs two or more factors to enhance security.
Example: A password combined with a one-time code from a mobile app.
- **Biometric Authentication:**
Identifies a user through unique physical or behavioral traits.
Example: Facial recognition or fingerprint scanning.
- **Token-Based Authentication:**
A user receives a temporary token (via an app or hardware device) to verify access.
Example: Using Google Authenticator to generate a code.
- **Single Sign-On (SSO):**
A technology allowing a user to log in to multiple systems or applications with a single account.
Example: Logging into a corporate network and automatically gaining access to internal resources.
- **Passwordless Authentication:**
Uses alternative methods, such as biometrics or one-time codes, instead of traditional passwords.
Example: Logging in to a laptop via fingerprint scanning.
## Why Authentication is Important
- **Ensuring Security:**
Prevents unauthorized access to data and resources.
- **Access Control:**
Enables organizations to assign and regulate access levels for different user categories.
- **Improving User Experience:**
Modern methods like SSO or biometrics make login processes more convenient.
- **Compliance with Standards:**
Authentication is a mandatory measure under most information security standards, including GDPR, ISO/IEC 27001, and PCI DSS.
## Challenges in Authentication
- **Weak Passwords:**
Users often choose simple or identical passwords for different systems, making them vulnerable.
- **Phishing Attacks:**
Attempts to steal passwords through fake websites or emails.
- **Device Loss:**
Losing a mobile phone or token can compromise security.
- **Biometric Risks:**
While difficult to forge, biometric data breaches are serious since they are immutable.
Modern Trends in Authentication
- **Passwordless Authentication:**
Gaining popularity due to its convenience and security.
- **Machine Learning and Artificial Intelligence:**
Leveraging AI to analyze user behavior and detect suspicious activities.
- **Context-Based Authentication:**
Verifying identity based on context, such as location or the device used.
- **Blockchain:**
Using decentralized identification technologies for more secure authentication management.
## Conclusion
Authentication is the foundation of digital security. Modern methods like multi-factor authentication and biometrics significantly enhance protection levels. However, as technologies evolve, continuous updates to authentication approaches are essential to counter emerging threats while maintaining user convenience.
https://serverspace.us/support/glossary/tty-teletype.mdLearn what TTY (Teletype) is, history, modern meaning, variations, examples of usage and relationship between terminal linux and tty.
## What is TTY (Teletype)?
TTY (Teletype) is a term that originated from old teletype machines used for input and output of text information. In modern operating systems, TTY refers to text-based terminals or command-line interfaces that allow interaction with the system through textual commands.
## History of TTY
Originally, teletypes (teletypewriters) were electromechanical devices used for sending and receiving text messages over wired networks. They played a crucial role in early computing systems, enabling operators to communicate with computers.
With the advent of Unix operating systems, the term “TTY” began to refer to terminal interfaces. Although physical teletypes are no longer in use, the concept has persisted: a terminal provides a text-based interface for communicating with the system.
## Modern Meaning of TTY
Today, in Unix-like operating systems such as Linux, TTY represents virtual terminal devices. Each TTY provides an interface where users can input commands, launch programs, manage files, and perform various tasks.
## Virtual Terminals
Linux offers several virtual terminals (typically tty1 through tty6), which can be accessed using key combinations such as:
- Ctrl + Alt + F1 for tty1Ctrl + Alt + F2 for tty2, and so on.
- Graphical environments generally use tty7 or higher.
## Uses of TTY
- **System Administration:**
TTY provides an interface for managing the system, especially in cases where the graphical interface is unavailable.
- **Programs and Processes:**
Commands can be executed, and processes managed, using shell environments such as bash.
- **Diagnostics**:
If there are problems with the graphical environment, users can switch to a virtual terminal to diagnose and resolve the issue.
## Common Commands
**tty**: Shows the terminal device that is currently active. For instance, the output could be:
```
/dev/tty1
```
**stty**: Used to modify terminal settings, such as baud rate or keyboard behavior.
## Types of TTY in Linux
- **Physical Terminals:**
Real hardware devices such as keyboards and screens.
- **Virtual Terminals:**
Virtual text consoles accessible from the keyboard.
- **Pseudo-Terminals (PTY):**
Interfaces used in graphical terminal applications like gnome-terminal or xterm, simulating the behavior of physical terminals.
## TTY and Terminal in Linux
- **Terminal and TTY:**
A Linux terminal uses TTY as the mechanism for interacting with the operating system. When you open a terminal (e.g., GNOME Terminal, Konsole, or a command-line session on tty1, tty2, etc.), you are effectively using a TTY to transmit commands and receive output.
- **Virtual Consoles:**
Linux provides several virtual terminals displayed as TTY devices. You can switch between them using Ctrl + Alt + F1, Ctrl + Alt + F2, and so on. Each terminal operates independently, allowing multiple command-line sessions.
## Example Usage
In a graphical environment, you can open a terminal and enter the command tty to determine which device the active terminal session is linked to. This is helpful for managing tasks, debugging, or executing programs through the command line.
## Frequently Asked Questions (FAQ)
- **What is the difference between TTY and PTY?**
TTY (Teletype): Refers to physical or virtual text consoles directly interacting with the operating system.PTY (Pseudo-Terminal): Simulates the behavior of a physical terminal, commonly used in graphical terminal applications like xterm or gnome-terminal.
- **How many virtual terminals can Linux provide?**
Most Linux distributions, by default, provide six virtual terminals (tty1 to tty6) for text-based operations. Additional terminals can be configured if required.
- **What happens if I switch to a virtual terminal while using a graphical session?**
Switching to a virtual terminal (Ctrl + Alt + F1) takes you out of the graphical session. You can return to it by switching back to the corresponding TTY (usually tty7 or higher).
- **Can I use TTY remotely?**
Yes, you can use tools like SSH to connect to a remote system and access its TTY interface.
- **How do I exit a TTY session?**
You can log out of a TTY session by typing logout or pressing Ctrl + D.
## Conclusion
TTY remains a fundamental component of Unix-like systems, offering a reliable and straightforward way to manage and interact with a computer at the command-line level. Whether for diagnostics, administration, or running programs, TTY serves as a versatile and essential tool in modern computing. The added FAQs address common questions, making the concept clearer and more accessible for both beginners and advanced users
https://serverspace.us/about/news/wishing-you-a-pleasant-flight-to-2025.mdHappy holidays! We are sure you behaved well and deserved a present.
**Beards aren't our style, but we didn't forget to prepare a personal gift for you — spin the Serverspace Wheel of Fortune and get it!**
Serverspace launches a holiday game promo. We invite new users to take part in the Christmas wheel of fortune. The prizes are profitable offers from cashback to a whole year of free VPS! Spin the wheel and see what you get!
**How to play?**
- Enter your email address in the form to the left of "Spin the Wheel" to make the button active.
- Click the "Spin the Wheel" button and see the winnings.
- Check your email – the prize is already there.
Conditions of the Christmas promotion:
- Wheel of Fortune is only available to new users who created an account for the first time during the promotion period.
- The Christmas wheel of Fortune is running from 12/18/24 to 12/28/24.
- Prize promo codes are valid only during The Christmas wheel of Fortune period.
- For prizes with bonus dollars: bonus dollars are credited to the balance when depositing $ 4.99 or more.
- Bonus dollars are credited only to 1 project which is created automatically upon registration.
We didn’t forget our existing users – Christmas gifts are already waiting for you in the control panel. Check it to clarify the terms and conditions of receipt.
**Warmest wishes for a joyful holiday season,**
**Serverspace team**
https://serverspace.us/about/news/merry-christmas-from-serverspace.mdWishing you a wonderful holiday season, dear users! Here's what we've been up to all year.
**Dear Serverspace Users,**
We wish you a Merry Christmas 2024!
2024 was a year of big changes for us, and it was all made possible because of you.
We're proud to share that this year, Serverspace expanded to 7 countries, adding new capacities to our data centers in [Brazil](https://serverspace.us/about/news/data-center-in-brazil.md) and [the UAE](https://serverspace.us/about/news/new-data-center-in-the-uae-equinix-dx1.md).
We also introduced exciting features that made our services even more convenient and powerful:
- [Video on Demand](https://serverspace.us/services/video-on-demand-vod.md) – Instant real-time content delivery.
- [GPT API](https://serverspace.us/services/serverspace-gpt-api.md) – Game-changing AI tools for developers.
and much more!
Thank you for choosing Serverspace. Your trust inspires us to keep innovating, improving our services, and creating solutions to meet your needs.
In 2025, we promise even more innovation, speed, and opportunities to help your business grow. May the New Year bring you success, stability, and positive changes!
Serverspace Team
https://serverspace.us/support/glossary/auditd.mdLearn how to configure and use AuditD in Linux to monitor system events, audit file access, and improve security. Detailed guide with examples and FAQs
In the modern world of information security, one of the key elements of protection is the monitoring and auditing of system events. In the Linux operating system, a powerful tool for this purpose exists—AuditD (Audit Daemon). This software allows you to track system activities and log events, making it indispensable for system administrators and security specialists.
In this article, we will explore what AuditD is, its main capabilities, applications, and configuration.
## What is AuditD?
AuditD is a background service in Linux designed to manage audit logs. Its main function is to gather and document information about different system events, including file access attempts, configuration modifications, system call executions, and other activities.
AuditD consists of two main components:
- Auditd daemon: Handles processing and writing events to the log.
- Management tools: A set of commands like auditctl and ausearch used for configuration and event analysis.
## AuditD Capabilities
AuditD provides extensive functionality for monitoring the system:
- File access auditing: Tracks reading, writing, deletion, or modification of files.
- Privilege control: Logs actions performed by users with elevated privileges.
- System call tracking: Records information about API calls, such as opening files or executing processes.
- Network auditing: Monitors operations related to network connections.
- Authentication logging: Registers successful and failed login attempts.
## Example Use Case
If suspicious attempts are made to modify configuration files in the system, AuditD can quickly help identify the source of the issue, showing which user and which process initiated the action.
## Configuring AuditD
To get started with AuditD, the package must be installed. On most Linux distributions, this can be done through the standard package manager, for example:
sudo apt install auditd
After installation, the daemon starts automatically. The main AuditD settings are defined in the configuration file /etc/audit/auditd.conf . Here, you can specify:
- Maximum log size ( max_log_file ).
- Log rotation policy ( log_file_action ).
- Actions upon log overflow ( space_left_action ).
## Creating Audit Rules
To specify which events need to be recorded, audit rules are utilized. These rules can either be configured using the auditctl command or defined in the file
Example rule:
```
-a always,exit -F arch=b64 -S open -F dir=/etc -F perm=wa -k
```
This rule tracks file write and append operations in the /etc directory, which is useful for protecting configuration files.
## Event Analysis
The ausearch utility is used to analyze logged events. It allows filtering logs by various criteria such as time, user, or keywords.
Example command:
[ocde]ausearch -k[/code]
This command displays all events associated with a specific key.
Additionally, the aureport tool can be used to generate reports by aggregating log data and presenting it in a user-friendly format.
## AQ
- **Which systems support AuditD?**
AuditD is available on most modern Linux distributions, including Ubuntu, CentOS, Fedora, and Debian.
- **How can I check if AuditD is running?**
Use the command sudo systemctl status auditd . If the service is active, you will see the status “active (running)”.
- **Can notifications be configured for events?**
Yes, notifications can be set up through configurations like space_left_action or by integrating with external monitoring systems.
- **What are the alternatives to AuditD?**
Alternatives include AppArmor, SELinux, and other tools that provide access control and monitoring.
## Conclusion
AuditD is a powerful tool for monitoring and auditing system events in Linux. Its use not only enhances system security but also simplifies incident analysis. Regular configuration of audit rules and log analysis helps minimize risks and respond promptly to threats.
By mastering AuditD, system administrators gain a means of deep control over the system and ensure compliance with information security requirements.
## AuditD and Serverspace
If you’re interested in learning more about Linux and diving deeper into its functionality, the [Serverspace Tutorials](https://serverspace.us/support.md) provide an excellent resource. These tutorials cover a wide range of topics, including detailed guides on setting up, configuring, and optimizing tools like AuditD. Whether you’re a beginner or an experienced system administrator, Serverspace offers practical how-to guides that can help you enhance your Linux skills. From installation instructions to advanced configurations, their tutorials make it easier to understand and effectively use Linux tools in real-world scenarios.
https://serverspace.us/support/help/linux-user-rights-flexible-and-simple.mdLearn how to manage user rights in Linux with simple and flexible access control methods. Discover tips for setting permissions, securing files, and managing user roles effectively.
In Linux-like systems there are many security mechanisms that allow to authenticate the user, to delimit the working environment, to filter system events or network packets at the lower and upper levels. One of them solves issues related to the distribution of rights between users of the same OS – the mechanism of access rights differentiation. There are many different variants of their implementation, however, in Linux and Windows, by default, DAC is used.
If this combination of symbols is still unclear to you, we will understand it in more detail below in the article. We will also consider a rather simple way of setting it up.
## What is DAC and how do I set it up?
In order to effectively differentiate user rights, three basic models have been developed that define the possibility of access from subjects (users) to objects (files): DAC, MAC, RBAC.
DAC or discretionary access rights delimitation is a mechanism in which file attributes and user rights define the delimitation rules. It can be represented as a matrix, where sub-objects and objects are displayed in rows and columns respectively. And in their intersections are defined the rights that users have with respect to a particular file.
Screenshot №1 — DAC matrix
In practice, it works as follows. When a file is created, it is assigned basic attributes that are written in addition to the file’s meta-data: owner, owner’s group, as well as rights for these categories and other users.
Screenshot №2 — Meta data of common file
The screenshot shows rwx triplets, which just define access categories for the owner, its group and others. In the process of requesting a file, the rights of the subobject and the object are compared, if the user has access, the kernel will perform an action on the file, otherwise it will deny the access.
However, you may wonder, what if three categories are not enough for you? For example, you have contractors that perform tasks on your infrastructure. And instead of 32 files that users in the owner group have access to, you need to provide access to 3. What to do? Most Linux distributions have ACL lists. These are designed to grant rights by name, minimising the disadvantage of granting rights to a group of users.
Screenshot №3 — Extended DAC
To work with this solution you need to install the packages, for most systems they are already in the standard repositories:
```bash
apt update && apt install acl -y
```
For rpm-like systems you can use another command:
```bash
dnf install acl -y
```
Screenshot №4 — ACL installation
After that, file attributes will be managed by two basic commands getfacl and setfacl. Let’s create any file and view its permissions.
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №5 — Create Server
To do this, we use the && operand, which will allow us to execute two commands at once instead of one:
```
touch 1.txt && getfacl 1.txt
```
Screenshot №6 — Default meta-data
The file contains classic permissions for the standard 3 user groups. But if you write a command with stefacl options, you can add both an individual user and the whole non-owner group.
```
setfacl -m group:users:rwx 1.txt
```
Screenshot №7 — New attribute
The syntax is a set of commands to invoke a utility with options:
- setfacl – a utility to set attributes to a file;
- -m – option specifying the functions to be used when working with the file;
- group – the type of the subject to which the rights are granted;
- users – name of the subobject type, in this case the name of the group;
- rwx – permissions to be granted to the sub-object;
- 1.txt – name of the file for issuing attributes.
Now it contains both standard permissions and a custom one for users of the users group, where they can access the file with full permissions. We may have overreacted by giving full permissions. Let’s remove one or all of the new rules.
```
setfacl -x group:users 1.txt
```
Screenshot №8 — Delete one attribute
If there is a need to remove all permissions, we will use the command – it will reset all previously entered ACL rules:
```
setfacl -b 1.txt
```
This works in a similar way with directories, except that the syntax is slightly modified. The d option is specified first, followed by the same rule with the path.
```
setfacl -m d:u:koldek:rwx ~/
```
Screenshot №8 — Create recursively attribute
Now the root directory can be accessed not only by root, but also by the user koldek. Of course, you shouldn’t do it this way, but it’s good for demonstration purposes. And if you need to recursively change permissions for the directory and all subfolders, you can change permissions recursively:
```
setfacl -r -m d:u:koldek:rwx ~/
```
However, this advanced DAC mechanism has its disadvantages, since not all distributions have the ACL module pre-installed, the new attributes will not be read. The same goes for transmission media, not all distributions have the ability to package the necessary labels. There may be problems with indexing, when searching for files, because ACL gives additional load and is slower than standard discretionary lists.
It is up to you whether you use it on your system or not, but this flexible tool adds great functionality to your existing discretionary control mechanism.
## Conclusion
Managing user rights in Linux is essential for maintaining system security and ensuring proper access control. The Discretionary Access Control (DAC) model provides a simple yet effective way to manage file permissions through owner, group, and other categories. For more granular control, Access Control Lists (ACLs) allow assigning permissions to individual users or specific groups, adding flexibility and minimizing over-permissioning. While ACLs can introduce slight overhead and compatibility considerations, they offer a powerful tool for complex environments, enabling administrators to fine-tune access to files and directories without compromising security.
## FAQ
- **Q1: What is the difference between DAC, MAC, and RBAC in Linux?**
A: DAC (Discretionary Access Control) allows owners to set file permissions for themselves and others. MAC (Mandatory Access Control) enforces strict security policies controlled by the system, not the user. RBAC (Role-Based Access Control) assigns permissions based on roles rather than individual users.
- **Q2: How can I check current permissions on a file or directory?**
A: You can use the ls -l command for basic permissions or getfacl to view ACLs if they are enabled.
- **Q3: How do I assign permissions to a specific user with ACL?**
A: Use the setfacl command. Example:
```
setfacl -m u:username:rwx file.txt
```
This grants read, write, and execute permissions to the user username.
- **Q4: How do I remove specific ACL permissions or all ACLs from a file?**
A: Remove specific ACL:
```
setfacl -x u:username file.txt
```
Remove all ACLs:
```
setfacl -b file.txt
```
- **Q5: Can ACLs be applied recursively to directories?**
A: Yes, use the -R option:
```
setfacl -R -m d:u:username:rwx /path/to/directory
```
This applies the ACL to the directory and all its subfolders.
- **Q6: Are there any drawbacks to using ACLs?**
A: ACLs may not be supported on all distributions or file systems, can slow down file indexing, and increase system complexity. Use them when finer control is required.
- **Q7: Do ACLs replace standard DAC permissions?**
A: No, ACLs supplement DAC, providing additional granularity. Standard owner/group/other permissions still apply alongside ACLs.
https://serverspace.us/support/help/windows-dhcp-how-to-configure-quickly.mdLearn how to quickly configure Windows DHCP server for automated IP assignment. Step-by-step instructions, best practices for managing IP addresses, and tips to improve network efficiency.
In networks, there are two main ways in which an IP address can be assigned to a device: static and automatic configuration. This is an important step because it is where the device identifies itself to other devices on the network by comparing its mask to its IP address. This is how the machine knows what network it is on and understands how to address other devices within its network and beyond.
To avoid the administrator having to run through all the devices every time, the DHCP service was implemented to automate the process. However, it has its own nuances, but let’s talk about everything in order.
## What is DHCP?
**DHCP** or **Dynamic Host Configuration Protocol** is a service that allows you to automatically assign IP addresses and other network configuration attributes to machines on a predetermined subnet. It works quite simply, a client without network settings sends a broadcast packet within its environment with IP address 0.0.0.0.0. After that, the first server that received this packet sends its response with an offerer.
Screenshot №1 — Schema of work
Where it offers to occupy the provided IP address and other network settings, then the client accepts and sends a DHCP confirmation. And the server makes a record that the device has leased it for a period of time, after the expiry of the lease period the address can be extended. The main problem in this case is the possibility of unauthorised server spoofing with Mitm attack or difficulties in network segmentation. It is necessary for the DHCP server to have access to all network environments, which is a threat.
Okay, how do you configure it though? Let’s do a quick step-by-step breakdown.
## How do I quickly set up DHCP?
We will configure it on Windows Server, unfortunately, many infrastructure services are not available on regular client versions of the OS, so the choice is limited. Let’s go to the search tab or press the Win command key where we enter 'Server Management' and launch the utility.
Screenshot №2 — Search manager
After that a window with settings of the current server will be opened, you need to select Manage -> Add Roles and Features in the upper right corner:
Screenshot №3 — Add Role
Select the server you want in the Server Selection tab and go below to the DHCP configuration roles:
Screenshot №4 — Choose server
Then select DHCP from the list of roles that appears and confirm the installation action. To do this, select Add Features:
Screenshot №5 — Installation of role
Start the installation process by clicking the Install button and wait for the result of the service:
Screenshot №6 — Finish installation
Right-click on the DHCP pad and select Go to DHCP. Repeat the action by clicking on the server bar and select DHCP Manager:
Screenshot №7 — DHCP manager
Select the IPv4 line and right-click, select New Scope in the context menu. Configure the corresponding address pool:
Screenshot №8 — Pool of IP’s
As exceptions to the pool, you can select a range of addresses that will not be issued on demand:
Screenshot №9 — Exception
For example, it will be perfect for excluding the pool of static addresses of services, this setting will help to avoid collisions with packets. The next item will be router settings, DNS and Wins server settings, if necessary:
Screenshot №10 — Settings
Select the desired Scope and right-click to open the menu, where we select the option to activate the Scope.
Screenshot №11 — Main menu
Great! Now the DHCP server is configured and provides the service to clients, to disable it open the required menu and select Deactivate Scope. If the service is no longer needed at all, you can also delete the role through the Server Manager panel.
## Conclusion
Setting up a DHCP server in Windows simplifies network management by automating IP address assignment and related configurations. By following a structured setup – from installing the DHCP role to creating and activating scopes – administrators can ensure devices receive correct network settings without manual intervention. Proper configuration, including defining address pools, exceptions, and DNS/router settings, minimizes conflicts and enhances overall network efficiency. Regular monitoring and updates further help maintain security and stability of your DHCP infrastructure.
## FAQ
- **Q1: What is the difference between static and dynamic IP addressing?**
A1: Static IP addresses are manually assigned to devices and remain constant, while dynamic IP addresses are automatically assigned by a DHCP server for a limited lease period, allowing easier network management.
- **Q2: Can I configure DHCP on a Windows client OS?**
A2: No, DHCP server functionality is only available on Windows Server editions. Client versions can act as DHCP clients but cannot serve IP addresses to other devices.
- **Q3: What is a DHCP scope?**
A3: A DHCP scope is a range of IP addresses that the DHCP server can assign to clients. You can also define exceptions within the scope for static IPs to avoid conflicts.
- **Q4: How do I prevent IP conflicts on my network?**
A4: Configure exceptions for static addresses, carefully define the DHCP address pool, and monitor leases to avoid overlapping assignments.
- **Q5: Can DHCP be a security risk?**
A5: Yes, if unauthorized DHCP servers appear on the network, they can perform spoofing or MitM attacks. Always secure your network segments and monitor DHCP activity.
- **Q6: How do I disable or remove DHCP if it's no longer needed?**
A6: You can deactivate a specific scope in DHCP Manager or remove the DHCP server role entirely via Server Manager.
https://serverspace.us/support/help/pluggable-authentication-module.mdLearn how to use Pluggable Authentication Module (PAM) in Linux. Step-by-step guide on configuring authentication modules, managing user access, and securing your system with flexible authentication methods.
Linux provides many basic security mechanisms that allow you to ensure the confidentiality, integrity, and availability of data on your device. Authentication, logging, authorisation, network filtering, virtual environments, encryption and many other subsystems can be managed by tools from the user space.
So a handy PAM or Pluggable Authentication Module solution allows you to aggregate authentication providers and provide their APIs to applications. For example, almost all system utilities for user authentication interact with PAM. How to configure it and why you should use 2FA – let’s study it in this article.
## What is PAM?
PAM or Pluggable Authentication Module is a service that aggregates different authentication providers and allows you to verify users. It is neither a raised service nor a kernel module, but a library stored in system paths that applications call themselves. This means that authentication via PAM is not possible without calling it, make sure your application uses PAM!
Typically the workflow is as follows:
Screenshot №1 — Schema of work
When connecting via ssh, the user connection is handled by the sshd daemon. Having identified the user it is necessary to authenticate the user, for this ssh uses its own validation mechanisms and connects the authentication library to this. PAM starts looking for the necessary script for sshd and finds echo at /etc/pam.d/sshd. After reading the necessary parameters, accesses the libraries to authenticate the user data and returns to sshd. Either authenticated with such a UID, GID.
Many utilities and software work according to the same scheme, when instead of writing their own authentication they simply refer to PAM, where the script is already written. Let’s see an example of how to set up such authentication and add a second factor!
## How do I configure PAM to work?
For example, let’s take the same service sshd and configure for it authentication by keys + by TOTP codes. TOTP or time-based passwords are tied to the time, owning a master key the current time is converted into a 6-digit code. It is calculated both on the client and server side, which allows authentication by the code that changes every 30 seconds.
To start with, let’s install all the necessary dependencies, these are the module for authentication google_authentificator and the network time service.
```bash
apt update && apt install ntp libpam-google-authenticator
```
Screenshot №2 — Installation process
Let’s configure the server time so that it coincides with the time of our client, where we will install the application. Let’s start the NTP service and check its operability:
```bash
sudo systemctl start ntpd && sudo systemctl status ntpd
```
Screenshot №3 — NTP service
If you want to change the server pools that will be responsible for time synchronisation, you need to go to the config:
```
nano /etc/ntpsec/ntp.conf
```
Screenshot №4 — NTP configuration
Replace the submitted server pools, then reread the configs for the services and check if the time sources are available:
```bash
systemctl daemon-reload && echo "peer" | ntpq
```
Screenshot №5 — NTP peers
Great, the NTP client configuration is complete, you can also optionally specify a time zone. However, this does not affect the operation of TOTP as it takes the minutes and seconds information to generate the time code. Let’s move on to configuring google_authentificator:
```
google-authenticator
```
Screenshot №6 — QR code
We answer yes to the question about using time to create the code and scan the qr or enter the code into a pre-downloaded app from AppStore or GooglePlay with the same name Google Authenticator. Below the QR line requires you to enter the time code from your phone to make sure the master key in the QR is correct. And then you can answer yes to all other questions and service options. And finally let’s get to the PAM itself!
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №7 — Create Server
The first thing PAM does is to look up the script for the utility, so let’s move to it along the path:
```
nano /etc/pam.d/sshd
```
The logic of the work is that PAM goes through each action from top to bottom on each line and performs according to the modules checks. To understand the structure of the file, let’s quickly analyse the main components, first of all the types of modules used:
- **auth** – module for authentication;
- **account** – module for authorisation;
- **session** – module for session management;
- **password** – module for re-authentication in the process of work.
In our case we will modify only authentication modules, the next line item is a control flag that defines the requirement for the authentication result. For example:
- required requires that the result of the operation is successful, in case of failure it will pass control to the next lines. However, the
- authentication will no longer be considered successful;
- requisite requires the result to succeed, if it fails it will terminate without passing control below;
- optional the result of a module is irrelevant if that module is the only one;
- sufficient requires the result to be successful, if unsuccessful it will pass control to the next lines. If successful, fully authenticates without further checks;
- include includes configs with the same instructions, so that repetitive verification mechanisms can be reused.
And so, in our case, the rules are presented in the form of lines, where there is an item @include common-auth, it is responsible for password authentication. Let’s disable it by writing # at the beginning of the line and before it write a line requiring authentication by TOTP:
```
auth required pam_google_authenticator.so
```
Screenshot №8 — PAM config
Остальной файл оставим неизменным, последним этапом будет настройка sshd_config для этого откроем его:
```
nano /etc/ssh/sshd_config
```
And we will add additional lines where we will disable password authentication, enable key authentication, and specify methods for verification:
```
UsePAM yes
PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
```
After saving the file and restarting sshd using the command:
```bash
systemctl restart sshd
```
Let’s try to authenticate and check if our settings have changed:
Screenshot №9 — Success authentification
As you can see, when accessing the server, the keys were checked and only then the code from TOTP was requested, after which sshd authorised the user. The variations of how to use PAM and its modules are limited only by your imagination and the protection requirements of the regulator. You can configure 3 stages of authentication by 3 different factors or even 5 stage authentication, that’s the advantage of a modular solution!
## Conclusion
Pluggable Authentication Module (PAM) in Linux provides a flexible and modular way to manage authentication across multiple applications. By centralizing authentication logic, PAM simplifies security management, allows integration of multiple verification methods, and supports advanced configurations such as two-factor authentication (TOTP) or multi-factor setups. Using PAM not only strengthens access control but also ensures consistency across system utilities like ssh, sudo, and login, making it an essential tool for securing Linux systems.
## FAQ
- **Q1: What is PAM in Linux?**
A1: **PAM (Pluggable Authentication Module)** is a library that provides a modular framework for authentication in Linux. It allows applications to use a unified system for verifying user identities without implementing their own authentication logic.
- **Q2: Does PAM handle user authorization?**
A2: No. PAM only handles authentication. Authorization, such as assigning permissions or rights, is managed separately by the system.
- **Q3: Can I use multi-factor authentication with PAM?**
A3: Yes. PAM supports multi-factor authentication, including time-based one-time passwords (TOTP), smart cards, and other authentication modules.
- **Q4: Which Linux services use PAM by default?**
A4: Many system services, including sshd, sudo, login, and graphical login managers, use PAM by default for authentication.
- **Q5: How do I configure PAM for SSH with two-factor authentication?**
A5: Install dependencies like libpam-google-authenticator, configure TOTP for your user, and modify /etc/pam.d/sshd to require the pam_google_authenticator.so module. Then adjust sshd_config to enable key and keyboard-interactive authentication methods.
- **Q6: Are there risks when misconfiguring PAM?**
A6: Yes. Misconfiguring PAM can lock users out of the system or weaken security. Always backup configuration files and test changes carefully.
- **Q7: Can PAM be used for custom applications?**
A7: Yes. Any application that supports PAM can integrate it for authentication, allowing flexible and centralized access control.
https://serverspace.us/support/help/eltex-router-configuring-interfaces.mdStep-by-step Eltex router setup guide. Configure interfaces, manage connections, and optimize performance for a stable and secure network.
Both active and passive network devices are used to operate computing devices through different networks. Router is one of them, it searches for the shortest route to the desired device in the N segment of the network. From its correct configuration depends on the work of devices at the network level, both within the infrastructure and with external segments outside it.
In this article we will pay attention to the basic configuration, when connecting the router for the first time and the configuration of interfaces.
## Basic commands and syntax
To work with the router OS, it is necessary to have an understanding of the basic commands that will be used in the work. As well as the modes of interaction with the network device. By default, the user authenticates to the environment without elevated privileges and is able to execute basic commands. Let’s switch to privileged mode:
```
enable
```
Now the command pool is much wider, let’s look at the basic navigation commands:
- config – takes the user to the configuration environment where all device configuration takes place;
- show running-config – displays the confirmed configuration of the device;
- password – to change the password;
- show system – displays basic information about the device;
- show interface status – displays available interfaces;
- show ip interfaces – displays all configured interfaces;
The commands presented above can be executed in privileged mode, but there are some commands that are possible only in configuration mode. To do this, you can go to config and check them. Note that when entering the configuration of any parameter, it is necessary to exit after configuration with the exit command. Brief pool of settings:
- interfaces – configure interface;
- hostname – renames the host;
- banner login – configure login banner;
- shutdown/no shutdown – in the interface configuration there is an option to switch the interface off and on;
- ip ssh server – enable ssh server on the device.
Let’s move on to the router and consider in practice how these commands can be applied.
## Configuring the router
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №1 — Create Server
Let’s assume that we need to configure a connection between two routers according to the following scheme:
Screenshot №2 — Schema of network
When logging in with a basic account, you must change the default password by entering the command:
```
password
```
Screenshot №3 — Change password
Where instead of the value will be your new password for authentication, after you need to write the changes to the temporary buffer:
```
commit
```
If you don’t confirm the new config within 600 seconds, the data will be rolled back to the previous state:
```
confirm
```
Let’s look through the interfaces available on the machine, which can be configured, as well as find out if they are up. To do this, run the command:
```
show ip interfaces
show interface status
```
Screenshot №4 — Show interfaces
The first command is responsible for viewing the already configured interfaces and the second command for the list of connected interfaces. There are two links available on the current device: gi 1/0/3 and gi 1/0/4. Let’s assume that the first one will look into the LAN segment and the second one gi 1/0/4 into the WAN to another router. Let’s go to the system configuration mode with the command:
```
config
```
Where we configure the device name and banners, then exit the configuration mode and confirm the changes made:
```
banner login "Welcome to ESR-1!"
banner exec "Admin mode"
hostname "ESR-1"
exit
commit
confirm
```
Screenshot №5 — Preparation
Then go back to configuration mode and go to the first interface gi 1/0/3, it is often necessary to split the interface into multiple sub-interfaces. If this is necessary, execute the command pool
```
interface gi 1/0/3
mode routerport
exit
```
First we put the main interface into routerport mode, then exit the interface configuration with the exit command. Then let’s create a sub-interface:
```
interface gi 1/0/3.10
ip address 10.10.1.1/24
ip firewall disable
exit
```
Screenshot №6 — Sub-interface
If you need to configure a regular interface, use the command:
```
interface gi 1/0/3
ip address 10.10.1.1/24
ip firewall disable
exit
```
Let’s consider the interface that will look at the WAN, let’s pretend that the settings are provided via DHCP. To configure it, let’s run a couple of commands:
```
interface gi 1/0/4
ip address dhcp
ip firewall disable
exit
```
Screenshot №7 — DHCP-interface
Exit the configuration mode and before 600 seconds have elapsed from the first change apply the settings with the confirm command. Let’s make sure that everything works properly and the settings are applied, for this purpose write:
```
show ip interfaces
```
Screenshot №8 — IP addresses
Exit the configuration mode and before 600 seconds have elapsed from the first change apply the settings with the confirm command. Let’s make sure that everything works properly and the settings are applied, for this purpose write:
```
config
interface
shutdown
```
The device can be switched on with the similar command **no shutdown**, after which it is ready for use. Similarly, you can configure a second router to organise a network connection or connect local devices to the LAN by selecting the desired network.
## Conclusion
Correct configuration of Eltex router interfaces is a key step in ensuring stable and secure network operation. By understanding the basic commands, switching between modes, and applying configurations properly, administrators can quickly set up LAN and WAN segments, manage sub-interfaces, and adapt the router to different network scenarios. Always remember to confirm your changes, monitor the status of interfaces, and apply best practices for security and reliability. With this foundation, you can scale and optimize your infrastructure more effectively.
## FAQ
- **Q1: What is the difference between shutdown and no shutdown on Eltex routers?**
A: The shutdown command disables the interface, while no shutdown reactivates it. Without no shutdown, the interface will not pass traffic even if it has an IP address.
- **Q2: How do I assign an IP address to an interface?**
A: Use configuration mode:
```
interface gi 1/0/x
```
```
ip address /
```
```
ip firewall disable
```
```
exit
```
Replace and with your network values.
- **Q3: When should I use sub-interfaces?**
A: Sub-interfaces are used for VLAN separation or when a single physical interface must handle multiple logical networks.
- **Q4: How do I check if my changes were applied correctly?**
A: Run the command show ip interfaces to see configured addresses and interface states.
- **Q5: Why do I need to use commit and confirm?**
A: commit saves changes to a temporary buffer, while confirm finalizes them. If not confirmed within 600 seconds, the configuration will roll back automatically for safety.
- **Q6: Can Eltex routers obtain IP addresses automatically?**
A: Yes, by setting the interface to use DHCP with the command:
ip address dhcp
https://serverspace.us/support/help/scanning-docker-images-and-analysing.mdLearn how to scan and analyze Docker images for security issues. Discover essential tools and methods to detect vulnerabilities, inspect dependencies, and secure your containers effectively.
In the era of virtualisation of processes and resources, the issue of security of executable environments is quite acute. Pre-prepared images may contain virus and various exploits that can damage both the system locally and the infrastructure globally.
They are distributed through such platforms as Docker Hub, GitHub, which allow you to install software that is not checked for various kinds of software bookmarks and the very same VPO. How to check if a container is safe to use?
## Scanning and analysing layers in Dockerfile
Let us remind you that the container itself is just an isolated environment where the base OS image is rolled out and a Dockerfile is executed on top of it, which can be rather malicious. Let’s take for example a pre-infected container filled with miners and other VPO. Let’s download it to our machine with Docker pre-installed:
```bash
sudo docker pull quay.io/petr_ruzicka/malware-cryptominer-container:1.4.0
```
Screenshot №1 — Pull image
Note that we only downloaded the image to our local repository, but **did not run it **on the OS! **You don’t need to do that**, the file itself will be sufficient for analysis! If you don’t have Docker pre-installed, do it with the following command:
```bash
sudo apt install docker.io docker-compose -y
```
After that, we need to understand what exactly we want to investigate and where we are going to detect malicious activity. An image is a collection of a minimally basic OS, the Dockerfile executed on it, and the metadata that is used when deploying it. So let’s pay attention to it, first we need to understand what actions are performed in the image, for this we will use the dive inspection utility. To install deb we will run the command:
```bash
DIVE_VERSION=$(curl -sL "https://api.github.com/repos/wagoodman/dive/releases/latest" | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/')
curl -OL https://github.com/wagoodman/dive/releases/download/v${DIVE_VERSION}/dive_${DIVE_VERSION}_linux_amd64.deb
sudo apt install ./dive_${DIVE_VERSION}_linux_amd64.deb
```
It will allow you to find the latest version of the software in the repository, as well as put it in the download paths to then install it.
Screenshot №2 — Installation process
After successful installation of the package we can write a command where we specify dive to start the inspection software and specify the name of the image:
```
sudo dive quay.io/petr_ruzicka/malware-cryptominer-container:1.4.0
```
Screenshot №3 — Image container
The control panel has four main fields, where Layers is the Docker File, or rather its layers. Below are the details of each layer and the meta information about the image, where you can already see that you have interacted with the web directories. Let’s parse each layer and try to find something illegitimate:
Screenshot №4 — Fishing domain
In this case we can see that the installation is performed from the suspicious domain nginx[.]so, then use TAB to switch to the file system on the right and see the changes made by Dockerfile. Additionally, filter the changes with the Ctrl+A key combination and we will see a cluster of previously copied files with suspicious names:
Screenshot №5 — Malware!
In a real attack, the files may be named quite innocuously, so you need to pay attention to the directories and the format of the files that are added to the container. Since the files look suspicious, you need to make sure they are virus. Let’s exit the inspector panel and create a file system container without launching it:
```bash
sudo docker create — name temp_container quay. io/petr_ruzicka/malware-cryptominer-container :1.4.0 && \
sudo docker export temp_container -o filesystem.tar && \
sudo docker rm temp_container && \
ls
```
Screenshot №6 — Copy of filesystem
Now we have a container file system with already applied Dockerfile in our home directory! It remains to unpack it and check all files for VPO, for this purpose we will write a command, having previously created a new folder and navigating to it:
```bash
sudo tar -xf ~/filesystem.tar
```
Screenshot №7 — Copy of filesystem
Remember that the malware has potentially affected several directories, so we will scan them with ClamAV antivirus, and then we will see the result, where virus are detected!
Screenshot №8 — Result of scanning
With the inspection tool it is possible to perform such manual analyses at a deeper level and already use Yara rules engines in addition, which will allow to detect other types and variants of VPO. This solution is not a replacement for automated tools, but just a way to manually look at the package details inside, based on manual/static analyses.
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №9 — Create Server
## Conclusion
Securing Docker images before deployment is essential to protect both local systems and broader infrastructure. By analyzing image layers, inspecting Dockerfiles, and checking metadata, administrators can identify malicious actions or suspicious files. Tools like Dive allow for detailed layer-by-layer inspection, while extracting the container filesystem and scanning with antivirus solutions such as ClamAV helps detect malware and potentially unwanted software. Regularly auditing container images ensures safer deployments and reduces the risk of infecting your infrastructure with pre-packaged threats.
## FAQ
- **Q1: Why should I scan Docker images before running them?**
A: Pre-built images can contain malware, cryptominers, or vulnerabilities. Scanning ensures the image is safe and prevents compromising your system or network.
- **Q2: Can I run a Docker container without risking infection for analysis?**
A: Yes, you can download or create the container without starting it. Tools like Dive allow you to inspect layers and files safely before running the container.
- **Q3: What tools are recommended for Docker image analysis?**
A: Dive is a popular tool for inspecting image layers and metadata. For deeper malware detection, you can export the filesystem and scan with antivirus software like ClamAV, or use Yara rules.
- **Q4: Is manual inspection enough to secure images?**
A: Manual inspection helps understand the image contents, but it should be combined with automated vulnerability scanning and antivirus checks for comprehensive security.
- **Q5: Can this process be used on all Docker images?**
A: Yes, any local Docker image can be inspected. Always use trusted sources and regularly audit images before deployment in production environments.
https://serverspace.us/support/help/audit-of-basic-linux-security.mdLearn how to perform a basic Linux security audit. This guide provides key tips, best practices, and essential tools for administrators to assess, protect, and harden Linux systems against threats.
Regularly checking your devices or corporate infrastructure is an integral part of securing them. This process is called auditing, where it is necessary to assess, using appropriate criteria, whether the security of the device meets the stated requirements.
In order not to manually evaluate each machine, a script was developed that allows you to automate the OS check. In this article we will consider one of such utilities, which will allow you to assess the security of your device and give an estimate in a few minutes.
## What is Lynis?
Lynis is an OS audit or security compliance utility that can be thought of as a system scanner. Its task is to identify the front end OS and perform a profile-based scan and then provide an assessment of how secure the device is.
Screenshot №1 — Preview
At the moment the utility is an Open-Source solution, there is a similar commercial version with a large pool of features.
This solution can be found in almost all repositories of popular Linux distributions, so downloading it should not cause any problems. For this purpose we will use any package manager:
```bash
sudo apt install lynis -y
```
Screenshot №2 — Installation
The syntax is quite simple, you need to specify the command to run the lynis utility, additional sub-commands and options to it:
```
lynis show commands
```
Screenshot №3 — Commands
This command allows you to view a list of available sub-commands that can be executed:
- audit is directly a module for scanning the system, as well as virtual environment vorkers, more specifically Dockerfile.
- configuration command allows you to configure the tests and modes to be used when scanning the profile;
- generate allows you to generate the configs for the service to be brought up as a lynis that will periodically test the system;
- show command allows you to view navigation through the utility, as well as brief information about the device;
- update command allows you to check the software for new versions and in case the current one is outdated it will mark it.
The default set of tests and profiles is sufficient for basic scanning. The main difference from typical scanners is that Lynis first determines what software is currently running, on which OS, etc. And only then starts scanning with modules related to the detected software.
## Lynis utility audit
To perform a basic check on pre-prepared modules, the command must be written:
```
sudo lynis audit system
```
Screenshot №4 — Audit
After OS scanning, profiles are initialised and additional information about where to look for scanning results is displayed. And also from which directory plug-ins will be pulled. This is followed by a detailed report, in order to run it in the background you can use the -q option:
```
sudo lynis audit system -q
```
Or if this report is not enough, a more detailed one can be run with the –verbose option:
```
sudo lynis audit system –verbose
```
.
The report will show the main categories related to software, file system, shells, etc. For each of them, the survey criteria will be described:
Screenshot №5 — Report from audit
Green indicates requirements that matched the settings on the machine. Yellow indicates changes to improve safety, which will be suggested below. And red indicates a complete mismatch that needs to be corrected. You can also run pentest and forensics scans with the appropriate options:
```
sudo lynis audit system –pentest
```
In the results, we will see an assessment of the security of our device in relation to best practices, which will allow us to understand what measures we need to take to protect ourselves.
Screenshot №6 — Recommendation
Each of them will either directly, or with a reference to help, describe how the device should be hardened. But not all settings may fit your tech processes, for example, the maximum number of login attempts is mentioned from 3 to 6. But usually the acceptable value can be 10 quite, so rely on these recommendations more as a hint. Critical issues will be highlighted separately:
Screenshot №7 — Warnings
In this context, there is a mailer banner sticking out, which gives the version of either the OS or the software itself and allows the attacker to try to find an exploit for it. It also presents a couple of vulnerable packages that can be found from the report and patched.
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №9 — Create Server
Then you can connect to the server via remote control protocols such as SSH and work with the machine!
## Conclusion
Regular security audits are essential for maintaining a robust Linux environment. Using tools like Lynis, administrators can quickly assess system configurations, identify vulnerabilities, and receive actionable recommendations for hardening the OS. Whether for personal devices or corporate infrastructure, automated audits help ensure compliance with best practices, reduce attack surfaces, and maintain overall system integrity. Performing these checks regularly allows you to stay ahead of potential threats and maintain a secure computing environment.
## FAQ
- **Q1: What is Lynis and why should I use it?**
A: Lynis is an open-source security auditing tool for Linux systems. It helps assess the security posture of your system, identify vulnerabilities, and provide recommendations for improvement.
- **Q2: How do I install Lynis on my Linux system?**
A: Lynis is available in most Linux repositories. For example, on Ubuntu, you can install it with:
sudo apt install lynis -y
- **Q3: How do I perform a basic system audit using Lynis?**
A: Run the following command to start a basic audit:
sudo lynis audit system
- **Q4: Can I get a more detailed audit report?**
A: Yes, use the –verbose option for a detailed report:
sudo lynis audit system –verbose
- **Q5: What do the color codes in Lynis reports mean?**
A: Green indicates compliance with best practices, yellow suggests improvements, and red highlights critical issues that require attention.
- **Q6: Can Lynis be used for advanced security testing?**
A: Yes, Lynis includes options for pentesting and forensic scans using the –pentest option.
- **Q7: Are Lynis recommendations mandatory?**
A: Not always. Recommendations serve as guidance. Some parameters may need adjustment based on your environment and technical requirements.
- **Q8: Can Lynis help with ongoing monitoring?**
A: Yes, you can configure Lynis to run periodically and generate reports to continuously assess your system's security.
https://serverspace.us/support/help/arp-protocol-algorithm-and-spoofing-attack.mdDiscover how the ARP (Address Resolution Protocol) works, understand ARP spoofing attacks, and learn effective techniques to protect your network. This guide explains the ARP process, attack methods, and essential security practices for network safety.
Computer networks have become a fundamental part of modern organizations, enabling the seamless transition of business processes from paper-based systems to digital platforms. Since the 1990s, open communication systems have evolved rapidly, making it possible to exchange data across local and global networks. As a result, companies increasingly rely on networking technologies and hire dedicated IT specialists to manage, secure, and maintain their network infrastructure.
One of the key protocols that bridges the link layer and the network layer in modern networking is ARP — the Address Resolution Protocol. ARP plays a critical role in enabling devices to map IP addresses to MAC addresses, facilitating communication across segmented networks. Its development marked a shift from flat link-layer environments to more structured architectures like LANs and WANs. In this article, we'll explore how the ARP protocol works, its vulnerabilities — including ARP spoofing — and the best practices to secure your network against such attacks.
## ARP algorithm
ARP, or Address Resolution Protocol, is a protocol that allows you to match the IP address and MAC address of the requested device. ARP tables, in which this correspondence is prescribed, are maintained only for Layer 3 devices, separately for each of them.
Recall that all devices within the same subnet communicate only through switches, repeaters and other passive and active network devices. Routers are required when we are accessing a subnet that is not in the routing table of our device. This means that communication within our subnet we can call a channel environment. Let’s look at an example of the ARP protocol and understand what function it fulfils:
Screenshot №1 — Schema without Hacker
On first connection and empty tables on the devices, there are four main points of communication. Let’s imagine that we want to connect to a local server with hostname Debian.local via SSH.
Preliminarily, our device will check the network addresses, if they are the same, then we are in the same subnet and the device will directly address the arp request through the interface gi 1/0/4. But if we do not address the router within the channel environment, how can we find the right device by IP? That’s exactly what the ARP protocol is for, our device in the first stage sent a broadcast packet asking: 'What is the MAC address of such and such device with IP address '. The request packet reaches the switch and it sends packets to everyone as standard. The packet from the second stage will go to all available ports on the switch’s link medium.
Screenshot №2 — ARP packets
Debian.local will receive this package and see that it consists of IP.src, MAC.src and IP.dst and MAC.dst. So it needs to fill in the field with its MAC address, many people mistakenly call it an ARP address, and send it back to the author of this packet at the source addresses. Debian.local will then write into its ARP table, from the ARP packet, the sender’s data and know that 192.168.58.134 corresponds to MAC address 00:0c:29:bc:8b:d2. At this time, the packet has reached back to the client and the client has written the response to its table. The Ethernet link medium packet then needs to be populated so that the switch can send it to the correct destination, the address is now taken by the client from its ARP table.
What if such a packet is answered not by a legitimate device, but by a hacker device? This is called ARP Spoofing or ARP packet spoofing, which is part of an already MitM attack or man in the middle.
## ARP Spoofing
Screenshot №3 — ARP Spoofing
Unfortunately, the ARP protocol does not have authentication features built into it, so it is not possible to verify the legitimacy of the response without additional technologies like DHCP-Snooping or Port Security. A typical attack looks like this:
- Sooner or later, the device wants to update its ARP table data, due to some factors, can use the command arp -d ;
- The intruder sends 'infected APR responses' to the network in advance until the victim catches it;
- The infected entry is now entered into a table where the IP address of, for example, a router is correlated with the MAC address of the intruder’s device.
- All traffic is routed to the perpetrator’s interface and the perpetrator sniffs or reads it;
- It is then redirected to an endpoint, in this case a spoofed 'router'.
To protect against this kind of attack, taking into account the peculiarities of the important protocol use differentiation of channel environments with the help of VLANs, assign addresses available for work on Port Security, configure static IP for important nodes, set up technology DHCP Snooping. The essence of the latter consists in assigning trusted ports, on which DHCP stands and records the correspondence of MAC-addresses to those IPs, which are leased to the machines. In conclusion, we can definitely say that it’s an important part of a computer network.
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №4 — Create Server
## Conclusion
The ARP protocol is a cornerstone of modern networking, enabling devices to map IP addresses to MAC addresses and communicate efficiently within a subnet. While ARP is simple and effective, its lack of built-in authentication exposes networks to ARP spoofing attacks, where malicious actors can intercept or redirect traffic. By understanding how ARP works and implementing protective measures such as VLAN segmentation, Port Security, static IP assignments, and DHCP Snooping, network administrators can significantly reduce the risk of attacks and ensure secure, reliable communication within their infrastructure. Proper ARP management is thus a key part of maintaining a secure and efficient network environment.
## FAQ
- **Q1: What is ARP and why is it important?**
A1: ARP (Address Resolution Protocol) maps IP addresses to MAC addresses, allowing devices within the same subnet to communicate over a local network. Without ARP, devices would not know the hardware address of their peers.
- **Q2: What is ARP spoofing?**
A2: ARP spoofing is a type of attack where a malicious device sends fake ARP responses, associating its MAC address with the IP of another device, often a router, to intercept or manipulate network traffic.
- **Q3: How can I protect my network from ARP spoofing?**
A3: Protection measures include using VLANs to separate network segments, enabling Port Security on switches, assigning static IP addresses for critical devices, and configuring DHCP Snooping to verify legitimate ARP responses.
- **Q4: Can ARP attacks affect internet traffic outside my subnet?**
A4: ARP spoofing primarily targets local network communication within the same subnet. Traffic routed through routers to external networks is generally unaffected unless the attack targets gateway devices.
- **Q5: How can I check the ARP table on my device?**
A5: On Windows, use arp -a in Command Prompt or PowerShell. On Linux, use arp -n or ip neigh show to view current ARP table entries.
- **Q6: Are there software tools to detect ARP spoofing?**
A6: Yes, network monitoring tools like Wireshark, arpwatch, and specialized IDS/IPS systems can detect unusual ARP activity and alert administrators to potential spoofing attacks.
https://serverspace.us/support/help/ip-address-reservation-in-dhcp-windows.mdLearn how to reserve a static IP address for specific devices using the Windows DHCP server. This step-by-step guide helps maintain consistent device IPs, simplify network management, and track devices reliably across your network.
As network segments expand, infrastructure scales up, and the number of connected devices continues to grow, the need to automate network configuration for endpoint devices has become more critical than ever.
Traditionally, each user had to manually configure their network settings, including IP addressing, often leading to errors and IP address conflicts. Today, this issue is efficiently resolved by the DHCP protocol, which automates IP assignment and ensures conflict-free configuration across the network.
## What is DHCP?
**DHCP** is a **dynamic host configuration protocol** on devices that transmits IP address, gateway, netmask, and additional settings like DNS. Of course, security measures should be strengthened when using it, as it has no means of authenticating the node itself or differentiating access. DHCP algorithm meaning:
Screenshot №1 — DHCP
Why do you need to reserve an ip address already issued by the DHCP service? The point is that the service allows you to use it for rent, for a certain period of time. If the node in the required period does not respond, the address will be considered free and will be assigned to a new user. Which is not good from a security point of view, because it is difficult to detect the attacker below the level at which the domain is working. Therefore, it is important to keep an up-to-date report with IP numbers received via DHCP, which will be automatically configured and assigned to employees.
## How do I configure DHCP address reservation for existing clients?
Let’s go to the DHCP-server control panel, where we will select the desired one and go to the Address Leases tab.
Screenshot №2 — Address Leases
It lists all the addresses in the lease, find the desired device, and by right-clicking add the address behind the desired MAC address to the reservation.
Screenshot №3 — New reservation
To remove the entry, you need to go to the reservation tab and delete the folder with the required IP address:
Screenshot №4 — Deletion of record
The device will then be able to get a new address again, but it will not be hardcoded to the device.
## How do I configure DHCP address reservation for new clients?
To do this, right-click Reservation -> New Reservation and set the IP address in a new window, having previously secured the required MAC address of the device. It can be viewed on the endpoint machine itself with the command in the terminal:
```
ipconfig /all
```
Or in Linux similar systems command:
```
ip a
```
Screenshot №5 — MAC
After the reservation is created, a new entry will appear on the DHCP server containing the associated MAC and IP addresses. The deletion process is identical to removing a reservation for an existing client. However, since DHCP relies on broadcast messages — which can be exploited by attackers — it’s essential to protect your server using DHCP snooping. We cover this security measure in more detail in our dedicated article.
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №6 — Create Server
## Conclusion
Reserving IP addresses in a Windows DHCP server allows network administrators to maintain consistent addressing for critical devices, prevent IP conflicts, and simplify network management. By assigning static reservations to known MAC addresses, you can ensure reliable connectivity for servers, printers, or other essential endpoints while still benefiting from DHCP automation for the rest of the network. This approach not only improves operational efficiency but also enhances network monitoring and security when combined with proper DHCP safeguards.
## FAQ
- **Q1: What is the difference between a DHCP lease and a reservation?**
A DHCP lease assigns an IP address to a device for a limited period of time, which may change when the lease expires. A reservation, however, permanently binds a specific IP address to a device's MAC address, ensuring it always receives the same IP.
- **Q2: Can I reserve an IP address for a device that is not currently connected?**
Yes, you can create a reservation for any known MAC address, even if the device is offline. The DHCP server will assign the reserved IP when the device connects.
- **Q3: How do I find a device's MAC address for reservation?**
On Windows, use ipconfig /all in the terminal. On Linux, use ip a or ifconfig. The MAC address is usually labeled as “Physical Address” or “HWaddr”.
- **Q4: What happens if I delete a reservation?**
Deleting a reservation removes the binding between the MAC address and the IP. The device may then receive a different IP from the DHCP pool during its next lease renewal.
- **Q5: How can I secure my DHCP server from malicious devices?**
Implement DHCP snooping and other network security measures to prevent unauthorized devices from obtaining IP addresses and potentially exploiting the network.
https://serverspace.us/support/help/how-to-write-a-web-application-in-flask.mdLearn how to create a web application using Flask, a lightweight Python framework. This beginner-friendly guide covers environment setup, routing, Jinja2 templates, and deploying your Flask app for production. Step-by-step instructions included.
Today, the web is the most accessible and widely used platform for delivering digital services. From online banking to food delivery, nearly every industry either uses or plans to adopt web applications as part of their infrastructure. To simplify development, various web frameworks — such as Django, Flask, ASP.NET Core, and Laravel — provide powerful libraries and structured tools for building scalable and efficient web apps.
In this article, we'll walk through a quick and practical way to start working with one of the most popular Python web frameworks — Flask. You'll learn how to build a simple web application that handles routing, renders HTML pages using templates, and includes basic logic for processing user requests.
## What is a web application and how does it differ from a regular application?
Usually, a server application is a set of instructions and/or executable files, configurations, libraries that process client requests over network or file sockets.
Screenshot №1 — Schema
But a web application processes requests using protocols that work on the web, receiving a full URL as input and breaking it down into path, method, headers and packet body. With respect to the received packets with paths Flask decides which code functions should be executed. For example, a client calls the web with a request of the form:
```
hxxps://gg.com/about
```
Flask has the following application structure:from flask import Flask, render_template:
```
app = Flask(__name__)
@app.route('/about')
def index():
return render_template('index.html')
```
Upon receiving the packet, Flask web framework starts looking for a path that matches the client’s request and method. In this case, it immediately routes the request to @app.route(‘/about’), where the my function will be executed:
```
def my():
return render_template('my.html')
```
Accordingly, the client will receive an HTML page in response, which will be returned by the application server or the web server.
## How to quickly write an application in Flask Python?
Creating a web application from a regular one is almost no different at the initial stages, it is the same directory containing a set of instructions, libraries and static and dynamic content.
Let’s create a project folder and installing flask with all the necessary dependencies:
```
mkdir –p ~/web_app/ && cd ~/web_app && apt install python3 python-pip3 flask python3-venv -y
```
Screenshot №2 — Installation
In the another way to installation flask python we can use pip:
```bash
pip install flask
```
After that, to delimit environment variables, we will create a virtual environment using venv:
```
python3 –m venv ~/web_app/venv
```
Screenshot №3 — Venv
This solution will allow you to create your own file of environment variables and dependencies for a given project, all that remains is to replace your current file with the created one:
```
source ~/web_app/venv/bin/activate
```
Let’s commit the used software package to be sent for deployment so that we don’t have dependency problems:
```bash
pip freeze > ~/web_app/requirements.txt
```
Screenshot №4 — PIP freeze
Now let’s create the necessary application:
```
nano ~/web_app/app.py
```
Let’s spell out the basic instructions for running the application:
```python
from flask import Flask
from flask import Flask
app = Flask(__name__)
@app.route('/about')
def about_func():
return 'Wake up! Patrick!'
if __name__ == '__main__':
app.run(debug=True)
```
Screenshot №5 — Application for usage
Let’s explain each of the existing lines:
- from flask import Flask, render_template allows you to import the desired instructions from the library;
- app = Flask(__name__) initializes the application;
- @app.route(‘/’) decorator that binds the request to a function;
- def main_page():return render_template(‘main.html’) function passed to execution;
- app.run(debug=True) start the application server.
As a result, the resulting code should be saved and run on the interpreter:
```
python3 ./app.py
```
Screenshot №6 — Start application
Ultimately, the structure of the project may be as follows:
```
/your-app
/static
/dynamic
app.py
/venv
```
After that, you need to navigate to one of the addresses that have been defined:
Screenshot №7 — Check application
Great, a basic application that can output text is ready! But what if we need to output HTML pages that have been pre-prepared or JSON files?
To do this, let’s add a couple libraries and lines of code to the existing configuration:
```python
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def main_page():
return render_template('main.html')
@app.route('/id/')
def to_dict(username):
data = {
'username': {username},
}
if __name__ == '__main__':
app.run(debug=True)
```
Now, respectively, when calling paths in URL /id/ and / we will get the results of related functions.To work with methods other than GET, it is necessary to explicitly specify them when setting up routes to functions **from** flask **import** request import os:
```
@app.route('/click', methods=['DELETE'])
def click():
name = request.form['value']
os.remove(f"/home/{name}")
return 'Complete task!'
```
Then by calling the DELETE method with the passed form of invocation, we will be able to delete files from the /home folder. The framework has many more different ways of working and implementing the logic, which you can check out in our pool of instructions on python and flask!
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage also can fit for python web framework flask!
Screenshot №8 — Create Server
## Conclusion
Flask is a lightweight and versatile Python web framework that allows developers to quickly build web applications with routing, template rendering, and request handling. By following this guide, you now know how to set up a development environment, create basic routes, render HTML pages, and implement simple logic for user input. Flask's simplicity makes it ideal for beginners while providing enough flexibility to scale applications for production deployment. Using virtual environments and proper dependency management ensures your projects remain organized and portable. With these fundamentals, you are ready to expand your Flask applications with more advanced features like database integration, authentication, and API endpoints.
## FAQ
- **Q1: What is the difference between Flask and a regular Python application?**
A: A regular Python application runs locally and executes scripts, while a Flask web application listens for HTTP requests, routes them to appropriate functions, and returns responses over the web.
- **Q2: How do I install Flask on my system?**
A: You can install Flask using pip:
```bash
pip install flask
```
Or on Linux systems with dependencies:
```bash
apt install python3 python3-pip python3-venv -y
```
- **Q3: What is the purpose of a virtual environment in Flask projects?**
A: A virtual environment isolates your project's dependencies from the system Python, preventing version conflicts and making your project portable.
- **Q4: How do I run a Flask application?**
A: Save your application in a .py file (e.g., app.py) and run:
```
python3 app.py
```
Then access your app via http://localhost:5000.
- **Q5: Can Flask handle HTML templates and JSON responses?**
A: Yes. Use render_template() to serve HTML pages and return Python dictionaries to
```
automatically convert them to JSON.
```
- **Q6: How do I add routes that use HTTP methods other than GET?**
A: Specify the methods in the route decorator:
```
@app.route('/click', methods=['POST', 'DELETE'])
def click():
# your code here
```
- **Q7: Is Flask suitable for production deployment?**
A: Yes, but it is recommended to use a production-ready server like Gunicorn or uWSGI behind a reverse proxy such as Nginx.
- **Q8: How can I expand my Flask application further?**
A: You can integrate databases (SQLite, PostgreSQL, MySQL), implement user authentication, create RESTful APIs, and use extensions for additional functionality.
https://serverspace.us/support/glossary/automated-builds.mdLearn what Automated Builds are, their advantages, and how they work.
Automated Builds is a feature of Docker Hub that allows you to automatically create Docker images from source code. With this feature, every time the code in a repository is updated—such as on GitHub or Bitbucket—the process of building a new image is automatically triggered. This is particularly convenient for CI/CD integration, as it helps keep images up to date and minimizes manual actions.
## How Automated Builds Work
- **Repository Connection**: First, you need to link Docker Hub with the repository where the code is stored (for example, GitHub or Bitbucket).
- **Trigger Setup for Updates**: A build is automatically initiated with each commit or branch change in the repository.
- **Image Creation**: Docker Hub creates a new image based on the Dockerfile and uploads it to the designated repository.
- **Tags and Versions**: You can configure tags for image versions, allowing each new build to be accessible with the appropriate tag.
## Advantages of Automated Builds
- **Automation and Time Savings**: Developers are relieved from the need to manually update and upload images.
- **Ensured Relevance**: Images are always up to date and synchronized with the latest code changes.
- **Convenient Versioning**: The ability to set tags aids in managing image versions, which is beneficial for deployment and testing.
Automated Builds simplifies the application deployment process by keeping their images current without unnecessary effort.
https://serverspace.us/support/glossary/copy-on-write.mdCopy-on-write is a data management method that optimizes the use of memory and disk space. This approach is widely used in various systems.
**Copy-on-write (COW)** is a data management method that optimizes the use of memory and disk space. This approach is widely used in various systems, including file systems and memory management mechanisms.
## Key Characteristics of Copy-on-write
- **Copying on Write**: When data is modified, instead of overwriting existing blocks, a new copy of the block with the changes is created. As a result, the original data remains unchanged until modification is necessary.
- **Space Efficiency**: COW helps avoid data duplication, as identical blocks can reference the same instance of data. This is particularly useful when working with large volumes of data or in systems where changes occur frequently.
- **Snapshots**: This method is well-suited for implementing snapshots, as it allows the current state of data to be preserved without the need for a full copy. Snapshots are created quickly and occupy less space.
- **Performance**: While COW may incur performance overhead during writes (due to the need to create copies), it enhances read performance, as access to unchanged data is faster.
## Applications of Copy-on-write
- **File Systems**: Many modern file systems, such as Btrfs and ZFS, utilize COW for efficient data management and snapshot creation.
- **Virtualization**: Virtual machines often employ COW to create disk snapshots and manage states, allowing for quick rollbacks to previous states.
- **Memory Management**: In operating systems, COW is used for managing virtual memory, where new memory pages are created only when modifications are necessary.
## Advantages of Copy-on-write
- **Reduced Data Volume**: Efficient space utilization and minimization of data duplication.
- **Fast Snapshots**: The ability to create system state snapshots with minimal time and resource expenditure.
- **Simplified Data Management**: Facilitates easy implementation of rollbacks and data recovery.
Copy-on-write is a powerful tool for data management that enhances efficiency and performance across various domains, from data storage to virtualization and memory management.
https://serverspace.us/support/glossary/hammer.mdLearn what HAMMER is, it's key characteristics, applications and why this file system is an essential part of DragonFly BSD
HAMMER is a file system specifically designed for the DragonFly BSD operating system. It focuses on high performance, reliability, and offers advanced data management capabilities. Key features of HAMMER include support for snapshots, replication, and efficient data management.
## Key Characteristics of HAMMER
- **Snapshots**: HAMMER allows the creation of filesystem snapshots, enabling the preservation of the system’s state at a specific point in time. This is useful for data backup and recovery.
- **Copy-on-write**: The file system employs a copy-on-write method, protecting data from loss during file modifications. Instead of altering the existing block, the system creates a new block with the changes, preventing data corruption.
- **Replication**: HAMMER supports data replication between multiple systems, allowing real-time synchronization of data. This is beneficial for creating fault-tolerant systems.
- **Efficient Space Usage**: The file system optimizes disk space utilization by storing only necessary data and minimizing duplication.
- **Support for Large Files**: HAMMER can effectively handle large files and data volumes, making it suitable for server and embedded applications.
- **Data Access**: HAMMER provides users with powerful tools for searching and accessing data, including the ability to restore data from snapshots.
## Applications of HAMMER
- **Servers**: HAMMER is used on servers that require high performance and reliability, especially in scenarios involving large data volumes.
- **Embedded Systems**: Due to its efficiency and data backup capabilities, HAMMER is well-suited for embedded solutions.
The HAMMER file system is an essential part of DragonFly BSD, offering unique features that make it attractive for various applications requiring reliable data storage and management.
https://serverspace.us/support/glossary/shadow-copy.mdLearn what a shadow copy is, it's key features, applications, advantages and more!
**Shadow copy** is a technology that allows users to create snapshots of the state of files and folders on a computer at a specific point in time, without interrupting work with that data. This is especially useful for data backup and recovery.
## Key Features
- **Snapshot Creation**: Shadow Copy allows for the creation of copies of data at the file system level, including open and in-use files, ensuring their protection even during operation.
- **No System Downtime Required**: Shadow Copy can be performed in the background, without interfering with users or requiring a system reboot.
- **Data Recovery**: In case of data loss or file corruption, users can restore them from previously created versions, significantly simplifying the recovery process.
- **Support for Various Applications**: Shadow Copy is often used in conjunction with backup systems and in applications that require data protection, such as databases and mail servers.
## Applications
- **Operating Systems**: Shadow Copy is frequently used in Windows (e.g., Windows Server and Windows 10) for creating backups and restoring data.
- **Backup Systems**: Many backup programs utilize shadow copying to create backups without interrupting users’ work.
- **Organizations**: In corporate environments, Shadow Copy helps ensure the protection of critical data and allows for quick recovery after failures.
## Advantages
- **Convenience**: Allows users to easily recover files without resorting to complex procedures.
- **Security**: Protects data from accidental deletion or corruption.
- **Flexibility**: Multiple versions of shadow copies can be created for different points in time.
Overall, Shadow Copy is a powerful tool for data management, providing protection and recovery of information when needed.
https://serverspace.us/support/glossary/transactional-memory.mdLearn what Transactional memory is, key points of TM, types of transational memory and more!
Transactional memory (TM) is a concept in computer science designed to simplify parallel programming. It allows developers to manage access to shared resources without the need to use traditional synchronization mechanisms, such as mutexes or semaphores.
## Key Points Regarding TM
- **Transactions**: In TM, code that performs operations on shared resources is organized into transactions. Each transaction must either complete successfully or not affect the state of the system. This is analogous to transactions in databases.
- **Isolation**: Transactions in TM operate independently of one another, meaning that changes made by one transaction are not visible to others until the transaction is complete. This helps avoid conflicts and data inconsistencies.
- **Conflict Management**: When two transactions try to update the same data at the same time, TM offers a way to manage conflicts. This can be achieved by either reverting one of the transactions or attempting to execute it again once the other has finished.
- **Efficiency**: TM can enhance performance, especially in multi-threaded applications, as developers can write code without explicit resource locking, reducing the overhead of synchronization.
## Types
There are two main types of transactional memory:
- **Hardware Transactional Memory (HTM)**: This is an approach that uses built-in hardware to implement transactional memory. In HTM, hardware controllers provide mechanisms such as conflict detection and transaction rollback management, which can improve performance and efficiency. HTM can be utilized in modern processors for automatic management of access to shared data.
- **Software Transactional Memory (STM)**: This approach is implemented at the software level. In STM, developers can use libraries or language constructs to work with transactions. STM allows the creation of transactions while managing state and conflicts, but it may require more computational resources compared to hardware solutions, as all transaction logic is implemented in software.
TM is actively researched and implemented in various programming languages and systems, as it offers a simpler way to handle parallelism and reduces the number of synchronization-related errors.
https://serverspace.us/about/news/seven-days-of-black-friday-madness-great-deal-from-serverspace.mdBlack Friday at Serverspace: 25.11-01.12. Get ready for exclusive promo codes, increased cashback, special deals!
[https://serverspace.us/wp-content/uploads/2024/11/banner_chp_angl-1.svg](https://serverspace.us/wp-content/uploads/2024/11/banner_chp_angl-1.svg)
Hey! Serverspace team on board.
We have some great news — from November 25th to December 1st we’re celebrating the most expected Friday of the year with a week full of surprises for our users. Get ready for exclusive promo codes, increased cashback, and special deals on cloud infrastructure. From [cloud servers](https://serverspace.us/services/cloud-servers.md) to [VРN](https://serverspace.us/services/cloud-vpn.md) and [СDN](https://serverspace.us/services/cdn.md), any solution you choose will cost less if you activate your promo code before December arrives.
And a little reminder: we offer free migration and consistent top-up bonuses.
Before you go, we wanted to say thank you to all of our users for сhoosing Serverspace. Stay tuned and don't miss out on our email updates!
_[Serversp](https://serverspace.us/index.md)[ace](https://serverspace.us/index.md) is a cloud provider offering automated deployment of virtual infrastructure on Linux, Windows, and other operating systems from anywhere in the world in under one minute. Open tools such as API, CLI, and [Terraform](https://serverspace.us/services/serverspace-terraform-provider.md) are available to integrate client services efficiently._
https://serverspace.us/about/news/serverspace-at-web-summit-2024-innovations-and-networking-in-lisbon.mdFrom November 11th to November 14th, Serverspace team participated in Web Summit 2024, one of the world’s largest technology events held in Lisbon, Portugal.
From November 11th to November 14th, Serverspace team participated in [Web Summit](https://websummit.com/) 2024, one of the world's largest technology events held in Lisbon, Portugal. Bringing together thousands of industry leaders, accelerators and startups, the event provided the perfect platform to showcase our cutting-edge cloud solutions and connect with the global tech community.
**Highlights of Our Participation:**
- Our exhibition booth A128 became a hub of activity, where attendees experienced a live demonstration of Serverspace's network services, [developer tools](https://serverspace.us/services.md) and [cloud solutions](https://serverspace.us/services/vps-server/cloud-hosting.md).
- Our CMO, Irina Noronha, delivered an inspiring keynote, exploring the future of cloud infrastructure, difficulties startups meet and how Serverspace is driving innovation to meet the evolving needs of the digital era.
- We connected with a great number of industry leading technology companies, startups and tech enthusiasts, fostering meaningful discussions about partnerships, collaborations, and the latest trends in cloud technology.
“Web Summit 2024 was an incredible experience for our team. It allowed us to share our vision, demonstrate our solutions, and engage with forward-thinking professionals from around the world,” said Evgeniya Pechenkina, brunch director of Serverspace.
Thank you to all who visited us! Your enthusiasm and feedback inspire us to continue pushing the boundaries of cloud innovation.
We're already looking forward to the next Web Summit and can't wait to share even more exciting developments with you!
_[Serverspace](https://serverspace.us/index.md?utm_source=devto&utm_medium=articles&utm_campaign=main) is an international cloud provider offering automatic deployment of virtual infrastructure based on Linux and Windows from anywhere in the world in less than 1 minute. For the integration of client services, open tools like API, CLI, and Terraform are available._
https://serverspace.us/support/help/automation-of-client-data-analysis-via-gpt-api.mdDiscover how GPT API automates customer data analysis to improve business efficiency, enhance customer insights, and reduce operational costs.
Analytics in business occupies a separate line on the pedestal, because thanks to it the company’s turnover increases, efficiency and speed of service increase, and profit grows as well. This is a kind of monitoring of the state of your affairs, which can be interpreted through the prism of dry figures and make a forecast for further sales or, on the contrary, make a retrospective and work on mistakes.
This task requires a qualified team of analysts who have skills in using software for data collection, can programme data solutions or use ready-made ones, operate with databases. And the most important thing can summarise and analyse the received data, in order to replenish the personnel of such qualification or to increase efficiency of the existing one due to automation of business processes it is necessary a separate solution.
In this article, we will look at ways to automate the analytics of your customer interactions. Based on artificial intelligence via API from Serverspace!
## The way of working with data
**User feedback analysis**
Let’s imagine a situation when you have accumulated an array of information with feedback and messages from customers, be it from mail, on the company’s website or a third-party marketplace. And you need to assess customer attitudes towards your product, analyse needs and solve problems.
In a classic scenario, you would have to rely only on numerical metrics, where the user rated the service or product. However, such analyses may not always be useful, as they do not give a complete picture of the customer’s needs and the evaluation may not always be consistent.
Screenshot №1 — Feedback from client
Full-text analysis is needed, taking into account lexical features, be it irony, sarcasm, etc. With further evaluation of the customer’s attitude towards the product. An example of a customer feedback processing scheme might look like this:
Screenshot №2 — Schema of platform
The customer data collection module accesses external sources and requests the necessary data sets for analysis, then writes them to a database or a separate file. The analytics module requests the data set from this file and sends it to the analytics in the GPT API from Serverspace. After some time back comes the analytics on the data set, which is saved to the same database or a separate file.
## Example of system work
The input is array format data with feedback, comments, and other feedback via a delimiter.
```
{
List of Comsumers Data
{
"Feedback-1": [
{
"comment": "For brace system too much thick thread",
"rate": "4",
"response": "Helena, hello! Thank you for your feedback! Thanks to the innovative patented technology ****, the thread ****** fluffs during use, collecting all the plaque on itself. We also recommend paying attention to our new product — interdental brush with elastic tip ***** with mint flavor, article ******. We hope that you will appreciate the product!"
"comment": "It is convenient to thread through braces, but the thread itself is very fluffy.",
"rate": "3",
"response": "Helena, hello! Thank you for your feedback! Thanks to the innovative patented technology ****, the thread ****** fluffs during use, collecting all the plaque on itself. We also recommend paying attention to our new product — interdental brush with elastic tip ***** with mint flavor, article ******. We hope that you will appreciate the product!"
"comment": "It is convenient to thread through braces, but the thread itself is very fluffy.",
"comment": "It didn't suit me. It's such nonsense.";
"rate": "4",
"response": "-"
}
]
}
```
Analytics from LLM on this set of product comments:
Screenshot №3 — Analysis of clients feedback
The quality and composition of analytics directly depends on the query posed to the AI GPT, it is desirable to split the tasks to the analytics module by different queries.
Screenshot №4 — Analysis of response for client needs
In this way the quality of answers will be significantly higher. The form of the request is arbitrary, it is recommended to use a structural markup language of any format.
The implementation of a customer data collection module might look like this:
```sql
import sqlite3
import requests
from bs4 import BeautifulSoup
import pandas as pd
import json
# Connect to database SQLite3
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
# Download data from database's table
def fetch_data_from_db(table_name):
cursor.execute(f"SELECT * FROM {table_name}")
data = cursor.fetchall()
columns = [description[0] for description in cursor.description]
df = pd.DataFrame(data, columns=columns)
return df
# Parse data from company web-site
def parse_data_from_website(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# Example of parse comment and another feedback
feedbacks = soup.find_all("div", class_="feedback__info-header")
results = []
for feedback in feedbacks:
# take a note, that you need to form parse by real site structure
comment = feedback.find("div", class_="comment").get_text(strip=True)
rate = feedback.find("div", class_="rate").get_text(strip=True)
response = feedback.find("div", class_="response").get_text(strip=True)
results.append({
"comment": comment,
"rate": rate,
"response": response
})
return results
# Write data to the table in JSON format
def write_to_new_table(json_data, table_name):
cursor.execute(f"""
CREATE TABLE IF NOT EXISTS {table_name} (
id INTEGER PRIMARY KEY AUTOINCREMENT,
data JSON
)
""")
cursor.execute(f"INSERT INTO {table_name} (data) VALUES (?)", (json_data,))
conn.commit()
# Main function
def main():
# Set the URL for parsing and the name of the existing table
url = 'http://example.com'
existing_table = 'source_table'
new_table = 'parsed_data'
# Retrieving data from the database
db_data = fetch_data_from_db(existing_table)
# Parsing data from a website
web_data = parse_data_from_website(url)
# Structuring data in JSON format
json_structure = {
"List of Consumers Data": {
"Feedback-1": web_data
}
}
# Converting data to JSON format
json_data = json.dumps(json_structure, ensure_ascii=False)
# Writing data to a new table
write_to_new_table(json_data, new_table)
print("Data successfully loaded in the table", new_table)
# Running the script
if __name__ == "__main__":
main()
# Close connection with the database
conn.close()
```
**Explanation of the operation of the data collection module**
- Database Connection: The script connects to the database using sqlite3.
- Retrieving data from the database: The fetch_data_from_db function fetches data from an existing table.
- Parsing data from website: In the parse_data_from_website function, we collect comments, ratings and responses from a web page and form them into a structure that conforms to JSON format.
- Creating a JSON structure: The parsing results in a JSON structure that includes: 'List of Consumers Data' is the primary key that contains a nested object named 'Feedback-1'. It contains an array, each element of which is a dictionary with the keys 'comment', 'rate' and 'response'.
- Writing data to a table: The combined data is converted to a JSON string and written to a new database table.
**Be sure to adapt the data parsing in parse_data_from_website** to match the actual HTML structure on your site. If you need to add additional data (e.g. from the database), you can extend the JSON structure accordingly.
For the analytics module, the implementation can take the following form:
```python
import sqlite3
import requests
import json
# Connect to SQLite database
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
# Retrieving data from the database
def fetch_json_from_db(table_name):
cursor.execute(f 'SELECT data FROM {table_name}')
data = cursor.fetchall()
# Fetch the first result if there are multiple records in the table
if data:
return data[0][0] # The first value of the first row (assuming it contains JSON)
return None
# Main function
def main():
table_name = 'parsed_data'
# Retrieve data in JSON format from the database
json_data = fetch_json_from_db(table_name)
If json_data:
# Convert the JSON string into a Python object for modification
json_object = json.loads(json_data)
# Example of extracting a piece of data for use in a query
feedback = json_object.get('List of Consumers Data', {}).get('Feedback-1', [])[0]
# Form the body of the query based on the extracted data
payload = {
{ 'model': 'openchat-3.5-0106',
'max_tokens": 1024,
'top_p": 0.1,
'temperature": 0.6,
'messages": [Pretend you are a data analyst and give a score for this dataset based on the fields provided
{
{ 'role': { 'user',
'content': f "comment: {feedback["comment']}, rate: {feedback['rate']}, response: {feedback['response']}'
}
]
}
# Setting the URL and headers
url = 'https://gpt.serverspace.us/v1/chat/completions'
headers = {
{ 'accept': 'application/json',
'Content-Type": "application/json",
'Authorisation": 'Bearer Fh/ReWcly3HndpNdG98hasdasdasdSADhbzgzgzQLVsdsdshf7WOwvm1cAZaVFIUPbxnxsyVpSLghCh32ScBcmnLKF5mb1EU4Q=="'
}
# Send POST request
response = requests.post(url, headers=headers, data=json.dumps(payload))
# Process the response
if response.status_code == 200:
print('Request successfully completed. server response:')
print(response.json())
else:
print(f 'Error: {response.status_code}')
print(response.text)
else:
print('Failed to retrieve data from database.')
# Run the script
if __name__ == '__main__':
main()
# Close the database connection
conn.close()
```
**Explanation of the operation of the analytical module:**
- Database connection and data extraction: The script connects to a SQLite database and extracts data in JSON format from the specified table. In this example, it is assumed that the parsed_data table contains a data column where the JSON string is stored.
- Forming the request body: The first element from the 'Feedback-1' array in JSON is extracted to use it to form the request. The content field of the API request is passed the data in the desired format.
- Send POST request: Uses requests.post() to send the request to the specified URL. Headers include Authorisation for authentication.
- Response Processing: The script checks the status of the response. If the request is successful, the response from the server is printed. If an error occurred, an error code and the response text are output.
The query parameter 'Represent yourself as a data analyst' is necessary because the model is not from the fine-tuning class. Also for ease of use integration with Web-application for database management and uploading of analytics results is possible. GPT API service from Serverspace can be used in the architecture of any tool that can work with HTTP/S requests, which makes it a universal solution in optimising business processes.
The main requirement for working with the service is the presence of data collection modules or prepared datasets that can be passed for analysis with a certain request. For example, in many marketplaces, analytics from personal accounts can be downloaded via API and used in the same way in their own solutions based on Serverspace’s GPT API.
Screenshot №5 — API Amazon
At the moment, the management of the personal account can hardly be fully entrusted to the service, however, the scenarios of use in data analytics with the help of GPT API shows excellent results!
As a result, the process of customer feedback is automated and put on stream, which means that it will be much easier to get timely analytics on statistics on customer response and needs!
## Conclusion
Automating customer data analysis with the GPT API allows businesses to significantly accelerate information processing, reduce analytics costs, and improve the accuracy of insights. By combining data collection modules with intelligent analysis powered by LLMs, companies can quickly respond to customer feedback, improve service quality, and make strategic decisions based on real insights. This approach transforms raw datasets into actionable recommendations, directly boosting efficiency and profitability.
## FAQ
- **1. What is the GPT API and why use it for analytics?**
The GPT API is an interface for interacting with a language model that can analyze text data, detect sentiment, classify feedback, and generate insights. Using the API makes it possible to integrate AI into business processes without building complex infrastructure.
- **2. What kind of data can be analyzed with the GPT API?**
Customer reviews, website and marketplace comments, support tickets, surveys, feedback forms, and any other text-based datasets.
- **3. Do I need to preprocess data before sending it to the GPT API?**
Yes. It is recommended to clean the data from unnecessary “noise” (HTML tags, special characters), structure it in JSON or another format, and split it into logical blocks to improve analysis quality.
- **4. How can I keep customer data secure when using the GPT API?**
Apply anonymization (remove personal data), use encryption, and store only the fields necessary for analysis. Ensure integration occurs over HTTPS connections.
- **5. Can the GPT API be integrated into existing CRM or BI systems?**
Yes, the API can be easily connected to any system that supports HTTP requests. For example, you can integrate automated review analysis directly into a CRM or display analytics reports in a BI dashboard.
- **6. How accurate is GPT API analytics?**
Accuracy depends on the quality of the prepared data and the way queries are formulated. With proper setup, GPT API analytics can produce results close to those of an experienced analyst.
- **7. Can GPT API completely replace human analysts?**
Not entirely. However, GPT API significantly reduces routine tasks, speeds up data processing, and allows analysts to focus on strategic interpretation of results.
https://serverspace.us/support/help/lvm-creation-and-remove-logical-volume.mdLearn how to create and remove logical volumes with LVM in Linux. Step-by-step guide on managing disk space, resizing, and improving storage flexibility.
As you dive into the depths of Linux, you begin to realise that it is not just an operating system with minimal requirements, but a huge Swiss knife. You go down to the level of namespaces and containers, eBPF capabilities in the kernel and realise how huge the system is. Today, however, let’s talk about the more obvious and understandable layers of the operating system iceberg and look at flexible disc space management, using the LVM utility!
## What is LVM?
**LVM** or **Logical Volume Management** is a software layer for managing disc space, and more specifically their logical volumes. The main problem that this layer solves is that disc management is not flexible enough. For example, we have a service that requires 3GB of free space, but there is only 2GB on one physical disc and 1GB on another, what should we do? After all, they are in different spaces?
That’s right, this is where LVM can help! Pay attention to the architecture of the solution itself and the way the utility works:
Screenshot №1 — Schema
Physical disks have a logical space called partitions or in LVM Physical Volumes, just they are combined at the software level into Volume Groups. After that all space in the VM is allocated between the new logical spaces, as well as flexibly sharing free space with each other!
The only file system partition that can’t be in LVM is /boot, because booting at the low level of the OS kernel is performed from it, and then LVM is connected at the software level to divide the space.
Classically, the partitioning scheme looks as follows:
Screenshot №2 — Lvm spaces
Each volume is allocated to a separate volume for a reason, the logical space concept allows you to flexibly define the space for each of them. Administration is easier with a logical volume, because you don’t have to search for a specific area in the physical space to completely clean up your logs. The partitions represented are:
- /var is the partition mainly storing logs;
- /tmp is where temporary files are stored;
- /home, this directory stores all user data;
- / is the root partition, on the basis of which all other directories in the Linux file system are attached.
From words to deeds, let’s create the first LVM space from scratch and look at the basic functions of the system!
## How do I create an LVM volume?
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №3 — Create Server
Let’s install the required packages and pre-update the repositories using the package manager:
```bash
apt update && apt upgrade -y && apt install lvm2 -y
```
Screenshot №4 — Installation
After the installation has taken place, we need to scan the current discs and logical volumes, relative to which we will build a logical LVM structure. Let’s execute the command:
```
lsblk
```
Screenshot №5 — List of disks
As you can see on the image, there is a total of one disc with two logical volumes attached to the system. Unfortunately, it is not possible to hot-allocate vda1 space, as it is mounted in the root partition. That’s why you need to connect to a machine with liveboot OS and already make changes on the disc or use another space that can be unmounted.
In this case study we will use the sda6 partition and unmount it with the command:
```
umount /dev/sda6
```
Let’s choose the physical partition of the future LVM, in our case it is /dev/sda6, you can create unlimited physical volumes.
```
pvcreate /dev/sda6
```
Next, you need to go higher up the scheme and create a volume group that will merge the already created physical volumes.
```
vgcreate main /dev/sda6
```
After that you need to structure the total disc space into logical volumes as if it were a regular disc. Let’s execute the command:
```
lvcreate -L 2GB main
```
Screenshot №6 — Create logical volume
Now we have a logical volume created and managed by LVM on the /dev/sda6 partition. But for the OS to be able to work with it we need to install a file system inside this logical volume of LVM itself. Let’s run the logical volume scan command and select the required one:
```
lvscan
```
Let’s write the command to create a file system:
```
mkfs.ext4 /dev/main/lvol0
```
Once the area is cleaned up and the system is installed, we can proceed to mount the volume and verify:
```
mount /dev/main/lvol0 /home && df -H
```
Screenshot №7 — Mount
Great, the volume is added and mounted to the /home directory, but what if I need to delete it? Go in reverse order.
## How do I delete an LVM volume?
For this we will go the opposite way and write delete logical volumes, they can also be scanned by writing the command:
```
lvscan
```
Next, let’s move on to deleting the logical volume with the command:
```
lvremove /dev/main/lvol0
```
After that we will remove the shared group and physical partition:
```
vgremove /dev/main && pvremove /dev/sda6
```
Screenshot №8 — Remove logical volume
After manipulations above on the machine remained on the logical volume of the disc sda6 without changes, it can also be deleted at will utility parted.
## Conclusion
LVM is a powerful and flexible tool that allows administrators to manage storage space dynamically without worrying about strict hardware limitations. Unlike static partitioning, LVM provides the ability to expand, shrink, and reorganize volumes on the fly, which greatly simplifies system administration. Whether you are setting up a new Linux environment, maintaining a server, or working with cloud resources, mastering LVM will help you optimize storage management and ensure that your system remains adaptable to future needs.
## FAQ
- **Q: Can I use LVM on my root (/) partition?**
A: Yes, you can, but the /boot partition must remain outside of LVM since the system bootloader needs direct access to it before LVM is initialized.
- **Q: What are the main advantages of LVM over traditional partitioning?**
A: The main advantages are flexibility, scalability, and ease of management. With LVM, you can resize partitions, add new physical disks, and distribute storage across multiple devices without downtime.
- **Q: Is LVM suitable for beginners, or should I stick to standard partitions?**
A: Beginners can safely start with LVM, especially in test environments or on virtual machines. The commands are straightforward once you understand the concepts of physical volumes, volume groups, and logical volumes.
- **Q: Can I lose data when resizing or deleting LVM volumes?**
A: Yes, improper handling may lead to data loss. Always back up your data before resizing or removing logical volumes.
- **Q: Is LVM supported in cloud servers?**
A: Absolutely. Most cloud providers, including Serverspace, support LVM. It's especially useful in virtual environments where storage needs to be flexible and scalable.
https://serverspace.us/support/help/kali-linux-installation-and-configuration-os.mdLearn how to install and configure Kali Linux, the leading operating system for security testing. Follow our step-by-step guide to set up!
There are many strategies and tactics used by IS specialists, which describe the principles and algorithms of asset protection. A key link in this scheme are also tools that allow to automate and speed up the work of the specialist. One of them is the Kali Linux distribution, an operating system with grouped sets of utilities that perform Mittre Attack techniques.
## What is Kali Linux?
**Kali Linux** is a *nix family operating system based on the Linux kernel of the same name, containing infrastructure pentest software kits. However, although the OS has a reputation for being 'hacker-ish', the toolkits allow SOC, TI, Incident response personnel to investigate hacker infrastructure that is typically built to support attack chains and much more.
Let’s start small and go to the [official Kali Linux website](https://www.kali.org/get-kali/#kali-platforms), where we will choose the appropriate way to install the image.
Among the various installation methods we will choose the classic one via ISO-installer, which we can install on a USB stick and boot via BIOS, or use a virtual machine.
Screenshot №1 — Image of Kali
After all the preparatory steps, let’s launch!
## Installing Kali Linux
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №2 — Create Server
We are greeted by the bootloader window, where you can choose between graphical and CLI installation. If the first one is intuitive and easy to understand, the second option will be more interesting to consider, although it presents almost the same interface only pseudo. Let’s run through the standard settings and choose the country and keyboard language layouts. The whole installation process will consist of basic menu blocks, each of which can be returned to during the installation process:
Screenshot №3 — Bootloader
The first thing to be done from the configuration of the future OS is user configuration. Let’s set a name, login and password to be remembered for authentication.
Screenshot №4 — Create user
Choose a time zone, as well as the shell in which the user will work and a set of packages. There are 3 options to choose from: top 10 utilities, regular and advanced. The installation speed will depend on your internet speed.
Screenshot №5 — Software packages
Before doing so, if you have not configured a network connection, by pressing the Esc key several times – go to the menu and select network configuration. There are two options, automatic via DHCP service and manual. For the first one, the configuration will take place without any additional requirements for the user, while the manual mode will ask for an IP address, mask and gateway.
Screenshot №6 — Network settings
After that we can configure the disc space and choose how to configure it. By default, there are several schemes that allow you to deploy regular logical volumes, volumes + lvm, volumes + encrypted lvm.
Screenshot №7 — Disk storage
It is advisable to choose the second option with Lvm, as this solution will allow you to flexibly change the size of the disc and manage free space. The OS boot loader plays an important role, as it is the one that loads the operating system after BIOS startup. You can choose any boot loader you like, however, the stable Grub is recommended.
Screenshot №8 — Bootloader installation
Let’s wait until all the necessary dependencies are fully installed.
Screenshot №9 — Software installation
After that the machine will reboot and the shell will be launched. We recorded the account data earlier, after entering them the OS is available for use.
Screenshot №10 — Shell
https://serverspace.us/support/help/no-space-left-on-device-remove-docker-error.mdLearn how to fix the "No space left on device" error in Docker. Step-by-step guide to free disk space by removing unused images, stopped containers, and dangling volumes.
Errors when configuring a service are a natural process that every engineer faces in his part of routine work. One of them is Docker error : no space left on device, such an error can be very confusing, because nowadays in Linux the space is divided by file system quite flexibly and it is quite possible to run out of space or run out of quota.
## How do I resolve a Docker error?
This problem has two main causes at the root, which say that:
the space in the disc partition on the path **/var/lib/docker** is full and requires more space. This problem occurs because of the large amount of space occupied by Docker objects as well as the local repository.
Docker quota space has run out – this is also one of the most common reasons when the configuration specifies the memory limit that Docker can use. This feature is useful to avoid filling up excessive disc space.
To check whether you have enough or insufficient disk space, use the command that will display a list of file systems and the space they occupy:
```
df -H
```
Screenshot №1 — Disk space
Note that the **/var/lib/docker** folder can be located either on the root partition **/ logical** disc or separately** /var**. In this case, the target folder is located on the /dev/vda2 logical partition. If the size of your disc space does not allow you to load the image or store data, you should clear the space from unnecessary files or enlarge the disc.
## Clearing Docker files
If you didn’t have the needed projects in Docker, you can completely clean up the system with the command:
```bash
docker system prune -af
```
Docker will go through the local repository, repositories, containers and remove them, but before doing so make sure there are no running containers with the command:
```bash
docker stop $(docker ps -q)
```
Screenshot №2 — Clear container
In order to delete files in a specific way, use subcommands, e.g. cleaning images in the local repository will be done with the command:
```bash
docker image remove $(docker image ls -q)
```
Screenshot №3 — Remove image
To delete other objects, use similar subcommands: volume, container, network, etc. If you need to delete a specific file, first browse the list and delete the necessary one:
```bash
docker image ls
```
```bash
docker image remove [container-name]
```
Screenshot №4 — Remove dedicated image
After checking the available space on the disc again with the command df -H, in case there is still not enough space go to the point below.
## Disc Extension
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №5 — Create Server
Increase the device’s disc space by expanding the hypervisor’s virtual storage or select a different disc for the machine. The space will then be increased, however, it must be allocated to logical volumes and the file system.
To enlarge a logical partition let’s find a list of these volumes, usually they are mapped to directories in the Linux tree:
```
df -H
```
Screenshot №6 — Disk space
In this case it is /dev/vda2, we use a pre-prepared utility to change the partitioning of the disc table. Note that you need to specify your partition instead of /dev/vda2:
```bash
apt update && apt install parted && parted /dev/vda2
```
The print command will list the current logical partitions, remember your partition number and enter the command:
```
resizepart [partition-number]
```
Enter the new disc size, note not how much the space will increase, but the new value! For example, 40GB.
Screenshot №7 — Change size of volume
Next, let’s increase the file system size through a similar utility in one command!
```
resize2fs
```
Screenshot №8 — Resize file system
By default, all the free space of the logical partition will be occupied by the file system, after which you can check the freed space with a well-known utility:
```
df -H
```
But what if there is enough space for the Docker container and the error is the same? Most likely it’s the allocated quota.
## Increase Docker quota
A solution in a couple of lines that will allow you to override the value of variables and specify more space for Docker. To explicitly specify resources, we need to restart the containers with the new parameters. Let’s stop all current tasks:
```bash
docker stop $(docker ls -q)
```
After that we will delete the containers with the command:
```bash
docker container prune
```
Set the new parameters via options. Note that you should be careful when choosing values for containers, as they may use up unnecessary system resources!
```bash
docker run -d –name my_container -m 512m –memory-swap 1g –cpus='2' nginx
```
The -m option specifies a RAM usage limit of 512MB, –memory-swap 1GB of virtual memory, and 2 CPU cores. By increasing the values from the default values, the problem will be solved!
## Conclusion
The Docker error "n**o space left on device**" can be frustrating, but it's usually caused by either a full disk partition or exceeded quota limits. By checking available space, cleaning up unused Docker objects, expanding disk volumes, or increasing container quotas, you can quickly resolve the issue and restore normal operation. Regular monitoring of Docker storage and proactive cleanup will help you avoid such errors in the future and keep your system stable.
## FAQ
- **Q: What causes the "no space left on device" error in Docker?**
A: The two main causes are a full disk partition (most often /var/lib/docker) or reaching the quota limits set for Docker containers.
- **Q: How can I quickly free up space in Docker?**
A: Use the command docker system prune -af to remove unused images, stopped containers, and dangling volumes.
- **Q: Will cleaning Docker files remove my running containers?**
A: No, but you should stop all running containers first with docker stop $(docker ps -q) before running cleanup commands to avoid interruptions.
- **Q: What if cleaning Docker files doesn't help?**
A: If the error persists, you may need to expand your disk partition (e.g., using LVM or resize2fs) or increase the Docker quota assigned to containers.
- **Q: How do I check if my disk is full?**
A: Run the command df -H to see available space on each partition and identify which one is running out of space.
- **Q: Is it safe to increase Docker memory and CPU quotas?**
A: Yes, but do it carefully. Assigning too many resources can impact overall system performance. Always balance resource allocation according to workload needs.
https://serverspace.us/support/help/increase-and-decrease-lvm-disc-space.mdStep-by-step guide on how to resize LVM disk space in Linux. Learn to safely increase or decrease logical volumes, optimize storage, and manage partitions effectively!
Working with disc space is one of the key skills in OS administration. It often happens that the size of a disc partition may be insufficient for services, in such cases it is expanded by reducing the size of others. The LVM tool allows dynamic resizing without rebooting the device.
## How to quickly reduce partition size?
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №1 — Create Server
First of all it is necessary to install a set of tools that will be used to partition the disc space. To work with the physical disc and its logical partitions we need the parted utility, and to work with lvm we need the lvm2 utility:
```bash
apt update && apt install parted lvm2
```
Screenshot №2 — Install LVM
Great, now that we have all the tools from the toolbox – let’s go through the list of mounted file systems:
```
df -H
```
Screenshot №3 — Disk space
When installing the image in /home, we lacked 2 GB – we need to increase the size to 3 GB, at the expense of the second partition. Unmount the working partition with the command:
```
umount /dev/main/lvol0
```
Screenshot №4 — Unmount disk
Note that you need to specify your logical partition! After the partition has been unmounted and is not used by the system – we can set a new space size for it.
```
resize2fs /dev/main/lvol0
```
The warning asks you to scan the partition for errors with the e2fsck utility, after which you will need to repeat the command. Let’s speed up the process by entering two commands at once:
```
e2fsck -f /dev/main/lvol0 && resize2fs /dev/main/lvol0
```
Screenshot №5 — Reduce filesystem
Great, the message at the end notifies you of the new FS size. Shrink the lvm system logical partition with the command below:
```
lvreduce -L 1G /dev/main/lvol0
```
Screenshot №6 — Reduce size of volume
The output of the command shows that the task was successfully completed, the partition was reduced! Using the freed space, we will enlarge another logical partition. Don’t forget to mount partitions!
## How to quickly increase the partition size?
Now the free space of the virtual group is exactly 1 GB, it must be defined to the logical partition lvol1. To do this, we will proceed in reverse order, first increasing the volume size:
```
lvextend -L /dev/main/lvol1 3G
```
You can find your volume with the lvscan command, in case it is not shown via df -H. After that let’s increase the file system size to the maximum available:
Screenshot №7 — Scan of logical volume
In a few commands the space was enlarged and moved from the neighbouring partition, all that was left was to mount it and test it to see if it worked:
```
mount /dev/main/lvol1 && df -H
```
Screenshot №8 — Mount extended disk
## FAQ
- **1. What is LVM and why should I use it?**
LVM (Logical Volume Manager) is a tool that allows flexible disk management in Linux. Unlike static partitions, LVM makes it possible to resize, move, and extend volumes without rebooting the system, which is especially useful in production environments.
- **2. Can I reduce and increase partition sizes without data loss?**
Yes, but you must be careful. Always unmount the partition before resizing and run e2fsck to check for errors. Even though LVM supports resizing, it's strongly recommended to create backups before making changes.
- **3. What tools do I need to work with partitions in Linux?**
You'll need:
**parted** – for working with physical disks and partitions.
**lvm2** – for managing logical volumes under LVM.
**e2fsck and resize2fs** – for checking and resizing file systems.
- **4. How do I quickly reduce a partition size?**
Unmount the partition, run e2fsck, and then use resize2fs followed by lvreduce. This frees up space that can be assigned to another logical volume.
- **5. How do I extend a partition size?**
First, extend the logical volume with lvextend, then resize the file system with resize2fs. Afterward, mount the partition and verify the changes with df -H.
- **6. Is it safe to perform these operations on a live server?**
Yes, but only if done carefully. Since resizing operations can be risky, test them on a non-critical system first or use cloud solutions such as VPS/VDS to practice.
- **7. What if my partition doesn't show up in df -H?**
Use lvscan to list all logical volumes. This command helps you identify hidden or unmounted volumes before resizing them.
- **8. Can these operations be performed on cloud servers?**
Yes, cloud providers like Serverspace offer VPS/VDS servers that support LVM, making it possible to dynamically adjust storage resources without downtime.
https://serverspace.us/support/help/an-analogue-of-notion-a-complete-self-hosted-solution.mdLooking for a Notion alternative? Discover the best self-hosted tools for note-taking, project management, and team collaboration - with full privacy and data control.
In the corporate environment, tasks, tools and services that help to implement the process are called task management platforms. One of them is Notion, which is almost a golden combination of convenience and features, however, it has its own disadvantages.
For a company that wants to keep data private such solutions won’t work, especially for teamwork. All data is hosted on the company cloud and is potentially vulnerable to leakage! Let’s take a look at how to get Docmost’s own Wiki + Task Management platform up and running in a few steps.
## How to install and set up quickly?
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №1 — Create Server
For deployment we will use Docker, which is a platform for deploying images in a restricted environment or container. If you haven’t installed Docker yet, go to the package manager and install with the commands:
```bash
apt update && apt install curl docker.io docker-compose
```
Screenshot №2 — Installation
The web application itself still needs to be downloaded, let’s do this by creating a directory for it and downloading the file:
```bash
mkdir project
cd project
curl -O https://raw.githubusercontent.com/docmost/docmost/main/docker-compose.yml
```
Screenshot №3 — Docker compose
Let’s open the configuration and configure the future service:
```
nano docker-compose.yml
```
Screenshot №4 — Change configuration
It is necessary to replace several basic fields under yours in order for the service to work correctly:
- APP_URL specifies the address through which the connection to the server is made. Specify 0.0.0.0.0 to use any interface, but if you want to select a specific one, look up the ip a utility and specify the IP address of the selected one;
- APP_SECRET this variable stores the secret key, which can be generated with the openssl rand -hex 32 command;
- POSTGRES_PASSWORD with this variable is similar, you need to specify the secret key. However, note that in the DATABASE_URL line it must also be specified.
These changes will allow the service components to communicate with each other and perform the necessary actions to create the database. Great! When the service is configured and saved, let’s run it through the command:
```bash
docker-compose up -d
```
Let’s go to the browser and write the server address, and also don’t forget to specify the 3000 port on which the application is hosted:
Screenshot №5 — Config your environment
Let’s fill in the basic fields and start Task Manager’s workspace by clicking the Setup Workspace button. That’s it! We have a standalone solution in full self-hosted format, where it is possible to create user groups and different spaces!
Screenshot №6 — Create spaces
To transfer data from Notion, export your pages in HTML format. Find the three buttons next to page creation and select import, then your uploaded content will appear in the platform!
## Conclusion
Notion is a great all-in-one tool, but for companies that value privacy and complete control over their data, a self-hosted alternative like Docmost is a perfect choice. With Docker deployment, you can quickly set up a secure workspace, manage tasks, create wikis, and collaborate without relying on external cloud providers. By hosting your own platform, you reduce the risk of data leaks, maintain full transparency, and gain flexibility for customization.
## FAQ
- **Q: Why choose a self-hosted alternative to Notion?**
A: Self-hosted solutions provide full control over your data, eliminate dependency on third-party cloud providers, and improve privacy for corporate environments.
- **Q: What is Docmost?**
A: Docmost is an open-source task management and wiki platform that can be deployed on your own server using Docker.
- **Q: How difficult is it to set up Docmost?**
A: The setup is straightforward with Docker and Docker Compose. After editing a few configuration fields, you can launch the service in just a few minutes.
- **Q: Can I migrate my data from Notion to Docmost?**
A: Yes, you can export pages from Notion in HTML format and then import them into Docmost.
- **Q: Do I need a powerful server to run Docmost?**
A: No, Docmost can run on standard VPS/VDS servers. However, for larger teams or heavy workloads, allocating more resources is recommended.
- **Q: Does Docmost support teamwork and collaboration?**
A: Absolutely. You can create multiple workspaces, assign roles, and collaborate with your team in real time.
https://serverspace.us/support/help/osint-tools-and-perimeter-research.mdLearn how to effectively use OSINT tools for perimeter research. Review methods for collecting and analysing open data for cybersecurity assessments!
Almost the entire business segment moved into the environment of information systems and technologies, which made it possible to automate routine tasks, build a complex chain of communications, and increase profits. They have built their own secure corporate infrastructure loops, as well as services that are inside, but accept connections from outside as well.
Many intruders are targeting them, so it is important enough to understand what tools can be used and what OSINT techniques they use.
## What is OSINT?
**OSINT** or **Open-source Intellegence** is a direction of searching and analysing information on open data. Usually the volume of data is chaotic and unstructured, but we can conditionally divide the information into technical and applied data.
In this article we will consider only technical aspects of OSINT intelligence. Many of the machines that are used to build the company’s loop infrastructure store sensitive information that can be used to attack it.
.
One method of analytics is to examine the outer perimeter of the infrastructure and look for all possible entry points. The algorithm is a step-by-step checklist:
- Finding the organisation’s domain and identifying its main characteristics (CDN usage, NS records, organisation’s ASN, SSL certificate, IP address) that will allow to generate a lead, when investigating the infrastructure;
- Based on the artefacts found, investigate all possible subdomains of the organisation;
- Find alternative domains;
- Investigate the organisation’s certificate against the open crt.sh databases;
- Perform a query to the NS server and attempt to collect records.
Let’s look at the steps in more detail and learn how to use the tools for each of them.
## A study of the domain record
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №1 — Create Server
Let’s imagine that the target of the research is a certain company with the domain hackeru.com, which we found through a regular search query. Let’s analyse the domain record using a whois utility or a web service, paying attention to the main attributes of the domain. The utility can be installed through the package manager:
```bash
apt install whois -y && whois hackeru.com
```
Screenshot №2 — Whois
Immediately we see the necessary artefacts worth highlighting – a few NS records. Unfortunately, there is more information about the registrar than about the registrant. Let’s perform a classic query to the DNS server and resolve the domain record hackeru.com:
```
dig hackeru.com
```
Screenshot №3 — Request for resolve domain
The server has a type A record that hackeru.com resolves to 52.21.251.215. It often happens that one organisation may have several white addresses in the same grid. Let’s request PTR records of all addresses in the 52.21.251.0/24 grid. The expected result will be resolved subdomains or similar records that belong to the DNS server.
```bash
#!/bin/bash
for i in {1..254}; do
dig @NS-1744.AWSDNS-26.CO.UK -x 51.21.251.$i +short
done
```
Screenshot №4 — PTR
Let’s try to make a record transfer request to the DNS server, this is a fairly popular configuration issue that allows you to offload all server records:
```
dig axfr @NS-1744.AWSDNS-26.CO.UK hackeru.com
```
Screenshot №5 — NS exploit
The server is configured correctly so it was not possible to query records directly, however, for some servers this is available and usually looks like this:
```
dig axfr @nsztm1.digi.ninja zonetransfer.me
```
Screenshot №6 — Example of attack
This allows you to learn sensitive information about the domain owner, as well as stored records, which can be excellent entry points for infringers.
However, one of the most effective ways is to search for a subdomain from open sources and bruteforce. There are a number of utilities that can be used to do this:
- subfinder – a utility to search open source Shodan, Censys and search engines;
- assetfinder – a utility, also for searching through open data, but using the crt.sh database. This is where all information about domains,
- certificates and their public keys is stored;
- altdns – a utility for bruteforce, which allows you to search for alternative records by adding different characters to the list of existing ones;
- massdns – a utility for fast resolving;
- gau – URL aggregator via search engines.
For efficient work, we will combine the result of each solution into one file and exclude duplicates, after which we will resolve and collect the list of public IP addresses. Let’s collect data from the engines:
```
subfinder -nW -oI -o ~/subfinder.log -d hackeru.com && \
assetfinder — subs-only hackeru.com > ~/assetfinder && \
cat ~/subfinder. log ~/assetfinder | cut -f1 -d , | sort -u > unique-subdomain.txt
```
Screenshot №7 — Domains
We got a list of 23 unique subdomains, which can be resolved and the corresponding addresses can be found. But perhaps there is not enough information about new domains in public sources or they do not have services that require SSL. For this we will use altdns and massdns.
The utility requires a [dictionary to be used for enumeration](https://github.com/dwyl/english-words/blob/master/words.txt):
```
altdns -i unique-subdomain.txt -o out.txt -w words.txt -r -s new_unique.txt
```
Where -i is the domain source, -o is the mutation output file, -w is the mutation dictionary, -r will allow all records to be resolved, and -s will record mutations that have been resolved.
You can then put all the domain names into a single file and massdns will do the resolving:
```
massdns -r ~/res ~/unique-subdomain.txt
```
The set of IP addresses is a list that can be used in penetration testing.
```
massdns -r res.txt -t A -o S -w fin.txt subdomain_file.txt
```
Screenshot №8 — Resolver
https://serverspace.us/support/help/linux-processes-tools-and-management.mdLearn how to manage processes and threads in Linux. Explore essential commands and tools for monitoring, controlling, and optimizing system performance.
The main entities when working with an operating system are processes and threads. They determine the execution context of the software and what actions should be performed. In this article we will answer the questions in detail.
What is a process and a thread? Why do we need an initialisation system like systemd in an OS? What tools can be used to work with processes? And how can intruders exploit them?
## What is a process and a thread in Linux?
A process is an abstract, passive entity or object that lives in the kernel of the operating system and has attributes necessary for software operation. Basically, these are fields such as:
- **PID** – process id;
- **PPID** – id of the parent process;
- **CMD** – name of the running software;
- **Current Working Directory** – working directory of the software;
- **Signals** – signals processed by the software.
When a user runs a utility, the shell it is in sends a request to the kernel, going from user space to kernel space using a system call.
Screenshot №1 — Schema of work OS
For example, to write data to a new file, the shell calls the appropriate system call. After the kernel receives this call, it processes it and determines which process it belongs to and launches the appropriate execution actions or threads. Threads are the active entities of the process and are engaged in executing the instructions passed by the system call.
## What is the birth cycle of processes in Linux?
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №2 — Create Server
It is important to understand the Linux process birth cycle. There is only one process that is started by the kernel at boot – systemd. The rest of the processes are started in the parent-descendant process format. This means that at software initialisation, systemd creates a fork(2) system call, which literally tells the kernel to create a copy of systemd. With the same resources as it has, so as long as the memory allocated to work remains the same. Once created, the new process is assigned a PID and PPID or the id of the parent process.
To make a copy of the running parent process into a 'different utility', an exec() system call is made inside the child process, which requires the kernel to replace the files in memory with the executable files of the new software. You can see the sequence more schematically in the figure below.
Screenshot №2 — Schema birth of process
Thus, it turns out that the branch of running software will look hierarchical: one process started another. But how will this look, when connecting a client to an SSH server to manage Linux? Or how can we figure out who is the malicious process that ran the script? Let’s look at this using the htop utility, which can be installed via the package manager:
```bash
apt install htop
```
Screenshot №4 — Htop
Let’s start and browse the existing process tree by pressing F5:
Screenshot №5 — Process tree
Note the first line, where the process PID=1 is specified – this is the systemd initialisation system, from which the other child processes are started. On the right, the Command column shows the running software and branches, where one of the child processes of systemd is sshd. And already its child process manages the remote SSH session root@pts/0, where a bash shell has been launched to manage the system, where the user is sitting. And just below we can see the htop utility with PID 499087 running.
## How do I check for malicious activity in Linux?
As we have learnt above, any connection to the device will be accompanied by a running terminal real or virtual as a process. Therefore, it is possible to track them with the utility:
```
w
```
Simply w will allow you to display the connections to the machine at the current time, and the utility:
```
last
```
Screenshot №6 — History of login
Shows the history of logging into the operating system, restarting it, and starting it from specific addresses. It is from this history that you can determine what connections were made during the entire period of the machine’s operation. Pay attention to the logs of your system and the processes launched by applications, because usually a red flag, when the OS is running are software calls to the shell. A hacker needs to access the OS through the shell in order to perform a hardening or privilege escalation.
If you detect such activity, you should terminate the relevant processes, isolate the machine on the network, and investigate. The first action is solved by the kill utility:
```
kill -SIGKILL (pid)
```
Instead of (pid), specify the process to be terminated, after which you can collect logs and RAM dumps from the device. Understanding how to work with processes forms a complete picture of how to manage and protect yourself with OS tools.
## Conclusion
Processes and threads form the foundation of how Linux executes software and manages system resources. By understanding their lifecycle, from systemd initialization to child process creation, administrators gain powerful insights into system behavior. Tools like htop, w, and last not only simplify process monitoring but also help in detecting suspicious activity. Mastering these concepts is essential both for efficient administration and for ensuring system security.
## FAQ
- **Q: What is the difference between a process and a thread in Linux?**
A: A process is a passive container with attributes like PID, PPID, and CMD, while threads are active execution units within a process that carry out instructions.
- **Q: What role does systemd play in Linux?**
A: systemd is the first process started by the kernel (PID=1). It initializes the system and spawns all subsequent processes in a parent-child hierarchy.
- **Q: How can I view running processes in Linux?**
A: You can use commands like ps, top, and htop. The htop utility is especially useful for viewing a hierarchical process tree.
- **Q: How can I detect malicious activity in Linux processes?**
A: Check active sessions with w, review login history with last, and monitor process trees with htop. Unusual shells or unexpected processes may indicate compromise.
- **Q: How do I stop a suspicious process?**
A: Use the kill command with the process ID (PID), for example: kill -SIGKILL . Always investigate logs before and after termination.
- **Q: Why is process management important for security?**
A: Attackers often exploit processes to escalate privileges or persist in the system. Proper monitoring and timely response help mitigate these risks.
https://serverspace.us/support/help/cat-linux-thread-merge-utility.mdA powerful thread merge utility for efficiently combining and managing multiple processes, ensuring smooth and organized workspace.
There are many different tools used to work with data in Linux: some of them automate the user’s work, others add functionality and simplify interaction with the OS. One of them is cat, whose main function is to concatenate or combine input and output streams into a single one. In this article we will consider in detail all possible cases of using this utility!
## What is the cat utility?
**Cat** or literally **concatenate** is a utility in Linux similar systems that allows you to combine input and output streams sent to the utility. As a result, the summarised streams can be output into one and sent to other software by pipelines, written to a file or displayed on the screen.
The standard use of the utility is to output the contents of files. For example, let’s see what is in the file gg.txt:
```
cat gg.txt
```
Screenshot №1 — Display file content
When you call the utility, the command reads the contents of gg.txt and sends it to standard output (stdout), which is usually linked to the terminal, causing the text to appear on the screen. But what if we need to output data from two files at once. For this purpose we can list paths to files through space or specify file through pipline. For example:
```
cat gg.txt gt.txt
```
Or a similar command to the one above described:
```
cat gg.txt | cat – gt.txt
```
Screenshot №2 — Concatenate files
In this case, the utility preliminarily reads data from two files and combines them into one, where it then passes them to the standard output stream. This function is useful when working with a large array of data that needs to be formatted or filtered. For example, you can pass the merged data and then filter it through the pipeline to the grep utility:
```
cat gg.txt gt.txt | grep "NOT TRUE"
```
Screenshot №3 — File filtration
The files were summarised and filtered according to the specified rule, and then the line containing the pattern was output. This processing technique can be used when analysing a large amount of data, for example, searching for values in log files.
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №2 — Create Server
Let’s consider one more interesting technique that will help in working with data. For example, we have an array of data that we need to sort and keep only unique values, removing duplicates. In Excel the task is solved by lengthy manipulations, but in Linux with 1 line of commands:
```
cat list_domains_1.txt list_domains_2.txt | cut -f1 -d , | sort -u > new_data.txt
```
The first cat command will merge the existing files into one, passing the data to the cut utility for management. It in turn will filter the data and leave only the first column -f1 with domain names and remove duplicates -d, also custom delimiter ',' is specified. After the filtered data will be received by the sort utility, which will sort them and write them to the file new_data.txt.
The utility can be used to build various data processing chains through pipeline and is an inherent Linux mechanism.
https://serverspace.us/support/help/the-dpi-is-not-working-what-to-do.mdLearn what DPI (Deep Packet Inspection) is, why it blocks network traffic, and how to troubleshoot DPI-related connection issues on Windows and Linux.
Recently, some users have experienced difficulties accessing content from video hosting and online services due to network traffic inspection mechanisms based on Deep Packet Inspection (DPI). In certain cases, DPI systems detect specific traffic patterns and restrict connections, which can lead to slow performance or complete loss of access.
In this article, we take a technical look at DPI, explain how anti-DPI approaches work, and review practical methods for restoring connectivity on Windows and Linux systems.
## What is DPI and anti-DPI?
DPI or Deep Packet Inspection is software that records all network traffic from an interface, converts it into a structured file format and analyses the contents. Based on patterns, it blocks traffic, and anti-DPI approaches attempt to modify traffic characteristics in order to reduce false positives and avoid unintended blocking.
If you have found that your connection has become much slower or access to a necessary service has disappeared altogether, you should try installing SpoofDPI. This is a similar solution to GoodbyeDPI, but it uses different algorithms. Consider installing both Windows and Linux solutions.
## If DPI is not working – solution on Windows
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №1 — Create Server
Firstly let’s check if the device has the necessary software to run the dpi solution, press Win+X and select terminal or Powershell. After that enter the command:
```
winget
```
Screenshot №2 — Help page
If the terminal outputs such help for the utility, then great – you have it installed and ready to work. But if not, you can install it from the official MS Store source and continue with the steps below. Let’s download the package with Golang language for DPI instruction compilations:
```
winget install Golang.Go
```
Screenshot №3 — Installer of Go
Afterwards, close the terminal and open it via the already known Win + X combination. This solution will update the paths to the software and provide access to the files. Let’s run the command to install the DPI itself from the Github repositories:
```
go install github.com/xvzc/SpoofDPI/cmd/spoofdpi@latest
```
Screenshot №4 — Installation process of DPI
This command will download all the sources, load the necessary dependencies, and compile the files. If everything was successful, then repeat the manipulation with a restart of the terminal and enter:
```
spoofdpi
```
Screenshot №5 — SpoofDPI
The DPI service has been raised on the device, where you now need to direct traffic by proxying for the browser in the settings or use the system ones. To do this, press the keyboard shortcut Win + I and go to 'Network and Internet' and then 'Proxy', and then fill in the data as indicated in the screenshot:
Screenshot №6 — Proxy settings
After that, the service loads in a matter of milliseconds and allows you to access resources. But please note that the detection rules are updated and this solution is up to date at the time of publication.
## If DPI doesn’t work – Linux solution
The scheme is approximately the same, you need to install the compiler, and then download the necessary dependencies. To install it, go to the official Golang site, where you can already choose the necessary version for your OS and processor architecture:
```bash
apt autoremove && wget https://go.dev/dl/go1.22.7.linux-amd64.tar.gz
```
Unpack the downloaded archive, using the command:
```bash
tar -xf go1.22.7.linux-amd64.tar.gz
```
Immediately specify new environment variables for working with the language, instead of the template path specify the one where the binary is located. Usually this is the directory where you unzipped the archive:
```
export PATH=$PATH:~/go/bin
```
And finally install the software by writing the command:
```
go install github.com/xvzc/SpoofDPI/cmd/spoofdpi@latest
```
Screenshot №7 — Installation on Linux
After that we can access anti-DPI via the command and raise the corresponding proxying service, which will modify the traffic coming to the network point:
```
spoofdpi
```
Screenshot №8 — SpoofDPI on Linux
And now you can also specify separately for each application or system proxy redirection to this service. After that access to services will not be restricted.
## Conclusion
**Deep Packet Inspection (DPI)** is widely used to analyze and filter network traffic, which can sometimes result in unintended access restrictions. While traditional tools may not always remain effective as detection rules evolve, alternative technical approaches can help diagnose and mitigate connectivity issues on Windows and Linux systems. Because DPI mechanisms change over time, ongoing updates and careful configuration are required to maintain stable network access.
## FAQ
- **1. What is DPI (Deep Packet Inspection)?**
DPI is a traffic filtering technology that inspects network packets in real time, identifies patterns, and blocks access to specific websites or services.
- **2. What is the difference between DPI and anti-DPI?**
DPI blocks traffic based on predefined patterns, while anti-DPI tools like GoodbyeDPI or SpoofDPI modify traffic to bypass detection.
- **3. Why doesn't GoodbyeDPI always work?**
Because network providers constantly update detection patterns, older bypass tools may fail. SpoofDPI uses different algorithms that can help in cases where GoodbyeDPI is ineffective.
- **4. Can I use SpoofDPI on both Windows and Linux?**
Yes. SpoofDPI works cross-platform, though installation steps differ slightly between Windows and Linux (using Winget vs. manual Golang setup).
- **5. Is it legal to use anti-DPI tools?**
Legality depends on your country's laws and the services you are trying to access. Always ensure you comply with local regulations before using such tools.
- **6. Do I need Golang to install SpoofDPI?**
Yes, since SpoofDPI is built in Go, you need the Go compiler installed to download, build, and run it from source.
- **7. How do I redirect traffic through SpoofDPI?**
After running spoofdpi, configure your system or browser proxy settings to direct traffic through the service.
- **8. Will SpoofDPI always guarantee access to blocked sites?**
Not necessarily. As DPI detection evolves, bypass methods may stop working. You may need to update the tool or try alternative anti-DPI solutions.
https://serverspace.us/support/help/eltex-router-user-configuration.mdGuide to configuring users on Eltex routers: create, edit, and remove accounts, set roles, and control access via CLI or web interface.
One possible vector of attack on infrastructure is network devices, especially edge devices. If an attacker gains access to the device’s shell and executes an attack, it could result in prolonged downtime of services, or even the entire infrastructure. So it’s important to know what actions you can take to protect your device!
In this article, let’s cover the basics and background on user management in a router!
## User customisation
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №1 — Create Server
Classically any configuration starts in the CLI starts with a view of current users and capabilities. The command will show the list of currently authenticated users:
```
show user
```
Screenshot №2 — List of users
You can also view a list of ever created:
```
show running-config | include username
```
Screenshot №3 — Short list of user
Suppose we need to create a new account for a network engineer, for this we will switch to privilege mode:
```
enable
```
After that we will write the command to activate the configuration mode and create a user with the parameters:
```
config
user user1
password
privilege 15
exit
exit
commit
confirm
```
Screenshot №4 — New user
By writing the command, user user1, we created a new user, who then has a password. Then privilege level 15, which indicates that he has maximum privileges, as we needed an administrator. But if you need to create a user with lower privileges, you can specify a lower level. After that we exit the configuration and confirm the changes with the commands commit and confirm.
Pay attention to the line with privileges or privilege, which indicates that certain rights are allocated to the user at level 15. To understand what rights should be granted to a user and at what level, you can use the official documentation, which describes each of them.
Screenshot №5 — List of privileges
It seems that the password in the previous task is too easy to bruteforce, let’s change it to a more complex one:
```
user user1
password NEW-strong-P@sS
```
In the example only a template is given, so it is desirable to create a more complex sequence of 18 characters or more of different characters of different characters and case.
Screenshot №6 — New password
Let’s try authenticating through a new user using the console, log out of the current session and log in with new creds. And also make sure that the users are authenticated:
```
show user
```
Screenshot №7 — Check user
Let’s remove an old one that is not needed, which might have been lodged in our router OS after one of the engineers was fired. After all, this is also an attack vector:
```
config
no user user1
```
Enough, a short command allows you to remove the user, after which don’t forget to apply the settings! Remember that you can only perform this action with a certain privilege level. Keep your account data in a safe place!
## Conclusion
Managing users on Eltex routers is a critical step in securing your network infrastructure. By creating accounts with the correct privilege levels, setting strong passwords, and removing unnecessary users, you reduce the risk of unauthorized access and potential downtime. Always follow best practices, rely on official documentation for privilege levels, and review user accounts regularly to maintain a secure and stable environment.
## FAQ
- **Q1: Why is user management important on Eltex routers?**
User management helps control access, prevents unauthorized logins, and reduces the risk of attacks on network infrastructure.
- **Q2: What privilege level should an administrator have?**
Typically, administrators are assigned privilege level 15, which grants full access to all configuration commands.
- **Q3: How strong should router passwords be?**
Passwords should be at least 18 characters long, include uppercase and lowercase letters, numbers, and special symbols for maximum security.
- **Q4: Can I manage users only via CLI?**
No, Eltex routers also allow user management via the web interface, but CLI provides more granular control and flexibility.
- **Q5: What should I do with old or unused accounts?**
It's recommended to promptly delete any inactive or unnecessary accounts, as they pose a potential attack vector.
https://serverspace.us/support/help/nmap-how-to-scan.mdMaster Nmap scanning in Linux and Windows: learn how to scan a machine on the network, detect open ports, running services, and potential vulnerabilities with step-by-step commands.
One of the most important steps in infrastructure protection is an audit, which helps identify weaknesses at the initial or final stages, during the design and implementation of defence systems. Intruders use similar tactics and procedures to damage an organisation’s assets, actively scanning networks, ports through which to attack and gain initial access to the infrastructure.
Today let’s take a look at one of the tools that both hackers and IS specialists use to identify weaknesses in network infrastructure.
## What is Nmap?
Nmap or network mapping is a multifunctional utility that allows you to scan networks to identify hosts, ports, as well as check services for vulnerabilities. The utility can scan both in passive and active mode, aggressively but quickly identifying services or machines. To install it in Linux distributions, just write the command:
```bash
apt install nmap -y
```
And for Windows users, use an alternative package manager:
```
winget install Insecure.Nmap
```
Screenshot №1 — Installation
After that packages will be available on the device and environment variables will write the path to the executable file. So when you restart the terminal the nmap command will be available, check it by typing it:
```
nmap
```
Screenshot №2 — Help page
If the conclusion is that the installation was successful, just in this huge conclusion you can see several steps that are fundamental to the exploration of your infrastructure. To make it clearer, let’s depict this in a diagram format:
Screenshot №3 — Schema
First, the array of devices is searched, this process is called Host Discovery. It allows you to determine the list of available devices on the network using various methods.
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №4 — Create Server
## How to scan hosts via Nmap?
For example, we can scan the network and determine by pinging which devices are currently available:
```
nmap -sn 127.0.0.0/24
```
Screenshot №5 — Ping Discovery
However, often the ping response can be blocked and the researcher mistakenly forms the opinion that there are no machines in the segment. For such cases, the segment is repeatedly scanned by ports to determine whether the host is up or down. The principle is based on the fact that if the service is available, then the host is also up:
```
nmap -PA -PS -T3 127.0.0.0/24
```
Screenshot №6 — Host Discovery
The -PA/PS option means that TCP handling of SYN/ACK packets will be used, and the -T3 flag will set a time interval that will allow a slow scan of the network. This option is great for testing your IPS and its ability to detect such reconnaissance. Also don’t forget to add the -PU option, which will allow you to detect UDP services as well.
## How to scan ports via Nmap?
The result should be a list of hosts with open ports that are available on the given network. Now we need to go through it and find all the services on them, if any. To do this, use the following command:
```
nmap -v -sV -sA -sS -sU -T3 -p U:53,T:80,21-22 4 127.0.1.1
```
Screenshot №7 — Result of audit
According to the results we get a list of service versions that are available by port, this approach is more delicate and allows hackers to leave less traces for the NWI. In this case we have specified only one target, but you may have more. The -sV option allows you to determine the software version that occupies the port, T3 the scanning speed parameter. And specific UDP and TCP ports with targets on which to detect them.
If you conducted Host Discovery by ICPM or the -sn parameter, you can scan ports from scratch with the command:
```
nmap -v -sV -sA -sS -sU -T3 127.0.1.1 –open
```
Great, from a network intelligence perspective we’ve done a machine scan of their ports and also recognised services with versions that occupy them.
## Vulnerability scanning
Let’s imagine that a regulator’s ticket with vulnerabilities has arrived and it is necessary to check them, for this purpose we use a vulnerability scanner. This is the same nmap scanner, but with selected nse modules, which extends the functionality. To do this, go to the scripts folder and download the necessary NSE instructions in Lua:
```bash
cd /usr/share/nmap/scripts && \
apt update && apt upgrade && \
sudo git clone git@github.com:vulnersCom/nmap-vulners.git
```
Screenshot №7 — Vulnerability scan
After downloading the scripts they can be called into the utility from anywhere, let’s scan our ports, either completely or in a range using the -p option. Let’s write the command:
```
sudo nmap -d -sV -sU -sS –script "*vuln*" 127.0.1.1
```
Screenshot №8 — Result of scan
After that, the results will show all possible CVEs, which are presented according to the version of the detected software. This method of vulnerability scanning is considered passive, as it reads and compares the versions with the vulnerability database. Software developers may close a gap within one version or the employees themselves may come up with a way to patch the vulnerability. Therefore, not always what is found corresponds to what is actually found, pay attention to this! Once the list of vulnerabilities has been obtained, it is necessary to go through the infrastructure manually and check if the service is vulnerable.
## Conclusion
Nmap remains one of the most powerful and flexible tools for network reconnaissance and security auditing. With just a few commands, administrators and security specialists can discover hosts, detect open ports, identify running services, and even check for known vulnerabilities using NSE scripts. While attackers may use Nmap for malicious purposes, IT professionals can employ it to strengthen infrastructure and eliminate weak points before they are exploited. Always remember to scan only authorized targets, and use the results as part of a broader cybersecurity strategy.
## FAQ
- **1. What is Nmap used for?**
Nmap is a network scanning tool that helps discover hosts, open ports, running services, and potential vulnerabilities in IT infrastructure.
- **2. Is Nmap legal to use?**
Yes, but only if you scan systems you own or have explicit permission to test. Unauthorized scanning of third-party networks can be illegal and may be considered an attack.
- **3. Can Nmap run on both Linux and Windows?**
Yes. On Linux, it can be installed via apt install nmap, and on Windows via winget install Insecure.Nmap.
- **4. What's the difference between host discovery and port scanning?**
Host discovery checks which devices are online in a network segment, while port scanning identifies open communication channels and the services running on them.
- **5. How can I detect vulnerabilities with Nmap?**
By using NSE (Nmap Scripting Engine) modules such as –script “*vuln*”, Nmap can compare detected software versions against known CVEs from vulnerability databases.
- **6. Does Nmap scanning affect network performance?**
Yes, aggressive scans can consume bandwidth and trigger alerts in IDS/IPS systems. Use slower timing options (e.g., -T3) for less intrusive scanning.
- **7. Can attackers use Nmap in the same way as security specialists?**
Yes. Hackers use Nmap for reconnaissance before launching attacks. This is why organizations should also use it proactively for defense and auditing.
- **8. How accurate are Nmap vulnerability scan results?**
They are indicative but not always 100% accurate. A found CVE may not apply if the service is patched. Manual verification is required to confirm real risks.
https://serverspace.us/support/help/active-directory-domain-password-policy.mdStep-by-step guide to setting up password policies in Active Directory using Group Policy Objects. Improve security and manage accounts with ease.
It is hard to imagine a secure infrastructure without AAA solutions that enable basic processes such as identification, authentication and authorisation of subjects. In most cases, in-built operating system technologies called domains are used. They are a logical group of devices, accounts and objects that are under the control of management servers. They logically perform the same function of accounting, authentication and authorisation.
However, unlike classic AAA solutions, which operate at the network level, data interacts at the transport level and above. This approach allows you to control the actions and configuration of the user’s device. For this purpose, domains use the mechanism of group policies or GPO!
## What is a GPO?
GPOs or Group Policy Objects are objects in AD that consist of a set of device and user rules that apply to areas such as domains, sites, and organisational units. In other words, policies that define the rules for how different areas of AD work. Classically, we have a tree of realms that have a nested structure. This means that if we apply a policy to a domain, then all devices and accounts that are nested will have to obey it.
Screenshot №1 — Schema of work
However, if it is necessary to move away from domain-wide rules, to a specific unit of machines/users or to a site, then a new policy can be applied which will overwrite the old policy. This creates the policy logic that the closer the new policy is to the object, the higher the priority.
At least basic configuration for domain objects and sub-objects is important! One of them is the password policy, which allows you to set the rules for user authentication on the device. To do this, let’s go to the machine and do a quick configuration!
## Configuring GPOs in AD
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №2 — Create Server
First, open a search with the Win command key, type group policy and open the policy module. Or you can use Win+R to enter the command:
```
gpedit.msc
```
Screenshot №3 — Search GPM
When we open the snap-in, a menu will open in front of us, with the very attachments on the left that we looked at in the diagram. In this context, orb.lol is a domain, and the Default Domain Policy applies to all of its members and entities below.
Screenshot №4 — Menu of manager
Note that the Domain Controllers organisational unit has its own policy, which will overwrite those items defined in it. Those that are not explicitly specified will be inherited from the default domain policy. This is because the domain controller may have its own custom settings that may be different from the rest of the objects in the system.
Screenshot №5 — Edit polices
For example, let’s configure a domain-wide password policy, go to Default Domain Policy and right-click it. From the context menu select Edit, by default, the rule set is already bound to the domain, so no additional action is required. However, if there is a need to do so, select the domain and associate it with the policy via the context menu. Back to the configuration, the policy is now open:
Screenshot №6 — Passwords polices
To get to the password settings you need to go through the objects in the following order: Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Account Policies. This setting will allow hardening of passwords on all PCs belonging to the domain. Let’s select the first Password Policy and configure it:
Screenshot №7 — Edit pass policy
By default, not all settings fit the concept of secure usage. Just seven mandatory characters in a password has long been brute-force in small amounts of time. Change the length fields from 7 to 15 characters minimum, disable Relax Minimum password, this will disallow passwords less than 15 characters. And set the maximum password lifetime to 90 days. Go to the second tab Account Lockout Policy, which defines the conditions of account lockout in case of unsuccessful connections:
Screenshot №8 — Lock out policy
The first parameter is responsible for the blocking time, the second for the number of unsuccessful login attempts to block the account, and the third after how long the counter of unsuccessful attempts will be reset. Next you need to save all the applied policies and open the terminal via Win+X. After that you should write the command of forced policy update:
```
gpupdate /force
```
This will allow you to apply policies immediately and not wait for devices to request updates from the controller domain! Fine, we have already configured our policy. For the next user log in, the old password will still work. However, for the new period of password change, they will need to use a more complex password.
## Conclusion
Group Policy Objects (GPOs) in Active Directory are a powerful mechanism for enforcing security standards across an entire infrastructure. By configuring password and account lockout policies, administrators can significantly strengthen authentication processes, reduce the risk of brute-force attacks, and maintain control over user behavior within the domain. Regularly reviewing and updating GPO settings ensures that your security policies remain effective against evolving threats.
## FAQ
- **Q1: What is the purpose of a GPO in Active Directory?**
A Group Policy Object (GPO) defines rules for devices and users within a domain, such as password requirements, account lockout policies, and system configuration settings.
- **Q2: Where can I find the password policy in Group Policy?**
Navigate to: Computer Configuration → Policies → Windows Settings → Security Settings → Account Policies → Password Policy.
- **Q3: How many characters should a secure password have in AD?**
It is recommended to set a minimum of 15 characters with a mix of uppercase, lowercase, numbers, and symbols.
- **Q4: How often should users change their passwords?**
A common security practice is to set the maximum password lifetime to 90 days, but this can be adjusted based on company policy.
- **Q5: What is the Account Lockout Policy?**
It defines how many failed login attempts are allowed, how long an account remains locked, and after what period the counter resets.
- **Q6: How can I apply new GPO settings immediately?**
Run the command gpupdate /force in the terminal to enforce updates without waiting for the default refresh cycle.
https://serverspace.us/support/help/how-to-solve-bash-command-not-found.mdLearn how to fix the “Bash: command not found” error. Step-by-step solutions: correct PATH issues, install missing packages, and troubleshoot Bash commands.
To understand what the root of the problem is, we need to look at how the mechanism of interaction with the OS itself works. Let’s analyse it briefly, but let’s dwell on each of the elements.
It happens that the shell in which the user is working generates an error command not found. Let’s see how to solve it in this article.
## How to solve the problem and what does the shell have to do with it?
To understand what the root of the problem is, we need to see how the mechanism of interaction with the OS itself works. Let’s analyse it briefly, but dwelling on each of the elements.
Screenshot №1 — Schema
First the user, being in the shell, calls shell or bash, which is the very tool for OS management. In it he writes for example the command echo 'Hello', after which the terminal sends it to the shell and it contacts the kernel for information. Who is echo and where does it sit? The kernel responds and issues a thread to read the file, where the output is as follows:
Screenshot №2 — Path
The shell reads the PATH variable, which specifies that all commands should be found in the /bin, /urs/bin, etc. folders. Suppose that a command was installed in the working directory of one of the users, and since it is not specified in the environments, it will not be executed. Or maybe it just doesn’t exist? Consequently, we can identify several problems among the way of handling and working:
- Software path is not written in environment variables, so it cannot be found;
- Insufficient rights and privileges to search for the software in folders;
- Software is not installed in the system;
- Software name misspelling.
Let’s go through each of them and describe several ways of solving the problem. The simplest is solution #1. Perhaps the command you are calling is not installed or the installed package uses a different command to invoke. For example, you need the nano editor, let’s install it:
```bash
sudo apt install nano
```
If you have installed for example the ntp service, but when you call it directly it does not respond – then you need to find the package description!
```bash
sudo apt show ntp
```
Screenshot №3 — APT show
Here you can see the main tags, meta information about the package, as well as a Homepage link to a page that will describe the basic commands for this software. Let’s go through the list:
Screenshot №4 — List of commands
And with their help we can work with the service that will provide the installed package. But what if these two methods are not suitable and we downloaded the software manually and now the executable file is in the home directory? There are two ways out: move to the directory itself and run from it:
```
cd path && ./file_for_execute
```
In this case we specify the path to execute the file, which is in the given directory! Or we can add the path to a variable, note that the area you want to apply the variable to depends on the file. For example, /etc/environment will set the PATH variable for all users, and if a specific one is needed, then in ~/.bashrc in his home directory. Let’s go to the home directory and open the file:
```
sudo nano ~/.bashrc
```
Add the path to the PATH line to start with a colon, so the interpreter knows which directory is where:
```
export PATH=$PATH:/home/your_user
```
Screenshot №5 — New Path
This command will be run when the shell is opened by the user, as if it is the first time the user connects or opens a new process. Export is the variable to be entered, PATH is the name of the variable, $PATH will call the previous value, and :/home/your_user is the string that will be added to the shared path. After that, run another shell and see the changes! For example, before the gg.sh file would not run without explicitly specifying it, but now it can:
Screenshot №6 — Result of work
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №7 — Create Server
Sometimes there **are not enough permissions** to run, for example system utilities will not work unless you specify sudo directly. This is because the interpreter searches the PATH path for the utility, and if it is a system utility, the normal user does not have access to the folder. Therefore, you need to add the user to sudoers:
```
usermod -aG sudo your-username
```
The field your-username should be replaced with the username of the user and run the command again, after which the software should start. There should be no more problems related to not found command by bash interpreter! In this article we have considered almost all ways and variants of solving the problem!
## Conclusion
The "**Bash: command not found**" error is one of the most common issues Linux users face, but in most cases it is easy to fix. Whether the cause is a missing package, an incorrect PATH configuration, insufficient permissions, or simply a typo, troubleshooting step by step helps quickly identify and resolve the problem. By properly managing PATH variables, installing required software, and configuring user permissions, you can ensure smooth operation of your shell environment.
## FAQ
- **Q1: What does "Bash: command not found" mean?**
It means that the shell cannot locate the executable file for the command you entered, usually due to missing software, a wrong PATH, or a typo.
- **Q2: How do I check if a command is installed?**
You can use which command_name or apt show package_name to verify installation and available executables.
- **Q3: How can I add a custom path for my commands?**
Add it to the PATH variable in your ~/.bashrc file, for example:
export PATH=$PATH:/home/your_user.
- **Q4: Why do I need sudo for some commands?**
Certain system utilities are stored in directories restricted to administrators. Adding your user to the sudo group allows you to execute them with elevated privileges.
- **Q5: What if I installed a program manually?**
You can either run it directly with ./filename from its folder or add its directory to the PATH variable for easier access.
- **Q6: Can this error be caused by a typo?**
Yes, often the issue is as simple as a misspelled command name. Double-check the syntax before troubleshooting further.
https://serverspace.us/support/help/docker-user-how-to-work-with-users.mdLearn how to manage Docker users: map container users to host, set permissions, and improve security when running applications in Docker.
Different solutions can be used to work with virtualised environments, but the most popular is still Docker. Its work is based on isolation of environments that are attached to a single PID, creating an environment for running software. As a result, this guest environment appears on the host OS as a set of processes that are further restricted via Cgroups.
Therefore, the work with users on containers and the host machine also happens through the kernel, or rather their authorisation.
So, in an isolated environment, file-based authentication is easy because /etc/shadow is at the owner’s disposal. And there is no further authentication at the kernel level, only rights differentiation! Consequently, you need to secure your host OS from escaping from the container of intruders who could get in via the conditional web!
## How does Docker manage users?
To reveal the algorithm of working with users in virtual environments, let’s consider the scheme. Initially, the developers foresaw a potential problem with illegitimate access in environments that share a common core. Therefore, they solved the problem by adding user mapping to the tools.
Screenshot №1 — Schema
Let’s consider two scenarios according to the scheme: the first one without User mapper and the second one with it. Since a separate environment with an isolated file system is created in the container, the user IDs of the guest environment and the host environment may coincide. This means that a fake root in the guest environment has the same root privileges in the host environment. These possibilities will cause damage to the system, provided that the host volumes are connected.
## An attack from the container when deploying a user
Let’s consider the classic creation of a user in a container. To do this, let’s go to the machine and pre-install Docker:
```bash
sudo apt install docker.io docker-compose -y && systemctl start docker && \
systemctl status docker
```
Screenshot №2 — Initial step
Let’s make sure the service is running and write two files: Dockerfile and Docker-compose.
```xml
FROM ubuntu:latest
RUN apt-get update && apt-get install -y sudo
RUN groupadd -g 10000 usergroup && \
useradd -u 10000 -g usergroup -m -s /bin/bash user1 && \
echo "user1 ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
USER user1
WORKDIR /home/user1
CMD ["/bin/bash"]
```
Screenshot №2 — Dockerfile
In this Dockerfile, we directly set the UID and GID we need for the user to be isolated in their environment. The doc ker-compose that will allow us to create the container is as follows:
```
version: '3'
services:
ubuntu:
build:
context: .
dockerfile: Dockerfile
container_name: ubuntu_container
tty: true
volumes:
– /tmp:/home/user/tmp
```
Screenshot №4 — Docker-compose
Let’s run a build of this image with the container and then check to see if a user has actually been created:
```bash
sudo docker-compose up && sudo docker exec -it ubuntu_container whoami
```
Screenshot №5 — Action in the container
Great, a user in the user1 container! But he had elevated permissions, either intentionally or not from the developer. And also attached the host directory in the work when deploying. Therefore, a file with elevated rights was created on behalf of root on the host:
Screenshot №6 — Compromised result
A basic solution is to limit fully mountable host volumes and use virtual ones instead, or to only allow host files to be readonly! Avoiding directories such as /etc/shadow.
```
volumes:
– /tmp:/home/user/tmp:ro
```
This way guest root can’t harm the system, but if you still need to add system directories for whatever reason, that’s where User Mapper comes into play.
## How to map users from a container?
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №7 — Create Server
User Mapper changes the UID and GID before sending system calls. For example, to make root from the guest environment no longer have elevated privileges in the host environment, you just need to mapp the former to a user with lower privileges. To do this, open the configuration file /etc/docker/daemon.json and add:
```
{
"userns-remap": "dockremap"
}
```
This line says that all users in the guest environment will be represented on the host environment under the dockremap user. Let’s create it and add it to the right group, where by default it will not have privileged rights:
```
sudo groupadd dockremap && \
sudo useradd -g dockremap dockremap
```
Screenshot №8 — Remap
And let’s test the mapping by creating a new file in the shared directory on behalf of guest root:
Screenshot №9 — Result of remap
As a result, the newly created file has attributes not of root, but of the restricted user we set. But this method also has its disadvantages, the additional environment when mapping, slightly loads the work of the host OS. Therefore, this tool can be used only if you need to work with host data, in other cases you can do with the environment of the container or virtual volumes!
## Conclusion
Managing users in Docker is crucial for maintaining container and host security. Without proper isolation, a root user inside the container can potentially escalate privileges on the host machine, especially when host volumes are mounted. Using practices such as limiting volume mounts, setting permissions to readonly, and enabling user namespace remapping helps minimize risks. Correct configuration ensures that containers remain isolated, reducing the attack surface while still allowing flexibility in working with users and processes.
## FAQ
- **Q1: Why is user management important in Docker?**
Because users inside containers share the same kernel with the host. Without isolation, a container root could have root privileges on the host.
- **Q2: What is the risk of mounting host directories into a container?**
If a container runs as root, it can modify sensitive files on the host, such as **/etc/shadow**, leading to privilege escalation or compromised security.
- **Q3: How can I restrict container access to host files?**
Use readonly mounts or avoid mounting critical host directories. Example:
volumes: – /tmp:/home/user/tmp:ro
- **Q4: What is User Namespace Remapping in Docker?**
It's a feature that maps container users (like root) to less privileged users on the host, preventing direct privilege escalation.
- **Q5: How do I enable user remapping?**
Edit /etc/docker/daemon.json and add:
```
{ "userns-remap": "dockremap" }
```
Then create the dockremap user and group.
- **Q6: Does user remapping affect performance?**
Yes, slightly. It introduces an additional translation layer for **UIDs/GIDs**, but the security benefits usually outweigh the overhead.
- **Q7: When should I use remapping vs virtual volumes?**
Use remapping if containers need to work with host data securely. If not, rely on container-only storage or virtual volumes for better performance.
https://serverspace.us/about/news/how-ai-is-shaping-modern-business.mdHow artificial intelligence (AI) technologies help businesses in various fields, what advantages they provide, and how they can be effectively utilized.
Artificial intelligence has quickly become part of our everyday lives, completely transforming the way we think about automating human tasks. From writing simple texts to generating complex code, AI is steadily becoming a part of our lives.
One of the most powerful tools in artificial intelligence is the API for large language models (LLM – Large Language Model). LLMs help integrate AI into workflows, enabling businesses to operate more efficiently, make smarter decisions, and discover new growth opportunities.
Serverspace recently launched a new service – [the GPT API](https://serverspace.us/services/serverspace-gpt-api.md), which allows businesses to create AI-driven data analysis systems for automating client data processing. In this article, we'll explore how AI is already transforming industries, the key benefits it provides, and how it's helping companies not just stay competitive, but get ahead.
## Customer-Oriented Approaches
More and more companies are turning to AI to enhance customer service, streamline processes, and improve overall service quality.
For example, Amazon implemented Amazon Comprehend, which uses machine learning and natural language processing (NLP) to automate the analysis of product reviews. This reduced processing time by 596x compared to doing it manually. Microsoft took a similar approach by incorporating AI into its Dynamics 365 Customer Service Insights platform.
IBM went a step further, using Watson to automate the classification of customer requests. AI cut processing time in half (from 2 hours to 1 hour) and increased accuracy from 800 to 900 correctly classified cases out of 1,000. This helped the company handle 300 more requests each day.
Beyond these examples, AI is also being used to automate responses to frequently asked questions. For instance, Zendesk rolled out Answer Bot, which reduced response times from 10 minutes to just 2, while also lightening the load on staff. Answer Bot now handles around 2,000 requests daily, automatically providing answers and freeing up about 30% of employee time for more complex tasks.
## Improving Business Processes
Modern companies are increasingly adopting AI to improve business management efficiency, and the results have been impressive.
For example, UiPath used AI in its Process Mining solution to analyze more than 10,000 business process logic chains every month. This allowed them to identify up to 100 bottlenecks and recommend improvements, boosting productivity by 20% and automating 70% of processes.
AI has also made a big impact on employee training. IBM implemented its Watson platform, cutting the time needed to prepare training materials from 20 hours to 10, while saving $500,000 in development costs. Watson analyzes employee data and creates personalized training programs, which improves engagement and learning outcomes. Similarly, Coursera introduced an AI-powered Mentor Bot to handle student inquiries. This slashed response times from 10 minutes to just 2, and increased the number of actively engaged students by 15,000 each month.
## Software Development
The rise of artificial intelligence is rapidly changing software and web development, making these processes faster and more user-friendly. Facebook, for example, rolled out an AI-powered translation tool called M2M-100, which handles up to 4.5 billion translations and uses deep neural networks to process texts across multiple languages. What sets M2M-100 apart is that it doesn't rely on English as a middle step, improving translation accuracy.
Another great example is Stack Overflow. They integrated AI into their platform, “Stack Overflow for Teams,” which drastically cut down the time developers spend finding answers to technical questions—from 40 to 20 hours a month per employee. The AI scans developer questions and cross-references them with their existing knowledge base to deliver the best solutions. This not only boosted productivity but also saved the company $14.42 million over three years.
Wix also jumped on the AI train with their Wix ADI platform, which automates website creation. It starts by analyzing the user’s preferences and needs—everything from business type to style and content—then automatically generates a custom website design, including HTML, CSS, and JavaScript. This slashes web development time from 10 hours to just 3. The impact? Wix saw a 5,000 order increase per month, and by 2024, their revenue from creative services subscriptions soared to $1.24 billion.
## Information Security
Another area where AI is helping in business processes is information security.
Splunk integrated OpenAI’s GPT-3 into its SIEM (Security Information and Event Management) system. This solution opened new possibilities for automating and accelerating incident analysis processes. AI processes large volumes of data, automatically classifies and prioritizes incidents, provides response recommendations, and reduces the number of false positives. Thanks to these features, the time for event analysis was reduced from 5 hours to 2 hours, allowing the security team to prevent 120 more threats monthly and handle 300 additional incidents.
Darktrace uses AI to analyze network traffic in real-time, identifying anomalies and potential threats. AI continuously monitors behavioral patterns of devices and users on the network, detects deviations from normal behavior, and categorizes incidents by risk level. This technological innovation reduces the response time to incidents from 5 to 2 hours and prevents 300 more threats per month.
## Marketing
The integration of AI in marketing opens new horizons and makes advertising campaigns more effective.
Alibaba introduced the AI Copywriting Tool, which uses artificial intelligence to automate the creation of marketing materials. The tool analyzes data about the product, target audience, and marketing goals to generate text that best fits specific campaigns. AI takes into account style, tone, and context, as well as creates unique and engaging texts, product descriptions, and other marketing materials. The AI Copywriting Tool can generate up to 20,000 lines of text per second, significantly reducing the time required for material creation from hours to seconds.
The progress of artificial intelligence impacts not only the development of technology and business but also the overall quality of human life. AI helps automate many routine processes, offering savings of the most valuable resource—time. It is clear that the trend of AI integration into business will continue to grow rapidly. Therefore, modern companies face two options: miss the future or confidently step into the era of artificial intelligence through [its proper implementation](https://serverspace.us/services/serverspace-gpt-api.md).
https://serverspace.us/about/news/canadian_vps.mdDeploy VPS and other cloud services in Canada with a 20% discount. Fair billing, 24/7 human support and 99,9% SLA!
[https://serverspace.us/wp-content/uploads/2024/09/falconcloud_launch_ru-1-1.svg](https://serverspace.us/wp-content/uploads/2024/09/falconcloud_launch_ru-1-1.svg)
We are launching a special offer! Deploy [VPS and other cloud services in Canada](https://serverspace.us/services/vps-server/cloud-servers-in-canada.md) with a 20% discount.
[TOR3](https://serverspace.us/infrastructure/data-center-toronto.md) is a cutting-edge data center located in Toronto and certified to the highest international standards, including Tier III, PCI DSS, and ISO. Owned by Cologix, a leading operator of data centers across North America, TOR3 is renowned for its robust infrastructure, which features advanced power systems, stringent security protocols, efficient cooling mechanisms, and comprehensive redundancy measures. These features ensure maximum uptime, reliability, and performance.
**Advantages of deploying infrastructure in Canada:**
High level of security: strict data protection standards that comply with international regulations.
Low latency: fast, low-latency connectivity for users in North America and Europe.
Infrastructure diversification: hosting servers in Canada allows you to expand the geography of your cloud infrastructure, minimize risks, and ensure additional redundancy.
**How to claim the offer?**
– Sign up in the Serverspace[control panel](https://my.serverspace.us/)
– Go to the server creation section under "vStack Cloud"
– Choose the data center in Toronto
– Configure the server as needed
– Click "Create"
**
Promotion terms:** all Serverspace users with a positive balance can take part in the promotion, available until **October 19, 2024.**
https://serverspace.us/about/news/serverspace-at-gitex-global-2024.mdServerspace participated in GITEX GLOBAL 2024, the 44th international information technology exhibition in Dubai.
Serverspace participated in the 44th international information technology exhibition [GITEX GLOBAL 2024](https://www.gitex.com/) in Dubai. This is one of the most significant tech events worldwide, showcasing cutting-edge solutions in cybersecurity, artificial intelligence, and digital transformation.
At the exhibition Serverspace presented its cloud services and solutions designed to meet the needs of the global IT community.
Participation in GITEX 2024 enabled us to strengthen our position on the global market and expand our network of partners, especially in the promising Middle East region, where we actively support technological growth and offer clients comprehensive cloud solutions from one of our data centers in the UAE.
_Serverspace is a cloud provider offering automated deployment of virtual infrastructure on Linux, Windows from anywhere in the world in under one minute. Open tools such as API, CLI, and Terraform are available to integrate client services efficiently._
https://serverspace.us/support/glossary/repo.mdLearn what repo is, its key points, and what types of git repo exist
In Git, a repo, is a centralized storage area that maintains all project files and their version history. It acts as a database that logs every modification to files, capturing details about the changes, the authors, timestamps, and reasons for each update.
## Key components
- **Working directory**: This is where you’ll find the files and folders of your project. It’s the directory where you’ll make changes to the code.
- **Index** (or staging area): This is a temporary storage location where you prepare changes you want to commit. Think of it as a “waiting area” for your changes before they’re officially recorded in the repo.
- **Local repository** (or .git folder): This is where Git stores all the metadata about your project, including commit history, branches, and tags. It’s usually a hidden .git folder inside your working directory.
When you run the Git repository initialization command git init, a hidden .git folder is created, storing all metadata about your project. You then gain access to the full range of Git commands, allowing you to manage and modify your project
A Git repo can be:
- **Local**: stored on your own computer, for personal projects or testing purposes
- **Remote**: stored on a server, such as GitHub, GitLab, or Bitbucket, for collaborative projects or open-source projects
- **Central**: a single, authoritative repository that serves as the main hub for the project, often used in corporate environments
Overall, a Git repo is a centralized system for managing code changes, allowing you to track history, collaborate with others, and maintain different versions of your project.
https://serverspace.us/support/help/deprecating-apt-key-and-add-apt-repository-what-to-do.mdDid you got issues in the moment of use add-apt-repository? In that tutorial you find answer on your question!
## Why is apt-key deprecated?
The secure installation process contains many pitfalls, one of which is downloading files and resources with privacy and authentication. Linux distributions have implemented the apt-key and add-apt-repository utilities, which automate the process of checking repository packages against added keys. However, a significant security issue has emerged: there is no mechanism for assigning a specific key to a repository. This means that if a company key is compromised or employees abuse their authority, a malicious file could be signed. Newer versions of the distributions have already integrated a more secure solution using GPG directly, which we will discuss below.
## Which command has replaced apt-key?
Instead of the obsolete apt-key and apt-add-repository, which mediated the verification mechanism, only the GPG utility will operate. It was present in the identification and integrity and authentication mechanism before. However, the update will allow you to get rid of the intermediary utilities that posed a number of threats.
Screenshot №1 — GPG
GPG or GNU Privacy Guard is a crypto package that allows you to encrypt, decrypt, sign documents and messages with EDS, store keys with identifiers in a database, and perform many cryptosystem functions. Just one of these is signature verification on apt packages. For more clear demonstration all steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md).
Screenshot №2 — Server list
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways. And let’s move to the terminal with our OS!
## How to add keys and repository in terminal?
First, we need to get the public keys and a link to the repository where the packages will be downloaded from. For example, let’s look at the MongoDB database. Go to the official site to find a repository for the Debian distribution and fix the main components:
- Public key: www.mongodb.org/static/pgp/server-7.0.asc
- Link to repository: repo.mongodb.org/apt/debian
The curl and gpg utilities are required to work with the components, if they are not available, install them via the command below:
```bash
apt install curl gnupg -y
```
When downloading data from the repository before installation, Linux accesses the list of trusted keys and checks the signatures, if they match, then proceed to the installation process. Otherwise, the utility displays the signatures do not match and the package is considered potentially untrustworthy. In order for the files to be verified, it is necessary to download the public key and add it to the list of trusted keys.
```bash
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | sudo\
gpg –dearmor -o /usr/share/keyrings/mongokey.gpg
```
Screenshot №3 — Download key from site
Having verified that the file is indeed a public signature, we now need to add a repository and associate it with the key. To do this, let’s write a command that will allow us to make changes to the repositories file:
```
echo "deb [ signed-by=/usr/share/keyrings/mongokey.gpg ]\
http://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main"\
>> /etc/apt/sources.list.d/mongodb-org-7.0.list
```
Let’s take a closer look at each element of the command:
- the echo utility allows you to display values in quotes;
- the string [ signed-by=/usr/share/keyrings/mongokey.gpg ] is the path for the key checking mechanism;
- link to repository http://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main;
- redirects content from the screen, after the echo utility to the /etc/apt/sources.list.d/mongodb-org-7.0.list file.
Screenshot №4 — Make record with repository path
Once we have checked with the cat utility to see if there is a record, we can update the distribution and try to download the software:
```bash
apt update && apt upgrade && apt install\
mongodb-org -y
```
Screenshot №5 — Download from repository
The packages were successfully downloaded and installed on the system! In this case, we have safely installed the keys, as we had previously connected via HTTPS to a site that had a valid certificate. This indicates the authenticity of the stored data and also the hash sum attached to the key certifies its integrity. Therefore, the transmitted packets are authentic and have not been modified!
https://serverspace.us/support/help/how-to-install-deb-packet.mdLearn how to install a deb package in Ubuntu and other Debian-based distributions with simple commands in the terminal.
The operating system distribution is a platform for working with a software environment that includes many different applications and utilities. Both client ones to perform basic tasks and administrator tools to manage the device. To install and work with them, binary files, images with virtualisation platforms, source code, instruction sets with interpreters/compilers, as well as archived packages deb, rpm and others are used. In this tutorial we will focus on specialised Debian family archives.
## How to install a deb package quickly?
Let’s not hesitate and choose a source from which to download the deb, it can be a repository, a web server or a file store. For example, let’s find the packages we need in the Docker repository and download them using wget or curl:
```bash
wget https://download.docker.com/linux/debian/dists/bookworm/pool/stable/amd64/containerd.io_1.6.16-1_amd64.deb
```
Screenshot №1 — Download deb package
Afterwards, we will access it using dpkg or apt and install its contents. Note that it is important to specify the path to the deb file, because the package manager does not know its location:
Screenshot №2 — Apt error
If you try to specify only the name you may get the following error, so it is important to identify the full path or specify the current directory!
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №3 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways!
Let’s spell out the command for installation:
```bash
apt install ./containerd.io_1.6.16-1_amd64.deb
```
Let’s wait until the archive is unpacked and the necessary dependencies are installed:
Screenshot №4 — Installation of package
Note that the installed utility is now called containerd.io. And to work with it through the package manager you should use this name. The data on the screenshot shows that the utility is installed and its daemon has been raised! Let’s check it through the initialisation manager:
```bash
systemctl status containerd.io
```
If the service is in the active state, we can assume that the utility has been installed successfully. However, not all packages have daemons, deb packages may contain scripts, images and other solutions.
It is also possible to install through the package manager directly, using the system repositories. To do this, write the command:
```bash
apt update && apt upgrade && apt install name-of-package
```
To search for packages among the repositories, use the apt search command or apt list | grep ‘package’.
## Where did the deb package get installed?
Pay attention to the structure of the file, it will indicate where the package may have been installed for this we use the command dpkg –content [packet_name.deb]:
```
dpkg –content containerd.io_1.6.16-1_amd64.deb
```
Screenshot №5 — Tree of files
Among the whole list, you should pay attention to packages with a size greater than 0 and a path that contains the bin folder. Usually all binary and executable files should be in the appropriate directory.
Let’s consider more files from this list and find out where configuration data and other components are located. Usually all configuration files are unpacked to /etc for the utility to work, which we can see in the picture above. The libraries necessary for operation are in the /lib directory, and the daemon with documentation in systemd and man respectively. But what if packages were installed by mistake or need to be uninstalled for N reason?
## How to remove a deb package?
In order to remove a package, we need to know its name, not in .deb format, but the one assigned by the package manager during unpacking. To do this, let’s look at the package’s meta data with the apt show command:
```bash
apt show containerd.io_1.6.16-1_amd64.deb
```
Screenshot №6 — Meta data of package
The screenshot shows a lot of different information about the package: its version, dependencies, counter-dependencies, size and other information. To remove the corresponding package, you need to specify its name:
```bash
apt remove containerd.io
```
For complete and irrevocable removal use the command:
```bash
apt purge containerd.io
```
The process of installing deb packages is easy if you follow the instructions, but it is important to understand the package structure and contents. We also covered commands to verify the installation and manage services, as well as how to uninstall packages to avoid possible conflicts or freeing up system resources.
https://serverspace.us/support/help/what-is-deb-packets-snap-packets-and-how-that-works.mdLearn what deb packages and snap are in the Linux world. Learn how they function and what the main differences are!
To work with the operating system, it is necessary to have a set of various applications and utilities, both user and administrative segments. There are many variations of installing the necessary software: instructions with compilers/interpreters, binary files, shell scripts and many others.
Nowadays, installation is a fairly simple and straightforward process for the user, where the installation is done with a single command. But this would not be possible without a specially designed mechanism of compressed archives called deb-packages, rpm-packages.
## What is a deb package and how to use them?
The software is only possible thanks to binary files and instructions processed by compilers/interpreters. The first solution contains low-level machine code for operation and passes it through the kernel to the processor for execution. The second solution allows you to write an instruction in a human-understandable language, which is then converted into machine code and passed to the processor for processing. However, there are a lot of dependencies, configuration files, libraries, which must be unpacked and moved to the appropriate directories of the OS.
The user does not always know how to correctly deploy the software and configure it. For this purpose, various solutions have been developed to automate software deployment and provide a collection of necessary libraries. One of them is the deb package!
**Deb-package is a compressed archive** containing a collection of necessary components for the software and deployment scripts to automate their installation. The necessary package managers apt and dpkg already exist for working with this type of files, as they implement the unpacking mechanism.
Screenshot №1 — Schema of deb
Logically, this architecture can be divided into several main groups: metadata and script files, binaries and libraries, configuration files, documentation. Let’s consider each of the directories and describe the main functions:
- **/usr/(s)bin** is the directory where all executable files, the so-called software kernel, are usually stored;
- **/usr/lib** is a nearby directory that stores the necessary libraries for the application itself;
- **/etc** often stores the necessary configuration files to set up the application/utility or system;
- **/usr/share/doc** stores documentation and manuals of the software itself;
- control, preinst, postinst, prerm and postrm files lie in the root of the folder. These are the files that define scenarios and necessary actions when the software is running. The control file contains a list of dependencies, counter-dependencies, names and other meta-data.
In fact, it is possible to package absolutely any file, as unpacking is just a predefined mechanism. In order to preview the structure of a package before installation, you need to write the command:
```
dpkg –content [deb-packet]
```
Screenshot №2 — Content of deb
You can use the command to view a list of dependencies and other metadata:
```bash
apt show [deb-packet]
```
Screenshot №3 — Deb info
Packages are distributed openly through repositories, web and file servers, then installed using the apt and dpkg package managers.
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №4 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways!
## Why are Deb packages inconvenient and what is Snapd?
In practice, it is not always convenient to use DEB packages: the list of listed dependencies may not always be on the machine or repository, the presence of conflict of existing libraries and applications, the possibility of third-party software affecting applications and the lack of cross-platform.
Screenshot №5 — Apt error
All these shortcomings can greatly affect devices that run information systems! An alternative solution has been presented by the developers of the Ubuntu distribution, a new package manager called snap!
**Snap – is a package manager** that uses virtualisation technologies, allowing you to run each of the utilities / applications in a separate container. For delivery the software immediately uses archives with all dependencies and libraries, as well as prepared OS with minimal requirements allows to make this solution cross-platform!
Screenshot №6 — Snap’s schema
The flowchart allows you to understand which main modules are used and how they interact. The snapd service is a background programme that is an abstract control panel for the package manager itself. It starts up first, then waits for user commands to enter, for example, consider:
```
snap install nmap
```
At this point snapd gets the command to search locally for the nmap package, if it doesn’t find it it downloads it from the repository:
Screenshot №7 — Snap install packet
Once the image has been acquired by the machine, snapd creates a separate namespace with file system, networking, process space, and appropriate user mapping. This environment is completely isolated from the host OS and communicates with the host system kernel. CGroups allows you to restrict the running environment and grant rights to interact with the host OS, using the command below let’s see the main features of the nmap utility:
```
snap connections nmap
```
Screenshot №8 — Snap connections
There is access to the host network as well as files. The utility was installed on core-snap package, which is an OS with minimal requirements, making the process cross-platform. The main drawbacks of the package manager for deb format have been eliminated! It is currently one of the most interesting and safe alternatives to the package manager!
The packages presented in this manual are used as a way to transfer and install software for devices. Deb packages are a classic solution that has a number of disadvantages. Snap covers some of them and presents a richer functionality, however, not all software for this solution is implemented.
https://serverspace.us/support/help/how-to-install-docker-on-debian.mdLearn how to install Docker on Debian with our step-by-step guide. Follow our instructions to set up Docker efficiently and start managing containers!
The era of one server – one service ended with the advent of virtualisation, when it became possible to create isolated environments on a device. In general, this technology allows you to isolate resources and processes at the level of both the processor and the OS kernel. Today we are going to talk about the second one, this technology is a set of solutions on the OS, with the help of which the environment is isolated.
## What is Docker?
Docker is a platform of services that create separate spaces in the OS through namespace, cgroups and mapping mechanisms, providing independent software spaces or containers. To ensure cross-platform compatibility, a pre-prepared distribution with minimum requirements for application operation is used. And the software itself is packaged in images that can be unpacked quickly and easily with all dependencies.
## How to install Docker quickly?
For a flexible and fast installation, you should first check the version of the distribution, preferably use Debian 11-12. Call the utility with the command below and filter the output:
```
dmesg | grep 'Debian'
```
Screenshot №1 — Version of OS
In our case, version 12.2, which fits the installation requirements! If your distribution is outdated, it is advisable to upgrade to Bookworm or Bullseye.
.
Let’s update the repository and download the necessary utilities for work:
```bash
apt update && apt install curl nano ca-certificates -y
```
Screenshot №2 — Dependencies
After the necessary software has been downloaded, let’s move on to installing Docker repositories and the platform itself. To verify the integrity and authenticity of packages, gpg-keys are used, which should be downloaded from the official website and placed in the /etc/apt/keyrings directory:
```bash
mkdir -p /etc/apt/keyrings &\
chmod 755 /etc/apt/keyrings &&\
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc &&\
chmod 444 /etc/apt/keyrings/docker.asc
```
Screenshot №3 — Key of repo
Note that this is the most important point from the point of view of security of packages that will be installed. After all, if the intruder substitutes his own key, further verification will be meaningless. Therefore, make sure that you have an HTTPS connection with a correct certificate that specifies the organisation. Also don’t forget to check the hash values of keys on the site and when you receive them on the distribution.
Then we can move on to the configuration of the repository record itself in the files of the package manager, for this we will write the command:
```
echo \
"deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list
```
Screenshot №4 — Record of repo
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №5 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways!
And now that the key is downloaded and the repository is prescribed you need to update and install the packages:
```bash
apt update && apt install docker-ce docker-ce-cli containerd.io
```
Screenshot №6 — Installation
And at the end of the installation, you need to run the platform autoloader as desired:
```bash
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
systemctl status docker
```
Screenshot №7 — Docker daemon status
https://serverspace.us/support/help/how-to-use-awk-basics-and-how-it-works.mdLearn how to use awk with this comprehensive guide covering the basics and functionality. Master text processing and pattern filtering!
In Linux, there are many different tools that make the user and administrator’s job easier by performing routine or complex tasks. Such solutions allow to automate and simplify the user’s work. The awk utility is no exception!
Working with the Linux family of operating systems often requires changing configurations, datasets, documents and other types of data, which the OS is full of, requiring processing according to a given template. This utility is not a classic editor, but a streaming solution that immediately processes data according to the condition. Let’s consider it in detail in this instruction!
## What is awk and how to use it?
**Awk is a streaming text editor**, filtering and processing data that comes in as input. Then, which are passed to the standard output stream stdout. It can be redirected to a file or other utility for further work with them.
Awk is not only a utility, but a full-fledged data processing language that reads the information line by line and applies the appropriate commands to change it. For clarity, let’s take test data as an example and consider basic commands on its example:
```
echo '1:2:3:4:5:6:7:8' | awk -F ":" '{print $1}'
```
Screenshot №1 — Print
This command searches for a value in the first position, taking into account that the separator “:” and after the value is found apply the command “print” to it. This allows you to print the content on the screen. This construction at first glance seems monstrous and not logical, but it will become clearer once you understand the syntax!
```
awk [options] '[condition {command}]' file
```
The -F option allows you to override the delimiter between blocks of data, you don’t have to use quotes to work. It is acceptable to use immediately after the option, for example -F “:” is equivalent to -F:, which allows to simplify the work. Also among the options you can find the following:
- -f, –file – read the data stream to the input not through the standard stream, but through the specified file;
- -e, –source – execute the specified code in awk;
- -o, –pretty-print – write the result of the utility’s work to a file.
The next block condition and command, the utility reads the input data and applies the command to the values matching the specified condition. The format/[value]/ is used to mark the boundaries of the template. Most logical expressions can be implemented into these bounds. Also, when processing a stream of text, the utility defines variables that can be useful for processing and also used in the condition. For example, the $1 variable defines the first element in the strings. Let’s assume that the task is to output all user logins. To do this, let’s write the command below:
```
cat /etc/passwd | awk -F: '{print $1}'
```
Screenshot №2 — Logins
And if it is necessary to find among all values of the first column the user with the login ‘root’, then use the following command:
```
cat /etc/passwd | awk -F: '/root/ {print $1}'
```
Screenshot №3 — Login search
To search for /root it is necessary to pre-screen the / sign, this means to put a backslash \ in front of it, so the utility will realise that it is not the beginning and end sign of the pattern, but a part of it!
```
cat /etc/passwd | awk -F: '//root/ {print $1}'
```
If you want to perform a more structured search, you can use variable access and compare the result:
```
cat /etc/passwd | awk -F: '$1 == "root" || $4 == "bin" {print}'
```
Screenshot №4 — Search by parameter
For a multitasking template with output to a text file, we will use the command:
```
cat /etc/passwd | awk -F: '/root/{print} /docker/ {print}' > /tmp/result1.txt
```
Screenshot №5 — Multiple filter
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №6 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways!
If you need to calculate the number of existing accounts, you can also use the prepared variable NR for this purpose:
```
cat /etc/passwd | awk -F: '/root/{print NR}'
```
Screenshot №7 — Quantity of accounts
For a more detailed list of possible options and elements, invoke the help command:
```
man awk
```
This tutorial covers the basics of the filtering and pattern search utility, making it easy to get started using this solution. We have covered several types of conditions, while searching, their corresponding commands in the context of work cases.
https://serverspace.us/support/help/what-is-chmod-and-how-does-it-work.mdLearn about chmod, a command in Unix and Linux systems used to change file permissions. Understand how it works and how to use it effectively.
The Linux family of distributions are mainly multitasking and multi-user operating systems, which inherently implies a requirement for differentiation of user rights. For this purpose, there are a number of utilities in the OS, which, in accordance with the POSIX standard, allow you to delimit rights using a discretionary access model. One of them is chmod, let’s consider the principle of the access model and the utility’s role in it.
## What is chmod and the Linux discretionary model?
Chmod is a standard OC Linux utility that sets access rights for files and folders, allowing you to define the order in which different users can access a resource. As mentioned earlier, many Linux distributions are based on a discretionary access differentiation model. This means that each file and directory has its own list of attributes: owner, group and a list of permissions for three categories of OS users. Let’s take an example, let’s create a “secret directory” and files to it by commands:
```
mkdir -p /tmp/Secret-folder
touch /tmp/Secret-folder/gg
touch /tmp/Secret-folder/gt
```
And let’s immediately look at the standard attributes that the OS will give you:
```
ls -la /tmp/Secret-folder
```
Screenshot №1 — File permissions
To the left of the displayed files and directories, you can see the set of their attributes, where the example of the gg file is:
- -rw-r–r– access rights to the file;
- root root entry indicates the owner and group;
- jul 9 06:10 displays the time the file was last opened/modified.
Since we are the owners of the file, we can easily control the state of the access attributes, let’s take a closer look at them. Each element on the left side has strings defining access rights to the file:
Screenshot №2 — First bit
This bit may also contain SUID and GUID values that allow to run the file on behalf of its owner/group of owners, rather than those provided by the user. This solution allows you to temporarily grant rights, however, it is strongly not recommended for use! Since there is no privilege differentiation system, it is better to use sudo for this purpose.
Screenshot №3 — Creator’s permissions
Then there are the file owner rights, which allow read and write access to the file, however, the owner or root can always change their level of access to the file or/and directory.
Screenshot №4 — Group’s permission
An owner’s group brings together users who are in the same group as the owner. Usually, they either have the same rights as the owner or slightly reduced rights.
Screenshot №5 — Other users permission
The other users are those that are not included in the list of the owner and his group. As a result, the string of access attributes is divided into 3 triplets and one bit: the rights of the owner, group, other users and the control bit. We will come back to the last one, let’s consider their work on a practical example.
## How to use chmod?
Similar to the previously created folder at the beginning, let’s implement the following directory and the files in it:
Screenshot №6 — Schema of files
You may have noticed objects with a name in the form of a dot or two, and to the left of them the type of directory. The point is that when we go to the folder itself, we may need to briefly refer to it or the directory above it, and that’s what these links are for. One point links to the current directory, two points link to the directory above.
For example, let’s allow users in the owner group to write to a file, they currently have read-only permissions:
```bash
chmod 664 /Minfin2/gg
```
Screenshot №7 — Change permissions
What do the numbers 664 mean? It was decided that each right in the triplet would have a numerical designation:
- 4 is read or reading;
- 2 is write, or writing, deleting, creating objects;
- 1 is execute or execute, scripts, binary files.
Each digit is the sum of the rights for one triplet group, the first 6 is rw for the owner, the second 6 for the group and the last 4 read for the rest. So **664 is equivalent to rw-rw-r–** the attributes of the file. Let’s try from another user in the owner group to delete the file gg, the w access parameter on the file allows us to do this. But we catch the** error permission denied**:
Screenshot №8 — Permission denied
Why? Because there are permissions on the file, the point is that Linux has a hierarchical access rights check. This means that on the path to the file itself, the user must have permissions in directories too, except for the files themselves. Let’s try to assign them and then delete the file:
```bash
chmod 775 /Minfin2 && rm /Minfin2/gg
```
Screenshot №9 — Remove file
And success! The file was deleted, thanks to the fact that permissions were correctly granted to the file itself and the directory in which it was stored. If numbers are not a suitable form of control, we can use symbols. For example, give the owner the full set, the group and others the triplet r-x:
```bash
chmod ugo-rwx /Minfin2/gg && chmod u+rwx /Minfin2/gg && chmod /Minfin2/gg go+rx
```
As you can see this solution is much longer than the numerical rights designation, however, it is just as functional and fulfils the tasks. All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №10 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways.
https://serverspace.us/support/help/how-expression-if-work-in-python.mdLearn how to use Python’s if, elif, and else statements to create dynamic and flexible programs. Step-by-step guide with examples for conditional logic in Python.
When writing a programme, there is almost always a need to create a branched algorithm with several variants of condition. For example, to use different language packages or software configuration mode for users with different language preferences. In this article, let’s look at one of the most commonly used and simple Python3 constructs – if!
## What is a conditional if construct in Python?
As mentioned above, algorithms are often branched and special language constructs are used to implement different scenarios:
Screenshot №1 — Language syntax
The logic is, if [condition-1] is true, then execute [instruction-1]. Otherwise (first false) if [condition-2] is true, then execute [instruction-2], otherwise (all of the above are false) execute [instruction-3]. Note that the indentation or tab determines whether the next instruction line will refer to the construct or be separate from it. Let’s consider the simplest example of usage:
```
max=12
min=1
if max>5 and min5 and min5 and min
https://serverspace.us/support/help/loop-while-in-python.mdLearn how to use a while loop to perform repetitive tasks in Python. A detailed tutorial with examples is included here!
Programming languages are used to solve all kinds of problems related to massive data types, such as lists, strings, tuples, dictionaries. And many others that require a modern language to handle a large incoming stream of data. In Python for working with such types there are loops, which are divided into a loop with a counter for and without a certain number of steps while python loop. The second one will be discussed today!
## What is While in Python?
While – is a cyclic construct that is executed as long as the condition specified for it is true. Inside the construct there are instructions to execute the loop, as well as keywords to stop the construct itself or skip iteration. Let’s consider its syntax below:
Screenshot №1 — Language syntax
First, the while keyword is defined, with a condition that is checked for truth and if it is True, a number of instructions are executed. Note that everything that is indented belongs to the construct and will be executed according to the loop rule, except for continue/break, but we will talk about it below. From theory to practice, and if before it was not clear how the loop machine works, the example will make it clear. For example, we need to output numbers from 0 to 5 for this we will write the construction below:
```
n=0
while n
https://serverspace.us/support/help/installation-of-docker-desktop-on-windows.mdLearn how to install Docker Desktop on Windows. Step-by-step guide to setting up Docker for Windows 10 and 11!
The world of containers is full of different platforms and solutions, however, Docker is still dominating and that’s not just because of that. One of the most interesting solutions is Docker Desktop, which includes all the basic functions of a modern container manager. Let’s talk about it and its installation in the instructions!
## What is Docker Desktop?
Docker Desktop is a Docker product that enables automated deployment of applications, systems based on a containerisation platform with the ability to build and distribute your own. This means that the Docker Desktop system creates an isolated process inside which a minimal OS runs. Individual network, disc, processor space and OS kernel are connected to it, on the basis of which the image or the application itself is deployed.
Screenshot №1 — Schema of algorithm
So, having a ready image of the application, you don’t need to download dependencies and perform system configuration, the image is already ready and waiting for the launch process in an isolated space!
## How do I install Docker Desktop?
To install, you need to go to the official Docker website and download the installation package by clicking on the [Download for Windows button](https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe):
Screenshot №2 — Preview
After downloading, be sure to check the package checksums or digital signatures to ensure that the package has not been modified during transmission. To do this, open the file properties, go to the Digital Signatures section, and look at the certificate that came with the software. The Issued to Docker Inc fields must be present in the file!
Screenshot №3 — Digital Signature
The solution already integrates the company’s core products, which will enable a complete cycle of deployment and work with applications:
- Docker Engine – containerisation and image management daemon;
- Docker CLI client – a utility for accessing the daemon;
- Docker Scout – module for scanning images for vulnerabilities;
- Docker Build – builder of automated images;
- Docker Extensions – add-ons module;
- Docker Compose – orchestrator for small number of containers;
- Kubernetes – orchestrator for enterprise solutions.
Note that Docker Desktop is not just a GUI shell, but a complete solution under GUI panel management.
## Installing Docker Desktop
For correct operation it is important to consider the requirements of WSL 2 and Hyper-V technologies, you will need to select one of them during installation. Make sure you are using the correct OS version:
- Windows 11 Home/Education/Pro/Enterprise version 21H2 or higher;
- Windows 10 Home/Pro 21H2 and above, and Windows 10 Education/Enterprise 21H2.
Hardware requirements are the same as yours:
- 64 bit processor with SLAT support;
- 4GB RAM;
- Virtualisation enabled in your device’s BIOS.
You can check them by pressing the key combination** Ctrl + Alt + Delete**, where the options will already be presented:
Screenshot №4 — Hardware
For more efficient containers, you can optionally connect WSL2, after installing Docker. Let’s go back to the previously downloaded package and install it:
Screenshot №5 — Installation
After unpacking all components, the Docker Engine will automatically try to start.
.
If all the requirements above match your parameters, a window should open with the daemon running:
Screenshot №6 — Control panel
Please note that from some IP addresses access to public services may be blocked in accordance with company policy. If you have such a problem, [please refer to the manual](https://serverspace.us/support/help/docker-403-error-how-to-fix-it/). To connect WSL2, a technology that will increase the performance of working with containers, write the following lines in the terminal:
```
wsl.exe –set-default-version;wsl –set-default docker-desktop
```
These commands will switch the operating mode to WSL2 and set the WSL operating distribution to docker-desktop by default!
As you can see this solution is much longer than the numerical rights designation, however, it is just as functional and fulfils the tasks. All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №7 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways.
https://serverspace.us/support/help/configure-docker-desktop-on-windows.mdStep-by-step guide to configuring Docker Desktop on Windows. Learn how to set up Docker with Hyper-V or WSL 2, optimize performance, and run containers smoothly.
Starting a containerised infrastructure can be a lengthy process, part of which is the installation and configuration of services. For small and medium-sized projects, this can take time, and training specialists to use the CLI client to delegate responsibilities can take a long time. In order to lower the entry threshold and make Docker more accessible, the Docker Desktop solution was developed. In the last piece we broke down the installation process and a breakdown of platform requirements, be sure to check it out if you haven’t installed Docker Desktop. In this tutorial, let’s take a look at the operation and configuration of the Docker Desktop product.
## What is Docker Desktop?
Docker Desktop is Docker’s product for deploying out-of-the-box applications and services with packed dependencies based on a containerised solution with modules that provide a complete software delivery and integration cycle.
This means that the same file, network, processor environment is created in the OS, which is separated from the main OS at the logical level, in the form of a restricted process. A basic OS with a minimal set of utilities for operation is loaded inside, the solution is built on its basis, so the system a priori does not depend on the host OS and a common kernel is used.
Screenshot №1 — Schema of algorithm
The diagram below summarises the operation of the service, where the client sends a command to the daemon, which in turn creates isolated environments or containers based on selected images. Consequently, a physical device can be 'split' and many services, systems and applications can be used on one device. The only thing that will bind them together is the host OS kernel. How to work with Docker Desktop?
## How to work with Docker Desktop?
Let’s open the application and look at the window with the control panel, on the left are the main blocks to work with:
- Containers, the list of stopped and running containers, as well as their configuration and management;
- Images, the local repository of downloaded or built images, as well as external sources;
- Volumes, separate file environments that allow you to use an isolated file environment instead of mapping a host disc;
- Builder, will assemble all required dependencies into a single automated image;
- Docker Scout container scanner for vulnerabilities;
- Extensions for containers.
Screenshot №2 — Control Panel
And everything is presented in a single control panel, this approach optimises and speeds up work with services and applications. The first step when working with containers is to build or download a ready-made image, let’s go to the Images tab.
Screenshot №3 — Images
While this panel is empty, let’s download the nginx image from the Docker repository. To do this, click Search images to run and type in the name of the service. In the drop-down list select the necessary one and download the image.
Screenshot №4 — Nginx image in Docker
The container is represented as a string with name, ID and tags, as well as status and other meta-data. On the right side are the control buttons. In the classic view there was a file docker-compose.yml or a list of settings to run the image in the container, now the list is automatically created and optionally modified when the container is started.
Screenshot №5 — Run a new container
You can set a custom name for the container, throw the appropriate ports, as well as connect volumes with files and environment variables for work or leave everything by default. Let’s start the container and enter it, to do this, click the start button and go to the Containers tab, where we will select the running one with our name. The Exec tab allows you to connect to the terminal of the container itself and execute commands.
Screenshot №6 — Manage of container
It is also possible to see the logs, connected files, ports, statistics and scan the container for vulnerabilities.
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №7 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways.
Vulnerability Management is being implemented almost everywhere, and the Docker Scout tool has been developed just for management and patching. Inspection can be performed from the container window in the Inspect tab manually, or select the Scout tool on the left side of the panel.
Screenshot №8 — Docker Scout
The tool analyses the contents of the container in the form of software executables, configs and the Docker File where Docker Layers are stored. Based on the versions of the found and used software, it searches the CVE database and offers to update the vulnerable software. In order to minimise interaction with the host system, you can create a virtual volume. To do this, go to the Volumes tab and create a volume according to the same principle.
Screenshot №9 — Volume creation
In this panel it is possible to import files to a volume, use connection of containers to the volume, cloning, backups. All this allows you to create a single storage for many services or on the contrary isolated environments with files for each of the containers. All these scenarios are possible thanks to the flexible virtual volumes feature. Also, please note that on the bottom left is the Docker Engine control panel, where you can manage the daemon.
Screenshot №10 — Settings of daemon
There is a gear on the top left that allows you to configure networking, proxying, and resource usage in Docker. Using sliders you can interactively define limits for resource utilisation on the host OS, if necessary. There is also a power saving feature that allows you to reduce CPU load and reduce RAM consumption.
This product will allow you to quickly create the necessary container infrastructure and delegate tasks to beginners. Kubernetes and Docker Build items can be discussed in detail in separate knowledge base guides!
## Conclusion
Docker Desktop simplifies the process of building and managing containerized applications on Windows. By providing a graphical interface and integrated tools for container, image, volume, and vulnerability management, it reduces the learning curve for new users while maintaining the full power of Docker. With Docker Desktop, you can quickly deploy isolated environments, manage resources efficiently, and secure containers with tools like Docker Scout. Whether for local development or on cloud servers, Docker Desktop makes container management accessible, streamlined, and highly productive.
## FAQ
- **Q1: What is Docker Desktop?**
A: Docker Desktop is a Docker solution for Windows and Mac that provides an out-of-the-box environment to run containers, manage images, volumes, and services via a graphical interface.
- **Q2: How do I start a container in Docker Desktop?**
A: Go to the Images tab, download or build an image, then go to the Containers tab, click Start, and optionally use the Exec tab to access the container terminal.
- **Q3: Can I manage container resources like CPU and RAM?**
A: Yes. In the Docker Engine settings, you can configure CPU, RAM, and other resource limits using interactive sliders, and enable power-saving features to optimize usage.
- **Q4: How can I secure my containers?**
A: Use Docker Scout to scan containers for vulnerabilities. It checks software versions against the CVE database and recommends updates or patches.
- **Q5: What are Docker volumes and why use them?**
A: Volumes are isolated storage environments for containers. They allow persistent data storage, sharing between containers, and can be cloned or backed up independently from the host OS.
- **Q6: Can beginners use Docker Desktop easily?**
A: Yes. The graphical interface, control panels, and automated configuration make Docker Desktop accessible for beginners, while advanced users can still use CLI commands and full Docker functionality.
- **Q7: Does Docker Desktop work with cloud servers?**
A: Absolutely. All Docker Desktop workflows, including container creation, image management, and volumes, can be performed on VPS or VDS cloud servers.
https://serverspace.us/support/help/how-to-install-confluence-for-company.mdStep-by-step guide to installing Confluence for your company. Learn system requirements, Docker deployment, and setup tips to build a secure corporate wiki and knowledge base.
As a team grows in size, it is often necessary to document and manage the accumulated knowledge. This approach allows teams to work more efficiently and newcomers to the field to understand the material on their own. Public resources such as Google Docs, Notion, and others give access to your trade secrets to site administrators, and are not always convenient to work with. In this material we will understand how to raise your wiki in the corporate segment of the network and do it safely!
## What is Confluence?
**_Confluence_** is a Wiki platform that allows to organise accumulated knowledge and materials in a single space for employees. Confluence is a server with a web panel that can be accessed using a standard login/password or an external authentication system. In addition to standard tasks, it allows for analyses, retrospectives, team task management and much more, thanks to built-in templates.
Screenshot №1 — Intro page
Since employees have different access to information, there is an access differentiation system that determines what information an employee can access.
## How is Confluence implemented and what are its requirements?
The platform consists of services that provide the following: web server, database, caching server, as well as application server with various modules from authentication to request handlers.
Screenshot №2 — Schema of Confluence
The user contacts the web server and provides his authentication credentials. The request goes to the web application, the architecture of which is shown above, and authenticates with the server. After that the request is processed on the web application and returns the response to the client. In the process of query processing, the web application can access the database and make changes.
Installation is done via Docker image, which allows to install the product in a few steps isolated from other services on the machine. All architectural components are already included in the image and are automatically lifted after the container is created on the server. A number of minimum requirements need to be met in order to work:
- **Processor**: 2 cores, 2.0 GHz or higher;
- **RAM**: 4 GB (basic installation with few users and minimal load);
- **Disk space**: a minimum of 10 GB of free space for Confluence installation, plus additional storage space (depends on the size of the database and file attachments).To run the knowledge base quickly and efficiently, you need:
- **Processor**: 4 cores, 2.5 GHz or higher;
- **RAM**: 8 GB or higher, especially for an environment with a large number of users and activity;
- **Disk space**: 50 GB or more, given the growing need for data storage, backups and logs.
For example, a basic wiki system with 150 accounts, 30 spaces and 1000 pages will require about 6 gb of RAM, 2 cores and about 25 GB of free disk space.
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №3 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways.
## How to install Confluence quickly?
Let’s install Docker container manager, when working it is necessary to take into account the OS version for installation [on the company's site](https://docs.docker.com/engine/install/). In our case Docker is installed on RHEL similar OS.
```bash
sudo dnf remove docker*
sudo dnf install -y yum-utils
sudo yum-config-manager –add-repo https://download.docker.com/linux/rhel/docker-ce.repo
sudo dnf update && sudo dnf install docker-ce
sudo systemctl start docker && sudo systemctl enable docker
```
Screenshot №4 — Docker installation
After the installation, you need to download the Confluence image itself by running the command:
```bash
docker pull atlassian/confluence
```
Screenshot №5 — Pull of image
The image or archive has been placed in local storage, and now when creating a container based on this image, docker daemon will be able to find it on the device. The system also requires the creation of a virtual volume, which will be separate from the main OS file system. This approach ensures that Wiki resources are isolated and the service can be flexibly managed:
```bash
docker volume create confluncee
```
Let’s move on to starting Confluence and configuring the container, the environment in which the Wiki will run:
```bash
docker run -v /confluencee:/var/atlassian/application-data/confluence –name="confluencee" -d -p 8090:8090 -p 8091:8091 atlassian/confluence
```
Let’s consider and describe the parameters of this command:
- docker run – command to start the container based on the image;
- -v /confluencee:/var/atlassian/application-data/confluence – connect the isolated volume to the container filesystem, where the volume is on the left and the container filesystem is on the right;
- –name=”confluencee” – the name of the container, for easy reference by name;
- -d or detach to run the container in the background;
- -p port forwarding from the container to the host machine;
atlassian/confluence – the image itself with sources and automation file.
This command will allow you to run Confluence in a separate environment and all the necessary services to run it. Management is done through the web panel, for this we will go to the external or local address of the device through the browser. For configuration and testing, the format address is suitable:
```
http://localhost:8090
```
Screenshot №6 — License
Insert your licence key or purchase it on the copyright holder’s website by clicking on Get an evaluation license. Then click Next.
Screenshot №7 — Type of installation
Select one of the deployment types: single node or cluster. The second type is used for large costs and requirements to the number of users, and the first for small and medium volumes, where one server can cope. Once the deployment type has been selected, let’s select a template.
Screenshot №8 — Template of Confluence
It is possible to use an example of an existing wiki, or build a blank page that can later be designed from scratch.
Screenshot №9 — Confluence users
Specify the details for the Wiki administrator account and save by clicking Next. Then define the space, it can be a group for a team or for the whole organisation. It all depends on how you think about the structure of the knowledge base.
Screenshot №10 — Space of works
As a result of all manipulations, the working panel for Wiki opens, where the basic features of the service are described.
Screenshot №11 — Main page
More in-depth customisation can be done by clicking the gear on the top left, to start building the knowledge base use the To create button at the top. By selecting a template, you can structure the base for most of the team’s tasks via the multi-point.
## Conclusion
Confluence is a powerful corporate wiki platform that helps teams organise knowledge, improve collaboration, and securely manage internal documentation. Installing Confluence via Docker significantly simplifies deployment, allowing you to quickly set up an isolated and scalable environment. With proper configuration, your company can create a central knowledge hub where employees access the information they need, collaborate effectively, and streamline project management.
## FAQ
- 1. What is Confluence used for in a company?
Confluence is a corporate wiki that allows teams to document processes, manage projects, share knowledge, and collaborate in a secure environment.
- 2. What are the system requirements for Confluence?
Minimum: 2 CPU cores, 4 GB RAM, and 10 GB storage. Recommended: 4+ CPU cores, 8 GB+ RAM, and 50 GB+ storage for large teams.
- 3. How do I install Confluence quickly?
The easiest way is via Docker. Download the official Confluence image, create a Docker volume, and run the container with the required ports and configurations.
- 4. Can Confluence be integrated with other tools?
Yes, Confluence integrates with Jira, Slack, Trello, and other project management and collaboration platforms.
- 5. Is Confluence secure for corporate data?
Yes, Confluence supports authentication systems, access restrictions, and encrypted communication, making it suitable for storing internal company knowledge.
https://serverspace.us/support/help/how-to-use-git-short-manual.mdMaster Git version control with this beginner-friendly guide. Learn essential Git commands, practical examples, and tips to manage your projects effectively.
Collaborative project work involves a variety of corporate tools and platforms. For knowledge accumulation and documentation – Wiki platform, for workflow management – CRM, for data management and access – databases, etc. However, an important component when working with code, documentation, and files is Git!
## What is Git?
**Git** is a **repository version control system**, which is a platform for managing repositories stored on a server. It is mainly used to distribute software to an unspecified number of people or to provide access for a team to collaborate on a project. Let’s start by defining the concepts and entities that are used when working with Git:
- Working tree – The folder where the files for user work and the .git directory are stored;
- Index – An intermediate module that stores Working tree changes;
- Commit – A snapshot of the working directory, taking into account the changes written to Index;
- Repository – an archive of commit or snapshots of the working directory.
The whole work with repositories can be visualised as a diagram of three entities:
Screenshot №1 — Schema
The user experience starts by initialising the repository to a specific folder with the command:
```bash
git init /path
```
After that, three main entities are created for Git: Working Tree, Index, Repository. The folder in which the .git directory is created is considered the Working Tree and is where the files are stored. All changes made to the working directory are registered in Index with the command:
```bash
git add /path
```
The Working Tree changes have been registered, after which you can generate a Commit or snapshot of the working directory, which will be sent to the repository.
```bash
git commit ./
```
At this point the commit has been generated as an object, which is stored in objects. We can then direct it to the local repository, by default with the command:
```bash
git push origin master
```
Where origin is the path and master is the master branch. Or override the origin path to a remote repository and run the command:
```bash
git remote add origin git@ip-address:/path-to-repository && git push origin master
```
The Commit will then be sent to the repository or Repository, where it will register a commit named master. In the future, any user can download this version of the commit and use it locally. Implemented with the command:
```bash
git clone git@ip-address:/path-to-repository
```
How do we put this into practice? Let’s build our own Git server!
## How to quickly create your own Git server?
All actions can be performed [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №2 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways.
Let’s install the git package on the machine via the command, for deb-like distributions:
```bash
apt install git
```
And a separate command for rpm-like versions, via the yam/dnf package manager:
```
yam install git
```
Screenshot №3 — Installation
For authentication, the server will run SSH under the git user and authenticate via keys. To prevent the user from executing malicious commands in a normal shell, it will be necessary to specify a git-shell for the user, through which only git commands can be executed. To do this, let’s create a git user:
```
adduser git -c "Login point" -s $(which git-shell)
```
Screenshot №4 — Create user
Since the SSH server is already configured for key-only authentication, we need to pass the list of users’ public keys to the git home directory.
```
mkdir /home/git/.ssh && ssh-keygen git
```
Under discretionary access rules, keys will inherit the creator user’s permissions and need to be changed, as does the storage directory:
```
mv /home/root/.ssh/git /home/git/.ssh/git \
mv /home/root/.ssh/git.pub /home/git/.ssh/git.pub \.
cp /home/root/.ssh/authorised_keys /home/git/.ssh/authorized_keys
```
Now let’s go to the client and find its public key, and if it doesn’t have one, then augment it with the ssh-keygen command:
```
cat /home/your-user/.ssh/id_rsa.pub
```
Screenshot №5 — SSH
Copy the displayed key, it should look like this:
```bash
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCjqQj9A+66iGuq3DYVXWTyHNBklggCdesWQqyIjLfo+aHirIfv5in7d2jFsv6w3HqBumi7PTyIVRsH50y5AWO4nxhE9RJykdKnZ9NAok6XoJk//nVmafIDpyFf5MxrqId02tyrdPT8kIJHPDM2uEANoIpRSvEYqaC39dN1MHK8208nPVxdJ2FV/PNBmBgDnG+Bl89THg6vHUaEfVfNVw5qz1rm7OZ8Z9Eksqv0ErSUq0vHDnJh24oTf9wh6iWDOEgFhVOWQjlLzN2cZn1yk4Ol2hxmZwUcrpjyLRg7n7/Djc1RKJPfxRqOftb8GY8ZICpWJSKOUPooVE9dMxFrgRcb0MQVtreGY2ZU8awcLhpKkvOz4MnwzdbmlUIGprCxdmfy0bQT6QpbKPWEBgee+6uGmVsnP6iJQnFRwNSQw3bxgnQue8l0r2IJ9LTzXVNkjaIJTu17QOsH+HSXcFlFok44PUEqSlaDL+QWyf4DZ8QIknzJ7eorgNxGjCmmqhtLrDc= root@df
```
To protect the device from accessing other servers – let’s add no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty to the beginning of the line and get the following entry and immediately write in the authorised keys. Don’t forget to switch back to the server, because that’s where we insert the client key:
```
echo "no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCjqQj9A+66iGuq3DYVXWTyHNBklggCdesWQqyIjLfo+aHirIfv5in7d2jFsv6w3HqBumi7PTyIVRsH50y5AWO4nxhE9RJykdKnZ9NAok6XoJk//nVmafIDpyFf5MxrqId02tyrdPT8kIJHPDM2uEANoIpRSvEYqaC39dN1MHK8208nPVxdJ2FV/PNBmBgDnG+Bl89THg6vHUaEfVfNVw5qz1rm7OZ8Z9Eksqv0ErSUq0vHDnJh24oTf9wh6iWDOEgFhVOWQjlLzN2cZn1yk4Ol2hxmZwUcrpjyLRg7n7/Djc1RKJPfxRqOftb8GY8ZICpWJSKOUPooVE9dMxFrgRcb0MQVtreGY2ZU8awcLhpKkvOz4MnwzdbmlUIGprCxdmfy0bQT6QpbKPWEBgee+6uGmVsnP6iJQnFRwNSQw3bxgnQue8l0r2IJ9LTzXVNkjaIJTu17QOsH+HSXcFlFok44PUEqSlaDL+QWyf4DZ8QIknzJ7eorgNxGjCmmqhtLrDc= root@df" >> /home/git/.ssh/authorized_keys
```
And the final touch, permissions, let’s deny access to keys and grant permissions to git files:
```bash
chmod 700/home/git/.ssh/authorized_keys \
chown -hR git:git /home/git/
```
Let’s create the repository with one team! Or almost one:
```bash
mkdir -p /srv/git/proj.git \
git init –bare /srv/git/proj.git
```
Screenshot №6 — Bare initialize
Great! Now the repository is created and you can start working with it, taking into account the condition that it is of bare type. You can read about the difference between bare and non-bare in our article. In this case, the repository type allows you to access it only via pull/push/fetch. Let’s create a repository on the client with the command:
```bash
git init /path-to-folder-with-files \
git add . \
git commit \
git remote add origin git@ip-адрес-сервера:/srv/git/proj.git
```
Screenshot №7 — Client repository
After that the repository will be locally created on the client, the files will be registered and the commit with the server endpoint will be prescribed. And it remains to upload the new data to the server repository:
```bash
git push origin main
```
Voila! The server is up and running, and then other users can upload the existing repository with the command:
Screenshot №8 — Git clone
```bash
git clone git@ip-адрес-сервера:/srv/git/proj.git
```
However, don’t forget to pre-populate their public keys in the trusted file as above!
## Conclusion
Setting up your own Git server may seem complex at first, but once you understand the core concepts—Working Tree, Index, Commit, and Repository—the process becomes much clearer. With Git installed and configured on your server, you gain full control over your projects, security, and access management. Unlike third-party platforms, a self-hosted Git server ensures flexibility, scalability, and independence for your team or personal workflow. Whether you are managing a small project or supporting a distributed development team, Git remains one of the most powerful tools for collaboration and version control.
## FAQ
- **Q1: Why should I host my own Git server instead of using GitHub or GitLab?**
A: Hosting your own server gives you more control over security, data privacy, and repository management. It's especially useful for private projects or when working in environments with strict security policies.
- **Q2: What is the difference between a bare and non-bare repository?**
A: A bare repository does not contain a working directory and is designed exclusively for sharing code via push/pull/fetch. Non-bare repositories include a working directory and are typically used for local development.
- **Q3: How do I secure access to my Git server?**
A: The recommended approach is to use SSH key-based authentication with restricted shell access (git-shell). This ensures users can only perform Git operations without accessing the full server environment.
- **Q4: Can multiple users work on the same Git server?**
A: Yes. You can add multiple public keys to the authorized_keys file for the git user. Each developer will then be able to push, pull, and clone repositories as long as their key is registered.
- **Q5: What happens if I lose my SSH key?**
A: You'll need to generate a new SSH key pair and register the new public key in the Git server's authorized_keys file. Without it, you won't be able to authenticate and access the repositories.
- **Q6: Is it possible to mirror or back up my Git repositories?**
A: Yes. Git repositories can be cloned and mirrored easily. Regular backups are recommended to protect against data loss. You can also set up automatic mirroring to a secondary server.
https://serverspace.us/support/help/how-to-clone-repository-from-github.mdLearn how to clone a GitHub repository step by step. We explain cloning via HTTPS and SSH, setup tips, and the fastest way to download GitHub projects to your computer.
The repository version control system was a revolutionary step in team development, documentation, and project management. The ability to maintain public repositories has also given many users access to software developed by the community. One of the most popular repository hubs is GitHub, in this article we will look at ways to work with it!
## What is Git and GitHub?
**Git** is a **repository version** control system that provides a means of managing collections stored on a server with the ability to collaboratively maintain a project.
**GitHub** is a **platform based on the Git system** with mechanisms for organising the software development cycle and managing services. It is managed through a web panel, and it is possible to differentiate access to the repository: for yourself, team, and public use.
There are several variants of Git/Github repository architecture:
- Distributed, implemented as a collection of nodes with the ability to publicly access the resource;
- Server-based, implemented by a single node, mainly in the corporate segment;
- Local, for working with repositories on a user’s device, as a kind of workspace for projects.
It usually works as follows: the client initialises a repository in a working folder using the git utility:
```bash
git init /path
```
The user then adds the necessary files to it to work on, logging changes to the working directory, or Working Tree, using the command:
```bash
git add .
```
After that, the user creates a snapshot of the working directory or commit and saves the files for further transfer to the repository, where the Commit aggregate is stored. It is possible to send data to local repositories with a single command:
```bash
git push origin main
```
Or to a remote repository such as GitHub or GitLab, but how do you do that? And how do you download a repository from GitHub to your device? Let’s explore these questions below.
## How do I download a repository to GitHub?
First, let’s find the desired project on the official website and go to the Code tab:
Screenshot №1 — Download options
There are several options for cloning or fully downloading the repository:
- HTTPS – download is possible via ZIP archive via the button below or via the git clone command;
- SSH – download is via tunnel with public key authentication on the server;
- GitHub CLI – a utility for GitHub, in the form of a client with slightly extended functionality.
Let’s consider the first two options of downloading via the git utility using HTTPS and SSH protocols. For the first option, go to a terminal and type:
```bash
git clone {URL}
```
Instead of the URL, enter your repository link and wait for the latest version to download. After that a working directory similar to the repository name will be created:
Screenshot №2 — Clone from HTTPS
Via SSH the download scheme is a bit different, on the client device view your SSH public keys:
For Linux classically located in the .ssh folder, the file name may vary:
```
cat /home/your-login/.ssh/id_rsa.pub
```
For Windows, the command is as follows:
```
cat C:/home/your-login/.ssh/id_rsa.pub
```
The key should take the following form, copy your key:
```bash
ssh- rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCutHsqJMHaBHLMpl6DkH/x/0H/fwPT687X11omrzqNGJNyehDSw4EyY9kfcz6Y4LG/JgTLuBGfZpE9TCvudvAgo6BV9jM9Hsqw/G9PlB99h9K14B/gtSCdzmT5cxFmTEcbrSbtdQukNFJL1BRab/ayJ0CkMiID7QHac0WRp2gN0fo4ozG4LpHcLyXxn4J5MsfJxvSvo3T8gFtEjKPp8KE0Q6YVEAQ7fC97D+4B+V7hd3wM4WZvlBh2RtWdZcaomLis5Pa/wzcH8WsibQ0w5Rw5+Xrw4pnUjbtnEr4YHn3Rx0T1tBg/HudPrqZ4se0MW8o7bZXYIrDnyIwQ8lyTG8IQMEqyh4+XssEAKX1D4UZpG93c7pXylDwUhJ0LEeQuzfnLQmeSFML7DILQh4CY8BG/L1Vgbo2PNyiVWYLalJoTjLna2LpooTjgjH44t2rHiULDsCJBGq6Js1Bjk3LiqtIawYjdxEcv4Vgu4zPAgvnvFmkY4v8HFph578tgoSgoZPk= gg@DESKTOP- GFERDSA
```
If you don’t have a key, create one, using the command:
```bash
ssh-keygen
```
Then repeat the above steps and copy the key! After that go to the GitHub site and go to user settings via the avatar on the top right. Select SSH and GPG keys on the left:
Screenshot №3 — New SSH Keys
Click on the New SSH key button and type in the copied key, as well as enter a short name for it:
Screenshot №4 — Enter your key
After clicking Add SSH key and confirm the changes with your account password, the key should be added as an authentication method:
Screenshot №5 — New authentification way
Great! Now we can go to the client terminal and download the repository with the usual command:
Screenshot №6 — Result of cloning
The client authenticated to the server with a private key and identified itself with a public key, which allowed access to the repository.
All actions can be performed [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №7 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways.
## Conclusion
Cloning a GitHub repository is a fundamental skill for developers, enabling them to quickly download, manage, and contribute to projects. Whether you choose HTTPS for simplicity or SSH for secure key-based authentication, the process remains straightforward and efficient. GitHub not only makes collaboration easier but also provides flexibility for teams of all sizes, from individuals managing personal projects to enterprises working with distributed teams. By setting up the right access method and understanding Git commands, you can seamlessly integrate GitHub repositories into your development workflow.
## FAQ
- **Q1: What is the easiest way to clone a GitHub repository?**
A: The simplest way is to use the git clone command with the HTTPS link provided on the repository page.
- **Q2: When should I use SSH instead of HTTPS?**
A: SSH is preferred for frequent collaboration because it eliminates the need to enter your username and password every time. It uses key-based authentication, which is both secure and convenient.
- **Q3: Do I need to generate an SSH key for GitHub?**
A: Yes, if you want to use SSH. You'll need to create a key pair with ssh-keygen, add the public key to your GitHub account, and use the SSH link when cloning repositories.
- **Q4: Can I download a GitHub repository without Git installed?**
A: Yes. On the repository page, you can click Download ZIP to get the files. However, this won't give you version control or the ability to pull updates.
- **Q5: What's the difference between git clone, git pull, and git fetch?**
A:
git clone creates a local copy of a remote repository.
git pull updates your local repository with the latest changes from the remote.
git fetch downloads changes but doesn't merge them into your working branch until you decide to.
- **Q6: What should I do if I get a "Permission denied" error when cloning with SSH?**
A: This usually means your SSH key is not configured correctly. Ensure that your public key is added to GitHub and that your SSH agent is running with the correct private key.
- **Q7: Can I clone private repositories?**
A: Yes, but you must have access permissions. For HTTPS, you'll need to log in with your GitHub credentials. For SSH, you must add your SSH key to your GitHub account.
https://serverspace.us/support/help/action-of-github-repository.mdDiscover how GitHub repositories and Git streamline version control, simplify project management, and enhance team collaboration. Learn setup, commits, and best practices!
Corporate services make it easier for teams to work together, increase productivity, and increase the convenience of working on projects. Git allows you to work together on a single project in a repository format with mechanisms for collaborative development and product version control. In this article we will look at how to create your own repositories in GitHub and upload data to it.
## What is GitHub?
GitHub is a Git-based platform that allows you to run a full software development cycle, orchestrate and automate services, and store data. The difference from Git is that this system is derived from the main system and many architectural services are deployed around the repository version control system. Such as: database, web application, web server, caching server, message broker and many more.
It became popular due to the ability to host your own projects on public servers and the very concept of Git system allows the community to develop projects together using the convenient mechanisms of the service.
## How to create a GitHub repository?
First, go to the official GitHub website and select the plus button on the top right to create a new repository:
Screenshot №1 — New repo
Fill in all fields with an asterisk and the rest as required by your project, then note that it is better to choose a short and memorable repository name for easier handling.
Screenshot №2 — Create GitHub repo
Also note that a repository can be public, i.e. available to all users of the Git platform, or it can be private. In this case, access is granted to selected users or teams. After that, click on the Create repository button and wait for the project to be created.
Now a repository has been created on the GitHub server and can be accessed from a client device via the git utility, install it beforehand:
```bash
dnf install git -y
```
Or for an apt-like distribution:
```bash
apt update && apt upgrade && apt install git -y
```
For Windows, use the command in terminal:
```
winget install git.git
```
Screenshot №3 — Install git
Navigate to the working directory with the files you want to upload and initialise the local repository in it, and prepare the files for sending with commands:
```bash
git init
git add .
git commit
git remote add origin git@github.com:login-of-user/name-of-repo.git
git push origin main
```
If you don’t have sufficient resources than you can perform actions [on powerful cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №4 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways.
If you have not added a public key, you will most likely see a Permission denied error, which means access is denied. [You can familiarise yourself with authentication methods in our material](https://serverspace.us/support/help/how-to-use-api-and-ssh-key-for-github-repository/), then come back to this one.
After the above steps, let’s make sure that the repository has been created:
Screenshot №5 — GitHub repo
But, what if we need to make changes to it?
## How do I manage files in a GitHub repository?
This can also be done with a simple command on the client, first make the necessary changes to the working directory or Working Tree. For example, let’s create a new file with the command:
```
touch /gg/gg.txt
```
After that, register the changes to the index and create a commit by writing a confirmation with the phrase commit in the opened file, save it:
```bash
git add .
git commit
```
Note that the connection point for the repository doesn’t need to be specified anymore, because it was specified earlier with the git remote add command. Now we access it via the origin variable:
```
git push origin main
```
Screenshot №6 — Git push
As you have realised the working principle is that we modify the local copy first and then download the changes to the repository. Accordingly, to download changes from another user to the repository you can run the following command:
```bash
git pull
```
Screenshot №7 — Git pull
Working with GitHub and Git greatly simplifies project management and development. Using repositories, version control, and collaboration capabilities, development teams can efficiently share code, track changes, and integrate them into the overall project.
GitHub provides not only a place to store and share code, but also a wide range of tools for process automation, project management, and collaborative coding.
## Conclusion
GitHub has become one of the most powerful platforms for collaborative software development. By combining Git's version control system with cloud-based tools for automation, project management, and team collaboration, it allows developers to streamline workflows and keep projects organized. Creating a repository, pushing code, and managing updates are straightforward processes that any developer can learn quickly. Whether you're working alone, in a small team, or as part of a large distributed organization, GitHub makes it easier to collaborate, track progress, and ensure version consistency across projects.
## FAQ
- **Q1: What is the difference between Git and GitHub?**
A: Git is a distributed version control system for managing code locally. GitHub is a cloud-based platform built around Git that provides hosting, collaboration tools, automation, and project management features.
- **Q2: Can I make my GitHub repository private?**
A: Yes. When creating a repository, you can choose between Public (anyone can see it) or Private (only invited users or teams have access).
- **Q3: Why do I get a "Permission denied" error when pushing to GitHub?**
A: This usually means your SSH key is not set up or not linked to your GitHub account. You'll need to generate an SSH key, add the public key to your GitHub profile, and try again.
- **Q4: How do I upload my project to GitHub for the first time?**
A: Initialize Git in your project folder, commit your files, add the GitHub repository as a remote, and push your code:
```bash
git init
git add .
git commit -m "Initial commit"
git remote add origin git@github.com:username/repository.git
git push origin main
```
- **Q5: What's the difference between git push and git pull?**
A: git push sends your local commits to the remote repository, while git pull downloads and merges the latest changes from the remote repository into your local branch.
- **Q6: Can I collaborate with others on the same repository?**
A: Absolutely. GitHub is designed for team collaboration. Multiple users can push changes, submit pull requests, review code, and track issues within the same repository.
- **Q7: Do I need to use SSH to connect to GitHub?**
A: SSH is the most secure and convenient option, but GitHub also supports HTTPS connections. For teams and frequent usage, SSH keys are strongly recommended.
https://serverspace.us/support/help/git-pull-fetch-and-clone-whats-the-difference.mdDiscover the difference between Git Pull, Fetch, and Clone commands. Learn when to use each in version control to improve your workflow and avoid common mistakes.
Collaborative development processes, documentation, and project management in companies cannot be imagined without such technology as a repository version control system. It allows instead of the usual solutions with mutex and similar mechanisms for distributed work on a single project.
Classically, the scheme looks like this, a user accesses a resource and requests access to a file, then works and saves it in the same resource. However, if two users worked together, the one who wrote the last changes would overwrite the work of the previous user and the material would be lost. Linus Torvalds developed Git to solve this problem! It allows everyone to save their local copy on their device and then upload their versions to a single repository in snapshot format.
One of the processes for working with repositories is managing and working with remote repos, in this article we will look at the difference between the pull, fetch and clone commands.
## What is the difference between Git commands?
Recall that git works as follows: the user works in an environment called Working Tree, where the repository and working files are stored. When changes are made with the git add . command, the current state of the working directory or Working Tree is recorded. The files are then archived or committed and sent to the repository.
Screenshot №1 — Schema
But the reverse process looks a bit different and the download itself can be represented, according to the diagram below.
Screenshot №2 — Schema of download data
The three git commands pull, fetch and clone are responsible for working on downloading resources from a remote repository or remote repo. But for different scenarios it will be convenient to use one of them.
## Git clone
Let’s imagine that your colleague has run the git push command and just uploaded a fresh version of the repository to the remote repo. Then you want to download it without affecting your copy in Working Tree, or you don’t have one, so the git clone command will work for you. For example the command:
```bash
git clone https://github.com/academic-initiative/documentation.git
```
It will download the files without changing your current workspace, and even if you accidentally make a mistake and download a copy to the same directory as your repo, git will error out.
Screenshot №3 — Clone repo
For correct operation, move to another directory or delete an existing repository, then repeat the command and wait for the download. This method downloads both the repository and extracts files from it, then can be modified and uploaded with modifications back to the remote repo. However, if you need to work with branches and different versions of commit, then the git checkout command is perfect for such purposes.
## Git pull
This command is designed to update data in an existing repository by merging it with the current local repository. It downloads only different files from the main repository and uploads them directly to the working directory. For example, one of your users has committed changes that are important to your work. To do this, select the desired branch with the git checkout command and download the changes:
```bash
git pull origin
```
Screenshot №4 — Divergent branches
If you see a message about divergent branches – it means that you have not chosen the way to work with commits: merge or rebase. In order for your work and commit to go through merge, write the command:
```bash
git config pull. rebase false
```
But if you want to keep your current work and not merge, then use rebase:
```bash
git config pull.rebase true
```
After that the changes will be committed and reflected in the working directory. But, what if you want to see the updates that will be made to the files before the merge? There is a fetch command for that!
## Git fetch
The principle of operation is similar to the git pull command, only in this case the changes are first uploaded to the local repository and then the user decides whether to merge with the working directory. The mechanism is based on the fact that the local repository also stores remote branches. These are where the updated commit is written to, and then git rebase or git merge is used to merge them.
```bash
git fetch origin
```
Screenshot №5 — Fetch
After this action, the updates are written to remote branches and are waiting for further merging, or for the update to be cancelled. As indicated in the screenshot above, the changes are saved to the origin/main branch, so let’s go to it with the command.
```bash
git checkout origin/main
```
Screenshot №6 — Switch branch
At the very bottom are updates for the branch compared to the current working directory, to view the changes type ls in the working folder. To merge folders, type the command:
```bash
git merge
```
Screenshot №7 — Merge of folder
After that the working directory will be updated and it will be possible to continue working with the updated files from the remote repo.
## Conclusion
Understanding the difference between git clone, git pull, and git fetch is essential for efficient teamwork in software development.
Clone is used when you need a complete copy of a repository for the first time.
Pull helps you quickly synchronize your local repo with the remote one, merging changes directly into your working directory.
Fetch provides more control, allowing you to preview and manually merge updates from the remote repository.
By mastering these commands, developers can avoid conflicts, maintain cleaner project histories, and ensure smooth collaboration within their teams.
## FAQ
- **1. When should I use git clone?**
Use **git clone** when you are downloading a repository for the first time. It creates a full local copy with all commit history, branches, and files.
- **2. What's the difference between git pull and git fetch?**
**git pull** downloads and immediately merges changes into your working directory.
**git fetch** only downloads changes into local references, letting you review and decide when to merge.
- **3. Can git pull overwrite my local changes?**
Yes. If you have uncommitted changes, git pull may cause conflicts. To avoid losing work, commit or stash your changes before pulling.
- **4. Which is safer to use: pull or fetch?**
**git fetch** is safer since it doesn't change your working directory until you explicitly merge. **git pull** is faster but riskier if you have local edits.
- **5. Do I need to use both git fetch and git pull?**
Not necessarily. Use fetch when you want more control over updates, and pull when you're ready to merge changes immediately.
https://serverspace.us/about/news/new-access-to-llm-via-api-from-the-control-panel.mdServerspace announces the launch of a new service providing access to large language models (LLM) via API. This service allows users to integrate advanced artificial intelligence capabilities into their applications directly from the Serverspace control panel.
###
_Serverspace announces the launch of a new service providing access to large language models (LLM) via API. This service allows users to integrate advanced artificial intelligence capabilities into their applications directly from the Serverspace control panel._
Services based on large language models ([LLM](https://serverspace.us/services/serverspace-gpt-api.md)) are becoming increasingly vital tools across various industries. Research indicates that LLM can reduce content creation time by up to 70% and improve the accuracy of customer query responses by up to 85%. Over 40% of companies have already implemented AI technologies in their business processes, and the AI market is projected to reach $407 billion by 2027.
Currently, Openchat 3.5.0106 is available for use. The model library will continue to expand, and by the end of 2024, most available open-source LLM models will be integrated into the Serverspace control panel.
Examples of [LLM](https://serverspace.us/services/serverspace-gpt-api.md) usage:
- Customer Support Automation: Quick and accurate responses to inquiries.
- Content Creation: Generation of articles, product descriptions, and advertising materials.
- Language Translation: Instant translation of texts and documents.
- Chatbot Development: Creation of intelligent virtual assistants.
Who Can Benefit from the [Serverspace GPT API](https://serverspace.us/services/serverspace-gpt-api.md)?
- Developers: for integrating AI into applications and automating processes.
- Businesses: to enhance customer interaction and increase operational efficiency.
- Marketers: for generating unique content and conducting data analytics.
_Ainergy, a business solutions integrator specializing in AI, is collaborating on this project. This partnership will expand Serverspace's capabilities and offer clients new AI integration tools._
https://serverspace.us/about/cases/sumo-tatami-x-serverspace.mdA story of how the use of VPS servers from Serverspace helped to realize an ambitious gaming project Sumo Tatami in a short timeline. There are description of the tools and architecture of the online game inside.
Imagine a world where sumo wrestlers don’t compete in traditional dohyos but instead engage in thrilling arcade races filled with obstacles and fun challenges. This is the universe created by the [Sumo Tatami](https://store.steampowered.com/app/1707170/Sumo_Tatami/) project team. This startup has already gained significant support [https://store.steampowered.com/app/1707170/Sumo_Tatami/](https://store.steampowered.com/app/1707170/Sumo_Tatami/)and recognition within the developer community. Let’s dive into the technical challenges the team faced and [Serverspace's](https://serverspace.us/index.md) contribution to the realization of this project.
## Creation story
Konstantin Kondyukov, a programmer with 10 years of experience, dedicated the last four years to developing Sumo Tatami. It all started with a passion for startups, which grew into an ambitious project. The game, based on the idea of combining arcade racing with sumo traditions, quickly captured public attention. In Sumo Tatami players control sumo wrestlers navigating various obstacles in competitive modes. Races, duels, bowling, and even football are included into exciting gameplay.
##
## Why were cloud servers needed?
Creating a multiplayer game requires not only a creative approach but also solving complex technical challenges. One of the main problems was ensuring stable server operation capable of handling high loads during peak times. This metric reflects the maximum number of players on the server at the same time: the more players, the higher the load. Sumo Tatami needed the capacity for several thousand users at the initial launch and beta testing stages.
"Sumo Tatami" is an international project, so all the players are scattered around the world. For this reason, besides virtual servers, the development team needed a cloud provider with a geographically distributed data center network. The ability to deploy servers in different parts of the world ensures a gaming experience for a wide global audience.
## How did they use Serverspace?
The speed of infrastructure deployment is also an important metric for a project requiring dynamic development, especially for an online game. The game creators needed a quick deployment of virtual servers, a possibility to scale up or down during testing and to fix bugs immediately.
It’s worth noting that pricing and quality technical support were also crucial criteria when choosing a cloud service provider. As a startup, the project has limited financial and human resources.Thus, setting up and maintaining infrastructure adds extra fees to Sumo Tatami’s small budget.
The project team tried various cloud solutions from different vendors and either prices were too high or technical support worked inappropriate. So, in the context of fail-safe and protected information virtualization technology and user interaction with infrastructure resources, Sumo Tatami turned to[Serverspace](https://serverspace.us/index.md) in search of an optimal cloud platform.
## How were Serverspace servers used?
For development, the Sumo Tatami team deployed more than 10 [cloud Windows servers](https://serverspace.us/services/vps-server/windows.md) using the hyper-converged virtualization platform [vStack](https://serverspace.us/services/cloud-servers.md). VStack offers the most profitable solution for creating a strong infrastructure. Moreover, Pay-As-You-Go payment model, perfectly suited the project’s requirements.
On the initial step of development Sumo Tatami specialists used small server capacities: 4 cores, 8 GB of RAM, and 50 GB of hard drive space. The main server was placed on a Serverspace virtual VPS server in Turkey, allowing players from different regions to connect to the game through a global network. To broaden geographic coverage, the team also deployed virtual servers in other locations: the USA, Canada, and the Netherlands.
Peak loads required both vertical and horizontal scaling for the project’s infrastructure. The capacities of the main segment were increased almost without downtime, with configuration changes taking only a few minutes. Additionally, using data centers in other countries geographically expanded the range and reduced latency for users.
##
## Any results to share?
Several key parameters influence the quality of the gaming experience: ping, low latency, and quick action synchronization between players. Each of these depends directly on the performance of the servers that make up the technical infrastructure.
In game development, ping is the measure of time needed for data to be sent and received between the client (player’s device) and the server. Ping is measured in milliseconds (ms) and is a crucial indicator of network performance in multiplayer online games. Low ping means a fast connection to the server, resulting in minimal delays and smoother gameplay. High ping, on the other hand, can cause significant lag, negatively impacting the gaming experience.
Ping is important in the following aspects:
- **Response Time**: in games requiring quick reflexes (like first-person shooters or fighting games), high ping can negatively affect player performance.
- **Synchronization:** Low ping helps better synchronize actions among players, which is especially important in team games.
- **Network Quality:** High ping can indicate issues with the internet connection or server overload, leading to connection drops and other technical problems.
To reduce ping, it is recommended to use more stable and faster internet connections and choose servers located closer to the target audience’s geographical location.
Using[high-performance VPS servers from Serverspace in various geographic locations](https://serverspace.us/infrastructure/data-centers.md) allowed the team to achieve a low ping of just over 30 ms at the game’s initial launch stage. In the future, specialists plan to increase production capacity in other countries, which will improve network stability and game availability for users worldwide.
The term "Low Latency" refers to the minimal delay between player input and the corresponding game response. Low latency is crucial for ensuring smooth and responsive gameplay, especially in multiplayer online games and games requiring quick reactions, such as first-person shooters, fighting games, and racing games.
Important aspects of Low Latency in game development include:
- **Input lag:** The time between when a player performs an action (e.g., pressing a button) and when that action is displayed on the screen. Low input lag is essential for precise and responsive controls.
- **Network latency:** The time it takes to send data from the client (player’s device) to the server and back. Reducing network latency helps decrease lag and improve synchronization among players in online games.
- **Rendering latency**: The time required to process and display graphics on the screen. Optimizing rendering helps reduce latency and improve image quality.
- **Processing Latency:** The time spent processing game data (physics, logic, AI, etc.) before displaying it. Efficient algorithms and code optimization can help reduce this latency.
To achieve low latency, Sumo Tatami developers employed various methods:
- **Optimizing network code:** Using more efficient data transmission protocols and reducing the amount of data transmitted.
- **Using powerful and fast Serverspace equipment:** Upgrading servers and gaming devices to ensure high performance.
- **Choosing closely located servers:** Distributing servers across different regions to reduce the physical distance between the player and the server.
- **Using lag prediction and compensation technologies:** Applying algorithms that predict player actions and compensate for potential delays.
With these actions, the team achieved almost no delays during the game’s beta testing.
## What Serverspace can offer for game development?
The Sumo Tatami developers highlighted several significant benefits that helped to realize the project successfully. First, the friendly interface allowed the team to quickly set up and launch servers without the need for complex configurations required by other providers. This enabled the Sumo Tatami programmers to configure the servers themselves without need of a separate DevOps engineer, saving both time and resources.
Second, the high stability of Serverspace servers was evident throughout the entire testing period. This is particularly important for multiplayer games, as even brief downtimes can ruin the user experience.
The third crucial aspect was time saving. The rapid deployment of cloud servers and the lack of need for constant technical support allowed the team to focus on developing the game and implementing new features. In a startup environment, where every hour counts, this time saving significantly accelerated the project implementation process.
Additionally, the high performance of the servers ensured fast data processing and smooth gameplay, which is critical for a quality user experience. Fast scaling gave the team the ability to adapt server capacities according to the project’s changing needs, which is especially useful as the number of users grows. The quality of technical support also played an important role: prompt and professional assistance allowed quick resolution of issues and problems. Finally, the convenient Pay-As-You-Go pricing model allowed for cost control and efficient budget management by paying only for the resources actually used.
All these factors made Serverspace the right choice for the Sumo Tatami team, helping them grow their startup.
##
## **What’s Next?**
Sumo Tatami is just beginning its journey. In the near future, the team plans to launch open testing, with a full game release expected by the end of the year. Moving forward, the project team plans to attract private investments, expand server geographic coverage, improve gameplay, and scale the infrastructure.
Sumo Tatami is a prime example of how passion for development and the right cloud platform can lead to the creation of a unique product. Serverspace became the optimal solution, allowing the team to focus on the creative part of the project without worrying about technical complexities. There is still much work ahead, but Sumo Tatami has already won the hearts of its first fans and is ready to conquer the gaming world. And in this, the Serverspace team of specialists is undoubtedly ready to help them.
https://serverspace.us/about/news/video-on-demand.mdVoD (Video on Demand) is integrated with CDN and S3. It allows viewers to watch video content on-demand anytime and anywhere!
[Serverspace](https://serverspace.us/index.md?ysclid=m0md6uaq7a969427557) is excited to announce the launch of the new [Video on Demand (VoD)](https://serverspace.us/services/video-on-demand-vod.md) service. With VoD, users can easily request and stream high-quality video content anytime, anywhere, no matter where they are located.
[VoD (Video on Demand)](https://serverspace.us/services/video-on-demand-vod.md) is a service that enables viewers to watch video content on demand, at a time that suits them best. We have integrated VoD with our CDN, so that video files uploaded by clients are automatically cached and distributed across servers worldwide. This ensures fast access to videos with minimal latency and high quality.
## **Key Benefits of Video on Demand:**
- **Efficient content delivery:** VoD integrated with CDN ensures low latency and high-speed video loading.
- **Reduced server load:** Using CDN for VoD helps reduce the load on primary servers by redistributing video content requests across a distributed network.
- **Optimized video quality:** The VoD system automatically adjusts video quality based on the user’s device and available internet speed, ensuring a smooth playback experience.
## **Who Can Benefit from the VoD Service?**
- **Content Providers and Streaming Services:** For the effective distribution and monetization of video content, ensuring access to movies, series, and other materials anytime.
- **Educational Platforms and Institutions:** To offer students access to video materials, such as lectures and courses, at their convenience, enhancing the flexibility of the learning process.
- **Video Content Distribution Companies:** To optimize content storage and delivery processes, ensuring fast and high-quality playback for users.
- **Marketing Companies:** To effectively utilize video content in advertising campaigns and training, increasing engagement and product understanding.
Now [the new service](https://serverspace.us/services/video-on-demand-vod.md) is available to all users utilizing the [CDN](https://serverspace.us/services/cdn.md) service. In the near future, Serverspace is going to expand service offerings to provide clients with even more opportunities to work with digital technologies. Stay tuned!
_[Serverspace](https://serverspace.us/index.md?utm_source=devto&utm_medium=articles&utm_campaign=main) is an international cloud provider offering automatic deployment of virtual infrastructure based on Linux and Windows from anywhere in the world in less than 1 minute. For the integration of client services, open tools like API, CLI, and Terraform are available._
https://serverspace.us/support/help/how-to-use-grep-in-linux.mdLearn how to effectively use the find and grep commands to find files and text patterns in Linux. A step-by-step guide to the syntax, options, and examples of how to use the grep utility for simple and complex searches.
To work with **Linux distributions**, you mainly use the terminal or the console, which require knowledge of basic commands to fully work with the environment. For almost every task there is a utility that performs predefined functions. Searching for files and text patterns in them is no exception, the two main utilities that have gained popularity and are still in use today **are find and grep**. If find is used only to find the path of files by their properties, then **grep in addition performs a search by their contents**. In this article we will look at its syntax, main options and examples of its use in work!
## What is GREP and how do I find it?
As mentioned above, GREP is a multifunctional Linux utility for searching files and text using patterns, regular expressions.
In general, many distributions already have a package pre-installed with it. To check if it is available on your machine, enter the command:
```
grep
```
Screenshot №1 — Check installation
If the output looks like this then the package is already installed, otherwise install it via your package manager, for Ubuntu, Debian and apt-like:
```bash
apt update && apt upgrade && apt install grep
```
For RPM-like systems, the command to install a package with its dependencies might look like this:
```bash
dnf update && dnf upgrade && dnf install grep
```
After making sure that the package has been installed, let’s look at the syntax of the utility and its options!
## Syntax and options
The grep command itself is used for searching, as well as the basic options that form the syntax of the command:
```
grep [options] [pattern] [path to file]
```
For a simple pattern search in a file, we use the command:
```
grep 'named Alex' /home/kk.txt
```
Screenshot №2 — Search in a file
In a given file, the requested pattern was found and highlighted, in this case using the two basic syntax blocks [pattern] and [path to file] without [options]. But what if, we need to perform a more complex search with multiple conditions? There is a whole list of [options] options for that, let’s look at the main ones and give an example of their use:
**Template mapping configuration:**
-E, –extended-regexp Extended regulars for templates;
-G, –basic-regexp Standard regulars for templates;
-P, –perl-regexp Use of regular-perl.
**Template sources:**
-e, –regexp=[pattern] allows you to specify a pattern directly;
-f, –file=[file] allows you to specify the pattern directly.
**Case control:**
-i, –ignore-case Case-insensitive match search;
–no-ignore-case Case-sensitive, works by default.
**Special matching modes:**
-w, –word-regexp Consider only whole words when matching;
-x, –line-regexp Only match whole strings.
**Alternate string termination:**
-z, –null-data Treat the end of a line as a null byte instead of a newline character.
All these groups of options refer to the configuration of the way to map a template to a data set. For a slightly more complex search than in the first example, we will use ordinary regular expressions. The other options will not be needed now. Let’s specify the same template:
```
grep -e 'named Alex' /home/kk.txt
```
Screenshot №3 — Full word search
There are two words Alex and Alex’s parents in the text, the essence of the work of regxp’s is that they break the data into characters and look for patterns. Therefore, when searching **grep -e 'named Alex' /home/kk.txt** there will be two matches Alex and Alexes parents. How to find a specific word or string so that other values are not hit? To do this, use the -w option, it will allow you to split sentences by words, not by characters in them:
```
grep -w -e 'Alex' /home/kk.txt
```
Screenshot №4 — Filter with regxp
As you can see in the example, the word Alexes was not highlighted because the breakdown was word-by-word.
## Recursive grep search
But what if there is more than one file and you need to match multiple files in the same directory? For this purpose, grep has the** -r option**, which allows you to define a folder to search through its contents. Let’s implement the query of our user name in the logs:
```
grep -r "ghn" /var/log
```
Screenshot №5 — Search in logs
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.io/services/cloud-servers/). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №6 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways!
## Filtering command output
Very often in Linux the output of commands in the terminal is huge or contains a lot of unnecessary information, for this we use **pipe** or redirect to the grep utility. It looks like this, suppose we need to check if the NetworkManager package for network management is installed:
```bash
dnf list || grep "NetworkManager"
```
If you are using the apt manager, replace dnf in the command:
```bash
apt list || grep "NetworkManager"
```
Screenshot №7 — Pipe for filtration
Working with Linux distributions requires terminal skills and knowledge of basic commands. The find and grep utilities occupy an important place in the arsenal of tools, providing efficient search for files and their contents.
https://serverspace.us/support/help/what-is-linux-bash-and-how-to-use-it.mdLearn what Linux Bash is and how to use it! This article explains the core functions of Bash, its capabilities, and essential commands.
In Linux it is quite common to use the command line or terminal to work with the space and components of the OS. And in articles and conversations you can often hear such phrases as: terminal, Bash, Zash, commands and utilities. But why is it all and what is the sense in it? Let’s try to briefly but succinctly explain their relationship and consider the basic commands and what to do if you do not know them!
## What is the principle of operation?
A terminal (or terminal program) is software that allows the user to interact with the system through an interpreter. Examples of such programs are gnome-terminal, xterm, konsole, and others. When you start a terminal, it launches a shell, which is a command interpreter. The most popular shells in Linux are bash, zsh, sh, fish, and others. The shell interprets the commands you enter and executes them.
Screenshot №1 — Schema of work
Let’s imagine we send a command to an open terminal and what happens inside?
- You enter commands from the keyboard;
- The terminal sends the entered commands to the shell;
- The shell interprets the commands and decides what to do. If it is an inbuilt shell command (e.g. cd), it is executed directly in the shell. If it is an external command (e.g., ls), the shell calls the appropriate executable;
- If it is an external command, the shell runs the appropriate executable, creating a new process.
- The new process interacts with the operating system kernel to make the necessary system calls (e.g., to read directory contents or display data on the screen);
- Output: The results of command execution (stdout and stderr) are passed back through the shell to the terminal, which displays them to the user.
Thus, the interaction structure is as follows:
User → Terminal → Shell → OS kernel.
The terminal is just an interface for entering commands and displaying output, and the real work is done by the operating system shell and kernel.
## Where to find bash commands?
Indeed, it is necessary to know the basic commands that will allow the user to perform tasks efficiently. For this purpose, there are utility directories that contain information about most of the existing utilities and their commands. Let’s install one of them:
```bash
dnf update && dfn upgrade \
dnf install info -y
```
If you are using the apt manager, then use the command:
```bash
apt update && apt upgrade \
apt install info -y
```
After installation, check that everything has installed correctly and the directory is working:
```
info
```
Screenshot №2 — Installation software
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №3 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways!
To search for a command, you must type the key syntax and select the appropriate section. For example, we need to move between directories and for this we need a command, enter the following:
```
info
```
Since we’re looking for a list of commands for bash, we’ll go to the appropriate section and enable regular expression search using the / button. After that we will enter a keyword and search for different occurrences via the S button!
Screenshot №4 — Search pattern
As you can see in the screenshot above the search has completed and highlighted the desired command line, there are times when there is no suitable one in the directory and [you need to use our Linux command navigator list](https://serverspace.us/support/help/ultimate-linux-commands-cheat-sheet/)!
https://serverspace.us/support/help/top-10-utilities-for-linux.mdExplore the most efficient utilities for the Linux operating system! Our Top 10 tools for everyday use!
Learn about the top 10 utilities for Linux! In this article, we take a look at the best tools that will increase your productivity, make system management easier, and improve your command line experience.
## nano – text editor
Nano has established itself as a convenient editor for working with many file formats. Its popularity can be explained by the fact that it is part of the GNU utility package and is freely distributed with many distributions. It is also easy to use compared to other utilities.
Screenshot №1 — Nano
This solution is suitable even for beginners, because the panel at the bottom is quite clear and informative. [How to download and start using and other useful features of nano](https://serverspace.us/support/help/how-to-use-nano-and-what-is-it/).
## curl – client for servers
This multifaceted utility is a client that can interact with servers of different services. For example, its main use is for working with the Web: sending requests with any method, it is possible to change headers, User-Agent can be customised. This solution allows you to implement automation scenarios when working with servers and services.
Screenshot №2 — Curl
It can also be used for manual testing of existing infrastructure! [We advise you to get acquainted with it and its functionality in more detail](https://serverspace.us/support/help/how-to-use-curl-in-linux/)!
## traceroute – network path/ troubleshooting
Unlike ping, which checks the network reachability of an end host, traceroute is used to build a chain of routers through which a packet has travelled. Let’s imagine a situation where you send icmp packets or ping the recipient, but he doesn’t respond. Is it just him? Maybe yes, maybe no, the router that was supposed to forward the packet just stopped responding.
Screenshot №3 — Traceroute
To see this, the traceroute utility is used, which also works at the transport level! To learn all the [peculiarities of use and the principle of work, be sure to watch the full guide!](https://serverspace.us/support/help/how-to-use-traceroute-in-linux/)
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №4 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways!
## vim – a powerful text editor
Compared to the previous text editor, vim is a utility with almost limitless functionality, a multitude of features. However, all this is complicated by the burden of vertical learning for a novice user who has just opened the terminal.
Screenshot №5 — VIM
Here you can quickly navigate through the text, conveniently edit it, customise your work and execute terminal commands directly from the editor. Besides, you can extend the functionality with plugins. It has a special system of internal commands, which is very easy to get used to and hard to unlearn. [A detailed tutorial is waiting for you](https://serverspace.us/support/help/how-to-exit-from-vim-and-other-management-tips/)!
## grep – search and filter utility
Grep is a utility that can take an N-array of data as input and find, using search mechanisms and regular expressions, matches and patterns. In practice, it is a very often used tool. Suppose you have a large output of one of the commands and you need to find a key phrase. To do this, you can use pipe or redirect with | sign to enter into grep and filter, say, the list of installed packages.
Screenshot №6 — grep
It works with large amounts of data and is quite fast, it also has the ability to recursively find text in files by specifying a folder! To learn [how to search and filter your data through grep data you need](https://serverspace.us/support/help/how-to-use-grep-in-linux/) to read the detailed tutorial!
## mv – utility for moving folders/files
Linux has a standard set of utilities for OS interaction and navigation. One of them is the object moving utility. The idea is that it first copies the object to the desired part and then deletes the original one, thus moving it.
Screenshot №7 — mv
It could be done manually, but the peculiarity of the utility is recursive moving of the whole array of files. Which can be very useful in your work, [read about the features and other nuances of work in the manual](https://serverspace.us/support/help/how-to-move-files-directories-in-linux/)!
## wine is a utility for running Windows applications
Not all applications and utilities are cross-platform, a lot depends on the OS they were developed for. For Linux, you may also need a Windows application. This is why there is wine, which emulates the environment for an application and allows you to run it on Linux!
Screenshot №8 — wine
It allows you to convert requests to Windows APIs and libraries so that Linux can respond with its own alternatives. This emulator has many features, which [you can read in the detailed guide](https://serverspace.us/support/help/how-to-install-and-configure-wine-ubuntu/)!
## bash – OS interpreter
Every OS that involves working with a terminal requires an interpreter. This is an application that gives user commands to the OS kernel and performs various actions, such as: moving files, opening processes, etc. But beginners will not be easy, because the commands to work do not pop up as prompts, so you need to look for alternative means of different utilities.
Screenshot №9 — Bash
In our guide we explained [how to be if you are a beginner and just opened the terminal to work](https://serverspace.us/support/help/what-is-linux-bash-and-how-to-use-it/)!
## chmod – access control
Authorisation mechanisms are used for correct and secure work in a unified environment. To allow users to interact with their files without fear that they will be compromised, access rights or attributes for objects have been developed. A utility for managing your own and delegated files is chmod.
Screenshot №10 — chmod
It comes by default in many distributions, as it is part of GNU. We’ve covered how it works and [how to use it in one of our tutorials](https://serverspace.us/support/help/file-permissions-in-linux/)!
## atop – process manager
In the OS, besides the actions that the system displays to us through the terminal window, there are many other processes that affect performance. In order to evaluate the performance and efficiency of the node, it is necessary to see the basic metrics and indicators! Utility atop, just solves this problem, for [detailed acquaintance the instruction on atop is developed](https://serverspace.io/support/help/measuring-server-performance/)!
Screenshot №11 — atop
Using utilities in the Linux operating system makes it much easier to perform various tasks, increasing productivity and convenience. This article presents a list of the ten most popular and useful utilities for Linux, each of which has unique features and capabilities. These tools help users to effectively manage the system, automate processes and optimise workflow. Regardless of the level of training and experience, everyone will find in this list a utility that will be useful in everyday work with Linux.
https://serverspace.us/support/help/how-to-use-nano-and-what-is-it.mdLearn what the nano text editor is and how to use it. This manual introduces the basic commands and functions of nano!
To work with the Linux operating system you need a terminal, shell and utilities that provide the user with the ability to manage and configure the system, as well as the basic performance of ordinary tasks! One of the popular utilities for working with text in Linux is nano. Let’s take a look at its functionality, control options and evaluate its usability, both for a beginner and for an experienced specialist.
## What is Nano and how to find it?
**Nano is a text editor** that is primarily intended for use via the console. It is part of the GNU software package, so it is quite popular and frequently used. It is easy to learn and can be useful even for beginners. To start working with nano you need to check if the package is installed, for this we will type the command into the terminal:
```
nano
```
Screenshot №1 — Check installation nano
If the output looks like this, then the package is probably not installed and you can do so via the package manager:
```bash
apt update && apt upgrade && apt install nano
```
For RPM-like systems, the command to install a package with its dependencies might look like this:
```bash
dnf update && dnf upgrade && dnf install nano
```
After making sure that all dependencies with the package are installed, via the nano command, we can move on to its syntax!
## Syntax nano
In order to edit a file, write the path to it, or if you are in the folder with this file, just its name.
```
nano [path to file]
```
For example, we need to open a file with logs, for this we will write the full path:
```
nano /var/log/cloud-init.log
```
Screenshot №2 — Open file with nano
Once we have opened the file, we can see the inside of the file, as well as technical information such as headers and the control panel at the bottom. By default, the file can be immediately edited and changes can be made. You can move with the arrows on the keyboard. If you want to **save your changes**, press **Ctrl + O**, to exit without saving **Ctrl + X**. To call the **utility help **press** Ctrl+G**:
Screenshot №3 — Help page
If you notice, the ^ sign in the terminal is invoked via** Ctrl** and all the above pictured commands in the tooltip can be used via it, alternatively you can press **Esc** twice!
## How to copy and paste via nano?
For copying there is a set of hotkeys **Ctrl+K** and **Ctrl+U**. You can select data on the keyboard by pressing Shift beforehand and moving the cursor with the arrows:
Screenshot №4 — Select data
Then use **Ctrl+K** to copy and **Ctrl+U** to paste the copied area. All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №5 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways!
## How to search for text via nano?
Let’s assume we know a certain pattern, a template, for which we need to find data, for this purpose we press the key combination **Ctrl + W**. And enter the search mode, the line at the bottom will display the input data. After the input is finished press Enter, unfortunately, the word or data will not be highlighted, but only the cursor will stand at the beginning of the first occurrence. To search for the next occurrence press **Ctrl + W** again and without entering anything press Enter.
Screenshot №5 — Search text
Working with Linux requires knowledge of the terminal, shell and utilities that allow you to manage and configure the system and perform basic tasks. One of such useful utilities is the nano text editor. It is easy to learn, convenient for both beginners and experienced users. We have covered how to install and use nano, from basic operations to copying and searching text. This editor demonstrates that file management in Linux can be intuitive and efficient. Now you are ready to use nano to edit text files and optimise your work in the Linux console environment.
https://serverspace.us/support/help/how-to-use-cron-in-linux.mdLearn how to use CRON in Linux to automate tasks. In this guide you will find basic commands, syntax!
While working with Linux or other distributions on a daily basis, there is a list of tasks that need to be done hourly, daily or monthly. However, nobody cancels the human factor and it is easy enough to forget to perform a simple task or a routine list of them. To automate this kind of things there **is a task scheduler – CRON**! It allows you to execute on a certain schedule or interval the necessary commands.
## What is Cron and how do I find it?
**Cron** is a **system utility for automating the execution** of tasks, scripts, utility commands, and services with a predefined schedule of precise times or intervals. This solution allows you to perform routine and constant tasks without user participation. Cron consists of several parts:
- **crontab** configuration files with commands to execute, when and what command should be executed. A separate file can be created for each user, usually stored in the /etc/cron.d directory;
- **crond service**, which periodically checks files with jobs to execute them.
Let’s check if the utility is installed on your system and where to find it, for RPM-like package managers use the command:
```bash
dnf info crontabs
```
Screenshot №1 — Check installation cron
If you are using the apt manager, use apt list | grep '.*cron.*\binstalled\b.*'[/code] to search:
```bash
apt list | grep '.*cron.*\binstalled\b.*'
```
This will display a list of installed utilities mentioning cron, from which you can infer the installed software!
## Installing cron
If you find that the packages are not present on your device, you need to install them via the command for apt-like distributions. Such as Debian, Ubuntu:
```bash
apt update && apt upgrade && apt install cron
```
For RPM-like systems, the command to install a package with its dependencies might look like this:
```bash
dnf update && dnf upgrade && dnf install crontabs
```
After making sure that all dependencies with the package are installed via the crontab command, we can move on to its syntax!
## Syntax and working principle of cron
There are a few basic blocks used to create a task in cron:
```
minutes hours hours days days months days_weeks username /path/to/command
```
The first block with time values, which in order denotes the time when the task should be executed. Then comes the name of the user from whom it should be run, as well as the full path to the command. If the name is not specified, the task is assigned to the user by whom it was created.
For example, we need to display a text in the nearest exact time and write it to a file. To do this, let’s write the command:
```
crontab -e
```
A window with empty fields will open in the terminal, this is our task file, into which we can write one of them. To do this, let’s go to the edit mode via the i button and write the following line:
```
27 7 * * * * * echo 'Good morning $USER!' >> /tmp/hello.txt
```
Screenshot №2 — Task for cron
It means that every day at 7 hours and 27 minutes the write to file command will be executed! Then press Esc to exit the edit mode and enter :wq to save and exit the editor.
To do this, type the following command, if it is not difficult, then skip this step:
```bash
apt update && apt upgrade && apt install nano \
EDITOR=nano
```
Let’s get back to our task manager! After a task is added cron will give an alert about it and in order to check the list of current tasks you need to write:
```
crontab -l
```
Screenshot №3 — List of cron
Great! The task has been created and now we need to check its operability for this we can wait for the time for which the task is set or forcefully run the file through the command:
```
run-parts /etc/cron.d/
```
After that we will fix the result:
Screenshot №4 — Result of cron task
Cron worked on a task and wrote data to a file, but what if the task is not completed? How can I find out what actions cron has performed?
## Cron logging
To view the actions of the utility, you need to open a text file with logs via the following command:
```
tail /var/log/cron
```
Or use another path:
```
tail /var/syslog | grep 'cron'
```
Which will open a list of recent activity:
Screenshot №5 — Logs of cron
On the last lines, you can see that the CROND service has timed out the command and then terminated. If the list of tasks on cron is out of date, you can delete all tasks via the command:
```
crontab -r
```
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №6 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways!
## Example of using cron
If we take real tasks, cron helps to rotate temporary files and logs, clean temporary directories, create backups. Both for databases and for other systems. For example, let’s consider directory cleanup, every day at intervals of 2 hours and 0 minutes with the cleanup command on the basis of storage more than a day:
```
0 */2 * * * /usr/bin/find /tmp -type f -mtime +1 -exec rm {} \
```
Let’s check if it works using the utilities and methods described above:
Screenshot №7 — Clean file
Having checked that the utility has executed the appropriate command, we can declare the successful mastering of CRON!
https://serverspace.us/support/help/docker-403-error-how-to-fix-it.mdLearn how to bypass Docker lockdown and fix the “403 Forbidden” error. In this guide, we'll go over the steps to eliminate the error!
When trying to connect to a Docker repository, many users may have encountered the error 'denied: 403 Forbidden. 'Error response from daemon: error parsing HTTP 403 response body: invalid character "<" looking for beginning of value:'
Screenshot №1 — Info about Docker Hub
At the moment it is not illegal to use the containerisation platform, however, downloading images from repositories has been stopped for some countries! What to do if you accidentally get blocked? There are many options to solve the problem: raising a mirror of the site, a VPN server or a proxy tunnel. In this tutorial we will look at the simplest option to connect to Docker Hub. We will use ShadowSocks!
## What is ShadowSocks and how do I configure it?
**ShadowSocks is a proxy server** with the ability to encrypt tunnelled traffic passing through it for secure transmission, through untrusted parts of the network, as well as addressing through devices with a different IP address.
The principle of operation is as follows:
**client** <—>** ss-local**<–[**encrypted traffic**]–>** ss-remote** <—> **target server**
The client raises a proxy server on its side, which can be reached by internal address. All traffic coming to it is encrypted and sent to the ss-remote or endpoint, where it is received and decrypted. After that, it is addressed by the machine where the packets came from, and then the reverse process of transmission to the client takes place.
## Configuring the ShadowSocks server
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №2 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways!
Before installing and configuring the server, you need to update the repositories and download the required packages. If you are using apt-manager, the command will look as follows:
```bash
apt update && apt install curl snapd -y
```
Screenshot №3 — Snapd installation
Before installing and configuring the server, you need to update the repositories and download the required packages. If you are using apt-manager, the command will look as follows:
```
snap install core
```
After that, let’s install the ShadowSocks package itself:
```
snap install shadowsocks-rust
```
Let’s check its components and permissions to work with the rest of the OS via commands:
```
snap services shadowsocks-rust
```
```
snap connections shadowsocks-rust
```
Screenshot №4 — List of services
As you can see the package consists of two services local and server, where one is a client for connection and the other is a server. This image has rights to work with the network and the ability to make changes to the network stack.
Let’s create a configuration file for our server, in json format:
```
nano /root/shadowsocks.json
```
And write the configuration to connect to the server:
```
{
"server": "0.0.0.0",
"mode":"tcp_and_udp",
"server_port":1224,
"password":"ZmVlNmlldDVhZW5naWU2ZWlUb29nOGFobjNvaFlpZQo=",
"timeout":300,
"method":"2022-blake3-aes-256-gcm"
}
```
Screenshot №5 — Server configuration
In the server field specify a specific external IP address or leave the default reception from all interfaces as 0.0.0.0.0. In the mode field specify the protocol for transporting your traffic, then specify the port to connect to the server. Password of 31 single characters in base64 form, for this purpose write the following command and enter the result in the password field:
```
echo "YOUR_PASSWORD" | base64
```
If you wish and your requirements, you can change the method of traffic encryption! Let’s save the configuration file with the combination **Ctrl + O**. After that, let’s test the server operability with the command, where we call the daemon and specify the config for its operation:
```
snap run shadowsocks-rust.ssserver-daemon -c /root/shadowsocks.json
```
Screenshot №6 — Test of server
Great traffic is proxied, so we can add the server to autoload:
```
snap start –enable shadowsocks-rust.ssserver-daemon -c /root/shadowsocks.json
```
This will create a unit in the initialisation system, which we need to edit and add our new configuration file:
```
nano /etc/systemd/system/snap.shadowsocks-rust.ssserver-daemon.service
```
Add a string to the ExecStart field and start reading configurations:
```
ExecStart=/usr/bin/snap run shadowsocks-rust.ssserver-daemon -c /root/shadowsocks.json
```
Screenshot №7 — Add config to unit
Let’s save the file and reread the new configuration, then start the service:
```bash
systemctl daemon-reload && systemctl restart snap.shadowsocks-rust.ssserver-daemon
```
After that we fix the result and check the ports:
```bash
systemctl status snap.shadowsocks-rust.ssserver-daemon
```
```
netstat -tulnp
```
Screenshot №8 — Result of configuration
The ports are listening and the service is working properly, now you need to perform the same steps but for the client.
## Configuring the ShadowSocks client
Also install the snapd and curl packages and follow the same steps as for the server.
```bash
apt install snapd curl -y
```
Let’s install the client and write a new configuration file for it:
```
snap install shadowsocks-rust
```
```
nano /root/client.json
```
In the file itself, insert the following JSON fields:
```
{
"server": "IP_Server",
"mode":"tcp_and_udp",
"server_port":Remote_port,
"local_address":"127.0.0.1″,
"local_port":Local_port,
"password":"Pass in Base64 from server",
"timeout":300,
"method":"Method of encrypt"
}
```
Let’s connect the autoloader for the user’s client and configure the file:
```
snap start –enable shadowsocks-rust.sslocal-daemon
```
```
nano /etc/systemd/system/snap.shadowsocks-rust.sslocal-daemon.service
```
Let’s write in the ExecStart field the necessary config for loading and operation:
```
ExecStart=/usr/bin/snap run shadowsocks-rust.sslocal-daemon -c /root/client.json
```
After that we start reading the new configuration files
```bash
systemctl daemon-reload
```
Let’s restart the service and check our settings via curl:
```bash
systemctl restart snap.shadowsocks-rust.sslocal-daemon.service
```
```
netstat -tulnp && curl — proxy socks5://127.0.0.1:1224 https://ifconfig.me
```
Screenshot №9 — Client-side result
In order for only Docker traffic to go through the proxy it is necessary to complete the initialisation system unit. Let’s create a folder and enter the config file:
```
mkdir /etc/systemd/system/docker.service.d
```
```
nano /etc/systemd/system/docker.service.d/http-proxy.conf
```
Screenshot №10 — Proxy file
Let’s write the necessary variables for dockerd to work and save via Ctrl + O:
```
Environment="HTTP_PROXY=127.0.0.1:1224″
Environment="HTTPS_PROXY=127.0.0.1:1224″
```
Re-read the new configuration files and restart Docker:
```bash
sudo systemctl daemon-reload
sudo systemctl restart docker
```
ShadowSocks, thanks to its ability to encrypt traffic, provides a secure connection to the resources you need by bypassing restrictions and providing access to Docker Hub. By configuring the ShadowSocks server and client, and integrating it with the Docker client and daemon, you can create a stable and reliable connection. By following the step-by-step installation and configuration instructions, you will be able to configure the system so that all Docker traffic goes through the proxy, providing access to the required images and repositories.
This way, even in a lockdown environment, you can continue to leverage Docker’s containerisation capabilities using modern and reliable traffic proxying solutions.
https://serverspace.us/support/help/installation-docker-on-rocky-linux.mdLearn how to install Docker on Rocky Linux. Follow the detailed step-by-step guide to get the container platform up and running!
To work with the Docker containerisation platform, you need to perform a number of actions to prepare the server for work and install the application itself with the kernel-level virtualisation mechanism. To work with servers, you mainly use components within Docker Engine + Docker CLI as a kernel and client to work with. In this tutorial we will cover their installation!
## How do I install Docker on an RPM-like OS?
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №1 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways!
Let’s move on to configuring the server itself, firstly install the necessary dependencies and update the packages on the OS:
```bash
dnf update -y
```
Screenshot №2 — Update packages
To install Docker, go to the repositories directory and add a new one with the command:
```
nano /etc/yum.repos.d/docker-ce.repo
```
After which we will write the appropriate syntax:
```
name=Docker CE Stable – $basearch
baseurl=https://download.docker.com/linux/rhel/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/rhel/gpg
```
Screenshot №3 — Configure repository
Explicitly specified the name, a link to the repository with the stored data. The Enabled item indicates that the repository should be included in the list of utility searches, enabled gpg checking, and also provided a URL link to the key itself for checking incoming packages. Let’s try to install the utilities to check if they work:
```bash
dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```
Screenshot №4 — Result of installation
After that it is necessary to specify the installation by entering the Y value and wait for the end of the installation, for starting we need to execute a command:
```bash
systemctl start docker
```
But what if a wrong version has been installed or you just need to uninstall the container manager?
To install a specific version of Docker packages, specify the required version in the line after each package, for example dnf install docker-ce VERSION_STRING.
## How do I uninstall Docker from Linux?
You can also use a package manager and a special mask to uninstall:
```bash
dnf remove docker* podman containerd.io
```
And also it is necessary to remove the remaining packages on the machine:
```
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
```
After that the files from the operating system will be deleted, to reinstall the necessary packages use the dnf reinstall command.
https://serverspace.us/support/help/installation-docker-engine-on-centos.mdDetailed guide to installing Docker Engine on CentOS: system preparation steps, installing required packages, setting up the repository!
To work with virtualisation technology, various platforms are used in the OS, which allow to run independent systems, utilities, applications due to isolation of processes and environment at the level of both processor and kernel. Such a solution has become evolutionary and is used actively in the production of various information systems. One of the options for implementing such technology is Docker, the installation of which we will consider in this instruction.
## Quick installation of Docker on CentOS!
One of the three options for installing the Docker platform on CentOS, is in a pre-prepared script from the company itself. It will write the repositories and download the key for EDS, then install the necessary software via the package manager.
Let’s update the packages and install the necessary dependencies, for this purpose execute the command:
```bash
yum update && dnf install curl nano -y
```
Screenshot №1 — Update packages
After downloading and granting rights to work with the script, then run it as root:
```bash
curl -fsSL https://get.docker.com -o install.sh && chmod 700 install.sh &&\
bash ./install.sh
```
Screenshot №2 — Process script execution
As a result, the only thing left to do is to start the Docker platform management daemon itself via the provisioning system:
```bash
service docker start && service docker status
```
Screenshot №3 — Starting service
As a result, the containerisation platform is deployed on the machine and ready for use!
## Installation via repository
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №4 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways!
For most cases, combat information systems may require a specific version of Docker or manually need to track system performance. For the purpose of more flexible configuration we can use the platform repositories! Let’s go to the configuration directory of the package manager and create a file:
```
cd /etc/yum.repos.d/ && nano docker-ce.repo
```
Inside of which you need to write a configuration, with a specific syntax:
```
name=Docker CE Stable – $basearch
baseurl=https://download.docker.com/linux/centos/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
```
Each of the above options has its own functionality, the main ones are:
- baseurl specifies a link to the repository from which packages will be synchronised and installed;
- enabled function, which indicates the state of the repository. Whether to include it in the search list or not;
- gpgcheck checks the EDS of downloaded packages to determine their authenticity and integrity from the moment of transmission;
- gpgkey the path to the used key in URL path format. To control existing keys on your system, you can also download it, check the hash sum and specify the path to the file via **file:///**.
After that we can save the file with Ctrl+O and proceed to install the packages:
```bash
yum install docker-ce docker-ce-cli contained.io
```
Screenshot №4 — Result of update
As you can see in the screenshot above, the docker-ce-stable repository we mentioned was used to install these packages, then all that’s left to do is start the daemon and get started!
```bash
service docker start
```
https://serverspace.us/support/help/configure-repositories-on-rocky-linux.mdLearn how to configure, enable, disable, and secure software repositories on Rocky Linux. Step-by-step DNF/YUM guide with GPG keys and real examples.
Rocky Linux uses DNF/YUM repositories as the primary source for installing and updating software. Proper repository configuration is essential for system stability, security, and access to up-to-date packages. In this guide, we'll show how to add, verify, disable, and manage repositories on Rocky Linux step by step.
Screenshot №1 — Update software from repository
For Windows, the process of downloading OS updates is done through repositories, and software is often downloaded through Web resources as binary files. Linux interaction is often oriented towards the use of repositories for all the processes described above. It is therefore important to consider the configuration and secure operation of these solutions.
## What is a repository and how do I work with it?
A repository is a collection of objects stored on a server, which is often used to store software and other dependencies necessary for its operation. It can be implemented as an SFTP server, Web server, or it can be a database on a version control platform. It is often used as a distribution point for software, as well as a convenient form of data storage for the work of teams.
Screenshot №2 — Example of repository
Linux often uses repositories as open download points and it is important enough to divide them into two types: trusted and untrusted repositories. The former have been approved by developers or the community, which is less likely to have software that doesn’t work or to have software tabs. The second must be verified, or trusted by the developer of a given collection of objects.
To work with a Linux repository, it is often necessary to provide a URL link from where the software packages will be downloaded and a corresponding public key for digital signature.
## Configure repository on Rocky Linux
We will use two main directories: /etc/yum.repos.d and /etc/pki/rpm-gpg, as these are the directories where the references to repositories and EDS keys are stored respectively. This method is a manual repository configuration and allows you to monitor existing repositories. To add a new collection, let’s go to the /etc/yum.repos.d folder and create a new configuration file for Docker:
```
cd /etc/yum.repos.d && nano docker-ce.repo
```
```
name=Docker CE Stable – $basearch
baseurl=https://download.docker.com/linux/rhel/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/rhel/gpg
```
Screenshot №3 — Configuration
In this example, the first line is the name of the repository, as is the second and can take any value. The baseurl line should be correctly composed with the version of your RHEL distribution, and the processor architecture usually used is x86_64. If you don’t know the exact data leave it as given in the example above – variables.
Enabled is responsible for using the repository when searching for packages, and gpgcheck is responsible for checking signatures. It is advisable to leave it enabled to avoid man-in-the-middle attacks.
And the second important component in the whole file is the path to the key, which is specified in URL format – a link to a local file, or a link to an existing repository object. In the variant presented above, just a link to an online resource. Let’s try to update the repository and see if the software reads packages from there:
```bash
dnf upgrade
```
Screenshot №4 — New repo
The update is happening, so the paths are set correctly and the repository is configured correctly.
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №5 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways!
## How do I download the repository key?
But what if you don’t trust the resource on a permanent basis and want to check the keys yourself and update them via Ansible every time? To do this, you can download the key via the command link and immediately write it to a directory with limited permissions:
```bash
curl https://download.docker.com/linux/rhel/gpg > /etc/pki/rpm-gpg/docker
```
Screenshot №6 — Local key
This command will redirect the output from the server to the key storage file. And in order for the repository to check the provided key we will specify it in the repository configuration with the line gpgkey=file:///etc/pki/rpm-gpg/docker, having previously commented out the previous one. Now let’s test the repository by installing the docker-ce package:
```bash
dnf install docker-ce
```
Screenshot №7 — Result of config
In the Repository field we can see the list of repositories used to find the utility, as well as its dependencies that will be used for installation.
## How do I delete a repository or disable it?
If we need to disable some repositories we can either delete the configuration file with them or switch them off with the enable clause. What is done is also in the configuration file. For example, we don’t need the current online collection of Docker files, so let’s update its value:
```
sed 's/enabled=1/enabled=0' ./docker-ce.repo
```
Screenshot №8 — Disable repo
This command replaced all items from =1 to =0 in the parameter that was responsible for using repositories when searching. Now let’s check how it works:
```bash
dnf update
```
Screenshot №9 — Changes of turn off process
As demonstrated, the repository has been successfully removed from the package manager’s active search scope. This means it will no longer be considered during software installation or update operations, ensuring that no packages are inadvertently pulled from this source. This approach is useful when you want to avoid using outdated, unsupported, or unnecessary repositories in your system environment.
Proper repository management on Rocky Linux ensures system security, stability, and access to reliable software updates. By using trusted repositories, verifying GPG keys, and disabling unused sources, administrators can maintain a clean and predictable system environment.
## Common Mistakes and Troubleshooting
When configuring repositories on Rocky Linux, administrators may encounter several common issues. Below are the most frequent mistakes and practical ways to troubleshoot them.
### Repository returns a 404 or connection error
This usually means that the baseurl is incorrect or does not match your system version.
**What to check:**
- Make sure $releasever corresponds to your Rocky Linux version.
- Verify that $basearch matches your system architecture (usually x86_64).
- Test the URL manually using curl or wget.
```bash
dnf repolist
```
If the repository does not appear or shows errors, the URL is most likely invalid.
### GPG key verification failed
This error occurs when the repository signing key is missing, outdated, or incorrectly specified.
**How to fix:**
- Ensure gpgcheck=1 is enabled.
- Verify that the gpgkey path or URL is accessible.
- If using a local key file, make sure the path starts with file:///.
```
rpm -qa gpg-pubkey*
```
- Re-import the key if necessary and run dnf clean all before retrying.
### Repository is not used during package installation
Sometimes a repository exists but is not considered by DNF.
**Possible reasons:**
- enabled=0 is set in the repository configuration.
- The repository is disabled globally or overridden by DNF configuration.
- Package priority or module streams prevent its usage.
Check repository status:
```bash
dnf repolist all
```
### Conflicts between multiple repositories
Using several repositories that provide the same packages may lead to version conflicts or unexpected updates.
**Recommendations:**
- Avoid mixing repositories from different distributions.
- Disable unused or overlapping repositories.
Use repository priorities if necessary.
```bash
dnf repoquery –info docker-ce
```
### Cached metadata causes unexpected behavior
DNF may use outdated repository metadata, leading to installation failures or missing packages.
**Solution:**
```bash
dnf clean all
```
```bash
dnf makecache
```
This forces DNF to refresh all repository information.
### Permission issues with repository files or GPG keys
Incorrect file permissions may prevent DNF from reading repository definitions or GPG keys.
**What to check:**
- Repository files should be readable by root.
- GPG key files must have appropriate permissions.
```
ls -l /etc/yum.repos.d/
```
```
ls -l /etc/pki/rpm-gpg/
```
### SELinux blocks repository access
In rare cases, SELinux policies may interfere with repository access or key usage.
**Troubleshooting steps:**
- Check audit logs for denials.
- Temporarily set SELinux to permissive mode to confirm the issue.
```
setenforce 0
```
If the issue disappears, create a proper SELinux rule instead of disabling enforcement permanently.
https://serverspace.us/support/glossary/direct-connect.mdFind out what Direct connect is, its main features and how to access Serverspace Direct Connect
## What is Direct connect
Direct Connect is a direct connection between your corporate private network and the Serverspace cloud. With this, you can maximize bandwidth between locations and provide a more stable network than a public connection. For example, Serverspace offers a service called[Serverspace Direct Connect](https://serverspace.us/services/direct-connect.md).
## How much does it cost to connect Direct connect
Connection to Serverspace equipment is completely free of charge, all you need to do is select a connection point on your end.
## What speed does Direct connect support?
The maximum bandwidth depends on your network equipment. There is no speed limit on our end.
## Key features and functions of Direct Connect
- **Direct Connect**: It provides a direct physical connection between the user’s infrastructure and cloud servers, bypassing public networks such as the Internet.
- **High Throughput**: Direct Connect delivers high throughput and low latency, which is especially important for applications and data that require high traffic volumes and fast data transfer.
- **Reliability**: A direct connection via Direct Connect is generally more reliable than a connection over the internet as it is less susceptible to external influences and network congestion.
- **Security**: Direct Connect provides a higher level of security as data does not pass through public networks and the risk of interception and unauthorized access is reduced.
- **Bandwidth**: Users can choose bandwidth depending on their needs, ranging from tens of megabits per second to several gigabits per second.
## Benefits of Direct Connect
- Improved performance: Direct connection provides faster and more reliable data transfer speeds.
- Cost savings: In some cases, Direct Connect can reduce data transfer costs, especially with high traffic volumes.
- Simplified management: Direct Connect makes it easier to manage the connection and monitoring of network traffic between on-premises and cloud infrastructure.
## Serverspace Direct Connect
You can get a direct physical connection of your on-premises infrastructure to the Serverspace cloud.
Serverspace guarantees:
- **High speed**: We guarantee maximum bandwidth and low latency.
- **Convenience**: We take care of all network work – you just need to choose a connection point.
- **Security**: We connect via dedicated channels without internet access.
https://serverspace.us/support/glossary/nat.mdLearn what NAT is, its benefits, its main functions and features
## What is NAT
NAT (Network Address Translation) is a technology used in network devices to translate private (local) IP addresses to and from public (global) IP addresses. This technology allows multiple devices on a local network to use the same public IP address to access the Internet, which is especially useful when there are a limited number of public IP addresses available.
## Basic functions and features of NAT
- **Address Translation**: NAT translates the private IP addresses of devices on the LAN into one or more public IP addresses when they are sent to the Internet, and vice versa – the public IP addresses of packets coming from the Internet into private IP addresses.
- **IP address savings**: NAT reduces the need for public IP addresses because multiple devices on a LAN can use the same public IP address.
- **Increased security**: NAT hides the internal network structure from outside users, making it difficult for unauthorized access from the outside.
## Varieties of NAT
There are several types of NAT, including static, dynamic, and NAT with congestion (PAT – Port Address Translation).
- Static NAT maps one private IP address to one public IP address.
- Dynamic NAT uses a pool of public IP addresses to map to private IP addresses.
- PAT(Nat with Overload) allows multiple devices to use a single public IP address by distinguishing them by port number.
## Benefits of NAT
- Reduced need for public IP addresses: With address translation, devices on the LAN can use a single public IP address to access the Internet.
- Improved security: NAT improves network security by hiding internal IP addresses from external users.
- Ease of deployment: NAT is easy to configure and use in network devices such as routers and firewalls.
## NAT and Serverpace
With Serverspace and their gateways, you can secure your data by configuring local network security elements such as NAT and Firewall.
Shield servers within your private network and gain Internet access through a singular external IP address.
https://serverspace.us/support/glossary/udp.mdLearn what UPD is, its functions and features, advantages and disadvantages
## What is UDP?
UDP (**User Datagram Protocol**) is one of the main network protocols used for data transmission on the Internet. Unlike TCP (Transmission Control Protocol), UDP does not provide reliable data delivery and does not require a connection to be established before data is transmitted. This makes UDP a lighter and faster protocol, but with fewer delivery guarantees.
## The basic functions and features of UDP
- **No established connection**: UDP does not require an established connection between sender and receiver before sending data. Data is simply sent as individual packets (datagrams).
- **Fast data transfer**: Since UDP does not spend time establishing a connection and confirming data delivery, it provides faster transmission compared to TCP.
- **Lack of delivery assurance**: UDP does not provide integrity checking and resend lost or damaged packets. The recipient may receive packets in the wrong order, or not receive them at all. This aspect of UDP you should be aware of.
- **Smaller header**: UDP has a simpler header than TCP, which simplifies processing and reduces data transfer overhead. The UDP header consists of 8 bytes, while TCP consists of 20 or more bytes
- **Usage**: UDP is often used in applications where speed of data transfer is more important than reliability, such as video and audio streaming, online gaming, VoIP (Voice over IP), and DNS (Domain Name System).
## UDP Advantages
- **High Performance**: Due to the lack of a connection establishment procedure and lower overhead, UDP provides high performance and low latency.
- **Simplicity**: A simpler header and the absence of flow and congestion control mechanisms make UDP easier to implement and use.
## Disadvantages of UDP
- **Lack of reliability**: There is no guarantee of delivery, order, or integrity of transmitted data.
- **Lack of flow control**: UDP does not provide flow control mechanisms, which can lead to network congestion.
https://serverspace.us/support/glossary/icmp.mdLearn what ICMP is, its advantages and disadvantages, its functions and features
## What is ICMP?
ICMP (**Internet Control Message Protocol**) is a network protocol designed to exchange diagnostic and error messages on IP networks. ICMP is an important component of the IP protocol and is used to control network devices and troubleshoot network problems.
## Functions and features of ICMP
- **Transmit Error Messages**: ICMP is used to send error messages that may occur when transmitting IP packets. For example, if a router is unable to deliver a packet to a specified address, it can send an error message to the sender via ICMP.
- **Transmitting diagnostic messages**: ICMP is also important for diagnosing network connections. One of the best known uses of ICMP is the ping command, which can be used to check the availability of a remote host and measure the signal delay.
- **ICMP packet structure**: ICMP packets consist of a header and the body of the message. The header includes the message type, message code, and checksum. The main message content may include additional information depending on the specific message type.
- **Different types of ICMP messages**: There are many types of ICMP messages such as:
– _Echo Request_ and _Echo Reply_: These are used to check the availability of a host (for example, using the ping command).
– _Destination Unreachable_: Notifies the sender that the packet cannot be delivered to the specified destination.
– _Time Exceeded_: Notifies the sender that the packet’s time to live (TTL) has expired.
– _Redirect_: Indicates to the sender a more optimal route for sending packets.
## ICMP applications and tools
- **Ping** – is one of the most popular ICMP applications. It allows administrators to check host availability and measure the latency of data transmission.
- **Traceroute** – uses ICMP Time Exceeded messages to determine the path that packets take through the network to the destination host. Serverspace has an article [https://serverspace.us/support/help/how-to-use-traceroute-in-linux/](https://serverspace.us/support/help/how-to-use-traceroute-in-linux/), which explains how traceroute works and how to install it on Linux.
## Advantages of ICMP
- **Network Diagnostics**: ICMP allows network administrators to identify and troubleshoot connectivity and network performance problems.
- **Network management**: ICMP can be used with routing and error reporting to improve network performance.
- **Simplicity**: ICMP is a simple and lightweight protocol that can be easily integrated i
## Disadvantages of ICMP
- **Insecurity**: ICMP can be used by attackers to launch attacks such as DoS (Denial of Service) and DDoS (Distributed Denial of Service), so ICMP requests are often restricted or filtered on networks.
****
- **Limited functionality**: ICMP is mainly for diagnostics and error reporting and is not intended for data transmission.
https://serverspace.us/support/help/how-to-move-files-directories-in-linux.mdLearn the essential commands and techniques for moving files and directories in Linux. Master the process effortlessly and efficiently.
There are many different utilities in Linux, but some of them are used more often than others. For example, mv is a utility that allows you to change the name and location of a file/s and even move directories. Everything is just like in a graphical environment, but only through the command line.
## How to move files?
To work with the utility, consider its syntax below; parentheses and <> signs are not used, but only show argument boundaries:
```
**mv** (-**options**)
```
Screenshot №1 — Help
Let’s imagine that logs have been accumulated on the device and it is necessary to move them to the /tmp/backup folder. For one file we will use the command:
```
mv ./log.txt /tmp/backup
```
Screenshot №2 — Move file
As an analogue to this command, you can use the file descriptor command:
```
cat log.txt > /tmp/backup/log.txt && rm log.txt
```
Screenshot №3 — Alternate way to move file
The alternative way more clearly reflects the logic of the process: the cat utility outputs the contents of a file, the > sign is a file descriptor that redirects the output to the target specified file. And the command **rm log.txt** removes files from the current directory. Which implements the move process. However, this method will not work for recursive moving of files or in other words all files from a folder. For this purpose in the mv command instead of the name of a specific file we will specify the mask *****:
```
mv /tmp/backup/* /tmp/backup2
```
Screenshot №4 — Move multiple files
Expected result: all files from one directory will be moved to the target directory.
## How to move directories?
The process is very similar to moving files, except now you need to specify a folder. This process is realised by the following command:
```
mv /tmp/backup_antivirus /tmp/backup_all
```
As a result, the **backup_antivirus** folder will be moved to **/tmp/backup_all** and the absolute or full path will look like this: **/tmp/backup_all/backup_antivirus**!
https://serverspace.us/support/help/how-to-create-common-and-sudo-users-for-rocky-linux.mdLearn how to efficiently create both common and sudo users on Rocky Linux with our step-by-step guide. Enhance your system's security.
Having basic management skills in Rocky Linux makes it easier for the user to interact with the OS and form an idea of how the system works. One of these is to create a user with various options.
## How do I create a regular user?
To create a new account, the** adduser** utility is used, or its equivalent **useradd**, there is practically no difference in their functionality. Here is a list of available options for the utility:
```
adduser -h
```
Screenshot №1 — Manual of command
The easiest way to create without user configuration is as follows:
```
adduser user_name -p p@ssw0rd
```
Screenshot №2 — Quick user creation
The result of the team’s work: a new account with a standard set of settings. You can view them by specifying the **-D** option, which will display all the standard user settings:
```
adduser -D
```
Screenshot №3 — Default settings
If necessary, you can change these parameters through the configuration file with the command:
```
nano /etc/default/useradd
```
For example, by specifying a different shell for users or the expiration date of their accounts. **For more flexible configuration**, we will specify a manual shell, a directory and a comment.
```
adduser user_name -p p@ssw0rd -d /tmp -s /bin/bash -c "Новый участник"
```
Screenshot №4 — User creation
When checking the list of accounts with the cat command, we see that the user_name has appeared, which means the process has been completed successfully.
## How do I create an administrator?
In Linux-like systems, the administrator is an account that has been delegated root rights through the sudo utility. By default, there are groups that grant the user administrator rights if he is added to them. Therefore, when creating an account, we will explicitly specify the group where the user needs to be added:
```
useradd admin -G wheel -p complexpass
```
Screenshot №5 — Admin creation
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provide isolated VPS / VDS servers for common and virtualize usage.
Screenshot №6 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways. Let’s return to explore utility. If you need to create a **new root user**, use the record duplication function to do this:
```
adduser root_new -u 0 -o -p complexpass
```
Screenshot №7 — Create new root
Optionally, you can also specify a group with gid = 0, as well as the original root through the additional option **-g 0**. So those who will be in the wheel group or the root group will receive privileges to work with files in front of other users.
https://serverspace.us/support/help/how-to-use-curl-in-linux.mdLearn how to make the most of the Curl utility in Linux. Learn the basic commands. Learn the most of the Curl utility in the Linux.
**CURL** or **client URL** is a multifunctional utility that allows you to communicate with servers using HTTP, HTTPS, FTP, FTPS, SCP, SSH and many other protocols. The main application users have found is to use the utility to make requests to web servers. However, the functionality of the utility, thanks to the libcurl library, leaves a large scope for possibilities.
## How to install curl?
Installation is standard, as for any Linux package of a similar system. It is necessary to update the repository first, if you use **apt-manager**, then type the command:
```bash
apt update && apt upgrade \
apt install curl -y
```
For an **RPM-like package manager**, use the appropriate commands:
```bash
dnf update && dnf upgrade \
dnf install curl -y
```
Screenshot №1 — Curl installation
Having updated the repositories and installed the utility, let’s turn to the tooltip and divide the help into categories or protocols of operation:
```bash
curl –help category
```
Screenshot №2 — Help category
This list provides a complete list of protocols that can be used to communicate with servers. If you replace the word category in the previous command with one of the given items, a detailed guide on how to use each of the options will open:
```bash
curl help http
```
The command above is as an example of searching for commands to work over the http protocol.
## Basic examples of work
Let’s look at the basic examples for working with the utility, but before that let’s define the syntax used:
```bash
curl [options]
```
The main command for calling the curl utility, its main options, and the URL itself, which is accessed.
## How do I download a file using Curl?
By default, when accessing the site curl forms a GET request, which asks the server for the headers and the file itself. To save the file, write the command:
```bash
curl -Lo /tmp/articles.pdf
```
Screenshot №3 — Download file
Note that to download from a site that may have a self-signed certificate, you must additionally use the **-k** option.
After downloading the file will be saved in the directory **/tmp/** under the name articles.pdf, for which the -o option is responsible. The other **-l** option means that if the site responds with a 301, 302, etc. redirect code, curl will automatically go to the correct site and download the file. The file can also be left with the original name and downloaded to the current directory:
```bash
curl -Lo
```
However, if you want to output the file directly to the terminal, leave a dash instead of the file name:
```bash
curl -Lo –
```
Such a solution will allow you to view the contents of a file faster with its headers and meta description, which may be necessary to check the contents of the file. For example, pdf for the presence of embedded scripts.
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provide isolated VPS / VDS servers for common and virtualize usage.
Screenshot №4 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways. Let’s return to explore utility.
## How do I view headings using Curl?
Before downloading this or that file or caching, it is necessary to collect information about the page/file that will be accessed. For example, a pdf file is hosted on the site and it is necessary to find out its name, size and data about the last modification of the file. To do this, let’s write the following command:
```bash
curl -lkI
```
Screenshot №5 — Head of file
The MIME content-type field categorises the file as pdf. The next field, last-modified, contains the last modification date and the content-length field contains the size of the document body.
## Continued interrupted download
Suppose we started downloading a file and then accidentally cancelled it. If the **Accept-Ranges: bytes** line is present in the server response headers, we can use the function to continue the cancelled download. To do this, the **-c parameter** must be added to the usual list of options when downloading **-Lko**, which will allow us to continue the download:
Screenshot №6 — Continue download
The file will then be saved to the directory where the user is currently located.
## How to change User-Agent or other header?
While working with a web server, you may need to implement custom headers. For this purpose, curl has the **-H option**, which will allow you to add a header with a value:
```bash
curl -LkvH "x-os-client: MacOS"
```
Screenshot №7 — Custom header
There is a separate option **-A** for similar customisation of the **User-Agent field**. It must be specified with a new agent value, for example, the command may look like this:
```bash
curl -LkvA "MacOS"
```
Screenshot №8 — User Agent
The use of **CURL** facilitates various network operations and gives the user flexibility and control when interacting with servers. Thanks to its capabilities, users can efficiently perform a variety of tasks related to data exchange.
https://serverspace.us/support/help/how-to-use-traceroute-in-linux.mdLearn how to create a new user in Rocky Linux using simple and effective commands. Learn the steps to quickly add users and manage access
**Traceroute** is a utility for testing the network connection path between devices. The main task of which is to display a list of devices involved in the transmission of the packet to the destination point. It works on network and transport layer protocols: **TCP, UDP** and** ICMP**. Also, unlike the ping utility, it can be used to build a network card.
## What is the principle of operation?
In order for devices to communicate on the network, there are a number of rules by which information is transmitted. One of these requires adding a TTL parameter to each transmitted packet, which takes the standard value of **128 for PCs** and** 64 for mobile devices**. Each time a packet passes through the router, the TTL value is reduced so that the packet is not looped. After all, when the value 0 is reached, the router deletes the packet and sends back the Time Exceed packet. **Therefore, the principle of operation is as follows**: traceroute sends ICMP packets with the parameters TTL=1, TTL=2, TTL=3 and so on, when the node responds with Time Exceed, the utility fixes the node.
## How do I install traceroute?
Before installing the utility, you need to check if it is available on your device by requesting the package manager. To distribute using **apt manager**:
```bash
apt list | grep "traceroute"
```
If you are using an **rpm-like package manager**, the command will look like this:
```bash
dnf list | grep "traceroute"
```
Screenshot №1 — Installation traceroute
We use the package manager for installation:
```bash
apt update && apt upgrade \
apt install traceroute -y
```
For a RPM-like package manager, use the appropriate commands:
```bash
dnf update && dnf upgrade \
dnf install traceroute -y
```
Update the repositories and install the utility, turn to the hint and select useful options from the entire list:
```
traceroute
```
Screenshot №2 — Help page
This list provides a complete list of options that can be used for work. The **-4 and -6** options allow you to specify the type of **IPv4 or IPv6** protocol used. In order for the packets not to fragment, but to be transmitted entirely, the** -F** option is used. To change the protocol used to poll nodes, you can use the options **-T for TCP packets**, **-I for ICMP connections**, **UDP is used by default.**
## Examples of utility’s work
In order to check the path to the node, you need to write a command that addresses the target node:
```
traceroute google.com
```
Screenshot №3 — UDP traceroute
The screenshot shows the full path of the routers and redirecting devices that the packet passed through. According to them, it is possible to assume which networks are nested into each other, and which are on the same level.
It happens that the response packets do not arrive and asterisks remain in place of the node, as in line 5 in the screenshot. This is due to the fact that the node has closed the ports for connection using the protocol used. In such cases, you can try to use a TCP or ICMP connection, for example, let’s try for google.com find out the 5th line:
```
traceroute -T google.com
```
Screenshot №4 — TCP traceroute
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provides isolated VPS / VDS servers for common and virtualize usage.
Screenshot №5 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways!
https://serverspace.us/about/news/new-data-center-in-the-uae-equinix-dx1.mdCloud provider has added a new data center Equinix DX1, located in Dubai, to its control panel.
[https://serverspace.us/wp-content/uploads/2024/05/en-1.svg](https://serverspace.us/wp-content/uploads/2024/05/en-1.svg)
Serverspace is now in the Middle East. Cloud provider has added a new [data center Equinix DX1](https://serverspace.us/infrastructure/data-center-dubai.md), located in Dubai, to its control panel. Users now have the opportunity to [deploy cloud infrastructure in the United Arab Emirates](https://serverspace.us/services/vps-server/cloud-servers-in-the-uae.md), either on the hyper-converged vStack platform or on the VMware virtualization platform. The [data center](https://serverspace.us/infrastructure/data-center-dubai.md) is already available in the control panel, opening up new benefits of Equinix DX1.
The data center is designed in accordance with Tier III international standards and has quality compliance certificates such as ISO 27001, ISO 9001, and PCI DSS. The cluster is equipped with vStack-R-SL201-25RE servers, featuring 16-core Intel Xeon Gold CPUs with a base frequency of 3.0 GHz.
### Key features of Equinix DX1:
- Electrical power of 5.6 MW;
- Uninterruptible power supply with N+1 redundancy level;
- Cooling system with N+20% redundancy level;
- Contains 1200 racks for equipment placement;
### How to create a VPS in the UAE?
- Go to the control panel at my.serverspace.us;
- Start creating a server;
- Choose the OS and location – Dubai, UAE;
- Configure the server resource settings;
- Click the “Create” button.
With the addition of the new DX1 data center, Serverspace provides the ability to deploy infrastructure in 7 data centers located around the world:
-
[New Jersey (USA);](https://serverspace.us/infrastructure/datacenter-new-jersey.md)
- [Amsterdam (Netherlands);](https://serverspace.us/infrastructure/datacenter-amsterdam.md)
- [Toronto (Canada);](https://serverspace.us/infrastructure/data-center-toronto.md)
- [São Paulo (Brazil);](https://serverspace.us/infrastructure/data-center-sao-paulo.md)
- [Istanbul (Turkey);](https://serverspace.us/infrastructure/data-centers.md)
- [Dubai (UAE);](https://serverspace.us/infrastructure/data-center-dubai.md)
- [Almaty (Kazakhstan);](https://serverspace.us/infrastructure/data-center-almaty.md)
https://serverspace.us/support/glossary/ftp.mdFTP (File Transfer Protocol) is a standard network protocol used for the transfer of computer files between a client and server on a computer network
FTP (File Transfer Protocol) is a network file transfer protocol created back in 1971.
This protocol works in “**Client – Server**” mode and it is an application protocol, along with such protocols as: HTTP; SMTP; DNS.
The server has a file system, which is a directory structure in which the files are located.
## Principle of FTP
FTP uses a URL (uniform resource locator) to locate files, let us see how it does this:
For example, we have a URL link that allows us to download a document from our file server (example ftp://serverspace.us/host/doc/readme.txt). The URL consists of 3 parts.
- The first part is the ftp protocol identifier – [**ftp**://serverspace.us/host/doc/readme.txt] .
- The second part is the name of our server using DNS name or its ip address – [ftp://**serverspace.us**/host/doc/readme.txt].
- The third part is the path to the file in the file system of the server – [ftp://serverspace.us/**host/doc/readme.txt**].
Differently from the other application layer protocols FTP uses two connections:
- A control connection that runs on port 21.
- A data connection which works on port 20 in active mode.
In active FTP mode, the initiator for establishing a data connection is the server, in this case port 20 on the server will be used and on the client side ports from 1024 are used.
In passive FTP mode, the client initiates the data connection; in this mode, ports 1024 and above are used.
The client connecting to the server is able to interact with the file system, navigate through directories, copy data and perform other file system operations.
## Authentication
FTP requires the user to authenticate. A username and password must be entered, after which the user will have access to the directories that are assigned to the authentication user.
Another way of authenticating to the server is as an anonymous user. For its authorization you need to enter the user name “ftp ; anonymous” and a password (the password can be your login, or your mail). Anonymous users have many restrictions and access is allowed based on the anonymous user settings.
## FTP these days
This protocol is used less often nowadays because of security related issues. The user ID and password are sent over the network in the clear, including the data. Many companies have migrated from FTP to other protocols based on SSH (SFTP, SCP). FTP is suitable for local networks, for example to transfer movies from a computer to a television within a network, where the computer will act as a server.
To create your own FTP server, you will need any personal computer with Windows, Linux, MacOS.
MacOS and Windows support acting as an FTP server, but you need to enable the FTP/SFTP option in your system settings.
On Linux, you will need to install and configure the “vsFTPd” package.
https://serverspace.us/support/glossary/ide.mdAn IDE - Integrated Development Environment (IDE) or Unified Development Environment (UDA), is a cluster of software tools used by programmers for development.
IDE (Integrated Development Environment) is a cluster of software tools used by programmers for development. In other words, it is an integrated development environment.
The essence of the IDE for the developer
Some novice developers confuse the notion of an environment and a code editor. An IDE provides a large list of features: from connecting different languages and checking the written program, to compiling and helping to build the project. An IMR is a developer’s comfort zone. Its purpose is to unite the various utilities for the comfortable work of the programmer. Thanks to the IMR environment, the programmer may not waste time on additional tasks and thus get much more done in less time.
The IME helps to increase productivity.
## Composition of the IDE
- Code editor
- Translator (compiler and/or interpreter)
- Tools for building projects
- Debugger
Code editors help with writing programs by highlighting syntax, auto-complementing code, adding indents, checking character placement, and offering contextual help with code. You can extend their capabilities by installing additional plugins.
Compiler and interpreter – are responsible for converting the code written by man into machine code that the computer can understand.
Debugger – allows to find and fix bugs in the code.
Today, most IDEs are developed with multi-language support, making it easy to find a suitable development environment.
## Choosing an IDE
Consider these points when choosing an IDE:
- Whether the language you need is supported by the operating system you are going to work with.
- Determining the tasks for which device you are developing the project (android, web, desktop, ios)
- Functionality
https://serverspace.us/support/glossary/tcp.mdTCP - Transmission Control Protocol - is a data transmission protocol specialized for data transmission control.
TCP (Transmission Control Protocol ) — is an Internet transmission protocol, it is on the transport layer along with UDP, RTP. The difference between UDP and TCP is that it is more reliable.a
## TCP guarantees
- Delivery of data
- Preservation of message order.
Guarantee of delivery of data and preservation of an order of messages is reception of the confirming message.
## An example of operation of the protocol
The sender sends a message through the network, the recipient receives it and sends an ACK to the sender (Acknowledgment; ACK means that the data segment is received). The next message is sent, and if the recipient receives it, they will send the ACK again.
This will be repeated until the sending file is received by the recipient.
## Protocol operation in case of error
If an error occurs during transportation then the data segment will not reach the recipient and the recipient will not send the ASK. The sender, when sending the file, sets a timelock after which the file will be sent again if no ASK arrives. If the timer is successful, the protocol resumes sending segments until the file is finally received.
The TCP protocol acknowledges multiple segments sent one after another rather than an individual segment.
Files come to TCP as one big stream of bytes. Then, that stream is split into chunks. These chunks are called segments. Once separated, the segments are sent one after another to the addressee. The addressee, receives them, combines them into one stream and sends it to the application.
The entire sending process is protected only against the loss of segments. Received segments may not be received in the order in which they were sent. Segments may also be duplicated.
https://serverspace.us/support/glossary/vpn.mdVPN (Virtual Private Network) or Virtual Private Network is a protocol that creates a secure connection between the user and a virtual network, which in the future helps to gain access to limited Internet resources, and protects the user from…
VPN (**Virtual Private Network**) — is a protocol that creates a secure connection between a user and a virtual network, which facilitates future access to limited Internet resources, and protects the user from insecure transmission of traffic in public networks.
A private network is a connection on a network with some restrictions on the protected environment, the type of network can be configured so that devices that are not on that network will not be able to access it.
## Types of VPNs
**Remote Access VPN** – A user connects remotely to a network, and thus is able to interact with data and work remotely. Any traffic, both outgoing and incoming, is encrypted.
**Site-To-Site VPN** also known as “**point-to-point**” – Designed to connect an organization’s networks. It connects two honest networks. A common type of connection when configuring a network for an enterprise.
## VPN operation
A VPN hides your unique IP address, thereby allowing it to be redirected through a server that is managed by a VPN host. So, if you connect through the VPN, the VPN server gives you another IP address and becomes your “primary” IP address for the duration of its operation. It turns out that your provider can’t control what sites you visit or data you send.
## Using a VPN
- Keeping your information and location private from intruders (on public WiFi networks)
- With VPN you can get content that is not available in some countries (like Netflix, etc.)
- Connect two private networks for the company, thus simplifying the interaction between employees
## Benefits of VPN
- It is first and foremost data protection.
- Privacy in public networks.
- Hides your IP address.
- Prevents bandwidth restriction based on certain actions.
- Protection against DDoS attacks.
## Disadvantages of VPNs.
- Reduces the speed of your internet.
- VPN doesn’t give you a 100% guarantee that your data won’t leak to various social networks. Free/cheap VPNs are slow, thus they compromise your “anonymity” and can collect your data.
- If you want to be absolutely sure of your “anonymity” you have to pay for a quality VPN.
https://serverspace.us/support/glossary/server.mdA server is a computing machine for performing any server tasks that does not require any physical involvement of the user. The server requires its primary configuration, after which the computer can work and perform its tasks without direct human…
A **server** is a computing machine for performing any server tasks that does not require any physical involvement of the user. The server requires its primary configuration, after which the computer can work and perform its tasks without direct human intervention, following the given configurations at the stage of configuration.
## The possibilities of the server.
The server can perform many useful functions:
- Store information of one or more sites
- IP Telephony. You can use your own server for telephony, where your data and call records will be stored.
- Coordinate the interaction of computers on the same network. By creating a domain within the enterprise network, there are many opportunities to control the security of your network.
- Store data. A server can act as a repository for corporate data and provide access to it.
## Physical server
Physical server (or dedicated server) — an independent and self-sufficient unit of equipment, which opens to its owner a full range of capabilities. This server is a hardware complex, configured for data storage or continuous solution of tasks. No matter if it is your property or you rent it in a data center, processor power, RAM and hard drives are used to run the software you have installed.
In addition, the physical server must be connected to the ports that connect it to the Network. These ports have different bandwidths, but the higher the bandwidth, the faster the server will work.
## Virtual server
A virtual server (a.k.a. VPS) provides shared access to hardware and software resources via another operating system. Server virtualization is an extremely important part of a modern data center.
One of the distinctive features of the virtual server is its creation exactly with the parameters that are needed exactly today and for specific tasks of your business: you can configure the number of cores, disk capacity, RAM, and not only. Moreover, when creating a virtual server takes just 10 minutes to your VPS is ready to work with the necessary configuration. Just as easy to increase or decrease server parameters, paying just the resources you need.
You have administrative rights to manage virtual server, which allows you to change the settings, install any operating system and software, not limited to what the operator offers you.
## Cloud server
Cloud server — Computing machine, which is hosted by a company providing flexible power configuration.
The user has the ability to select and configure the characteristics of the server. The characteristics are adjusted in the control panel. There is no need to stop the server. The possibility of using not the entire power of the server, but only a part of it, allows you to reduce costs.
What components does a physical server consist of?
It consists of:
- Motherboard
- Processor
- Power supply unit
- RAM
- Solid State Drive (hdd/ssd)
- Cooling system
In addition to these components, the server can have multiple slots for the processor. Thus increasing the capacity of the server to scale.
https://serverspace.us/support/glossary/virtualization.mdVirtualization is the allocation of resources in an isolated environment; (This can be isolation of some CPU resources, Ram , HDD)
Virtualization — is a technology that allows you to run multiple operating systems on a single physical server. Allocating server/personal computer resources to an isolated environment, it works the same way as a simple personal computer, that is, to run a virtual machine you need to isolate some of the resources of the main physical device.
Isolation can be physical devices (hardware virtualization: CPU, Ram, HDD), or software resources. Virtualization originated in the 1960s and 1970s and is still evolving today, helping us create our own virtual machines, clouds, and data centers.
## Types of hardware virtualization
Normal server or pc operation:
- Physical “Hardware” (Motherboard; Processor; RAM; Storage)
- Operating system (The system installed on your media, Linux, Windows, etc.)
- Applications under the operating syste
## Virtualization of the first type
For virtualization of the first type, you do not need to use a shell of another operating system.
- Physical “Hardware” (Motherboard; Processor; RAM; Storage)
- Hypervisor
It will require a server with all the necessary components, just like a simple PC. An operating system for virtualization, Hypervisor, is installed on this device. Under this hypervisor, hardware virtualization is done, which creates many isolated environments, that is, virtual machines.
## Virtualization of the second type
A virtual machine requires the same resources as a simple PC:
- Physical “Hardware” (Motherboard; Processor; RAM; Storage)
- Operating System (The system installed on your media, Linux, Windows, etc.)
- Virtualization Soft (Hypervisor)
- Any OS (Any operating system for the virtual machine)
The virtual machine runs thanks to virtualization applications (VmWARE; VirtualBOX; HyperV), they isolate some of the resources of your computer in exchange for another system to run.
Virtualization is not only for system administrators, it can also help the average user to secure a working PC.
## Let’s take one example
You as a user have downloaded a file from a suspicious site, and you think it might have a virus. To avoid infecting your work computer, you can create a virtual machine with the operating system you want and run the file on it, thereby infecting the virtual computer and not the work computer. After infecting a virtual machine, the user has a choice between deleting the virtual machine or going back to a system restore point (otherwise known as a Snapshot).
https://serverspace.us/support/glossary/ssh.mdSSH - Secure Shell Protocol. A protocol for secure access to remote systems.
SSH (Secure Shell Protocol) — is a protocol for secure access to remote systems. It belongs to the applications as well as http, smtp, snmp, FTP, Telnet etc. It runs on port 22 and the port can be changed when configuring the ssh protocol.
Unlike the Telnet protocol, ssh sends encrypted traffic that is protected with an encryption key.
## How SSH works
The protocol uses encryption keys to work and transfer data in encrypted form. Thanks to the encryption, an attacker who intercepted the flow of encrypted data will take several years to decrypt it, thereby losing validity time of the data.
SSH key – a sequence of random characters. It encrypts the data and sends it to the endpoint after encryption.
The protocol uses asymmetric encryption.
Asymmetric encryption – using two keys to encrypt and decrypt data.
Public key – this key encrypts the data, it can be sent to the other party which has to send the encrypted messages/data.
Private key – this key decrypts data, it must be stored in a safe place. There is an opportunity to encrypt the private key, using the passphrase when you create a key.
## Example of SSH protocol using SSH key
Connection between the server and the client works when the ssh protocol configuration file is installed on the server and the appropriate ports are open. The client is required to send a public key to the server so that it can encrypt the data back for remote connections through the encrypted channel. When sending a connection request from the client to the server, the data is encrypted using the private key which is held only by the client, then the traffic flows through the network to the server, the server sends back the response to receive the data in encrypted form, and sends back the encrypted traffic using the public encryption key.
The client can be any device that has access to the Internet, as well as a client ssh application.
Client examples:
- Laptop (on Linux; MacOS; Windows)
- Android device
- IOS devices can also act as a client, ssh client needs to be installed.
https://serverspace.us/support/glossary/rdp.mdRDP (Remote Desktop Protocol) — is a protocol developed by Microsoft for connecting remotely to Windows-based personal computers.
RDP (Remote Desktop Protocol) — is a protocol developed by Microsoft for connecting remotely to Windows-based personal computers. The protocol uses port 3398 and can be changed in the settings of your system.
## How it is used
Typically RDP is used for business and specifically to connect remotely to personal computers so that staff can do work remotely. RDP is also common at VDS companies because Windows servers can run a graphical shell and you must have a remote connection from the beginning so you do not have any problems setting up a new server.
## Minimum requirements for RDP to work properly
- Windows operating system version 7 and later
- For servers, use Windows Server 2008 operating system version and later
- On some builds of the Windows operating system – RDP must be initially configured
- Good internet speed
RDP benefits include full interaction with a remote desktop, just as with your own personal computer.
## An example of using the RDP protocol
Imagine that a co-worker needs to send an important file from a work computer which is in the office, but the co-worker has no physical access to the computer. The user has two ways of solving the problem: coming to the office and sending the file, or remotely connecting to the computer using the RDP protocol.
https://serverspace.us/support/glossary/api.mdAn API (Application Programming Interface) definition — an application programming interface, in other words a description of how programs communicate and pass data to each other
An API (**Application Programming Interface**) is — an application programming interface, in other words a description of how programs communicate and pass data to each other. API simplifies the formation of program code, as it gives a set of separated classes, functions or structures to work together with the existing information.
This notion applies not just to web development, but also to various software products in principle. Gamepad, fridge, TV, speakers – all without exception have their own API.
## What it consists of
The API consists of two parts:
- The interaction interface;
- Description.
The interface can be a window which will be supported by text, and the description will answer the question “how does this window work?
Consider the concept of API from a different angle, where the example will be our company:
API *serverspace* is an interface that allows getting information from “serverspace.ru” database via http-requests to a certain server. You do not need to know in detail what database is used and how it is implemented – it is enough that the API request knows about it.
## An example of client-server work
Let’s assume our company “serverspace” has a client-server API, the API which has certain functions where you can send a request and get an answer. Suppose the “serverspace.ru” API has the function “return list of services”, in this case the browser should make a request to our API company to get the list of services, get the data and render them in the browser page.
It is important to note that API interfaces are limited; you will get only those functions that were laid down by the developer. To add each new function, the programmer must develop it.
Interaction can take place not only between client and server, but also between servers.
## Server-server example
Imagine that you decided to buy a train ticket, went to the site, chose a city where you want to go, and the site showed you the weather forecast of this city along with the nearest train dates. No, this does not mean that the ticketing company has its own weather gauges around the world. The ticketing site communicates with some weather service using their API.
https://serverspace.us/support/glossary/cdn.mdFind out what a CDN is, how it works, we will also show examples of popular CDN providers and tell you about CDN Serverspace
CDN (Content Delivery Network) — is a distributed network of servers designed to efficiently deliver content to users. CDN improves the user experience by reducing the time it takes to download content from the network, balancing the load on servers and increasing resource availability.
## Main aspects of CDN operation
- **Geographic distribution of servers:**
CDN servers are located in different geographical locations around the world, which helps to reduce the delay in content delivery. The server closest to the user quickly delivers the requested data, minimizing transmission time..
- **Content caching:**
Caching is a basic mechanism of CDN operation where frequently requested resources (e.g. images, videos, CSS and JavaScript files) are stored temporarily on CDN servers. In case of repeated requests, the content is taken from the cache, which significantly speeds up downloading.
- **Load balancing:**
CDN helps to distribute traffic across multiple servers, which prevents individual servers from overloading and increases resilience to sudden load peaks.
- **Improving availability and fault tolerance:**
In case one or more CDN servers go down, other servers can pick up serving requests. This significantly increases content availability.
- **Defense against DOoS (Distributed Denial of Service) attacks:**
CDNs often include mechanisms to defend against DDoS attacks by distributing traffic and filtering malicious requests, which helps protect the origin server from overload and failure.
## How CDN works
First comes the user request – When a user requests a resource (such as a web page, video or image), the request is sent to the server closest to the user’s location (point of presence, PoP).
The cache is then accessed – The CDN server checks the cache for the presence of the requested resource. If the resource is found, it is immediately sent to the user.
The last step, a request to the root server – If the resource is not found in the CDN cache, the CDN server contacts the primary server (origination server) to retrieve the content. Once the content is retrieved, the CDN server stores a copy in the cache and sends the resource to the user.
## Examples of CDN usage
**Media**: Video platforms such as YouTube and Netflix use CDNs to deliver video content with minimal latency.
**E-commerce**: Online retailers such as Amazon use CDNs to quickly download pages, images, and other static resources.
**High-traffic websites**: News sites, blogs, and social networks use CDNs to speed up page loads and increase resilience to peak loads.
Examples of popular CDN providers:
- Akamai
- Cloudflare
- Amazon CloudFront
- Fastly
- Google Cloud CDN
## CDN Serverspace
Cloud provider Serverspace has added to the list of cloud services by integrating [CDN (Content Delivery Network)](https://serverspace.us/services/cdn.md) – a content delivery system. The service gives users two options for connecting their domain to the CDN: through zone delegation or by setting up A- and CNAME records. This gives users the freedom to choose how best to integrate the CDN into their current structure.
## How do I connect a domain to the Serverspace CDN?
- create an account in [Serverspace](https://serverspace.us/index.md) or log in to the control panel;
- go to the CDN tab and select the connection method: via zone delegation or via CNAME record;
- follow the instructions in the panel;
- press the "**Connect**" button.
* Instructions are available in the Control Panel in the CDN Settings section.
https://serverspace.us/support/glossary/block-storage.mdLearn what block storage is, its characteristics and how to rent it with Serverspace
## What is block storage?
**Block storage**— is a type of IT architecture in which data is stored as a file system. The block storage model stores data files in volumes on a NAS (network attached storage) / SAN (storage area network). Developers prefer block storage for computing applications where fast, efficient and reliable data transfer is required.
## Main characteristics of block storage
- **Scalability**: Block storage is easily scalable, allowing you to increase storage capacity as needed.
- **Performance**: Typically provides high input/output (I/O) performance, making it suitable for mission-critical applications.
- **Flexibility**: Supports a variety of file systems and can be used as a base layer for many other storage technologies, such as virtual machines.
- **Use in applications**: Block storage is widely used in database systems, virtualization, web services, and other mission-critical applications.
## What is the difference between block storage and object storage?
In block storage, files are partitioned and placed in fixed-size blocks. Each block has a location identifier that organizes access through the SAN storage network.
Object storage stores unstructured data. Files here do not use hierarchy and are stored as objects, each with its own identifier. Here you can directly access the data.
## When you should choose block storage
- When you need high performance and fast system response.
- When you need to flexibly manage storage space and file systems.
- When you are working with databases or highly loaded applications.
## Rental of Block Storage
You can rent [Block storage with Serverspace](https://serverspace.us/index.md). There is also a handy calculator that calculates the cost of an additional SSD disk for your server.
https://serverspace.us/support/glossary/network-attached-storage-nas.mdLearn what a network attached storage or NAS is, how it works and its main features and benefits
**NAS** (Network-Attached Storage) — is a storage device that connects to a local area network (LAN) and provides centralized access to data for multiple users and client devices. The basic idea behind NAS is to facilitate data sharing and centralize information storage at a single point on the network
## Key features and benefits of NAS
- **Centralized management**: All data is stored in one place, making it easy to manage, backup and restore.
- **Sharing**: Multiple users and devices can access data simultaneously, making NAS ideal for office environments and home networks.
- **Easy to deploy and manage**: NAS is typically easily configured and managed through a web-based interface, allowing network administrators and users to add and configure disk space quickly and effortlessly.
- **Scalability**: You can easily add new hard disks to an existing system or install higher capacity devices to increase storage capacity.
- **Multi-Protocol Support**: NAS supports a variety of network protocols such as NFS (Network File System), SMB/CIFS (Server Message Block/Common Internet File System), and FTP (File Transfer Protocol), which ensures compatibility with various operating systems (Windows, macOS, Linux, etc.).
- **Security features**: May include features such as role-based access control, data encryption, and tamper protection.
## NAS Usage Examples
- **Home media servers**: NAS is often used in home networks to store and stream media files (movies, music, photos) to various devices (smart TVs, computers, mobile devices).
- **Backup**: Businesses and home users can use NAS to create centralized backups of data from a variety of devices.
- **Shared file storage**: In office environments, NAS provides a convenient way for employees to share files and documents.
- **Data archiving**: NAS devices can be used for long-term data storage and archiving.
## How NAS works
- **Device**: A NAS is a dedicated computer or server with multiple hard drives or solid state drives (SSDs) connected to a local network.
- **Operating System and Software**: NAS devices use a special operating system and software optimized for managing files and network resources.
- **Network connection**: The device connects to the local network via Ethernet or Wi-Fi, allowing all network clients (computers, mobile devices, etc.) to access it.
- **Data Access**: Users can access the data stored on the NAS via network protocols (NFS, SMB/CIFS, FTP) or web interface.
https://serverspace.us/support/glossary/1-click-apps.mdLearn what cloud ready solutions or 1-click apps are, their benefits and key features
## What are 1-click apps?
**Pre-built cloud solutions** or** 1-click apps** are software solutions that users can install and configure with minimal effort, using literally one click or a few simple steps.
## Key features of 1-click apps
- ** Easy installation**: The installation and configuration process is automated, significantly reducing the time and risk of errors.
- ** Pre-configurations**: Applications usually come with preset settings and pre-configurations that are suitable for most users.
- **Wide selection**: 1-click apps can include various types of software such as blogs, content management systems (like WordPress), forums, analytics tools, development platforms(Docker), and more.
- ** Updates and support**: Often these apps also include automatic updates and support from the provider.
## Benefits of 1-click apps
- Time saving: The customization process takes much less time.
- Ease of use: Suitable for users with any level of technical skill.
- Minimal possibility of errors: Thanks to automated installation and configuration.
- Ready to use: Applications are often already fully ready to use after installation.
https://serverspace.us/support/help/how-to-fill-in-customer-info.mdHow to fill in "Customer Info"?
In the Serverspace control panel, you can specify customer information for the project.
To complete this information, you should click on **“Settings”** -> **“Customer info”**:
After that you have to specify** Customer type**.
If you chose **“Company”**, you need to fill in:
- Company name
- Country
- Address
- VAT ID
If you chose **“Individual”**, fill in these fields:
- Customer name
- Country
- Billing address
After that click **“Save”** and your customer information will be saved.
https://serverspace.us/support/help/how-to-sign-up-in-the-serverspace-control-panel.mdHow to sign up in the Serverspace control panel?
## Sign up types
To work with Serverspace services and manage [cloud servers](https://serverspace.us/services/cloud-servers.md), you need to create an account in the my.serverspace.us control panel:
- via [Serverspace.us](https://serverspace.us/index.md);
- by an referral invitation.
There are several methods you can use to create an account:
- using your email adress;
- sign up using services like Google or GitHub.
## How to sign up
### Signig up via web-site
On the web-site, click on "Sign up" in the upper right corner or use the buttons located on the pages.
In the tab that opens, you can start creating an account by specifying your mailbox or using third-party services: Google or GitHub.
A confirmation email will be sent to specified email. After this, you will receive a password to log into the control panel and your personal account:
### Registration by invitation
To register by invitation, you will need an invitation link. You can get it from a person already registered in Serverspace. After clicking on this link, registration occurs in the same way: via email or a third-party service.
The advantage of such registration via [referral program](https://serverspace.us/partnership/referral-program.md) is that the person or organization that invited you will receive up to 10% of your payments. You will receive 20% cashback on your first payment.
## Personal settings
After completing registration, it is recommended to set up an account. Serverspace allows you to configure both **personal data** and **custumer info** in your account.
### Personal
**Settings**. In the **Personal** column you can specify your _First Name_,_ Last Name_ and _display language_:
**Security**. Here you can enable [two-factor authentication](https://serverspace.us/support/help/two-factor-authentication-in-the-serverspace-control-panel/) via the mobile application and change your password. We recommend changing your password the first time you log into your account:
## Project settings
In the SSH keys tab, you can create encryption keys for the SSH protocol:
In the window that appears, select the **Generate a new key** tab, select the name and format of the key:
The created key can be used during server configuration. In the **Access preferences** field, select the Authentication by SSH key option, then the name of your key:
### Customer Info
To add a custumer info to your account, go to **Settings** -> **Project Settings** -> **Customer info**. Select customer type Company or Individual.
Fill in the fields:
- Company name
- Country
- Address
- VAT ID
- And Billing address if you chose individual
After filling out, check if data is correct:
## Types of projects
**After registering and setting up your account, you will have access to control pannel
Your projects**. Projects are divided into **Personal** and **General**. You can add other Serverspace users to **Shared Projects**. Only **you** have access to** Personal Projects**.
To create a new project, go to the** Projects** tab – **Add project**:
In the window that opens, enter the name of the new project and click the **Create a project** button:
Congratulations! You have created a new **Personal Project**. To make it **Public**, click on the **Add** button in the **Project members** block:
Then enter the email address of the person you want to share the project with and select the appropriate role.:
https://serverspace.us/support/help/projects-in-serverspace.mdHow to work with projects in Serverspace
After registration, the user gets access to an account where they can create an unlimited number of projects. What are they and how to manage them?
## What are projects?
Projects allow an account owner to grant **full** or** limited** access to their dashboard to other users to collaborate on resources.
The projects are of two types:
- **Personal project**
Such a project is created automatically after account registration, the user has full access to the project. If necessary, it can be shared.
- **General project**
Projects of this type can be created by a user to provide collaborative work with other users.
The owner is free to add a project member and choose one of 3 roles: owner, administrator or accountant:
- **Owner**
The role is assigned by default to the account owner, after which he/she can assign it to any other member. This role gives full access to the control panel
- **Administrator**
Here the user can not add project members and exclude them, as well as influence the role “Owner” (add, delete, transfer, etc.) Otherwise, this role has the same capabilities as the owner.
- **Accountant**
This role will only have access to tabs with financial information, such as: “Partners”, “Billing”, “Support” and “Legal Entity Settings”. This role can also see all project participants.
## **Creating a project**
After creating an account and/or authorization in the control panel, the Serverspace logo and the personal project created automatically will be displayed in the upper left corner. To share a project, click on the name of the personal project, and select the “**Add Project**” option from the drop-down list:
Next, you can convert an existing personal project into a shared project, or you can simply create a new one.
Select a name for the project, its logo if necessary, and click create project:
After creating a project, you will be presented with the project settings menu. Next we will look at each tab individually.
## Project management
## Project details
Here you can change the project name, add a new member, or edit access to an existing member.
You can change the project name by clicking on it:
To add a new member, click on the “**Add**” button at the bottom of the page:
You must then specify the new user’s email and role:
The new project participant will appear on the list.
To confirm, the added participant must log in to his control panel. In the list of projects he should select the new project and confirm his participation.
### Managing project participants
To interact with a project participant, click on the triplet to the right of the participant:
Through the same menu, you can control the access of the participant.
## SSH-keys
On this tab you can add a new SSH key or manage the existing ones. You can add it by clicking the “**Add SSH key**” button:
You will then be prompted to either add an existing key or generate a new one:
The key will appear in the list and you can manage it: for example, to delete it, click the trash can icon to the right of the key name.
## Delete a project
Here you can delete a project by clicking the corresponding button
https://serverspace.us/support/help/how-to-delete-serverspace-account.mdHow to delete Serverspace account?
If you have decided to close your account on the Serverspace platform, then we are ready to help you with this process. In these instructions, we describe in detail the steps that must be followed to delete your account without unnecessary complications..
## Account deleting
First, go to the **Settings tab**, it is located in the left panel at the bottom. Then **Personal user data** – **Delete**:
https://serverspace.us/support/help/how-to-create-a-server-in-the-serverspace-control-panel.mdHow to create a server in the Serverspace control panel?
Serverspace offers a wide range of services for creating and managing servers in the cloud.. [Create a high-performance VPS serve](https://serverspace.us/services/vps-server.md) can literally be done in a few simple steps.
VPS is a virtual dedicated server with access via cloud technology, whose resources can be scaled. One of the main advantages of VPS is the ability to get dedicated resources such as CPU, RAM, disk space and channel width, which allows for more stable operation of websites and applications. In addition, VPS servers give more freedom in choosing the operating system and software, which can be installed according to the requirements of the project.
Below are the basic steps for creating and managing a VPS server that will get you up and running quickly.
## Registration
Before creating a server and selecting its configuration, you need to complete a [quick registration](https://serverspace.us/support/help/how-to-sign-up-in-the-serverspace-control-panel/). After passing this step, enter data in the “Email” and “Password” fields:
## Creating a machine
After authorization, the main panel of the site will open, where you can select the appropriate cloud solution.
VMware Cloud and Vstack Cloud are cloud solutions provided by Serverspace. They are based on VMware and vStack virtualization technologies respectively
- **VMware Cloud** — is a cloud-based solution that allows you to run virtual machines on VMware vSphere infrastructure. Provides high performance, reliability, and security for your application. You can also easily scale and manage your resources through the web interface.
- **vStack Cloud** — is a cloud solution built on the vStack hyper-converged virtualization platform for building and managing cloud infrastructure. This provides greater flexibility and scalability
In the menu on the left, click the** Servers** tab and click **Create Server**.
Depending on the cloud solution you choose, you will have different options available to you in your server creation panel.
## VMware cloud
The VPS creation and configuration panel will open in front of you. Before you start, you need to select a template for the server.
**Template**— is a set of settings and configurations with which your server will be created and run. The most popular server operating systems available in the Serverspace panel are Linux, Windows and FreeBSD.
**Server Configuration** —customizing the capacity of your VPS. In this cloud solution, flexible configuration of core resources is possible. Depending on your needs, the total cost will automatically change:
- number of processor cores (CPU, pcs);
- amount of RAM (RAM, Gb);
- type and size of disk subspace (Storage, GB, SSD/SAS);
- communication channel width (guaranteed value below which the indicator cannot fall, Mbit/s);
**Data processing center (DPC)** – geographical location of the ordered server. Data centers are located in specially constructed buildings that meet all necessary security, power, cooling, fire and other requirements. If you choose the VMware cloud solution, the data centers shown in the screenshot below become available:
Going a little lower down the page you will need to fill out a few more fields:
****
- **Backup** – [The function is the process](https://serverspace.us/support/help/reserve-copying-backup/) of completely duplicating the server at a certain periodicity.
- **Authentication method** – authentication is available in two variants: [by SSH](https://serverspace.us/support/help/how-to-create-ssh-key/), which is more secure. And by standard login/password.
****
- **Server name** – designate what your VPS will be called.
****
- **Number of servers** – specify the required number of servers that will be created according to the parameter template you specified above.
As a result of all manipulations and completed configuration, the calculator on the site will calculate the necessary amount to pay for a month/day/hour of use and maintenance of the server/network equipment. Charging will be done on a Pay-as-you-go model, with a period of ten minutes.
## vStack cloud
The procedure for creating a server is as identical as possible, however, there are a number of clear differences in this cloud solution.
More choice of data center locations: Kazakhstan, Netherlands, USA, Canada, Turkey, Brazil and soon the United Arab Emirates:
In addition to the flexible calculator, here you can choose a server configuration that suits your needs.
By default, the server is given an IPv4 address – free of charge. However, it is possible to connect up to 4 additional IPv4 addresses on a commercial basis.
Another difference is the presence of tabs such as:
- **Affinity Groups** – provide the ability to place servers on different or the same pool of locations depending on your needs.
- **Applications** – a feature that allows you to install ready-to-use software when creating a server. Applications will be automatically deployed on the virtual machine after clicking the “**Order**” button:
A selection of core software is available on the site that solves a wide range of problems, from WordPress to frameworks.
## Bottom line
After selecting the settings, it takes a couple of minutes to create and start the server, and then it’s ready to go. Use data or software to connect, depending on the chosen authentication method. Serverspace provides a user-friendly interface to manage the server. In addition, the site has many instructions and guides on how to set it up and manage it in [knowledge base](https://serverspace.us/support/help.md).
https://serverspace.us/support/help/how-to-contact-serverspace-technical-support-team.mdHow to contact Serverspace technical support team?
If you have any problems or questions while working with the infrastructure, you can report it to our technical support.
- The average time for a specialist to respond to a ticket is 15 minutes.
- Request resolution time is 30 minutes.
There are several ways to contact support.
## Contact via the ticket system in the control panel
While in the project management menu, there is a Support section in the corner. By going to it, a window for creating a request will open
Here you indicate the topic of the appeal and describe your question in detail. If necessary, you can attach a file to your application
After creating a request, you will be sent to a chat with a specialist, where you can ask clarifying questions and rate the result of resolving the request.
After creating the request, you will also receive an email notification where you can track the status of the ticket:
After completing work with a specialist, you can click on the **Mark as resolved** button, the request will be closed:
## Contact via phone
You can contact support by phone:
[+1 302 425-97-76](tel:+1 302 425-97-76)
## Contact via chat on the website
Before registering on the site or if you cannot get into the control panel, you can ask a question through the chat on the site. To do this, click on the Letters icon in the lower right corner.
Here you can
- attach files – Paperclip icon;
- indicate your contact information – name, email address and your phone number;
- enable/disable sound from chat notifications.
## SLA
Quantitative and qualitative target indicators of Serverspace service services, as well as financial guarantees of their compliance, are determined by the [Service Level Agreement (SLA)](https://serverspace.us/conditions/sla.md).
https://serverspace.us/support/help/how-to-change-password-and-email-address-of-serverspace-account.mdHow to change password and email address of Serverspace account?
To secure your cloud servers, you can change your password and email address. As you use your account in Serverspace, you may need to change your password or update your email address to ensure security. In this guide, we’ll go through each of these steps in detail so you can easily and safely update your data in your Serverspace control panel.
## Password
In order to change the password, you need to go to the **Settings** – **Security** – **Reset your Password** tab:
Then fill out the **Old password**, **New password** and **New password** field again. Click the **Save changes** button and log in using the new password.
## Change email address
To change your email address in the Serverspace panel, you need to make your personal project public. To do this, click on the + sign at the top right of your panel:
Then convert your personal project into a general one:
Go to **Settings** – **Project Settings** – **Project Details**. Add a new user by clicking the **Add button**:
Enter the email of your new registered account with the role – **Owner**:
Check your mailbox and accept the invitation:
On the old account, leave the project:
Delete your old account. Go to personal settings, then to the **Delete** tab:
In the new account, check that there is only one owner left with the new mail:
You have successfully changed your project email!
https://serverspace.us/support/help/types-of-notifications-in-the-serverspace-control-panel.mdTypes of notifications in the Serverspace control panel
To ensure comfortable work in Serverspace control panel, our team uses different types of notifications. With their help you can understand what is happening in your account, and most importantly why.
## Notifications to administrators
There are three types:
1)**Informational notifications** (gray), such as technical work:
2)**Warning notifications** (yellow), such as data center unavailability:
3) **“Important”** notifications (red color), for example, some changes in the work of the service:
## System Notifications
Notifications of a successful toast are displayed in green, e.g. successful creation of a server snapshot:
Information notices – yellow color, for example, about the need to fill in some data:
Error notifications are shown in red, such as not specified data:
## Notifications from technical support
You may also receive notifications from the administrator, these come both in the control panel and to your email. These notifications can be warning notifications, such as when illegal activity has been committed from your server, or notifications of blocking:
Our marketing team may also use notifications to communicate with you about your experience interacting with the dashboard. Your feedback is always welcome!
If you have any questions about the notifications you receive, you can contact support in the control panel.
https://serverspace.us/support/help/vmware-workstation-network-configuration.mdNetwork configuration in VMware Workstation allows you to optimise the interaction of virtual machines with external networks.
**Virtualization is the process of allocating** resources and processes to an isolated environment in order to improve the efficiency of the hardware. One of the brightest representatives in working with virtualised environments is the hypervisor on the basis of which and work with environments. There are two types of hypervisor: the first one runs on bare-metal or as a host operating system ESXi, in the second case it is an application that deploys a guest OS on the host OS.
Screenshot №1 — Hypervisor
**In the case of the second type of virtualisation**, virtual machines run as processes within the host system and use its operating system kernel. In this case, virtual OSes can share a kernel with the host system. They run in isolated environments provided by the hypervisor, but at the same time can share resources with the host system and other virtual machines.
One of the representatives of the second type of hypervisor is VMware Workstation, which is quite often used in infrastructure.
## How do VMware networks work?
Since virtual operating systems and containers are created in an isolated environment from the host operating system, the question often arises as to how guest environments can be connected to the host environment. How do you allow virtual machines to access the Internet or an existing computer network? VMware Workstation provides many types of network device configurations, from bridged to host-only mode:
Screenshot №2 — Type of connection
Each machine has its own network interface through which communication will take place. They are separate devices that must be combined into a single channel and/or network environment together with the host OS from where they will receive traffic.
The network infrastructure acts in organising this connection in life: switches, routers, bridges and more. In the virtual one there are not many differences, as the same network infrastructure is used to unite devices into a single whole, only virtual. Let’s look at the basic ways to set up a connection.
## Network configuration for VMware Workstation
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provide isolated VPS / VDS servers for common and virtualize usage.
Screenshot №3 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways. Let’s return to our connections. The first method of connection is **Bridge mode or network bridge**. The schematic diagram of this method is as follows:
Screenshot №4 — Bridge connection
The principle of operation is based on the creation of a virtual switch that will join the created virtual machines into a channel environment. When all guest operating systems are in the same channel environment, it is necessary to provide access to the network adapter of the host, which has access to a public or Internet network. This is realised by means of a bridge.
A network bridge, in the context of virtualization, is a logical device, an add-on to the main interface. It allows the virtual and real interface to be combined into a single channel environment by simply forwarding frames.
Screenshot №5 — Network adapter
In this case, having to grant access to the host network would be a problem. If the interface is used to communicate with other devices, when creating a bridge, the interface is disconnected from the machine’s network stack and used in the bridge. So for a network interface, a driver is added, by default, which creates a driver under the interface. Which is used, and then the device receives the packet and routes it according to the rules on the machine.
From a security point of view, this method has a number of vulnerabilities for the host OS and network. Therefore, it is recommended to add devices to a VLAN, which will delimit the channel environment.
To configure, let’s go to VMware Workstation, select the OS and go to Settings:
Screenshot №6 — Settings
Select the network adapter or add as a new device and go to the left panel with the connection type, just select Bridge, the option below is responsible for copying the network state. This can increase network performance and ensure interface consistency.
Screenshot №7 — Make connection
The screenshot also shows the connection via NAT. The scheme of which is shown below:
Screenshot №8 — NAT schema
The peculiarity of this connection is that the guest OS is not considered a full member of the network. Communication takes place through a NAT device, usually the host OS. All passing requests from the guest OS are replaced by the host OS and the network participant is considered to be the host OS of the guest OS. Security of the host OS can be ensured by allowing packet redirection, but prohibiting their acceptance.
Configuring the network is as simple as selecting NAT. The hypervisor will then make the changes and the machine will be available.
**Host-only connection** provides access to the device by connecting it to a switch, unlike other methods for guest OS the external network of the host OS is not available. Since the interfaces operate in legible mode and do not accept packets that do not belong to its address.
```
Note that the above methods only work for a single guest machine. To interconnect many using a switch, select one of the Specific Networks
```
When you open the list of networks, you can see that each network has a different value assigned to it:
Screenshot №9 — VMnet
All presented networks, except for special ones labelled VMnet1 and VMnet8, are prepared switches with DHCP servers ready for connection of devices. DHCP is also configurable and the segment is changed, if there is a need to use without prepared addressing, it is always possible to create a normal Lan segment. This option is also presented among the connection methods.
The VMnet1 network pre-connects the guest OS and the host OS to the switch, organising a Host-only connection. The same happens with VMnet8, where devices are pre-switched and attached to the channel environment. The host device is specified as the gateway.
Accordingly, in order for the machines to work correctly, each of them needs to specify a corresponding adapter with a prepared or automatically configured network.
https://serverspace.us/support/help/how-to-bridge-two-interfaces-in-linux.mdWant to know how to make a bridge between two network interfaces in Linux? In this guide you will find instructions on how to make a bridge.
**Network bridging is a type of network device interface** operation that connects networks at the link layer, allowing nodes and endpoints to communicate between the connected interfaces. The way it works is that a new logical interface is created on the device, then two or more physical or virtual interfaces are connected. Packets then flow freely in two directions, forming a single channel environment.
Screenshot №1 — Schema of bridge
Which can be useful when adding a new device to an infrastructure, when a switch is not available, or combining with containers or virtual machines.
## What is Linux Bridge?
In the context of the Linux family of operating systems, **a bridge is also a logical device** that resides in the Linux kernel and realises the operation of the bridge in software. The principle of operation is exactly the same as described earlier, all link layer packets are freely transmitted through the Linux Bridge by controlling the network interfaces.
However, there are differences. In Linux Bridge supports packet switching table and STP protocol operation to neutralise loops. Which is a significant advantage over a conventional bridge, because in Linux, the bridge acts as a switch. Where a conventional bridge is a logical repeater that simply translates packets between ports.
Quite often this technology is used when building a single network with virtualized environments in the form of virtual machines and containers. Let’s consider the connection scheme:
Screenshot №2 — Schema of bridge
Containers are deployed within the OS, which have their own network interfaces and configuration. The eth0 interface is also presented on the machine side. To organise a single channel environment on the host machine, a virtual interface is raised in bridge mode. Which unites emulated veth0 and host eth0.
## Create Linux Bridge
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provide isolated VPS / VDS servers for common and virtualize usage!
Screenshot №3 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways. Let’s return to configuring the bridge for network interfaces and open the terminal of our server. To view the current interfaces we will write the command:
```
ip a
```
Screenshot №4 — Check configuration
As we can see now there are two interfaces **enp0s6** and **enp0s5**, which are currently connected to the endpoint device. They function on the principle of receiving packets only from their subnet and their link domain. In order to create a bridge it is necessary to install a package that will allow you to control the device:
```bash
apt install bridge-utils -y
```
Screenshot №5 — Install utils
Let’s familiarise ourselves with the basic commands to work with, for this we will prescribe:
```
brctl
```
Screenshot №6 — Management of bridges
Let’s consider the main functionality of the utility:
- **addbr/delbr** possible to create and delete a bridge;
- **addif/delif** to add and remove an interface;
- **setfd** option to set delay on frame forwarding;
- **show** will show the number of bridges;
- **showmacs** will show the list of MAC addresses in bridges;
- **hairpin** concept allows you to use the bridge/switch interface to communicate with other devices, instead of using the MAC address;
- **stp** allows you to enable the loop neutralisation feature.
Let’s imagine that we need to unite two networks into a single channel environment and the bridge should act as a switch, for this purpose we will create the bridge itself:
```
addbr bridge1
```
Screenshot №7 — Add bridge
After that we can add the necessary interfaces for communication with the **addif** command.
Screenshot №8 — Error of connection
Add the enp0s6 and enp0s7 interfaces using the commands below:
```
brctl addif bridge1 enp0s6 enp0s7
```
To neutralise loops, we will connect the STP protocol to eliminate redundant connectivity:
```
brctl stp briedge1 on
```
After that, let’s see what changes have been made:
```
brctl show
```
Optionally, you can configure the delay for packet forwarding by command:
```
brctl setfd 10
```
After that, the frames will be sent with a 10 second delay and will be available on the other side to the devices! These solutions allow you to federate channel environments, but you need to be careful when using them. Because if a malicious virtual machine is attached, the infection can quickly spread throughout the network. Relevant protection measures must be taken using the appropriate technologies.
https://serverspace.us/support/help/how-to-turn-the-server-off-and-on-in-the-serverspace-control-panel.mdHow to turn the server off and on in the Serverspace control panel
In the Serverspace control panel, the user can manage their virtual machines. In this article we will discuss how to shut down and power on servers.
## Disabling a virtual machine from the list of servers
In order to turn off the server, you need to go to the list of servers, click on the context menu of the desired server, and in the drop-down menu select **Stop:**
After that you will be offered to shut down the server via **operating system** or **via power off**:
A server shutdown will begin:
The server will then be displayed as powered off:
## Shutting down the server via its menu
You can also turn off the server through its menu. To do this, go to the **Actions->Power** menu and click the **Turn off** server button:
After that you will be offered to shut down the server via **operating system** or via** power off**:
The process of shutting down the server will then begin:
The server will be shut down:
## How to include a server in the server list
Enabling is similar to the process of disabling. For the required server, click the context menu icon and select **Start**:
The confirmation menu appears, click **Launch**:
This will begin the process of powering on the server:
The server will power up and be ready to go:
## How to enable the server through its menu
To shut down the virtual machine, go to **Server menu -> Actions -> Power:**
and click **Launch**:
The process of powering on the server will begin:
The server will turn on:
https://serverspace.us/support/help/how-to-create-a-server-snapshot.mdHow to create a server snapshot
In the Serverspace control panel, the user can create snapshots of the server and restore from them if necessary.
## What is a server snapshot?
A server snapshot is the state of the server’s file system and network configuration saved at a certain point in time. Snapshots take up minimal storage space and reflect the amount of changes made since the state was saved.
The volume of a snapshot is formed as follows:
- When a snapshot is created, it exactly matches the state of the server’s file system, which is why the size of the snapshot immediately after creation is 0 MB.
- After data changes on the server, I/O operations performed by the file system, and network configuration changes, the states of the current file system and the snapshot are compared. The difference between the states is the snapshot volume.
- The more changes that occur in the file system, the larger the size of the snapshot becomes.
Using a snapshot, you can restore the state of the file system and network configuration at a certain point in time – return the contents of files and directories, return network settings.
## Peculiarities and limitations of working with images
- The size of a snapshot can be known only after it has been created. The size of the snapshot changes over time and depends on the changes that have occurred to the data on the server. Immediately after creation, the snapshot size is 0.
- When restoring from a non-last snapshot, newer ones are automatically deleted.
- You can delete any snapshot from the control panel without losing newer or older snapshots, and the amount of remaining snapshots may change.
- The snapshots take into account the configuration and additional disks.
- Network interfaces are not deleted during the restore if they were not present at the time the snapshot was created.
- Deleted network interfaces are restored if they were present when the snapshot was created.
- You cannot delete a network if a server previously connected to that network has a snapshot (in the snapshot, the interface is connected to the network).
The snapshot volume in the control panel is updated every 5 minutes.
## Creating a snapshot
To create a snapshot – go to the menu of your desired server, then to **Snapshots**:
After that click on the **Add** button, a context menu will appear with the creation of a snapshot. Specify its name and click **Create**:
The snapshot has been created and will be displayed in the list:
## How to restore a server from a snapshot.
In order to restore the server by snapshot, go to Server menu -> **Snapshots** and, having selected the required snapshot, click the **Restore** button:
You will need to confirm the recovery process:
It will take some time, after that the server will be restored.
https://serverspace.us/support/help/how-to-exit-from-vim-and-other-management-tips.mdLearn how to exit VIM and other important management tips. Learn efficient ways to navigate and work.
**Vim is a text editor** that is predominantly used in Linux-like operating systems. Its many functionalities and the way it is operated are not always easy for a beginner. Therefore, this manual explains the basics and answers questions that arise when working with this tool.
## How to exit from vim?
In order to exit vim you need to switch from edit mode to command mode and type the command to exit. Press the **Esc** key and type the **:wq** command also as shown in the image below:
Screenshot №1 — Exit from vim
The entered **:wq** command indicates two basic actions: save and exit. To exit without saving, use the **:q!** command, which can be useful when working!
## How to learn vim command?
To familiarise yourself with vim’s basic options, you can use -h when calling the utility:
```
vim -h
```
Screenshot №2 — List of help arguments
The manual describes the basic options and syntax that will be used to call the utility and work with it. To familiarise yourself with the basic commands of the editor, there is a utility called vimtutor, which opens about twenty tutorials:
Screenshot №3 — Vimtutor
By going through them in an estimated time of 25 minutes, you will learn the basics and be able to fully use the editor.
All steps in the tutorial can be performed on powerful [cloud servers](https://serverspace.us/services/cloud-servers.md). Serverspace provide isolated VPS / VDS servers for common and virtualize usage.
Screenshot №4 — Create Server
It will take some time to deploy server capacity. After that you can connect in any of the convenient ways. Let’s return to explore vim environment.
## How to enable edit mode in vim?
When opening a file, the utility waits for input commands; to switch from viewing mode to editing mode, press the i key, which will start input from the cursor position. The same symbol I will start input from the beginning of the line. Enter the required text, followed by Esc to exit the editing mode.
Screenshot №5 — Edit mode
## How to copy to clipboard in VIM?
To copy and paste from the clipboard, the same commands are used. In order to select an area press v to switch to selection mode, then use **j, k, h, l** keys to move through the text. Once the desired area is selected, use the following buttons:
- y – copy to buffer;
- Y – copy string to buffer;
- x – delete and copy to buffer;
- p – paste from the buffer.
Screenshot №6 — Copy item
When these keys are pressed, copying will take place, pasting is done via the **p** key.
## How do I erase text in VIM?
In order to delete text, you can switch to edit mode with i or I and delete characters in the usual way. However, if you want to delete the whole line or a selected segment via selection mode v , then use the d button. The selected segment will be deleted.
https://serverspace.us/support/help/how-to-reboot-a-server-in-the-serverspace-control-panel.mdLearn how to reboot the server in the Serverspace control panel. Rebooting is available in two ways: by power and by OS means
In the Serverspace control panel, the user can reboot the server in two ways: by power and by operating system means.
## How to reboot the server
In order to reboot the server you should go to its menu -> **Actions** -> **Power** and click on the **Restart button**:
A context menu will open, where you will be offered to reboot the server by **Soft reboot** (means of the operating system) or to reboot the server by **Hard reboot** (power supply):
The server reboot process will begin:
After that, the server will be ready to go!
## Additional way to reboot the server
You can also restart the server using the drop-down menu in the server menu:
https://serverspace.us/support/help/templates-in-the-serverspace-control-panel.mdLearn how to manage templates in the Serverspace control panel: create, delete, create server by template
In the Serverspace control panel, users can create templates for their virtual machines.
## What the templates are for.
Save your virtual servers as templates and quickly deploy full copies.
- Making a copy of the server and software configuration
- Keeping a saved template when the server is deleted
- No limit on the templates number
For now, templates are only available for servers with VMware virtualization.
## How do you create a template?
To create a template, go to VMware Server Rental -> **Templates** and click **Create Template**:
The template will be created on the basis of one of your servers, so you must have at least one active server.
Template storage is a paid service, its price is equal to the cost of disk space of the original server.
To create a template, the server must:
- shut down
- have no active snapshots
- have no additional disks attached
- Note: creating a template can take a significant amount of time.
Specify the name of the template, its technical name and the server on the basis of which the template will be created:
The template will be created and will be ready to use:
## How do I create a server from a template?
Start creating a VMware server – you can do it from **Servers** menu or via **Server templates** menu. After that the usual server configuration selection menu will open, instead of selecting the usual virtual server template, you will have your template displayed:
## How to delete a template
To delete a template, go to the templates menu and select the desired template. Then go to the **Delete** menu:
The confirmation context menu opens:
The template will be deleted:
https://serverspace.us/support/help/operation-history-in-the-serverspace-control-panel.mdFind out where to see transaction history and detailed debits by day of your Serverspace account.
In the Serverspace control panel, the user can track the transaction history of their project.
## Where can I see the transaction history?
**I**n order to see the history of transactions, you should go to** Finance -> Operations:**
In the history of operations you can see your credits, adding bonuses, monthly charges.
## How do I know detailed write-offs by day? (Detailed expenditure of infrastructure funds)
In order to see the detailed write-offs, you need to click on the "document" icon to the right of the **Monthly charges**:
After that, a context menu with detailed debiting operations for the month will open. To find out detailed information about the day, you need to expand the list by pressing the _plus_ sign to the left of the required date:
We also have other articles on finance: [How to fill in "Customer Info"?](https://serverspace.us/support/help/how-to-fill-in-customer-info/), [Payment methods for Serverspace cloud services](https://serverspace.us/support/help/payment-methods-for-serverspace-cloud-services/)
https://serverspace.us/support/help/service-fees-and-serverspace-configuration-calculator.mdLearn how to choose a server configuration quickly and conveniently using the calculator from Serverspace
In the Serverspace control panel you can find out the cost of services, as well as use a handy builder calculator.
## Flexible designer on the website
You can get fare information on [Serverspace's main website](https://serverspace.us/pricing.md):
Here you can use a convenient constructor-calculator that calculates the cost of renting a virtual machine.
You can choose: operating system, data center, number of CPUs, RAM, channel width, SSD disk capacity and, if necessary, add more disks:
You will be presented with information about the cost of renting this server configuration per month and per hour.
## Service fees menu in the control panel
Information on tariffs can also be opened in the control panel. To do this – go to **Finance -> Tariffs:**
Here you can see detailed information about server configuration costs, service costs, license and software costs.
https://serverspace.us/about/news/serverspace-technologies-in-the-uae-launch-of-falconcloud.mdServerspace Technologies has now reached the Middle East, with our colleagues in the UAE announcing the official launch of Falconcloud.
[https://serverspace.us/wp-content/uploads/2024/04/falconcloud_launch_en.svg](https://serverspace.us/wp-content/uploads/2024/04/falconcloud_launch_en.svg)
Serverspace Technologies has now reached the Middle East, with our colleagues in the UAE announcing the official launch of [Falconcloud](https://falconcloud.ae/). Users conducting business in this region can now pay for services in Dirhams (AED) through banks in the United Arab Emirates.
[Falconcloud.ae](https://falconcloud.ae/) meets all quality standards set by Serverspace and offers the same range of services already available on the my.falconcloud.ae control panel. The provider enables the deployment of cloud infrastructure using enterprise equipment at various locations worldwide. Additionally, users can rent extra cloud services for IT projects, including [pre-installed applications](https://falconcloud.ae/services/1-click-app-marketplace/), [DNS](https://falconcloud.ae/services/dns-hosting/), [CDN](https://falconcloud.ae/services/cdn/), and [developer tools.](https://falconcloud.ae/services/api/)
The Middle East is a region experiencing rapid economic growth with significant potential. Companies operating in the UAE market face the challenge of efficiently managing, processing, and storing large volumes of data. This has led to an increasing reliance on IaaS providers. Cloud technologies offer scalable and flexible infrastructure, allowing organizations to tailor their computing resources to current project needs. This contributes to market expansion as more companies recognize the benefits of cloud solutions.
“_Falconcloud.ae is a brand that will leverage Serverspace’s expertise to penetrate the Middle East market. The UAE has many small and medium-sized enterprises focused on adopting cloud technologies, as well as a substantial community of worldwide entrepreneurs in need of infrastructure. The UAE also offers favorable business conditions: moderate competition, attractive tax rates, a welcoming attitude towards foreign professionals, and widespread use of English. The development of a local provider will enable users doing business in the Middle East to deploy cloud infrastructure in a format that suits them_“, says Nikolay Lushnikov, Branch Director of Falconcloud.
**Details about Falconcloud:**
- The English website is available at [falconcloud.ae](https://falconcloud.ae/).
- Registration and control panel access: my.falconcloud.ae.
- Technical support is available through chat on the website, in the control panel’s “Support” section, or by phone at +971 58 262 9713.
- Currency: UAE Dirham.
- Payments are accepted from UAE bank cards.
**Serverspace’s presence in various countries:**
- UAE: [falconcloud.ae](https://falconcloud.ae)
- USA: [serverspace.us](https://serverspace.us/index.md)
- Canada: [serverspace.ca](https://serverspace.ca/)
- Netherlands: [serverspace.io](https://serverspace.io/)
- Turkey: [serverspace.com.tr](https://serverspace.com.tr/)
- Kazakhstan: [serverspace.kz](https://serverspace.kz/)
- Brazil: [serverspace.com.br](https://serverspace.com.br/)
_Serverspace is an international cloud provider offering services for creating and working with virtual infrastructure. It provides automatic deployment of VPS servers with popular Linux and Windows Server operating systems, as well as domestic OS. Infrastructure can be created from anywhere in the world in just one minute. Open API, CLI, and Terraform tools are available for integrating client services._
https://serverspace.us/support/help/docker-mysql.mdSet up MySQL on Docker. Explore the seamless process of utilizing Docker for MySQL in this comprehensive guide. Learn the steps to set up and manage MySQL databases!
In the realm of database management, Docker has emerged as a game-changer, providing a streamlined and efficient approach to setting up and running databases. This tutorial focuses on MySQL installation through Docker—a method favored by developers and DevOps professionals. Much like the advantages it offers for MongoDB, leveraging Docker for MySQL installation brings unprecedented benefits in terms of portability, scalability, and isolation.
## Installation MySQL on Docker
At the start of installation process we update indexes and upgrade packages of currently application and utility. That help to avoid potential compatibility issues :
```bash
apt update && apt upgrade -y
```
Screenshot №1 — Update package
At the end of the process make sure that process was completed successfully and no one issues was pop-uped. Next stage, will installation software for containerization application, by the command below:
```bash
apt install docker.io
```
Screenshot №2 — Installation of Docker
Docker represent platform for start isolated application, utility or system with integrated file-system, network and kit-tools for properly work. We can download from repository image and install them into the container, in isolated part! And connect to them we can through localhost and indicated port or literally use straight connection via terminal. After installation docker, we can download and automatically deploy server MySQL, by the command:
```bash
docker run –name my-db -e MYSQL_ROOT_PASSWORD=123321 -d mysql
```
Screenshot №3 — Pull packages
## Checking the installation of MySQL on Docker
Alright, now we need to make sure that our Docker container was created and upped, for that we can use command:
```bash
docker ps
```
Screenshot №4— Process
If you have any issues you can type command below for check log container and troubleshoot them:
```bash
docker logs my-db
```
Screenshot №5— Logs
Now, we can connect to the container via network and indicate credentials, for manage with utility:
```bash
docker exec -it my-db bash
```
And after that command we can start our DB using appropriate utility:
```bash
mysql -h localhost -u root -p
```
Screenshot №6— Connection
Alright! Our connection was established and we can use them from their client.
In this comprehensive exploration of usage Docker for MySQL, we’ve navigated the transformative landscape of database management, where Docker emerges as a pivotal force. Developers and DevOps professionals increasingly favor this approach for MySQL setup, drawing parallels with the efficiency seen in MongoDB deployments. Leveraging Docker for MySQL not only simplifies the installation process but also introduces unmatched benefits in terms of portability, scalability, and isolation.
https://serverspace.us/support/help/how-do-i-manage-mongodb-collections.mdDiscover effective strategies for managing MongoDB collections. This guide provides insights into organizing collections. Work with MongoDB database
Managing MongoDB collections is a critical aspect of overseeing a MongoDB database efficiently. As a NoSQL database system, MongoDB relies on collections to organize and store data. Whether you are a database administrator, a developer, or a user handling MongoDB collections, effective management is key to ensuring optimal performance, scalability, and data integrity.
Before we start we have to connect to the MongoDB server, if you don’t have them, then you can use Serverspace [cloud servers](https://serverspace.us/services/cloud-servers.md) and rapidly deploy your machine and install server. In the control panel of your personal account find and click on the menu with cloud platform at the left. Then choose button **Create Server **and configure them!
Screenshot №1 — Create Server
If you install server on the NIX like system with shell, then you can use follow command to connect or use GUI version MongoDB Compass:
```
mongosh
```
After that you will see opened interface with CLI to work with DBMS system!
## How do MongoDB collections work?
Collection represent by self group or folder which help to store entity of database. Them separate total mass of documents for dedicated group by functional and content signs. DB it’s file with strict organization, then Collections it’s folder with containing data or BSON file. That format of file is similar with JSON, they also have field and value, where each of them defined at the new line!
For create your first MongoDB collections we need to switch default database, instead of **new_db **write your label:
```
use new_db
```
Screenshot №2 — Switch DB
If database already exist, then you make they by default for next operations or if they doesn’t exist, then they will create. Go ahead, now we can create our collections with two ways: explicitly and implicitly. In the first case we will use command:
```
db.createCollection('ff')
```
Screenshot №3— Explicitly creation of collection
That command create in the default database collection with name ‘ff’. For make sure that was worked properly we need to list our collections:
```
show collections
```
Screenshot №4— Show collections
Also we can use second way, which help to optimize our action in some cases. Implicitly way means add data in the doesn’t existed collection, and DBMS in the process of adding them create that folder:
```
db.ff.insertOne({"name":"Andrew", "age":"66″})
```
As we can see our collection was created and have BSON document with fields, which you can replace for your values!
## How to find all records in MongoDB collection?
In the case when we have to list all created documents, we can use follow command with **find() **function:
```
db.ff.find()
```
Screenshot №5— Show all files in collection
If you want to search documents by determine signs, then you can read our instruction for that topic!
## How do I edit a collection in MongoDB?
For that case we can use four options of manage documents in our collections:
- replace all document for new, by indicated signs of them;
- update document for new values;
- remove documents at all or delete by signs.
For replace document for new we will use follow command, that suitable for manual manipulation with document in collection:
```
db.ff.replaceOne({"name":"Andrew"},{"name":"Petr"})
```
Screenshot №6— Replace document
There are cases when we need to edit only one or several documents fields, for that we will use $set operator in the following command:
```
db.ff.updateOne({name:Petr},{$set {"name":"Peter"}})
```
Screenshot №7— Update value
For delete one document, there is command **deleteOne({filter}).** By they we can use filter for delete first searched document, also support regular expression:
```
db.ff.deleteOne({name:"Peter"})
```
And if we want to delete all documents in the collections, then left the options empty:
```
db.ff.deleteMany({})
```
Screenshot №8— Deletion documents
For deletion collections with database use follow command:
```
db.ff.drop
```
Screenshot №9— Drop DB
In conclusion, effective management of MongoDB collections is indispensable for maintaining the efficiency of a MongoDB database. As the backbone of MongoDB’s NoSQL database system, collections play a pivotal role in organizing and storing data. Whether you’re a database administrator, developer, or a user directly interacting with MongoDB collections, adept management is crucial for ensuring optimal performance, scalability, and data integrity.
https://serverspace.us/support/help/the-pip-command-usage-guide.mdPip command. Work with pip list packages. Immerse yourself in the world of pip team with our complete user guide. Master the skills to effectively manage Python packages.
Every developer or anyone involved in the use of code has encountered mucky and repetitive tasks that just had to be automated! One such task is finding and connecting libraries to existing or new projects. If before we had to find a repository with the latest or a particular version of a package, download it, check the electronic digital signatures and prescribe it in the project and variable environments, now there is a **pip** answer to that!
## What is pip?
**PIP or Python Installs Packages is a Python package manager**, is a standalone solution in the form of a module for managing packages, libraries for projects. It is called with a simple syntax:
```bash
pip install package-label
```
Automates all of the above tasks, and also has the ability to manage virtual environments in the case of several projects deployed on the machine. Let’s consider the work of the utility on the example of a cloud solution from Serverspace, for this purpose [let's go to the creation of a server on any of the two platforms vStack cloud or VMware cloud.](https://serverspace.us/services/vps-server.md) Click on the **Create Server button** and select a configuration suitable for our tasks, **then click Order**.
Screenshot №1 — Create Server
After some time the servers will be available via any of the main connection methods, for the current tasks Debian 12 with a data centre in Istanbul has been chosen.
It is now necessary to update the indexes and packages with your system package manager, for compatibility of services and utilities:
```bash
apt update && apt upgrade -y
```
Screenshot №2 — Update system’s package
In standard versions of Linux distributions python or python3 is a pre-installed language with basic libraries and an interpreter. It is the main component of the package manager. Let’s check its presence on the OS with the command:
```bash
python || python3 || python3.8
```
Screenshot №3 — Check version of software
## How to install pip?
This should open the interpreter, which can then be closed with Ctrl+D. Once we know the version of Python, we now need to install the appropriate pip package, different versions have different requirements:
- Python 2.x requires the installation of the python-pip package;
- Python 3.x or 3.8.x requires the python3-pip package.
To install the selected version, specify the required package in your package manager command:
```bash
apt install python3-pip
```
Screenshot №4 — Python modules installation
The download speed depends on the quality of your connection, in case it is broken, you need to reinstall the packages.
## How can I check if pip is installed?
You can invoke the utility in one of two convenient ways, or by contacting it directly, write the command according to the installed version:
```
pip3
```
Either by specifying the package manager as a language module, referring to the interpreter:
```
python3 -m pip
```
Screenshot №5 — Python modules installation
The screenshot also shows an example of direct access to the interpreter, let’s imagine that you don’t have the usual python3 or python command working. You can specify the path to your interpreter instead!
## How to search for packages in pip?
When using the pip search package manager command, an error may occur indicating that the package search function is disabled. [As of 2022 it is recommended to use web search](https://pypi.org/), the reason for this was a case of overloading the project service when using pip. This overloaded resources for a while due to its search method, however, if web search is not an option for you, you can download an alternative project search tool:
```
pip3 install poetry
```
In the future, which can be invoked using the command:
```
python3 -m poetry
```
You can also search for repositories with projects by specifying the package you are looking for. In our example, we will search for everything with dns:
```
python3 -m poetry search dns
```
Screenshot №6 — Search packets
For ease of use, let’s create an alias for our command and replace it with a shorter version:
```
echo "alias poetry='python3 -m poetry'" >> ~/.bashrc
```
Be sure to apply the changes made to the system:
```
source ~/.bashrc
```
You can check the result of the changes by using the **poetry** command, which we specified as alias!
## Where does pip install the packages?
Packages installed with pip are usually installed in the directory where Python is installed. They are located in the “site-packages” subdirectory. If the installation takes place in a virtual environment, the packages are installed in the directory of that virtual environment. Again, they will be in the “site-packages” subdirectory.
## How to fix “Error: externally-managed-environment” in Debian?
If you do use the Debian distribution, you may encounter a problem when installing packages via pip. The error states that the global environment is under external control.
**The global environment** is an abstract concept that combines environment variables, configurations, and used libraries on a system.
The problem comes from the fact that when you use the Python global environment, which is managed by the system’s package manager, there are dependency and version conflicts between packages. When you install packages through the Python global environment, they become available to all applications and scripts on your computer. However, this can also cause different applications that require different versions of the same package to conflict with each other.
You can ignore the warning and delete the file that blocks packages from being installed in the global environment:
```
sudo rm -rf /usr/lib/python3.11/EXTERNALLY-MANAGED
```
Screenshot №7 — Error with first solution
However, you may see a warning about possible incorrect operation of the manager right after installation. In order to get the system state back – you need to remove conflicting packages that are installed using PIP.
**Using virtual environments solves the problem** in a safer way by creating isolated Python environments for each project or application. This allows each project to have its own dependencies and package versions, independent of the global environment or other projects. It is possible to manually create and activate, however, there is an automated pipx solution. Which will not only install, but also manage your virtual environments.
```bash
apt install pipx
```
.
Using pip in Python simplifies package management, and virtual environments provide dependency isolation, preventing conflicts between projects. This greatly improves the management and development of Python software.
https://serverspace.us/support/help/server-hardware-penetration-testing.mdThis article on server hardware security testing looks at important aspects of securing information systems. Pentesting Hardware. Hardware penetration testing
When securing an organisation’s information system, it is necessary to pay equal attention to all parts and subsystems. In this tutorial we will touch upon the topic of the functional part of the IS, which is responsible for supporting the functioning of the network infrastructure, services and subsystems, and more precisely we will take a small piece of it – the hardware part.
The first step to protect any computing device or group is a basic security configuration or hardening. Depending on the type of software being used, there are different ways to attack the hardware, and vendors are innovating, making the security testing of the devices being used an increasingly complex process. However, there are basic principles that determine the security level of a system. **Abstract Machine Test Utility** exists to automate this kind of testing!
## What is the process of testing a PC?
**Amtu** is an administrative utility that tests basic measures of security mechanisms at the hardware level. The testing process includes working with RAM, persistent memory for information corruption, storage. Integrity and confidentiality of data transfer through network interfaces, as well as execution of privileged instructions in supervisor mode.
Please note! This utility is mostly found in Red Hat or RedOS repositories, you can find suitable repositories or utilities in alternative sources! To install the testing software tool, you need root or a user with sudo privileges to install it. Let’s update the indexes and install new dependencies:
```bash
dnf update && dnf upgrade -y
```
Screenshot №1 — Update files
If you don’t have a server or you want a separate environment where you can test the utility. You can use the example of Serverspace [cloud server](https://serverspace.us/services/cloud-servers.md) to build your own server on either of the two platforms [vStack cloud](https://serverspace.us/services/cloud-servers.md) or [VMware cloud](https://serverspace.us/services/iaas.md). Click on the Create Server button and choose a configuration that suits our needs, then **click Order**.
Screenshot №2 — Server list
After some time the servers will be available via any of the main connection methods, for the current tasks RedOS with a data centre in Istanbul has been chosen.
## Installation and use
To install it, we will write the command:
```bash
dnf install amtu -y
```
Screenshot №3 — Installation program
Let’s familiarise ourselves with the utility’s capabilities by calling its -h option:
```
amtu -h
```
Screenshot №4 — Help of usage
Let’s describe each of the presented options:
- -d – displays debug messages.
- -m – writes and reads data in memory to check compliance.
- -s – prevents user programs from accessing memory occupied by video memory and the OS kernel.
- -i – verifies that data on discs remains unchanged for IDE and SCI controllers associated with file systems. Tests disc controllers without checking if file systems are read-only.
- -n – Verifies that the transmitted and received data of each network device match. The check applies only to Ethernet and Token Ring devices, not affecting asynchronous devices.
- -p – verifies that the use of privileged supervisor instructions remains valid. The instruction set used depends on the architecture ( -h – help).
All of these commands are designed to verify that the data and operation of the equipment match. They may be useful when testing or diagnosing problems with the equipment. For detailed information about each command, please refer to the documentation or reference information.
Let’s test the operation of privileged instructions with full event output;
```
amtu -dp
```
Screenshot №5 — Test
Access was not obtained, this is evidenced by the errors caught and at the end of the test we see the result SUCCESS, which means that the test was successful. Also the result can be a numerical designation, with 0 successful execution and slow execution with -1 output.
https://serverspace.us/support/help/how-to-activate-a-promotional-code.mdHow to activate a promotional code?
Serverspace promo codes allow you to use Serverspace cloud services at favorable conditions. You can activate them in the control panel.
## How do I activate a Serverspace promo code?
To activate a promo code, go to your Serverspace control panel or register from scratch.
After that, open the **Refill balance** section – and click on the **Promo Code** tab:
Enter the received promo code in the input field and click the **Activate Promo Code** button:
.
In case of successful activation of the promo code you will see the line “Promo code successfully activated” and the terms of the promotion.
If the promo code has not been verified, you will see a line with red highlighted information about the reason for rejection.
Examples of reasons:
- No active promo code was found with this key.
- You have already entered one promo code. To enter the next promo code, please fulfill the conditions of the previous one.
- This promo code can only be activated on the first project.
## What should I do if there is an error when activating a promo code?
Check that:
- your project complies with the terms of the promo code;
- the promotional period has not expired;
- most promotions are for new users registered for the first time.
.
## Where can you find Serverspace promo codes?
- On portals on the Internet;
- in the Serverspace newsletter;
- in [Serverspace news](https://serverspace.us/about/news.md) on the website;
- on the promotional pages during the promotional period.
https://serverspace.us/support/help/payment-methods-for-serverspace-cloud-services.mdChoose a convenient way to pay for your cloud services: supported payment networks, minimum top-up amount and step-by-step instructions to refill your balance and manage billing.
To pay for Serverspace cloud services, you need to go to the control panel and replenish your balance in one of the available ways. In the article we will analyze what payment methods and formats of working with funds you can use.
You can read the terms and conditions in our [service level agreement](https://serverspace.us/conditions/sla.md).
To pay for cloud services, go to the Serverspace control panel: the buttons for registration and login are located in the upper right corner of Serverspace.us. After entering the panel, click **“Refill balance”**, the button is also in the upper right corner.
## By bank card
You can use bank cards to refill your balance. The minimum replenishment amount is 5 dollars. To pay by bank card, you need to enter the necessary data and click pay now:
We support the following payment networks: Visa, Mastercard, American Express (AmEx), Discover, JCB, Diners Club, and UnionPay. Payments are processed securely, and the balance is usually topped up within a few minutes.
## By PayPal
You can use PayPal to refill your Serverspace balance. Choose payment method, payment amount and then click on the PayPal icon:
## Promo code activation
Serverspace periodically holds promotions or provides promo codes, which you can find on various sites on the Internet. If you have received a promo code and want to activate it, go to the control panel in the **Refill balance** – **Promo code** section.
## Autopay
Autopay function automatically tops up your balance, when it approaches zero, from your linked card. To activate this function, you need to go to the top up menu and click the Connect AutoPay button:
After that you need to ener the amount of payment and fill in your card details:
## For businesses (companies)
If you're paying for Serverspace on behalf of a company, we recommend using a business credit/debit card issued in your company's name. This helps keep expenses separate from personal spending and makes reimbursement, bookkeeping, and monthly reconciliation much easier.
https://serverspace.us/support/help/how-to-enable-the-dark-theme-in-the-control-panel.mdHow to enable dark theme in the control panel
Switching to a darker theme is a useful feature found in Serverspace’s Cloud Server Control Panel. If you feel more comfortable working with darker colors, or if you have a dark time of day and don’t want to strain your eyes, you can enable this theme. Now let’s break down how to do it.
## How to enable the dark theme in the control panel
First of all, we need to go to the control panel. After that, click on your profile icon in the upper right corner – it will drop down to the menu, where you can change the theme to dark:
After that, your dashboard will become dark.
## How to turn off the dark theme in the control panel
If you want to revert everything back to the way it was, follow the steps in the same sequence. Click on the profile icon and then on the button next to Dark Theme.
https://serverspace.us/support/help/two-factor-authentication-in-the-serverspace-control-panel.mdTwo-factor authentication in the Serverspace control panel
Two-factor authentication will ensure the security of your account. When this feature is enabled, logging into your account requires not only a password and login, but also a unique six-digit code obtained through the app on your smartphone
## Enabling two-factor authentication
Beforehand, you need to authorize in your personal cabinet. After this operation, using the menu on the left, go to Settings, open the Security tab, in the Two-Factor Authentication window click the Connect button:
Use the app on your smartphone ["Google Authenticator"](https://my.serverspace.us/help/Details/HowToInstallGoogleAuthenticator?), ["Authy"](https://my.serverspace.us/help/Details/HowToInstallAuthy?) or similar to scan the QR code:
After entering the unique six-digit code, two-factor authentication will be successfully activated. From this point on, you will need to enter the special code received on your smartphone to log into your account:
## Disabling two-factor authentication
We strongly recommend that you do not disable two-factor authentication, as it is an important additional security mechanism that provides strong protection thanks to a unique code.
If you need to disable two-factor authentication, you can always do so in the Settings – Security tab:
https://serverspace.us/support/help/user-roles-in-serverspace.mdUser roles in Serverspace
In the Serverspace control panel, users can customize roles for each participant. There are three roles in total: Owner, Administrator, and Accountant. Below we will look at each of them in more detail.
How to add or remove users is covered in our instructions ["How to add or remove a member of project in Serverspace?"](https://serverspace.us/support/help/how-to-add-or-remove-a-member-of-project-in-serverspace/).
## User Roles in Serverspace
There are three roles for participants in Serverspace projects. They are divided depending on the tasks performed by the participants:
- **Owner** — is assigned automatically to the account owner and allows him to transfer it to any other participant of the project. The owner has full control over the control panel and the [cloud servers](https://serverspace.us/services/cloud-servers.md), can perform all available operations in it;
- **Administrator** — cannot add or remove project participants or change the role of the Owner. However, this role has the same rights and capabilities as the Owner in other respects;
- **Accountant** – has access only to financial information, such as “Partners”, “Billing”, “Support” and “Legal Entity Settings” sections. The Accountant can also see the list of all project participants
In the table below, we have shown the main differences between roles in a project.
**Role**
Project role management
Execution of operations
Working with finance
Owner
+
+
+
Administrator
–
+
+
Accountant
–
–
+
## List of all project participants
To see all project participants, go to **“Settings” -> “Project Settings” -> “Project Participants”**:
## Changing user roles and deleting them from the project
If you want to change the role of a participant or remove him/her from the project, you should click on the triplet icon next to the user. After that a menu will pop up where you can select the option you need:
If you want to change the role of a user – select **“Edit Access”**, after that the menu of changing the role will open:
https://serverspace.us/support/help/how-to-add-or-remove-a-member-of-project-in-serverspace.mdHow to add or remove a member of project in Serverspace?
This guide will provide you with detailed steps to manage your project and add or remove members.
## Adding a member of project
To add a member to a project, you must make your personal project public, or create a new public project.
### Personal Project Expansion
Let’s look at the process of expanding your project to the public.
At the top right, click on the **+** symbol or you can click on your project name and menu of your projects will expand, and there you can also click on the “Add the project” button:
Then check the box, come up with a name and click on the** Create project** button:
### Creating a new project
At the top right, click on the **+** symbol or you can click on your project name and menu of your projects will expand, and there you can also click on the** “Add the project”** button:
Come up with a name and click on the** Create project** button:
## Adding a user
Regardless of the project creation method you choose, the process for adding a member will remain the same.
Go to **Settings** – **Project Settings** – **Project Details**:
There are 3 roles available to choose from:
- **Owner
**The role is assigned by default to the account owner, after which he can assign it to any other participant. This role gives full access to the control panel
- **Administrator
**This role user cannot add or exclude project participants, nor can he influence the "Owner" role (add, delete, transfer, etc.). Otherwise, this role has the same capabilities as the owner.
- **Accountant**
This role will have access only to tabs with financial information, for example: "Partners", "Billing", "Support" and "Customer info". This role can also see all project participants.
Specify the role of the future participant, enter his mailing address. An invitation to the project will be sent to:
Once the user accepts your invitation, it will appear in the project settings:
## Deleting a member
To delete a project participant, go to **Settings – Project Settings,** and then click on the user you want to delete:
After confirmation, the participant will be removed from the project.
https://serverspace.us/support/help/how-to-create-ssh-key.mdLearn how to create SSH key via Serverspace Control panel
Let’s look at how to create an SSH key, what it is used for and what services it is needed for.
## What SSH key is used for?
SSH (Secure Shell Protocol) is a protocol for secure access to remote systems. It belongs to the applied ones along with the following: http, smtp, snmp, FTP, Telnet etc. The protocol operates on port 22; when configuring the ssh protocol, the port can be changed.
Compared to the Telnet protocol, ssh transmits encrypted traffic that is protected by an encryption key.
The protocol uses encryption keys to operate and transmit data in encrypted form. Thanks to encryption, an attacker who intercepts a stream of encrypted data will need several years to decrypt it, thereby losing the time the data is up to date, which is why asymmetric encryption is used.
Asymmetric encryption is the use of two keys to encrypt and decrypt data.
An SSH key is a sequence of arbitrary characters. Using it, the data is encrypted and after encryption it is sent to the end node.
**Public key** – this key encrypts data, it can be transferred to another party who must send encrypted messages/data.
**Private key** – this key decrypts the data and must be stored in a safe place. It is possible to encrypt a private key by using a passphrase when creating the key.
## How to create an SSH key
You can create an SSH key through the Serverspace control panel.
To do this, go to the user settings, then to the SSH keys tab, as shown in the screenshot:
Here you can add a key or view existing ones.
If you want to add an SSH key, click on the Add SSH key button, after which a menu will open:
In the menu you can add an existing key or generate a new one. To create a new one, specify the name of the key, its format, then click the **Create and download** button.
After this, your key will be successfully created.
The created key can be used during server configuration. In the **Access preferences**, select the **SSH keys** option, then check the box which key to use:
https://serverspace.us/about/blog/golden-trio-of-cloud-computing-iaas-paas-saas.mdLearn about IaaS, PaaS, SaaS in simple terms Explore differences between cloud-based infrastructure, platform, and software as a service.
You’ve probably heard a lot about cloud services, but you can’t imagine why you need them or what they are in general. In fact, cloud technology is overturning our traditional view of business IT infrastructure. There is no need to buy expensive equipment and puzzle over how to optimize the site, where to store large amounts of data, or provide an efficient network in the company. Cloud services can do all of that hard work. In addition, working in the cloud is much more profitable, secure and faster. However, the question arises: which service should you choose?
In this article, we tell you in simple terms what the main types of cloud services are and which one will ensure a brighter future for your business.
If you decide to migrate to the cloud, you will encounter strange letters: **IaaS, PaaS, SaaS**.
**What do they mean?**
For an easier understanding, you can visualize it in this way:
- **On-premise** – buying an empty plot. You do everything yourself – lay electricity, bring water and build a house from scratch on your own. This takes up a lot of your valuable time and effort.
- **IaaS** – buying an empty plot with connected communications; based on them, make a project of the house and build it
- **PaaS** – buying a plot of land with a house built. Your area of responsibility is only furniture and interior design.
- **SaaS** – buying a fully furnished house. Move in and enjoy life!
[https://serverspace.us/wp-content/uploads/2024/02/iaas-paas-saas-scheme.svg](https://serverspace.us/wp-content/uploads/2024/02/iaas-paas-saas-scheme.svg)
Let’s expand the details.
### On-Premise
The On-Premise method involves setting up and controlling software, hardware and infrastructure within an organization’s own premises. This method differs starkly from using cloud hosting services, giving businesses complete sovereignty over their IT assets, such as servers, databases and software tools. Companies that choose On-Premise configuration are responsible for maintaining, enhancing and protecting their technology systems, allowing them to customize their IT landscape to meet specific needs and benchmarks.
Compared to a cloud-based hosting provider solution, utilizing an On-Premise strategy typically requires a large upfront investment in hardware and software purchases, as well as ongoing costs for technical staff, power consumption, and the allocation of physical space for equipment.
### IaaS
[IaaS](https://serverspace.us/services/cloud-servers.md) stands for Infrastructure as a Service in cloud computing. It involves offering computing resources such as virtual servers, storage, and network systems. Imagine it as virtual “machines,” on which you can load anything – operating systems, various software, and applications.
The IaaS provider has taken care of the essentials: purchasing and setting up the infrastructure, ensuring power and internet connectivity. Your role is simply to tap into this computational resource over the Internet for your specific needs.
Cloud Infrastructure as a Service (IaaS) includes:
- Virtual servers ([VPS](https://serverspace.us/services/cloud-servers.md)/VDS) for installing diverse software;
- [Network configurations](https://serverspace.us/services/private-networks.md);
- VPN services, securing data transmitted between the cloud and on-premise data centers;
- User access management, allowing for restrictions on virtual machines or limiting data modification rights;
- [Cloud storage](https://serverspace.us/index.md) facilities for file, data, or backup storage;
- Backup and disaster recovery options.
Opting for IaaS cloud solutions means accessing provider-maintained virtual servers, networks, and cloud storage. You have the power to manage the virtual servers’ operating systems, offering you the liberty to tailor and deploy applications as your needs dictate. This approach provides a balance of provider support and personal customization.
Primary advantages:
- Real-time resource adjustment – scale up or down as required;
- Reduced overhead – eliminate the need for expensive servers and maintenance staff;
- Cost-efficient – transform capital expenses into operational ones;
- Immediate operation – avoid delays in equipment setup and maintenance;
- Global accessibility – manage operations from anywhere, not confined to a single location.
Who could find IaaS useful:
- Startups in search of flexible and affordable IT;
- Companies with variable demand, such as e-commerce sites during peak sales periods;
- Technology firms in need of testing new applications;
- Large corporations looking to reduce the cost of maintaining physical servers;
- Companies looking to focus on core business operations rather than IT management.
_IaaS is suitable for absolutely every company – from a startup to an international corporation. It is possible to rent capacity for practically any configuration._
One example of an IaaS service is the solutions of the international cloud service provider [Serverspace](https://serverspace.us/home-page.md). It offers a variety of hosting options, including VPS [cloud servers](https://serverspace.us/services/cloud-servers.md) and dedicated servers, catering to diverse business needs and ensuring optimal performance and reliability. Serverspace allows customers not only to choose the necessary IT resources for rent, but also to customize the required configuration. You can try, for one, the service of creating a private or private cloud, and opt for the suitable server capacity. The cost of the cloud server will not be fixed; it will depend solely on the parameters you select. That is why you will not overpay for the service. Serverspace provides High Quality hardware and [data centers all over the world](https://serverspace.us/infrastructure/data-centers.md). Thus, the business does not need to worry about its IT infrastructure; Serverspace specialists are engaged in its support around the clock.
### PaaS
PaaS – Platform as a Service in cloud computing. The cloud platform concept implies a partially ready-made tool for running or managing applications.
The PaaS provider offers a solution consisting of virtual infrastructure (processor capacity, RAM, storage) and special software that is installed on a virtual server. PaaS services are typically used by developers and companies that want to delegate part of their processes to a service provider to focus on higher-priority business tasks. The approach saves time and allows for more frequent releases.
PaaS solutions enable users to do the work of creating, integrating, migrating and deploying various applications.
PaaS products:
Kubernetes – an open-source platform for automating the deployment, scaling, and operation of application containers across host clusters. As a PaaS service, Kubernetes abstracts away the complexity of infrastructure management, streamlines development processes, and allows you to focus on building applications rather than managing servers. Providers such as Serverspace offer [Kubernetes](https://serverspace.us/services/managed-kubernetes.md) services, giving users the ability to deploy and operate containerized applications easily and efficiently.
Docker – a platform that allows users to develop, ship, and run applications inside containers. Serverspace also provides a [Docker](https://serverspace.us/support/glossary/docker.md) service that you can use to deploy and scale applications more easily and quickly.
Key Benefits:
- Saving time for system customization;
- Using the optimal off-the-shelf solution;
- Reducing the time “from idea to realization” – the speed of testing and application development increases;
- Multi-user access to the system from different locations.
Who is PaaS perfect for?
- Software developers who need an off-the-shelf platform;
- Startups creating new applications without heavy technology infrastructure;
- Companies specializing in application development;
- Companies that require rapid deployment and updating of applications;
- Teams that want to collaborate on software development projects.
### SaaS
SaaS – Software as a Service in cloud computing. It is a completely ready-made solution that can be used immediately.
When implementing, the SaaS service provider assumes all obligations to configure services. The client does not participate in these processes, but only uses the finished product with existing settings. The service provider performs licensing, upgrades, technical support and other settings.
Examples of SaaS professional services:
- Dropbox;
- Zoom;
- Skype;
- SAP Concur;
- GoToMeeting.
Main advantages of SaaS technology:
- Cost-effective – reduces initial expenses.
- Quick to start – no installation needed;
- Auto-updates – no manual updates needed;.
- User-friendly – easy to use on any device;
- Collaborative – simplifies team work;
- Low IT demand – minimizes IT workload.
Who will benefit from SaaS products:
- Companies in need of affordable and easy-to-use software;
- Small businesses looking for inexpensive tools;
- E-commerce sites to manage online sales;
- Marketing companies in search of project management platforms;
- Educational institutions need e-learning platforms.
_These SaaS solutions are suitable for companies that need to quickly solve a specific task, and they are satisfied with the solutions offered by the provider. If a client needs individual customization of any parameters, it is reasonable to choose between Iaas or PaaS services._
If SaaS software completely covers your needs, it is quicker and less expensive to use an off-the-shelf service rather than develop your own. For example, almost all companies use ready-made email clients, because the functionality of this service is sufficient for all tasks.
### How to understand what’s best for you?
To figure out the right cloud service – be it IaaS, PaaS, or SaaS – for your project, assess your project goals and your team’s tech skills.
[https://serverspace.us/wp-content/uploads/2024/02/iaas-paas-saas-scheme-1.svg](https://serverspace.us/wp-content/uploads/2024/02/iaas-paas-saas-scheme-1.svg)
- Use **IaaS** for access to computing resources, such as VPS, with the added benefit of controlling the operating system and software. This is great for tech-savvy teams needing customization.
- **PaaS** is tailored for developers who want to build and deploy applications without the hassle of managing the base infrastructure.
- **SaaS** offers a user-friendly approach with internet-based applications ready for immediate use, ideal for those wanting hassle-free software solutions.
_Cloud services can really make your life easier and take your business to the next level. No matter what your specific needs are, there is a perfect cloud solution for you. Don’t miss the flight to the sky – migrate to the cloud._
https://serverspace.us/about/news/serverspace-in-brazil.mdServerspace continues expansion by launching its first office in Latin America, Brazil. Local users now have access to the Serverspace.com.br website in Portuguese and a control panel with payment options in Brazilian Reais.
[https://serverspace.us/wp-content/uploads/2024/03/brazil-office-3-1.svg](https://serverspace.us/wp-content/uploads/2024/03/brazil-office-3-1.svg)
Serverspace, an international cloud provider, continues expansion by launching its first office in Latin America, Brazil. Local users now have access to the Serverspace.com.br website in Portuguese and a control panel with payment options in Brazilian Reais.
Serverspace adheres to its expansion strategy by offering services in the local markets of the countries. This way, users can engage with the virtual infrastructure in a format that is convenient for them, including payment options through local bank cards.
**Brazilian users got:**
- A Portuguese language website at [Serverspace.com.br](https://serverspace.com.br/);
- A control panel with a payment feature in Brazilian Reais;
- Free support from Serverspace technical specialists.
“_Entering the top ten of the world’s largest economies by GDP, Brazil represents a strategically important market. Many sectors, such as finance, logistics, and IT, are now showing increasing interest in cloud innovations, boosting the demand for corresponding solutions. This makes the Brazilian market key to our development strategy, aimed at offering local users optimal conditions for using cloud services. Furthermore, an important aspect of our work will be compliance with the LGPD data protection legislation, ensuring the security of user information _“, says Svetlana Sharapova, Head at Serverspace
With the opening of the office in Brazil, Serverspace intends to continue its expansion. Its main goal is to provide even more users with access to its cloud services in a format that is maximally adapted to the needs of different country markets. The company’s plans also include the launch of a new office in the United Arab Emirates (UAE) by the end of this year, highlighting Serverspace’s desire to expand its influence and strengthen its position in the cloud technology sector.
**Detailed information about the Serverspace office in Brazil:**
- The adapted website in Portuguese is available at [Serverspace.com.br](https://serverspace.com.br/);
- Registration and control panel login at [my.serverspace.com.br](https://my.serverspace.com.br/);
- Technical support inquiries can be made through the website chat, the “Support” section in the control panel, or by phone: +55 11 5118-1047;
- Currency: Brazilian Real;
- Payments are accepted via Brazilian bank cards;
- Data center: São Paulo Equinix SP3.
### Data Center in Brazil
At the end of 2023, Serverspace launched equipment in the [Equinix SP3 data center](https://serverspace.us/infrastructure/data-center-sao-paulo.md) in São Paulo, Brazil. The data center, owned by the international company Equinix, is one of the most technologically advanced data processing centers. SP3 hosts vStack SL201-25RE server capacities, equipped with modern 16-core Intel Xeon Gold 6226R processors with Cascade Lake architecture, running at 2.70 GHz.
To create a server in São Paulo, you can use any Serverspace control panel by:
- Navigating to the [Serverspace.us control panel](https://my.serverspace.us/);
- Starting the creation of a cloud server;
- Selecting the data center in Brazil and the resources needed for your server;
- Clicking the create button. The server will be created automatically.
**A list of company offices in different countries:**
- Brazil: [Serverspace.com.br](https://serverspace.com.br/)
- USA: [Serverspace.us](https://serverspace.us/index.md)
- Canada: [Serverspace.ca](https://serverspace.ca/)
- Netherlands: [Serverspace.io](https://serverspace.io/)
- Turkey: [Serverspace.com.tr](https://serverspace.com.tr/)
- Kazakhstan: [Serverspace.kz](https://serverspace.kz/)
_[Serverspace](https://serverspace.us/index.md) is an international cloud provider offering services for creating and managing virtual infrastructure. It provides automatic deployment of VPS servers with popular Linux and Windows Server operating systems, as well as domestic OS. Infrastructure creation is possible from anywhere in the world in one minute. Open API, CLI, and Terraform tools are available for integrating client services._
https://serverspace.us/about/news/serverspace-x-rocky-linux-os.mdInternational cloud provider Serverspace expands the set of presented templates. Now all users can deploy virtual servers with the latest version of Rocky Linux 9.3.
[https://serverspace.us/wp-content/uploads/2024/03/rocky-linux.svg](https://serverspace.us/wp-content/uploads/2024/03/rocky-linux.svg)
International cloud provider Serverspace expands the set of templates presented in the control panel. Now all users can deploy [virtual servers](https://serverspace.us/services/cloud-servers.md) with the latest version of Rocky Linux 9.3. The feature is available for cloud servers based on the vStack hyperconverged virtualization platform.
### Rocky Linux Features
Rocky Linux is a Linux distribution. It was created as a replacement for CentOS after CentOS Linux support was discontinued in favor of CentOS Stream. This made Rocky Linux, along with AlmaLinux, the best choice for those who were dependent on CentOS. Rocky Linux is an enterprise OS. That’s why it is ideal for business tasks. The key features of the operating system are:
- The OS guarantees full binary-level compatibility with Red Hat Enterprise Linux. This allows users to seamlessly port and run applications developed for RHEL.
- The operating system utilizes SELinux (Security-Enhanced Linux) for easy access control and a high level of security.
- The distribution includes Dandified YUM, a state-of-the-art package manager. It offers more powerful performance and improved features compared to YUM introduced in previous versions of CentOS.
- Rocky Linux supports various file systems to optimize storage depending on individual requirements, including XFS, Ext4, and Btrfs.
- The OS uses the Systemd initialization management system. It provides fast booting and convenient administration of services through a single point of control.
- It comes with Tuned and cgroups tools for performance monitoring and optimization. These tools make it easy to customize the system for different workloads.
- Supports Docker and Kubernetes, allowing you to develop and deploy containerized applications.
- Rocky Linux provides compatibility with different architectures such as x86_64 and ARM64. This makes the OS suitable for a wide range of hardware, from personal computers to servers and cloud infrastructures.
- The OS offers stable operation with regular updates and a 10-year support lifecycle.
### How to deploy a virtual server based on Rocky Linux?
- If you are not a Serverspace user yet, you need to [register on the site](https://auth.serverspace.us).
- Next, go to the vStack Cloud section in the control panel and click on the “Servers” tab.
- Select the Rocky Linux 9.3 distribution.
- Set up the appropriate VPS configurations: CPU, RAM, and bandwidth.
- Deploy the cloud server using the “Create” button.
_The operating system will be automatically installed along with the creation of the virtual server._
https://serverspace.us/support/help/how-to-use-redirect-operators-in-bash.mdDiscover the art of stream redirection and input/output manipulation in your shell scripts with our comprehensive step-by-step guide.
## Introduction
How to redirect output or input of files, command or process in the Linux system? For that question in the instruction we will give answer! That can be useful for automatization extraordinary and quite commonly system, by make script, program or another stuff. Below you can get like briefly and thoroughly theory answer!
## Short theory
For run any program in the Linux, Windows and other operating system, we just need to click on the icon or executable file. But core of OS in that moment create process. **Process** – it’s passive and abstract entity, which describe resources and location of running program. Therefore if process passive, then there is active entity – **thread**.
Each of processes have 3 standart thread: **input**, **output** and **error**. They are fundamental part of any system. If we want to customize usage, for redirect thread, we need to call and indicate them in the CLI. That can be possible with file descriptors, which represent number that assign to thread, file, network socket and any element of the operating system. Schema of logic that mechanism you can see below:
Screenshot №1 — Schema
In the result for redirect input, output or error we need to use command below:
```
cat 0< vocabulary.txt
```
Screenshot №2 — Example
For the **cat** command we didn’t indicate any arguments for input, instead of this we write file descriptor for standart input **0< **and give text. In the result we can see written text of the **vocabulary.txt**. The mechanism of file descriptors may looks like quite complicated system, therefore for build logical bundle, you can consider chapter below!
## Files descriptors
Representing resources with descriptors allows different parts of a program to refer to the same underlying object without having to keep track of its location in memory, making it easier to manipulate and manage shared resources. Descriptors are simply integers that represent an open file or other input/output channel; they’re called “descriptors” because you can think of them as pointers: rather than having to keep track of where a specific resource is stored in memory (which would be difficult if there were multiple copies), you simply need to know its descriptor value and use it whenever you want to access that resource.
Screenshot №3 — File descriptors
**For example**, if an application needs access to several files at once, each file can be represented by its own integer value: rather than having to keep track of where each file is stored in memory (which would be difficult if there were multiple copies), the program simply needs to know the descriptor value for each resource and use it whenever it wants to access them. Descriptors are commonly used for files, but they’re not limited to them; any type of system resource can be represented by a single integer value: network sockets or other types of communication channels.
In summary, while descriptors are simply integers that represent an open file or other input/output channel, they’re called “descriptors” because you can think of them as pointers: rather than having to keep track of where a specific resource is stored in memory (which would be difficult if there were multiple copies), the program simply needs to know its descriptor value and use it whenever.
## Basic operators
Alright, after pice of math part we can consider operators for redirection thread, they indicate as we discuss above as a sing’s.
**The standard output or redirection**, form of usage: **command > output_object**. That customize direction of thread literally mean result of command don’t displayed on the screen of the terminal, them redirect to the object. If file doesn’t exist, they will create by system, but if file already exist it will be completely replaced.
For example, we have task for write all package with name “apache2” from our repository in the file, by one command or we need to use that in the script.
```bash
apt list | grep "apache2" > apache.txt
```
After entering command we need to see context:
```
tail apache.txt
```
Screenshot №4 — Redirection stdout
But if we want to append data to the existing file, for that purpose we will use next form: **command >> output**. In the difference at the example above file doesn’t replace, but in the case when file wasn’t created, after entering command we can see them in the catalogue.
However, if we need to hide output, then we can use special device in the Linux, they named **null**. Their main function it’s discard output thread of data, also we can redirect traffic to another device, by that way.
**The standard error**, form of usage: **command 2> output_object**. Commonly, use in the cases when we need to redirect only error’s event among all log-file. That sing **2> **also as we consider above means create or replace exist file. We consider case when we need to grep error’s from started **ls** command and redirect to the file:
```
ls don't_exist_dir 2> err0rs.txt
```
Screenshot №5 — Redirection error’s
If we want to add some information without replace, then use already a familiar operator **2>> **which create or append data to the file. For example:
```bash
apt-get errr 2>> err0rs.txt
```
And look at the result of test operation:
```
cat err0rs.txt
```
Screenshot №6 — Error’s append
As we can see above new line don’t replace all file, then operators of redirect work properly!
There is situation when we need to use simultaneously both operators, when we intercept data from daemon or command, system can write standart output and error** in the one file**:
```
ls /tmp /jgj &> log.txt
```
Let’ check the result of command:
```
cat log.txt
```
Screenshot №7 — Redirect into the one file
We indicate two catalogue and one of them give error and passed to the standart output, so that we can see on the screenshot.
**For some situations**, we need to build more complicated redirection. Imagine you need to sort object from file and write it to the new file:
```
sort < err0rs.txt > sort_err0rs.txt
```
Screenshot №8 — Complicated redirection
Let’s explain, how that work! At the first execute **stdinput** from **err0rs.txt** to command **sort** and result of that operations redirect to the **s0rt_err0rs.txt **that’s it.
You can notice, that we use operators for the redirection to the device or file but, what if we redirect to output from our command to input another command? Unfortunately, operators described above don’t fit to the our criteria. For that purposes there is pipe. What is that mean? Literally pipe! Indicated by a sign **|** and use in form: **command_1 | command_2**:
```bash
apt list | grep "apache2″
```
Screenshot №9 — Pipe
Line of commands at the first gather data from apt command write to the **stdoutput **and redirect to the **stdinput **with out proxy-file! In the similar way by using standart operators that will looks like this:
```bash
apt list >> proxy_file.txt >> grep "apache2″
```
In that case we use proxy-file and save information to it!
## Conclusion
The understanding how to use redirect operators in Bash is a fundamental skill for anyone working with the command line in Unix-like operating systems. These operators provide a powerful way to manipulate input and output streams, enabling you to efficiently handle data and processes. By mastering concepts such as <, >, >>, 2>, and &>, you can not only redirect data but also combine, append, and manage errors effectively.
https://serverspace.us/support/help/mysql-workbench-installation-guide.mdDiscover how to install MySQL Workbench with our comprehensive installation guide. Learn step-by-step instructions and best practices. MySQL Workbench
## Introduction
MySQL Workbench is the official Integrated Development Environment (IDE) designed specifically for MySQL by Oracle Corporation, which owns and supports both MySQL and MariaDB databases. It’s built on top of the Eclipse IDE framework, so you get all the benefits that come with that platform – including a powerful code editor, version control integration, syntax highlighting, and more. Workbench is also available as an integrated solution for Microsoft Windows and other operating systems.
In that instruction we will install Workbench on the Ubuntu OS, with graphical interface and configuring software!
## Prepare stage
First of all, you need to update package from your repository by the command:
```bash
apt update && apt upgrade -y
```
Unfortunately, due to various of appear problems we can’t control package status and next installation maybe will fail, for make sure of properly work packet manager, type:
```bash
apt –fix-broken install
```
Screenshot №1 — Fix package
In our case, system check integrity of installed packages and find problem objects, press **Y** for start recover process and wait end of reinstalling! That help update and heal needed library in the system. Go ahead, let’s config repository by install package in the system.
**Highlight! **Link may change, for make sure, that you installing exactly what you want [check information](https://dev.mysql.com/downloads/) on the development site, also there you can find install packages for another OS!
```bash
wget https://dev.mysql.com/get/mysql-apt-config_0.8.28-1_all.deb
```
Screenshot №2 — Download package
## Installation
By that command **wget **we download installation file to the home directory and run by the command:
```
dpkg -i mysql-apt-config_0.8.28-1_all.deb
```
Screenshot №3 — Installation of repository
In the pop-up window, you need to choose version of your OS and in the some of system required to indicate architecture of processor. Consider menu and also choose version and type of mysql, by the default we need to use common version. After that we need to update index of packages:
```bash
apt update
```
After that we need to install graphical shell, we would prefer **gnome**, but you can choose any else:
```bash
sudo apt install ubuntu-gnome-desktop
```
Screenshot №4 — Graphical shell
That will take a lot of time for downloading and installing, but if you have rapidly internet and high performance computer that will take less time. Next, workbench represent by self GUI system for control server or just client, therefore we need to have locally or remote installed server:
```bash
apt install mysql-community-server
```
Screenshot №5 — Installation of community Server
Press **Y **and wait end of the installation process, now we can install workbench by similar command:
```bash
apt install mysql-workbench-community
```
Screenshot №6 — Workbench
Alright, now we need to login into the GUI interface, for that you can restart OS by the command:
```
reboot
```
After power on system pass the initial setup, configure your account, name and other significant point:
Screenshot №7 — Time Zone
At the left corner you can see button **Activities**, press on there and find in the search bar as you can see below or just look at the application recently installed panel:
Screenshot №8 — Search MySQL
After we are click on the icon we can see welcome page with card of our connections, systems automatic recognize server, but if you want to manage remote DB, you can add them by plus near MySQL connection:
Screenshot №9 — Start window
Make sure, that WorkBench work properly and choose at the left menu in the tab **Management **-> Status of the server, by that function we can control load on the database and rapidly and effective troubleshoot appears problem!
Screenshot №10 — Server status
At the left part you can see many function and parameters that can help to manage the server!
## Conclusion
The MySQL Workbench is designed specifically to cater to the needs of MySQL users by providing a comprehensive Integrated Development Environment (IDE). With its rich feature set, this tool makes it easy for developers and administrators alike to create, modify, and analyze database structures using intuitive graphical interfaces.
This guide has provided an in-depth overview of installing the MySQL Workbench on Ubuntu systems with a GUI, including step-by-step instructions that will help you quickly get up and running with this powerful tool. Additionally, this software is well-suited for managing multiple databases while also offering data import/export capabilities to facilitate seamless integration of different sources. By leveraging the MySQL Workbench’s robust functionality, users can take advantage of a wide range of features that will streamline their development and administration tasks, allowing them to focus on more important aspects of their projects such as performance optimization or application security.
Overall, this powerful tool is an indispensable asset for anyone working with MySQL databases, offering unparalleled support in developing and maintaining a wide variety of applications.
https://serverspace.us/support/help/how-to-get-a-list-of-mysql-tables.mdLearn the quick and easy way to retrieve a list of MySQL tables with this informative guide.
## Introduction
The significance of utilizing Database Management Systems (DBMSs) with greater uniqueness cannot be overstated, as it contributes significantly towards an organization’s growth and development. A unique approach to using a DBMS can lead to increased efficiency in data management and retrieval, which subsequently allows for better decision-making processes based on accurate information.
Moreover, by leveraging the power of DBMS uniqueness, organizations are able to streamline their operations, reduce costs associated with manual processing of data, and ultimately improve customer satisfaction. Furthermore, an innovative approach towards using a DBMS is crucial in remaining competitive within the ever-changing technological landscape, as it enables businesses to stay ahead of the curve by adapting new technologies that align with their unique needs.
The utilizing DBMS’s more uniquely is essential for organizations striving to achieve optimal results and remain at the forefront of innovation.
## How to see tables?
In many configurations, DBMS installations are set up without a graphical user interface (GUI), which allows users to navigate through the entire system in an interactive manner. This approach is beneficial as it enables optimal resource utilization by decreasing efficiency demands on server memory and improving overall performance. However, managing such systems can be challenging for unprepared individuals; thus, we have devised a solution that simplifies this process. To access the command-line interface (CLI) of your running server, enter the following command:
```bash
mysql -u root -h localhost -p
```
Screenshot №1 — Get into
In such a scenario, you may need to replace **root** and **localhost** with your own credentials (optional). The -u option specifies the user who will connect to the system, while -h denotes the target host for connection. To proceed with authentication via password, simply enter the requested information after inputting the command. Once logged in, you can use a series of commands to view all tables within your database:
```
USE online_store
```
By that command we choose default database where we will manipulate data. Then we can finally take a look at the created tables:
```
SHOW TABLES;
```
Screenshot №2 — Show tables
Alright we can see created tables before, after every creation you need to enter command again!
## Conclusion
This tutorial has equipped you with the knowledge and tools necessary to navigate and manage databases effectively, whether through command-line interactions or user-friendly GUI interfaces.
https://serverspace.us/support/help/how-to-work-with-mysql-strings.mdExplore the world of string functions in MySQL with our ultimate reference guide. Find everything you need to know about handling strings. Concat SQL. Concatenate in SQL.
To operate with strings in MySQL within the context of an existing table containing information, you can use SQL queries which allow you to perform various operations on text fields. Let’s see some examples of the most common operations performed on text data in MySQL. For example, we have a table named **client** that contains a column called **first_name **and** last_name**, where it stores the names of client. We consider different function and methods for work with strings!
## Search data by conditions
That point very useful in the modern system with requires to retrive data by request in the mobile application, web-server or in the information system for checking critical data. But there is problem, we can know uniqueness** id** of the row in the table for call them data, but what if we know only data in one column? At the beginning we have dataset:
```sql
CREATE DATABASE test;
USE test;
CREATE TABLE client (id INT, first_name VARCHAR(255), last_name VARCHAR(255));
INSERT INTO client (id, first_name, last_name) VALUES (0, "Alex", "Kors"), (1, "Kork", "Ghottem"), (2, "Jorj","Fotten"), (3, "Ford", "Bold");
SELECT * FROM client;
```
Screenshot №1 — First data
We can use context in the column operator.
```sql
SELECT * FROM client WHERE first_name= Jorj';
```
Screenshot №2 — WHERE operator
That command will display on the screen all column in the table client where full name equal **John**. It’s useful command commonly used for searching mechanism in the application, services and system.
## Concatenate data
That function will be usefull for information system with help to fill field for user registration, format data before sending from the difference column and other significant stuff. Have a look at the example of usage. We need to concatenate first_name and last_name of user to get full_name:
```sql
SELECT CONCAT(first_name, ', ', last_name) AS full_name FROM client;
```
Screenshot №3 — Concatenation
That command will give as the result concatenate data in the full_name, if that column don’t exist, therefore they will create in the current table. By indicated sign in the query we don’t need to write them every time as we want to indicate new column.
**Highlight!** You can notice, that we indicate operators in the CAPITAL letters, but also we can use another case, but name of the database, column and other objects case-sensitive! For example, we can write **Select**, but can’t write Online_Store instead of original value online_store!
## Select Substring
There are situations when we need to select part of text value and show data in the application more shorter or due to reason limitations in another system we want to fit into parameters. For that we can imagine case when we need to get first letter of name from our customers. We will use function SUBSTRING, when we need indicate column in the table, first number of sign and quantity of letters:
```sql
SELECT SUBSTRING(first_name,1,1) FROM client;
```
Don’t forget semicolon at the end of query! Let’s check result of that command:
Screenshot №4 — Substring
Also we can add operator AS and then we get result in the table as we described above!
```sql
SELECT SUBSTRING(first_name,1,1) AS first_letter FROM client;
```
That you can use for application, more fit usage in the different contex!
## UPPER & LOWER
That function will be useful for purposes to format input data from client for reason needs unified. Therefore, function UPPER make letter capital case and LOWER in the logical sequences lower case:
```sql
SELECT UPPER (first_name) FROM client;
```
Screenshot №5 — Upper
And lower case therefore:
```sql
SELECT LOWER (first_name) FROM client;
```
And the last of commonly used function we will consider REPLACE!
## Replace
That function will help change data for any reason you have. Syntax is simplify, at firts attribute function you indicate column, reference text and target text: REPLACE (fist_name,’reference_text’,’target_text’);
```sql
SELECT REPLACE(first_name,'Jorj','Huston') FROM client;
```
Screenshot №6 — Replace
We consider main function for string and their values, all of that could you help in the different cases and situations!
## Conclusion
Understanding and utilizing these string functions enhances the versatility of MySQL in handling text data. Whether for searching, concatenating, substring extraction, case conversion, or data replacement, these operations empower developers and database administrators to efficiently manage and manipulate textual information within their databases.
https://serverspace.us/support/help/how-to-connect-the-object-storage-with-swift-cli-on-ubuntu.mdLearn the step-by-step process of connecting Object Storage with SWIFT CLI on Ubuntu. This comprehensive guide covers the setup and config!
## Introduction
Every routine, business day’s in the company force us to find new solutions for every appear problems and tasks. Several of them still wait their time due to lack of needed specialist, resources and patient of manager stuff. Therefore we get unsuitable solution or in the worst way unworkable system with completed point on the paper. Haziness further plans, that’s result of unstructured system. Automatization and outsource cloud platform can help to build fault-tolerance, horizontal scalable and comfortable for control system solution.
In that instruction we consider one of the services, which provide Serverspace: Object Storage — SWIFT. In contrast between usual file server’s or cloud storage they represent well-structured system, that can help to contain data with their method or meta-data in the containers. Also, we will thoroughly answer on the question: How to connect with CLI to them?
## Setup CLI
First of all steps we need to update our indexes and installation package’s. For the Ubuntu we will use apt manager:
```bash
apt update && apt upgrade
```
Screenshot №1 — Update package
After that we have to install Python packet manager where we will search and download client utility for the control our storage:
```bash
apt install python3-pip
```
Screenshot №2 — Download pip
Go ahead and download client for our storage:
```
pip3 install python-swiftclient python-keystoneclient
```
Screenshot №3 — Download SWIFT client
Commonly, on the Linux distributes we have preinstalled all package which we described above, but update them is significant part!
If you have installed python package, but pip3 can’t be installed, you can use command below, which enable packet manager for python:
```bash
python -m ensurepip –default-pip
```
If that can’t help to fix the problem, then try to delete previous version if they exist or reinstall current package.
```bash
apt reinstall python3-pip
```
This have to help troubleshoot our problems and give access to the main utility for control!
## Configuration and Usage
We will go to the Serverspace and order the Swift Storage, if you already have them skip that step! For that we should [login into the account](https://auth.serverspace.us/) and search in the left menu **Storage**:
Screenshot №4 — Main page
At the center of the screen we have see **Activate button**, click on this and wait about minute to deploy process. Alright! In the picture below we can see the main panel of control our storage:
Screenshot №5 — Activated storage
Ofcourse we can manipulate data from suitable Web-interface for personal use, that can be the best way. But in the corporate network we need to automate that process, let’s consider that. Press **Add Container** and name it! Then we can upload file for further test of working our connection:
Screenshot №6 — Upload file
Find tab **Credentials** on the screen and click on it, we can see Swift connection part:
Screenshot №7 — Credentials
Leave this data nearby for now and open our machine with downloaded client, fill your credentials in the command below from the table. That can allow build our connection with SWIFT storage and manipulate data:
```
swift \
–os-storage-url $(Endpoint)/v1/AUTH_$(UserID) \
–os-password $(Password) \
–os-username $(Username) \
–os-project-name $(Project) \
–os-project-domain-name $(Domain) \
–os-auth-url $(Endpoint) \
stat -v
```
For our case command will look like this:
```
swift –os-storage-url https://ru.serverspace.store:443/v1/AUTH_c7e61e55cca64d1f91d6a3b178a833f5 –os-password 6bfa1hdD2Dzr –os-username ssio6578_admin –os-project-name ssio6578 –os-project-domain-name default –os-auth-url https://ru.serverspace.store:443/ download STORE
```
Screenshot №8 — Connect and download
As you can notice that command represent request to the API of storage with your credentials and subcommand **download** at the end of request! For checking downloaded data we used command:
```
ls
```
For simplify authorization and control our storage we have to make alias record in user login script:
```
echo "alias swift_request='swift –os-storage-url https://ru.serverspace.store:443/v1/AUTH_c7e61e55cca64d1f91d6a3b178a833f5 –os-password 6bfa1hdD2Dzr –os-username ssio6578_admin –os-project-name ssio6578 –os-project-domain-name default –os-auth-url https://ru.serverspace.store:443/'" >> ~/.bashrc
```
Screenshot №9 — Make alias
You can identificate that request by any suitable name, we will use **swift_request**, if you changed credentials data due to reactivate storage or any else reason, just open **.bashrc **and changes credentials value by the command below:
```
nano ~/.bashrc
```
** Necessarily!** You have to save entering alias by the command:
```
source .bashrc
```
Make sure that work properly by deletion unused file with container:
```
swift_request delete STORE
```
Screenshot №10 — Check alias request
The alias **swift_request **execute command that we identify in the file and then add subcommand with attributes!
## Conclusion
In conclusion, this guide delves into the essential steps of connecting Object Storage with SWIFT CLI on Ubuntu. By addressing the need for structured systems and highlighting the advantages of automation and outsourced cloud platforms, the tutorial provides a comprehensive walkthrough.
https://serverspace.us/support/help/undo-options-in-git.mdUndo options in Git. Git — incredibly potent version management system, brimming with features designed to manage code and projects. Its majority of valuable characteristic is arguably his capability to rollback modifications. Undo operations ought to be managed cautiously, particularly…
## Undo options in Git
Git — incredibly potent version management system, brimming with features designed to manage code and projects. Its majority of valuable characteristic is arguably his capability to rollback modifications. This doc delves into crucial rollback procedures, encompassing “git restore”, “git reset”, “git revert” and “git checkout”.
## Usage of git checkout
Using this command provides a simple and effective way for discard changes. This enables revert prior version of files in active working catalog. This command has the ability to revert modifications to a file that have not been indexed thus far. To accomplish for this, simply input:
```bash
git checkout myfile.txt
```
## Usage of git reset
Next example, though a bit more intricate, provides a range of options for reversing modifications. It has the capability to revert modifications in the index and also can even modify HEAD. The three primary operations performed.
It directs to precise commit indicated within command, whilst retaining modifications in operational and index catalog:
```bash
git reset –soft
```
It reverts to selected commit, erasing modifications from index but retaining them in the working catalog:
```bash
git reset –mixed
```
It entirely reverses all alterations, it brings you return for mentioned commit, erasing all modifications in both index and the working catalogs:
```bash
git reset –hard
```
This is practical illustration:
```bash
git reset –hard HEAD~1
```
This example will roll back “HEAD” and present branch one commit, discarding every modification.
## Usage of git Restore
“Git restore” command is typically to undo changes in files or stages back to their state at particular commit. This becomes essential when you’ve made modifications that you subsequently choose for undo. Basic syntax of this is:
```bash
git restore
```
In this context, “file” should be substituted with the name of the file you wish to revert to its latest committed state.
Additionally, Git restore can also be used for unstage files. This can be quite useful if you’ve prematurely staged a file and then decide not to commit it. The syntax for this operation is:
```bash
git restore –staged
```
In this command, “file” represents the name of the file you intend to de-stage. Git restore also has the capability to restore a file to its condition at a specific commit, which is beneficial when you want to restore a file to a certain version. The command structure for this is as follows:
```bash
git restore –source=
```
In this case, “commit” refers to the exact hash of the commit you want to use as a basis for restoring the file, while “file” signifies the name of the file.
## Undo All Modifications
If you decide to revert all local modifications in your working directory, you can execute the subsequent command:
```bash
git restore — .
```
This will restore all files in the current directory to their status in the most recent commit.
## Revert
If you’ve pushed your modifications to the shared repository and desire to undo them, you should use the git revert command. This command creates a new commit that reverts the modifications of the chosen commit. Here’s a sample usage of git revert:
```bash
git revert HEAD
```
This action will generate a new commit that retracts all modifications made in the prior commits.
Undo operations ought to be managed cautiously, particularly in environments with multiple users. It’s typically advised not to undo commits that have already been pushed to the shared repository, unless there’s a strong necessity to do so
In summary, we’ve examined the fundamental undo operations in Git. These powerful tools provide significant flexibility and control over your change history, but should be used with discretion.
https://serverspace.us/support/help/how-to-connect-the-swift-object-storage-with-cli-on-oracle.mdDiscover how to connect to Oracle SWIFT Object Storage via Command Line Interface (CLI) with this easy step-by-step tutorial. Manage your cloud storage efficiently using CLI commands.
In today's fast-paced business environment, companies continually face new challenges and complex tasks that demand innovative solutions. However, these challenges often stem from limited specialized resources, tight deadlines, or insufficient oversight by decision-makers. As a result, organizations may implement solutions or systems that are ill-suited to their needs, leading to inefficiencies and missed opportunities. In such situations, lack of clarity and direction can cause further complications, ultimately jeopardizing the success of critical initiatives.
To overcome these challenges, automation and outsourcing cloud platforms are becoming increasingly popular as they provide fault-tolerance, horizontal scalability, and ease of control for system solutions. One such service is Serverspace: Object Storage — SWIFT, which provides a highly structured system that can contain data within containers using its method or metadata. In contrast to traditional file servers or cloud storage, SWIFT offers several advantages, including the ability to store large amounts of unstructured data and easily search for it later on.
## Setup CLI
To begin, let us update our indexes and packages first. We will utilize the yum packet manager for Oracle:
```bash
yum update -y
```
Screenshot №1 — Update packages
Following the update of indexes and packages, the next step is to install the Python package manager, through which we can search for and download the client utility that allows us to manage our storage:
```bash
yum install python3-pip
```
Screenshot №2 — Download pip
Obviously, next step will be download API client on the system:
```
pip3 install python-swiftclient python-keystoneclient
```
Screenshot №3 — Download client
Typically, many Linux distributions come with the packages already installed; however, keeping them up to date is crucial. If Python and pip3 are already installed but pip3 cannot be found, we can utilize the following command to enable the package manager for Python.
```bash
python -m ensurepip –default-pip
```
In case the previous solution does not resolve the issue, we may need to remove any existing versions of Python and pip3 before attempting a fresh installation. Alternatively, we could try updating the currently installed packages.
```bash
yum reinstall python3-pip
```
These steps should help us resolve any issues encountered and provide the necessary tools to manage our storage.
## Configuration and Usage
To proceed with ordering Swift Storage from Serverspace, [log in to your account](https://auth.serverspace.us/) and navigate to the Storage section on the left-hand side of the page. If you have already ordered **Swift Storage**, feel free to skip this step:
Screenshot №4 — Main page
Once you find the **Activate** button centered on the screen, click it and allow a few seconds for the deployment process to begin. You will now be able to access the main management interface for your **Swift Storage**:
Screenshot №5 — Activated storage
Of course, you can manage your data using a web interface for personal use, which may be more convenient. However, when dealing with corporate networks, automation is often necessary. To begin, press the **Add Container** button and provide it with a name. After that, upload a file to test the connection further:
Screenshot №6 — Upload file
Please locate the Tab labeled **Credentials** on your screen, then click on it to access the section pertaining to Swift connections:
Screenshot №7 — Credentials
For the time being, kindly keep this information handy. Next, please access the device that contains the downloaded client software. Once there, locate the command prompt and input your credentials as displayed in the table. This will enable us to establish a connection with SWIFT storage and manipulate data:
```
swift \
–os-storage-url $(Endpoint)/v1/AUTH_$(UserID) \
–os-password $(Password) \
–os-username $(Username) \
–os-project-name $(Project) \
–os-project-domain-name $(Domain) \
–os-auth-url $(Endpoint) \
stat -v
```
In our case, command will look like this:
```
swift –os-storage-url https://ru.serverspace.store:443/v1/AUTH_c7e61e55cca64d1f91d6a3b178a833f5 –os-password 6bfa1hdD2Dzr –os-username ssio6578_admin –os-project-name ssio6578 –os-project-domain-name default –os-auth-url https://ru.serverspace.store:443/ download STORE
```
Screenshot №8 — Connect and download
Observe that this command is a request to the API for retrieving data from storage, utilizing your provided credentials. To verify the downloaded information, you may employ the following command:
```
ls
```
To streamline the authentication process and manage access to your storage, consider creating an alias entry within your user login script:
```
echo "alias swift_request='swift –os-storage-url https://ru.serverspace.store:443/v1/AUTH_c7e61e55cca64d1f91d6a3b178a833f5 –os-password 6bfa1hdD2Dzr –os-username ssio6578_admin –os-project-name ssio6578 –os-project-domain-name default –os-auth-url https://ru.serverspace.store:443/'" >> ~/.bashrc
```
Screenshot №9 — Make alias
You may choose a descriptive name for this request, such as swift_request. In case your login credentials have been updated (e.g., following a storage reactivation or other reasons), you can modify them in the **.bashrc** file by executing the command provided below:
```
nano ~/.bashrc
```
** Necessarily!** You have to save entering alias by the command:
```
source .bashrc
```
To ensure proper function, kindly remove any unnecessary files associated with the storage container:
```
swift_request delete STORE
```
Screenshot №10 — Check alias request
By executing the **swift_request** alias, you will initiate a sequence of commands defined within the corresponding script. Following this, you can append additional parameters to the request as needed.
## Conclusion
In summary, this tutorial provides a comprehensive guide on connecting to Oracle Object Storage using the SWIFT CLI. It highlights the value of a structured approach and showcases how leveraging automation and cloud services can significantly boost operational efficiency. By following the detailed steps in this guide, you will develop a solid understanding of the connection process and be fully prepared to implement it effectively in your environment.
https://serverspace.us/support/help/how-to-connect-swift-object-storage-through-cli-on-debian.mdLearn the step-by-step process of connecting SWIFT Object Storage using the Command Line Interface (CLI) on Debian.
## Introduction
In today’s fast-paced business environment, organizations are frequently confronted with new challenges and tasks that require innovative solutions. However, these difficulties often arise due to a lack of specialized resources, time constraints, or inadequate management from decision-makers. When faced with such problems, companies may end up implementing unsuitable solutions or systems that fail to meet their needs. This can lead to further complications and hinder the success of plans.
To address these challenges, automation and outsourcing cloud platforms are gaining popularity as they provide fault tolerance, horizontal scalability, and ease of control for system solutions. One such service is Serverspace: Object Storage — SWIFT, which offers a highly structured system that can store data within containers using its method or metadata. In contrast to traditional file servers or cloud storage, SWIFT provides several advantages, including the ability to handle large amounts of unstructured data and easily search for it later on.
## Setup CLI
Before proceeding further, we must ensure that our indexes and packages are up-to-date. To accomplish this task, we will employ the yum package manager on an Debian system:
```bash
apt update && apt upgrade -y
```
Screenshot №1 — Update package
After updating our indexes and packages, we will proceed by installing the Python package manager. This tool will enable us to locate and retrieve the client software required for managing our storage:
```bash
apt install python3-pip
```
Screenshot №2 — Download pip
**Warning!** In the Book Worm version of Debian, python can’t process installation client automatically due to external managed virtualenv! Therefore, we will create and activate environment manually, but there is once limitations – installed application work only from virtualenv. Let’s install packet for manipulate virtualenv:
```bash
apt install python3-virtualenv
```
Screenshot №3 — Download virtualenv
Now, we can create new env for our cli-utility, by the command below:
```
virtualenv swift
```
Screenshot №4 — Make virtualenv
Then activate them, by following the directory where that environment was created, in our case that /root/swift. Look for your value in the command:
```
source /root/swift/bin/activate
```
And then we finally can install packages from the pip3 manager, by the command:
```
pip3 install python-swiftclient python-keystoneclient
```
Screenshot №5 — Activate and download
In most Linux distributions, the necessary packages may already be pre-installed. However, it is essential to keep them up to date regularly. In case Python and pip3 are already present but pip3 cannot be located, you can use the following command to enable the package manager for Python:
```bash
python -m ensurepip –default-pip
```
If the initial approach fails to address the problem, it might be necessary to uninstall any earlier versions of Python and pip3 prior to re-installing them. An alternative option would be to update the current package installations before attempting a fresh installation:
```bash
yum reinstall python3-pip
```
By following these instructions, we aim to address any problems that may arise and equip ourselves with the required software to efficiently manage our storage.
## Configuration and Usage
Before placing an order for Swift Storage through Serverspace,[please sign in to your account](https://auth.serverspace.us/) and access the Storage section located on the left-hand menu. You can bypass this stage if you have previously purchased Swift Storage from **Serverspace**:
Screenshot №6 — Main page
After locating the Activate button on the page, press it. Give the deployment procedure some time to execute. Once completed, you will gain access to the primary management console for your **Swift Storage**:
Screenshot №7 — Activated storage
While you can easily manage your data via a web interface for personal use, automated management may be required in corporate settings. To start, click on the Add Container button and specify its name. Next, upload a file to verify the connection by testing it further:
Screenshot №8 — Upload file
On your display, find the tab labeled **Credentials** and click on it to navigate to the area dealing with Swift connections:
Screenshot №9 — Credentials
In the meantime, kindly hold onto this information. Then, please proceed to retrieve the device which has the downloaded client software installed on it. After gaining access to this device, navigate to the command prompt and enter the login credentials found in the provided table. This will allow us to establish a connection with SWIFT storage and manage data:
```
swift \
–os-storage-url $(Endpoint)/v1/AUTH_$(UserID) \
–os-password $(Password) \
–os-username $(Username) \
–os-project-name $(Project) \
–os-project-domain-name $(Domain) \
–os-auth-url $(Endpoint) \
stat -v
```
In that case our command will look like this:
```
swift –os-storage-url https://ru.serverspace.store:443/v1/AUTH_c7e61e55cca64d1f91d6a3b178a833f5 –os-password 6bfa1hdD2Dzr –os-username ssio6578_admin –os-project-name ssio6578 –os-project-domain-name default –os-auth-url https://ru.serverspace.store:443/ download STORE
```
Screenshot №10 — Connect and download
Please note that the given instruction seeks to retrieve information from SWIFT storage using the entered credentials. You can validate the acquired data by executing the subsequent command:
```
ls
```
In order to simplify the authorization procedure and control access to your storage, you may want to create a shortcut within your login script:
```
echo "alias swift_request='swift –os-storage-url https://ru.serverspace.store:443/v1/AUTH_c7e61e55cca64d1f91d6a3b178a833f5 –os-password 6bfa1hdD2Dzr –os-username ssio6578_admin –os-project-name ssio6578 –os-project-domain-name default –os-auth-url https://ru.serverspace.store:443/'" >> ~/.bashrc
```
Screenshot №11 — Make alias
You may pick a meaningful title for this task, like **swift_request**. If there is any change in your login credentials (such as after resuming storage usage or due to various causes), you can update them in the .bashrc file using the given command:
```
nano ~/.bashrc
```
** Necessarily!** You have to save entering alias by the command:
```
source .bashrc
```
In order for it to operate correctly, please delete all extraneous files linked to the storage container:
```
swift_request delete STORE
```
Screenshot №12 — Check alias request
With the execution of the **swift_request** alias, a series of instructions specified in the associated script will be executed. You may add more parameters to the request if necessary after this step.
## Conclusion
In essence, this tutorial provides a comprehensive overview of how to link Object Storage with SWIFT CLI on Debian. It underscores the significance of systematic methods and showcases the advantages of employing automation and cloud services for heightened productivity. By adhering to the guidelines presented in this manual, you will acquire an extensive comprehension of the procedure and be adept at executing it flawlessly.
https://serverspace.us/support/help/how-to-delete-data-in-file-with-truncate.mdLearn the efficient way to delete data in a file using the truncate method. Explore instructions and examples to file manipulation!
## Why we change size of file?
The reasons you may need to set a file size explicitly can range from simple programming tasks up to complex security issues, but in general, when writing code, it is common that you are working with specific sizes of data and need them not only be the same across different systems (which often have slightly different interpretations), but also fixed and predictable. This means if your application relies on a certain file size for its functionality to work properly, having explicit control over that file’s size can prevent unexpected behavior from arising due to an uncontrolled variable.
Furthermore, having strict controls on the files you create is good practice in general for security reasons; it prevents accidental leaks that may be dangerous or expose sensitive system data, and protects against potential attacks via buffer overflow techniques where a large file overflows memory bounds and allows execution of unauthorized code (a form of remote hacking). Finally, if you’re working with some sort of file encryption, the need is more straightforward. The same reason for maintaining control on file size when writing code – it prevents errors due to unexpectedly large files – extends well beyond coding into encryption as both require a degree of precise control over how information is being stored and accessed. Therefore it is crucial that you understand and correctly manage (set, reset, change) any such sizes at all times.
## How to use it?
For the Linux OS there is utility that can help to sharp and extend data by simply syntax of usage. Let’s consider algorithm and way to use them! First of all we need update package:
```bash
apt update && apt upgrade -y
```
Screenshot №1 — Update
Then we can download needed package through application packet manager, which get data from trusted repositories:
```bash
apt install coreutils -y
```
Screenshot №2 — Installation
As we can see in the picture above we have already installed software, therefore finally consider syntax: **truncate -OPTIONS -FILE**. We can sharp file with option size, for example your file is named example.txt and its current size is 5MB, and you want to sharp it to 1MB:
```
truncate -s -4M example.txt
```
Option -s indicate size, minus means arithmetical action to current size of file, for make sure we can check list:
```
ls -l
```
Screenshot №3 — Minus value of size
**Important alert!** If size of file large than new value of size therefore extradata will be delete, don’t compress! In another side of hand if size less than value, utility add extra data with zero records.
If we need to indicate certainly value, command will the same as we described above, but we will not use arithmetical sign:
```
truncate -s 0M example.txt
```
That command line clear data in the file without their deletion, in another word we get as result empty file! Let’s make sure:
```
ls -l
```
Screenshot №4 — Empty file
Also in another way we can use + for extend file size, slash sign / round down to multiple of and percentage sing % round up to multiple of!
Mastering the usage of truncate empowers users to maintain control over file sizes, contributing to more predictable and secure file management practices in Linux environments.
https://serverspace.us/support/help/how-to-connect-to-the-mongodb.mdLearn how to effortlessly connect to MongoDB using step-by-step instructions. Whether through the GUI of Compass or the powerful CLI!
## Overview
Effectively managing a Database Management System (DBMS) offers diverse options, allowing users to choose between the command-line interface (CLI) with mongosh commands or the graphical user interface (GUI) module – Compass, designed for visualizing data. When utilizing mongosh, a foundational understanding of basic commands and CLI usage is essential for efficient data management.
Compass serves as a solution tailored for users or administrators less inclined towards CLI operations, enhancing work efficiency through its nearly intuitive interface. Bridging the gap between Compass and the intricacies of data management, this guide focuses on clarifying the intersection of Compass functionalities, empowering users to harness its full potential. Whether navigating the command line or leveraging the visual appeal of Compass, this instruction provides insights into MongoDB connectivity, ensuring a seamless experience for both novice and experienced users alike.
## Compass
In thoughts we can separate connection in two type, for GUI and CLI interface, in that part of instruction we will look at the graphical way connection to the DBMS. You have to install Compass through manager of packages or [download from official web-site](https://www.mongodb.com/try/download/compass).
In the Linux system we have to setup GUI shell if they don’t exist on the machine, than download them, for Ubuntu we can use code below:
```bash
apt install desktop-ubuntu
```
After installation process start MongoDB Compass through CLI or desktop icon, for Ubuntu you can use command:
```
mongodb-compass
```
And for Windows OS, type in the CLI:
```
MongoDBCompass.exe
```
Installation file in the Linux OS commonly stored in the /usr/bin and in the Windows OS choosed folder in the installation process. If we did all in a properly way, than we can see pop-up window with field of connection:
Screenshot №1 — Connection
Click on the URL field and enter data for connect, if you have MongoDB on your own machine, than click on the **Connect **button without any changes. If you use remote server replace localhost with internal or external IP-address and indicate port in the case, when administrators use uncommonly setup. And that’s it! We are in:
Screenshot №2 — Main page
If you have trouble in the connection stage, than check work of DB service, for example in the Ubuntu OS we can type:
```bash
systemctl status mongod
```
And if we see dead process, try to restart them:
```bash
systemctl restart mongod
```
After that, the system will have to work, in the Windows OS you need to look for in the search bar Services and than start MongoDB service!
## Mongo Shell
At another side of hand we can use more efficiently way for connection, same at the system we have to setup Mongo DB and Mongo Shell, after that we need check status of daemon as we do before:
```bash
systemctl status mongod
```
And if we have problem with them — restart!
```bash
systemctl restart mongod
```
Alright! Now we can start shell for interact with system, by the command below, in the localhost mode:
```
mongosh
```
Screenshot №3 — MongoSH
If there is need connect to remote server use follow command:
```
mongosh –host : –username –password –authenticationDatabase
```
Replace values in the angle brackets with the specific information for your remote server.
Effectively managing a Database Management System (DBMS) provides users with a spectrum of options, presenting the choice between the command-line interface (CLI) utilizing mongosh commands and the graphical user interface (GUI) module – Compass, tailored for data visualization. Proficiency in basic commands and CLI usage is crucial when opting for mongosh.
https://serverspace.us/about/news/serverspace-opens-an-office-in-canada.mdServerspace has launched a representative office for its cloud provider services in Canada, now offering its services to local users.
Serverspace has launched a representative office for its cloud provider services in Canada, now offering its services to local users. This represents the second North American location for the company. A dedicated website under the domain [serverspace.ca](https://serverspace.ca/) is available, complete with a specialized cloud infrastructure control panel.
A key aspect of this launch is adherence to the Canadian Personal Information Protection and Electronic Documents Act (PIPEDA). Under this legislation, only legal entities registered and operating within Canada are permitted to store personal customer data. With a data center situated in Canada, coupled with the new office, Serverspace can now officially engage with Canadian users, offering secure and compliant data storage solutions.
On the [serverspace.ca](https://serverspace.ca/) website, users can order various cloud services through a control panel tailored to the Canadian market. Both the site and control panel offer an English version to enhance the experience of navigating cloud infrastructure. Additionally, provisions have been made to facilitate payments using Canadian bank cards in Canadian dollars (CAD).
The process for selecting server specifications — like the data center, operating system, CPU, RAM, SSD, and bandwidth — is straightforward with a calculator featuring flexible configurations. This tool is designed to help users select server resources that align with the specific demands of each project.
It's noteworthy that virtual services can be established within the TOR3 data center, which conforms to Tier III standards and is located in Toronto, Canada. Deployment of virtual machines is also accessible to users in other locations, such as the USA, Netherlands, Turkey, and CIS countries. We are committed to ensuring that our customers have the utmost flexibility and choice when it comes to the location and setup of their cloud resources.
**How to Create a Server in Canada?**
Setting up a server in Canada follows the same process as in other locations. You need to:
- Register on the serverspace.ca website.
- Navigate to the virtual server creation section.
- Select a configuration that meets your project’s requirements.
- Click the button to initiate the server creation.
- Fund your account with the necessary amount.
**How to Pay for [Serverspace.ca](https://serverspace.ca/) Services?**
Cloud services in Canada can be paid for using local bank cards in Canadian dollars (CAD).
**How Do I Contact Technical Support?**
Technical support is readily available 24/7. You can reach out via the Support tab in your control panel or by phone at +1 647 4935 0400.
https://serverspace.us/about/news/black-friday-2023-at-serverspace-50-cash-back-on-cloud-servers.mdServerspace host a Black Friday event. New users will be able to receive a 50% cash back bonus. Get cloud infrastructure with a 50% cash back!
Only one day on November 24, 2023, Serverspace will host a Black Friday event. New users will be able to receive a 50% cash back bonus when they refill their account balance.
Participate in the Promotion and get cloud infrastructure with a 50% cash back!
## Terms of the Promotion:
- The Black Friday promotion applies only to users who have not previously registered in the Serverspace control panel and who have never refilled their balance;
- Date of the event: November 24, 2023;
- The Black Friday promo code can be used only once;
- Cashback amount: 50% of the balance refill sum;
- There is no limit on the refill amount.
## How to Activate the Promo Code?
- Sign up in the control panel;
- Go to the “Promo Code” tab in the “Refill Balance” section;
- Activate the promo code: **FRIDAYHOTVPS** in the “Promo Code” tab;
- Refill your balance with any amount of money and receive a 50% cash back bonus;
**Attention:** the promo code must be activated before refilling the balance.
## What can the bonuses be used for?
Users can spend the bonuses received on Black Friday on all Serverspace services, except for SSL certificates.
https://serverspace.us/about/news/christmas-gift-from-serverspace.mdInternational cloud provider Serverspace announces a Christmas promotion. New users will receive $100 bonus dollars for Cloud VPS.
International cloud provider Serverspace announces a [Christmas promotion](https://serverspace.us/index.md). New users registered in the control panel will receive $100 bonus dollars credited to their account. To receive the gift, users need to meet several conditions:
- You are registering for the first time.
- Your e-mail has a corporate-owned domain.
- Your company is officially registered and has a website.
- You have completed the company verification in the control panel.
**How to complete the verification?**
- Sign up in the [control panel](https://my.serverspace.us/) from December 11 to December 25, using an e-mail with a corporate-owned domain.
- Go to the “Christmas gift” tab and fill out the form by clicking the “Grab the gift” button.
- 100 bonus dollars will be credited to new users during the promotion from December 11, 2023, to December 25, 2023, within 3 days after filling out the feedback form.
**Conditions of the Christmas promotion:**
- _Promotion period: from 12/11/2023 to 12/25/2023 (inclusive);_
__
- _The Christmas promotion applies only to new users;_
__
- _New users are those accounts registered for the first time between December 11 and December 25, 2023;_
__
- _Bonuses are credited only to accounts registered using an e-mail with a corporate-owned domain;_
__
- _To receive bonuses, new users must fill out the form via the link in the control panel, confirming that they work for an officially registered company with an active website;_
__
- _Bonus dollars are credited only to 1 project which is created automatically upon registration;_
__
- _Unused bonus dollars expire on 01/31/2024 at 23:59._
**And what about the gift for existing users?**
We also have prepared a Christmas gift for existing users. It already awaits in the [control panel](https://my.serverspace.us/).
_To learn about the conditions for receiving it, stay tuned for our mailings and notifications in the control panel!_
https://serverspace.us/about/news/launch-of-the-vpn-service.mdServerspace added the ability to deploy VPN servers. Eesy create ready-made servers with SoftEther VPN and StrongSwan applications.
Serverspace added the ability to deploy VPN servers without the need to manually configure VPN clients on virtual machines. It is now possible to create ready-made servers with SoftEther VPN and StrongSwan applications.
### What you receive?
- Up to 1000 Mbps bandwidth without limits on traffic volume.
- An IP address in the 6 worldwide locations.
- Access to the server from any device using the credentials from the control panel.
### How to create a VPN-server?
- [Sign-up](https://auth.serverspace.us/register) in the Control Panel.
- Go to the “[VPN](https://my.serverspace.us/configured-servers/list)” section in the control panel.
- Select an application, location, click “Create”, and receive access credentials.
- To use VPN on your devices, go to the “VPN” section and set it up with the “Starting Guide”.
https://serverspace.us/about/news/data-center-in-brazil.mdVPS in Brazil. Cloud provider Serverspace has added a new location to its control panel. Users can now create a VPS based on the vStack hyperconverged platform in the Equinix SP3 data center in São Paulo, the business capital of…
Cloud provider Serverspace has integrated a new location into its control panel. Users can now leverage the vStack hyperconverged platform to create VPS instances in the Equinix SP3 data center, located in São Paulo, Brazil’s business hub. This expansion presents fresh possibilities for Serverspace users.
[Equinix SP3](https://serverspace.us/infrastructure/data-center-sao-paulo.md) is a top-tier data center that adheres to international quality standards, boasting a complete set of Tier III certifications from the Uptime Institute and a gold Operational Sustainability certification.
The SP3 data center houses the cutting-edge vStack SL201-25RE server capacity, featuring 2.70 GHz, 16-core Intel Xeon Gold 6226R processors with Cascade Lake architecture.
Venturing into the Brazilian market is a strategic move for Serverspace, unlocking new perspectives and opportunities. Internal research indicates substantial demand for Serverspace services from both existing Brazilian users and global customers, supported by survey results highlighting the increasing need for cloud services in Latin America. Serverspace is poised to provide reliable, high-quality solutions to meet this demand.
Serverspace now offers VPS deployment in data centers across the globe, including Kazakhstan, the Netherlands, Turkey, the USA, and Canada. Customers can deploy VPS in a data center located in Brazil, enhancing the company’s geographic reach and network expansion.
### How do I deploy a VPS in Brazil?
- Open the control panel and navigate to vStack cloud server creation;
- Begin creating your VPS;
- Choose the OS and select the São Paulo, Brazil, data center;
- Specify the number of CPUs, RAM, SSD capacity, and channel width.
https://serverspace.us/about/blog/serverspace-2023-recap.mdServerspace has disclosed achievements for 2023, highlighting worldwide expansion, integrated cloud services, and plans for the next year.
We have disclosed achievements for 2023, highlighting worldwide expansion, integrated cloud services, and plans for the upcoming year.
### Worldwide expansion
2023 marks a breakthrough for Serverspace in terms of expanding its global presence. Throughout the year, we established offices in three countries worldwide: [Kazakhstan](https://serverspace.kz/), [Turkey](https://serverspace.com.tr/), and [Canada](https://serverspace.ca/). Additionally, we activated an additional cluster in Amsterdam, offering extended configurations with processors (CPU) of up to 32 cores. Also, a new cluster was introduced in Kazakhstan. Serverspace further expanded its geographically distributed infrastructure by placing equipment in Tier III data centers in Turkey ([Star of Bosphorus](https://serverspace.us/infrastructure/data-centers.md)) and Brazil ([Equinix SP3](https://serverspace.us/infrastructure/data-center-sao-paulo.md)).
_“International expansion in the cloud technology market is an integral part of our growth process. Our goal is to possess a sufficient level of expertise to address the needs of local users in each country where Serverspace is present. In addition to a locally adapted control panel, we provide payment in national currencies and the option to rent cloud services based on local data centers. Currently, we aim to become a cloud provider accessible to local users in each country of our presence”, said Svetlana Sharapova, Head of Serverspace_
### Integrated cloud services
In addition to geographical growth, Serverspace expanded its list of available services. Users in any country can now connect to the [Content Delivery Network (CDN)](https://serverspace.us/services/cdn.md). This distributed network of servers, located at various geographical points, reduces response time, increases web page loading speed, and enhances SEO rankings. We also integrated new operating system families, Alma Linux (8.7, 9.1), connected [VMware Cloud](https://serverspace.us/services/iaas.md) in Kazakhstan, and added new versions of existing systems to the control panel.
### Control Panel redesign and Updated Support Service
Another significant step forward for us was a redesign of the control panel and an acceleration of processing all requests in the technical support. Based on user experience analysis, the panel was improved and adapted for independent infrastructure management. Updated support service response standards (**resolving any user issues within 30 minutes**) make infrastructure management possible for clients with varying levels of understanding of cloud technologies.
_“Alongside high-quality virtualization tools, a corresponding level of expertise in resolving emerging issues is crucial. We continuously work on improving the quality and speed of providing feedback”, added Svetlana Sharapova_
### 2024 Plans
We will continue the development in the international market, expanding the portfolio of cloud services for users worldwide and extending the geography of the data centers where equipment will be placed. Soon, Serverspace will place equipment in the UAE.
https://serverspace.us/about/news/new-version-of-freebsd-14-0-x64.mdA new FreeBSD 14.0 x64 operating system template is available in the Serverspace control panel.
A new FreeBSD 14.0 x64 operating system template is available in the Serverspace control panel. Users are now able to deploy vStack servers with the improved version of the OS.
The new OS template received a number of modifications. The performance and fault tolerance of the operating system have been significantly improved.
### What’s changed?
- Increased serial port data transfer rate to 115200 bps. Improved communication performance, especially in critical applications.
- Implemented a new file system tarfs, which allows working with tar archives compressed via zstd. Access to archived data became much easier.
- Increased the number of supported processor cores from 256 to 1024. This made the system ideal for powerful amd64 and arm64-based servers and workstations.
- Reduced reboot time with the new sysctl parameter kern.reboot_wait_time. Enhanced system maintenance efficiency and reduced downtime.
- Added a utility for encoding and decoding data in base64 format. Making these operations more accessible and convenient.
- Improved security by preventing some types of attacks. Executable files for 64-bit systems are now built in PIE (Position Independent Executable) mode.
- Enhanced the administration environment. The standard command prompt for the main system user (root) is now /bin/sh.
- Upgraded the ZFS file system to OpenZFS 2.2. Improved performance and reliability of data storage. Introduced the ability to create a ZFS pool bound to a single vdev virtual disk.
- Optimized network characteristics. Default CUBIC network congestion control mechanism for TCP instead of NewReno. It helps to utilize the available bandwidth more efficiently.
- Updated third-party applications and libraries in the base system, including OpenSSH 9.5p1, OpenSSL 3.0.12, and others. Guarantees a more modern and secure toolset.
You can read more about all the updates in the [official document](https://www.freebsd.org/releases/14.0R/relnotes/).
### How to create a server with FreeBSD 14.0 x64?
To create a server, you need to first [register](https://auth.serverspace.us/register) on the Serverspace website. Next:
- Go to the Serverspace control panel;
- Select the vStack cloud service;
- Start creating the cloud server;
- Select the FreeBSD 14.0 x64 operating system;
- Configure the resources;
- Click on the server creation button.
https://serverspace.us/support/help/file-permissions-in-linux.mdUnderstand Linux file permissions: Learn how to manage access rights, ownership, and security settings for files and directories in Linux.
## Introduction
Access and permission control for files serve critical purposes in the realm of data management and security:
- Enhanced Security: The implementation of access control mechanisms ensures that files can only be accessed by individuals who possess the necessary permissions. This bolstered security prevents unauthorized parties from gaining entry to sensitive or confidential data.
- Preservation of Confidentiality: By instituting precise permission settings, confidentiality is safeguarded. Unauthorized exposure of sensitive information to unintended users, which could result in breaches or leaks, is effectively averted.
- Safeguarding Integrity: Permission control plays a pivotal role in maintaining the integrity of files. Unauthorized alterations or tampering with crucial files are thwarted, ensuring the reliability and accuracy of data.
- Adherence to Regulations: Numerous industries and organizations are mandated to adhere to regulatory standards that mandate stringent access controls. The establishment of proper permission structures aids in meeting these compliance requisites and evading legal ramifications.
- Mitigation of Data Loss: Through access control, the inadvertent loss of data is mitigated. Instances where users lacking appropriate permissions accidentally delete or overwrite vital files are curtailed.
- Resource Optimization: Permission management optimizes the allocation of resources. By limiting access to specific users or groups, unnecessary resource consumption is averted, and pertinent parties are granted access.
In summation, access and permission control are instrumental in upholding the security, confidentiality, and soundness of files and data. They thwart unauthorized access, prevent data breaches and losses, and contribute to regulatory compliance.
## Requirements
- Root rights;
- Debian 12 or higher version;
- Several knowledge about work OS ;
- Internet connection.
## Permission and attributes on Linux
In the Linux environment, the management of files and permissions is a thorough and intricate process, designed to ensure the utmost security and precision in handling data. Here’s a more in—depth look. Linux recognizes a spectrum of file types, including regular files, directories, symbolic links, and devices. Each type possesses unique attributes and permissions. In the Debian 12 we can check all attributes and permission of all users by the command below:
```
ls -l
```
Screenshot №1 — List of permission
But if we want to chek out determine file, then we need to use command below, indicate file that you want to check:
```
ls -l /etc/network/interfaces
```
Screenshot №2 — Single file
Let’s be clear and explain every parameter in that screen:
- The **-rw-r–r–** raw means the initial trio corresponds to the owner’s permissions, the second to the group, and the third to other users. That file is not directory or link, because first sign is dash. The **rw- **means owner have right to read, write, but has not for execute. The **r– **means group of owner have only read rights, also at the last triplet of other users;
- The **1 **means that file have one hard link;
- The **root:root **in that case parameter indicates owner and group for that file;
- The size of that file 175 bites;
- Data of last changes November, 8 2022 and name if file **Interfaces**.
Each file is linked to an individual user (owner) and a designated group. The act of creating a file establishes the creator as its owner, while a specific group is assigned to the file. Linux segments permissions into three categories: user, group, and others. Every category can be assigned distinct read, write, and execute permissions. And we can change all of that if we have right and straight permission to that by the chmod utility.
Permissions are also translatable into numeric forms, where read (r) equates to 4, write (w) to 2, and execute (x) to 1. The cumulative sum represents the numerical permission, such as 755.
```bash
chmod 755 interfaces
```
Screenshot №3 — Chmod numeric
But if we want to deny all permissions to the all type of users, we need to write command below:
```bash
chmod 000 interfaces
```
Screenshot №4 — Chmod numeric deny
The chmod command serves to modify permissions. This command accepts both symbolic and numeric notations. For instance, chmod u+w filename confers write permission to the owner. The **u** means owner, **g** assign to group, **o** for others and **a** for all . Then we indicate + or – or = to add, delete, indicate explicitly permission for users:
```bash
chmod u+rwx interfaces && chmod go-rwx interfaces
```
Screenshot №5 — Chmod symbolic
Or we can use equal command:
```bash
chmod u=rwx, go= interfaces
```
If you want to save write permission for other and group users, but you need protect them from delete, then use command below:
```bash
chmod +t interfaces
```
That’s basics of permission on the system, but what if we need more?
## Utility for addition control permission
In Linux, the core kernel provides a solid foundation for the operating system, but it doesn’t include all possible features and functionalities by default. The reason additional modules and packages are required for controlling access and file permissions is to give system administrators and users the flexibility to tailor the system’s behavior to their specific needs. Here are a few reasons why this approach is taken:
- Modularity: The Linux kernel is designed to be modular, which means that various functionalities can be compiled as loadable modules rather than being directly integrated into the core kernel. This keeps the core kernel relatively lightweight and allows users to add only the specific modules they need. This approach improves system efficiency and reduces the risk of unnecessary code affecting the stability of the kernel.
- Flexibility: Not all users and systems require the same level of access control and file permissions. By offering additional modules and packages, Linux distributions allow administrators to choose the appropriate tools for their specific security requirements. This flexibility ensures that systems can be fine—tuned to meet various needs, whether it’s a simple desktop system or a complex server environment.
- Security: Offering access control and file permission modules as separate packages ensures that users only install what they need. This reduces the attack surface of the system, as unnecessary features are not present. It also allows for regular updates and security patches to be applied specifically to these modules, enhancing the overall security of the system.
As you could highlight standart access control system have several lack: there isn’t system protect by random deletion significant file, integrity file system and etc. Let’s upgrade system!
Umask Usage: The umask command regulates default permissions for novel files and directories. It achieves this by deducting the specified mask from the maximum permission value to set defaults. By the default we can see that list of permission:
Screenshot №6 — Default permission
You can see default list of permission for file, lets change it:
```
umask u=rwx,go=
```
Screenshot №7 — Umask
That solution will help for time before you turn of machine or connection, for more long working that system you can add to the .bashrc or bash_login needed raw!
## Conclusion
The combination of well—defined access controls, precise permission settings, and the flexibility to add supplementary tools empowers system administrators to create a secure and tailored environment for managing files and data in the Linux ecosystem.
https://serverspace.us/support/help/how-to-check-get-postgresql-version.mdDiscover the simple steps to check and obtain the PostgreSQL version. Learn how to find your PostgreSQL version!
## Introduction
In the modern DBMS system we can do quite everything with data and skills of operating are significant. In that tutorial we consider process of checking database system management version, that can help if you want to install additional software and check accordance for you set, realize which are functions available on your version and etc.
## Check version
We already have installed DBMS PostgreSQL on our machine, first of all we switch user for **postgres**:
```
sudo -i -u postgres && psql
```
Screenshot №1 — Login
As you can see after entering command **psql **we have summary information about our version of using DBMS **15.3 **and next information of operating system. But how we can see more details? Let’s type command below:
```sql
SELECT version();
```
**Highlight! **After most requests we need to type semicolon as a sing end of request.
Screenshot №2 — Version of DB
For exit you can type command:
```
exit
```
Or just kill process by button combination Ctrl+Z
Screenshot №3 — Exit
## Conclusion
This tutorial has shed light on the importance of understanding and managing the version of a Database Management System (DBMS). In the realm of modern DBMS systems, having the skills to operate and navigate through the system efficiently is paramount. The ability to check the version of your DBMS serves multiple purposes, from ensuring compatibility when installing additional software to knowing which features are available in your specific version.
https://serverspace.us/support/help/python-string-concatenation.mdLearn the art of Python string concatenation: Discover efficient methods for combining strings in Python. Explore the different way's!
## What is it?
Concatenation strings in Python represent consolidation of two or more strings in one example. That can be helpful in the process of working with automatization tasks and routine actions. We consider classic and newer ways of unification, you can use that in your program and choose a more effective approach: operators and methods!
## Operator and Join
In the classic case we can use operator + to unified two or more at the past declared implicitly through the variable or explicitly in the line of command strings:
```
string1 = "Hi"
string2 = "Serverspace!"
string_res = string1 + ", " + string2
print(string_res)
```
In the result string we use an operator with the same data structures and without any problem we have one row in output. We can declare and consolidate in the explicitly way:
```
string_res = "Hi" + ", " + "Serverspace"
print(string_res)
```
Also don't remind about hybrid declare:
```
string_between = ", "
res = "Hi" + string_between + "Serverspace!"
print(res)
```
For using method of string type join, at the first we need to declare list of strings, that we will use:
```
strings_bef = ["Hi", "Serverspace"]
res= ", ".join(strings_bef)
print(res)
```
Comma in the quotation marks means separated sign, if we . Also we can declare in another way:
```
string1 = "Hi"
res = ", ".join([string1, "Serverspace"])
print(res)
```
But if we want to concatenate different data structures, then we need to use method str or format!
## Method’s
Also as in examples above we can declare that in one line through the str() method:
```
years = 35
text = "Congratulations on the " + str(years) + "th " + "anniversary"
print(text)
```
In the output of that code snippet we get the line “Congratulations on the 35th anniversary”.
If you have prepared data you should use the method below:
```
first = 5
second = "car's"
res = "I have {} {}".format(first, second)
print(res)
```
In that way the sign {} means field for the data and in the attribute to format we indicate the same data.
However, there is one more way to concatenate string, through the f-row:
```
goals = 10
print(f"I have done {goals} tasks!")
```
As a result we can see: “I have done 10 tasks!”, in my opinion, that is a more comfortable and fast way to concatenate!
## Conclusion
In conclusion, mastering Python string concatenation is an indispensable skill for any programmer. Whether you’re working on simple text manipulation tasks or complex data processing projects, understanding how to efficiently join and manipulate strings in Python can greatly enhance your coding capabilities.
https://serverspace.us/support/help/how-to-work-with-unicode-in-python.mdDiscover essential techniques for working with Unicode in Python. Learn encoding, decoding in your Python projects.
## What is it?
Unicode serves as a character encoding standard encompassing virtually all written languages worldwide and is currently the dominant standard for the Internet.
At its core, Unicode is a systematic approach to representing text in a linear fashion. Each Unicode character is assigned a unique code, an integer ranging from 0 to 1,114,111. These codes play a crucial role in representing characters across computer systems, including operating systems, web browsers, and various applications.
Unicode boasts several advantages when compared to alternative character encoding systems like ASCII and ISO 8859-1. It offers comprehensive support for a vast array of characters, covering all the written languages worldwide. Moreover, Unicode’s support for multibyte codes enables the representation of intricate characters, such as hieroglyphs.
But needed to highlight, Unicode isn't an algorithm of code, that’s a set of code point's, like a database of indicators. Therefore, there are code algorithms, which use that base, for example: UTF-8, UTF-16, UTF-32, UCA, BIDI, etc.
## How to use it?
Python already support Unicode and have in the standard template UTF-8/16/32 algorithm, we should use several instruction .encode and .decode to convert data:
```
print("That's data!".encode("utf-16"))
#Output b'\xff\xfeT\x00h\x00a\x00t\x00 \x00i\x00s\x00 \x00d\x00a\x00t\x00a\x00!\x00′
```
In the output we can see a set of separated data by slash sign and x is a 16-bit coding system. Also we can decode into latinics letters by the command:
```
print(b'\xff\xfeT\x00h\x00a\x00t\x00 \x00i\x00s\x00 \x00d\x00a\x00t\x00a\x00!\x00′.decode("utf-16"))
#Output 'That is data!'
```
As we highlighted before, Unicode, therefore UTF-8 supports Arabic letters, hieroglyphs and most of the written language:
```
print("العربية".encode("utf-16″))
#Output b"\xff\xfe'\x06D\x069\x061\x06(\x06J\x06)\x06″
```
And at the same way as we described above – decode:
```
print(b"\xff\xfe'\x06D\x069\x061\x06(\x06J\x06)\x06".decode("utf-16"))
#Output 'العربية'
```
Also you may don't identify algorithm to convert the value, for example:
```
print("Hi, my name is Jhon!".encode())
#Output b'Hi, my name is Jhon!'
```
And decode at the same way:
```
print(b'Hi, my name is Jhon!'.decode())
#Output 'Hi, my name is Jhon!'
```
There is method which allowed to display value of convert data to decimal calculus system:
```
print(list(b"\xff\xfe'\x06D\x069\x061\x06(\x06J\x06)\x06″))
#Output [255, 254, 39, 6, 68, 6, 57, 6, 49, 6, 40, 6, 74, 6, 41, 6]
```
List can be helpful in the different scenarios for your program and utility. However, not all algorithms use Unicode in the same way, if we try to represent our text message “Here's my data!”, therefore we will get various response:
```
print("Here's my data!".encode("utf-16"))
#Output b'\xff\xfeH\x00e\x00r\x00e\x00\x19 s\x00 \x00m\x00y\x00 \x00d\x00a\x00t\x00a\x00!\x00′
```
And the try to decode into the utf-8 or utf-32, we will see:
```
print(b'\xff\xfeH\x00e\x00r\x00e\x00\x19 s\x00 \x00m\x00y\x00 \x00d\x00a\x00t\x00a\x00!\x00'.decode("utf-8"))
#Output UnicodeDecodeError: 'utf-8′ codec can't decode
```
```
print(b'\xff\xfeH\x00e\x00r\x00e\x00\x19 s\x00 \x00m\x00y\x00 \x00d\x00a\x00t\x00a\x00!\x00'.decode("utf-32"))
#Output UnicodeDecodeError: 'utf-32' codec can't decode
```
In the two cases we get messages about impossibilities to decode data in that way!
## Conclusion
Unicode stands as a pivotal character encoding standard that encompasses the vast array of written languages worldwide, making it the dominant standard for the Internet. This systematic approach assigns a unique code to each Unicode character, allowing for seamless representation across various computer systems and applications.
https://serverspace.us/support/help/how-to-install-mysql-on-ubuntu.mdLearn how to install MySQL on Ubuntu with step-by-step instructions. Our guide covers the installation process to help you set up MySQL.
## Introduction
MySQL is a highly favored choice in modern network and automation systems for its robust features and capabilities. As a reliable and scalable Relational Database Management System (RDBMS), it ensures data integrity, critical in these contexts where structured data, such as configurations and device states, must be efficiently managed.
Its excellent performance, open-source nature, and extensive community support make it accessible and adaptable to various environments. MySQL’s security features safeguard sensitive information, and its compatibility with different programming languages and tools enhances integration. Moreover, it offers reliability and availability solutions, minimizing downtime. In essence, MySQL serves as the cornerstone for storing, retrieving, and analyzing critical data in contemporary network and automation systems.
## How to download it?
At the official site we can see different way to download various type of product, for bunch operating systems and packet managers:
Screenshot №1 — List of software
In our guide we will consider installation of two main components: Community Server and Cluster on Ubuntu. First product represent open-source and free database which fit to various cases: store data for applications, web-sites, small automation system or minimum usage data.
Second product represent by self enhanced version of Community product with key points difference scalability and fault-tolerance for using in complex automation system. That can be possible due to replication mechanism which copy data to several host at the same moment.
Screenshot №2 — Download interface
For installing package we can use graphic or CLI shell, due to reason of server usually don’t have graphic interface, we will consider CLI.
**Highlight! **If you use another OS you need to change category and work with them ahead.
Next step, download configuration file through wget utility, if don’t have they, just type:
```bash
apt install wget -y
```
And now indicate link in the option for download:
```bash
wget https://dev.mysql.com/get/mysql-apt-config_0.8.26-1_all.deb
```
Screenshot №3 — Download package
By that command we can install apt repository for the Ubuntu OS. Run it by the command below:
```
dpkg -i mysql-apt-config_0.8.26-1_all.deb
```
Screenshot №4 — Select version
We will install server, therefore choose first point in the menu above. Next we need to indicate version of using software, in our case it is **mysql-8.0**:
Screenshot №5 — Choose version
If you choose version and script roll again, you can find button **OK **at the bottom of menu and exit from that. Next step, we will install package with server:
```bash
apt update && apt install mysql-server -y
```
Screenshot №6 — Installation server
In the process of installation we can see pop-up menu, enter strong password with capital letters, special signs, don’t use frequently word and length should be 13 signs at minimum. Maybe you have question, why we use exactly thirteen signs for that. Average time for brute-forcing data with that type is approximately several decades.
Screenshot №7 — Password
Follow step, you need to choose standart of encryption:
Screenshot №8 — Encryption
After several screen with option we can enter to the MySQL system, by the command:
```bash
mysql -u root -p
```
Screenshot №9 — Enter in the MySQL
We indicate option with user, password and after entering the second, can use DBMS!
## Conclusion
MySQL’s versatility, performance, and security features make it a preferred choice for handling critical data in modern network and automation systems, and its installation process, as outlined in the guide, ensures a smooth setup on an Ubuntu-based system.
https://serverspace.us/support/help/neofetch-linux-system-information.mdNeofetch. Linux neofetch utilities. A tool to display information about your Linux system as a unique ASCII drawing.
Linux is an operating system that is both widely used and free. It provides users wide range of features and customization options. Among the useful tools available on Linux is Neofetch.
Neofetch is a command line utility designed for displaying information about installed system within a Linux terminal window. It provides details about OS version, kernel, processor, memory, and other relevant characteristics of the OS.
This is an extremely convenient tool for those who work with Linux, as it allows you to quickly get information about the system without having to use a GUI. This tool allows users to create unique drawings of their system. In this article, we’ll look at the basics of Neofetch and how it can improve your Linux experience.
## Peculiarities
Neofetch is a program written in Bash. It allows users to display information about their Linux system as an ASCII image.
A variety of Linux distributions are supported, including Ubuntu, Debian, Fedora, Arch Linux, and others. These distributions can be conveniently installed using their respective package managers.
## Installation
Neofetch, a command line utility for displaying system information on Linux, can be easily installed on various Linux distributions using a package manager. For instance, on Debian, you can install it by running the command:
```bash
apt update && apt upgrade -y
```
```bash
sudo apt-get install neofetch
```
## Key Features
Displaying system information: Using the Neofetch tool, you can display various system information, including username, hostname, distribution, architecture, kernel version and other information.
Customizable Output: You can customize Neofetch’s output by choosing what data to display and in what format.
Theme Support: Neofetch supports various ASCII art themes that are selected by the user.
Script support: Neofetch allows users to use their own scripts to customize the output.
## Usage
After installation, Neofetch can be accessed by executing the command “neofetch” on the terminal. This will present system details in ASCII art format:
```
neofetch
```
Screenshot №1. Just start program without any parameters
You can also use additional flags and parameters to customize Neofetch’s output to suit your requirements.
For example, you can change the output colors, add a distribution logo, or change the font:
```
neofetch –colors 2 7
```
To add a distribution logo, you must use the –ascii_distro parameter. For example, to add the Ubuntu logo, run the following command:
```
neofetch –ascii_distro ubuntu
```
Screenshot №2. Start with distro parameter
To change the font you must use the –font option. For example, to change the font to Inconsolata, run the following command:
```
neofetch –font inconsolata
```
Neofetch also supports ASCII art output. To do this, you must use the –ascii option. For example, to display system information in ASCII art format, run the following command:
```
neofetch –ascii
```
## Conclusion
Neofetch is a versatile and user-friendly utility that showcases your Linux system’s details in a distinct ASCII art format. It offers customizable output and is compatible with different Linux distributions and themes.
https://serverspace.us/support/help/how-to-connect-to-a-mysql-database.mdLearn how to connect to a MySQL database effortlessly with our comprehensive guide. Discover step-by-step instructions for connection. MySQL connect
## Introduction
Database systems are of paramount importance in the realm of enterprise operations for an array of distinctive rationales. They serve as the bedrock for the judicious storage and expeditious retrieval of data, assuring that the copious data streams generated by an enterprise are meticulously organized and readily accessible. Addressing the paramount concern of data security, databases furnish authentication and encryption capabilities that safeguard sensitive information from any unwarranted incursion. They also serve as the sentinels of data integrity, zealously upholding consistency rules, and are endowed with scalability features that can effortlessly expand to accommodate the burgeoning requirements of a growing enterprise.
Furthermore, databases provide the essential analytical underpinning for data-driven decision-making and extensive reporting, gracefully manage concurrent access by multiple stakeholders, and proffer robust mechanisms for data backup and recovery. Their role in facilitating adherence to regulatory compliance standards is pivotal, cementing them as an indispensable tool in the arsenal of contemporary enterprises.
## Local & Remote connect
If you have small or medium company where server in the physical access to you, connect through the local panel on your machine. Also if you have remote access to the server via SSH, then method also fit for your purposes! For those who use SSH, at first you need connect to the server:
```bash
ssh root@94.141.98.22
```
Instead of root, indicate login of user in server, also change IP-address for machine to yours! After that enter the password or if you have public key on the server, just connect to them. Next we need to write command **mysql** and credentials for connection:
```bash
mysql -u root -p
```
Option -u indicate user of database, them added administrator if you haven’t data, then require them from him. By -p parameter we indicate authentification via the password:
Screenshot №1 — Local connect
Alright, we are into the DBMS! There is another one way to connect to MySQL, for that we will use two machine. At the first we have installed client of MySQL, at the second server. On the **server side** we need to login in the system with privileges, which allows create user, after that write:
```sql
CREATE USER 'name_user'@'ip_user'
IDENTIFIED BY 'password';
```
Replace template credentials for your case, ip_user mean public client IP-address which will be use for identified them on the server. If you don’t now them, check it out by the command:
```bash
apt-get install curl -y && curl ifconfig.me
```
That line will install **curl **utility and check your IP-address:
Screenshot №2 — Check IP
In my case IP-address client is **109.207.171.124**, therefore after created user, list of them will be look like that:
```sql
SELECT user FROM mysql.user;
```
Screenshot №3 — User creation
**Remind! **That configuration we make on the server side! But, there is another one step for connect to remote database, we need to change config file, by the default MySQL server listen localhost. For change that open the file and change row with bind-address for **0.0.0.0**:
```
nano /etc/mysql/mariadb.conf.d/50-server.cnf
```
Screenshot №4 — Change configuration
Maybe you will not find needed parameter in the file, that okey, just **add that **below. Save changes by **Ctrl + O** and exit by **Ctrl + X**, if you use nano text editor. Reboot the service by the command:
```bash
systemctl restart mysql
```
```bash
systemctl status mysql
```
Screenshot №5 — Check status
Alright MySQL server was started up, let’s switch to the client side! For remote connect we need to type:
```bash
mysql -u remote -h 94.141.98.98 -p
```
Screenshot №6 — Client command
Enter your password into the filed below and then we can get access to the server!
## Conclusion
The database systems are the linchpin of efficient data management in enterprise operations. They not only ensure the orderly storage and quick retrieval of data but also serve as bastions of data security, upholding the integrity of information while adhering to regulatory standards. Moreover, databases provide the analytical foundation for informed decision-making, enable concurrent access, and offer robust backup and recovery mechanisms.
https://serverspace.us/support/help/common-sql-errors-description.mdLearn how to fix common SQL errors with this step-by-step guide. Discover typical mistakes in SQL syntax, data types, constraints, and how to troubleshoot query issues effectively.
When you type some commands to run database query, you’re hope to get an answer, but suddenly something going wrong and you got an error message instead.
## Preliminary steps
To illustrate common SQL errors we will create database with some data inside. Connect to your database server, create an empty database with _testdb_ name and make this database active:
```bash
mysql -u -p
create database testdb;
use testdb;
```
Create two tables into the database:
```xml
CREATE TABLE boys (
ID int,
Name varchar(20),
Surname varchar(20),
FavoriteDiscipline varchar(20),
Age int);
CREATE TABLE girls (
ID int,
Name varchar(20),
Surname varchar(20),
FavoriteDiscipline varchar(20),
Age int);
```
Then fill this tables:
```xml
INSERT into boys (Id,Name,Surname,FavoriteDiscipline,Age)
VALUES
(1,'Vanya','Sidorov','Math',15),
(2,'Petya','Shmelev','Literature',14),
(3,'Seryozha','Petrov','Music',15),
(4,'Fedya','Kurbanov','Geography',15),
(5, 'Vanya','Korolyov','History',15);
INSERT into girls (Id,Name,Surname,FavoriteDiscipline,Age)
VALUES
(1,'Olya','Sukhova','History',14),
(2,'Irina','Vlasova','Music',14),
(3,'Vera','Kurbanova','Literature',15);
```
We will use this database in next steps. Lets describe common SQL errors!
## Commands misstyping
Imagine if you said “Nice dukc” instead of “Nice duck”. The person would be confused because they don’t know what “dukc” means. It’s the same with a computer database. If you tell it to find a “TABEL” instead of a “TABLE”, it won’t know what to do because it doesn’t understand what “TABEL” means. One practical example – look at this simple sentence:
```sql
SELECT * FORM boys;
```
Can you see any mistakes in it?
If you want to see all the information about boys in the class, you need to write this code. But if you try to run it, you might see a message saying there is a mistake:
There is a mistake in this sentence. The word “FROM” is spelled wrong as “FORM”. Sometimes, words are spelled wrong in important parts of computer instructions, like when we say which information we want to select, where we want to get it from, or what conditions it needs to meet.
The most common mistakes people make when writing SQL are usually because they spell things incorrectly.
To solve the problem, you can use any online SQL editor that helps you by highlighting the correct words, like “SELECT” and “WHERE”, but it won’t highlight the misspelled word “FORM”.
So if we correct our statement we get:
## Missing “delimiter” symbols
Imagine that you are looking for information about a person named Fedya. We’re remember that his last name may be Kurbanov or Shmelev. Also, it seems he was really hate the mathematics but you not sure. So, lets run the query:
```sql
SELECT *
FROM boys
WHERE Name = 'Fedya' and NOT FavoriteDiscipline = 'Math' and (Surname = Kurbanov or Surname = Shmelev);
```
And an error appears
Do you know the reason behind it? Forgetting to close brackets is a common mistake in SQL that often occurs. So, when we fix the command query will be completed:
```sql
SELECT *
FROM boys
WHERE Name = 'Fedya' and NOT FavoriteDiscipline = 'Math' and (Surname = 'Kurbanov' or Surname = 'Shmelev');
```
The same principle applies to single quotes (‘ ‘) or double quotes (” “). In SQL, it is always necessary to have a pair of quotes. There is no situation where a quote (single or double) should be left without its corresponding pair.
For text values in a column, if there is a need to include a quote within the value (e.g., Surname = “O’Henry”), we either use a combination of different types of quotes or utilize escape characters. In SQL, escape characters are used to deactivate the special meaning of a character, and they are commonly placed before the character that needs to be escaped, such as by adding another quote near it.
## Aliases neglecting
When we combine information from different tables, it can sometimes confusing the machine because some columns have the same name. To avoid this confusion, we give each table a nickname called an alias. This helps the database know which column values to show us. It’s not always necessary to use aliases when combining different tables, but it is necessary when combining a table which has things with the same names.
Imagine we are looking for all boys and girls who love the same discipline. To do this, we can use a special code called _join_ and compare the content in both tables. So, lets construct the query according the “common rules”:
```sql
SELECT *
FROM girls INNER JOIN boys
ON FavoriteDiscipline;
```
If you see the words _ambiguous column name_ in the error message, it means you need to give a nickname to the table cause both tables. boys and girls, has a table with _FavoriteDiscipline_ name. To fix this error is enough to add table aliases to the query:
```sql
SELECT *
FROM girls INNER JOIN boys
ON boys.FavoriteDiscipline = girls.FavoriteDiscipline;
```
## Wrong order of statements
The order of statements is crucial in SQL. When writing SELECT statements, it’s important to follow a predefined keyword order to ensure the proper execution of the statement. There is no flexibility or room for deviation in this regard, but no “rocket science” too. Correct order is “, , , . Example – we will find all boys who called “Vanya” and order output by surname:
```sql
SELECT Name, Surname FROM boys WHERE Name = 'Vanya' ORDER BY Surname;
```
It is “hardcoded” order, if we try to swap the words we will get an error:
```sql
SELECT Name, Surname FROM boys ORDER BY Surname WHERE Name = 'Vanya' ;
```
Solution:
Don’t feel sad or give up! Look, all the important words are placed correctly and all the quote marks and brackets are closed.
## CAPITAL names
In most cases, SQL commands are case-insensitive, meaning that the letter case does not affect their execution.
However, if you create a table with the same name but with a different letter case, it can lead to further complications and potential problems. To illustrate lets create an “empty” table named GIRLS:
Now, if you accidetally change command case, it may be result of unexpected output. Imagine that we looking for surname of girl with name “Olya”. And, if we turn caps lock on, we got an error:
Solution – avoid using CAPITALIZED names if it’s possible.
These are the typical errors that individuals often make when writing SQL code. Making mistakes is a common occurrence while learning, and it’s a natural part of the process of programming. Don’t feel discouraged or give up. As you gain more experience, it’s helpful to approach your code in an organized manner, allowing you to identify and rectify mistakes more efficiently.
## Conclusion
Understanding common SQL errors is essential for anyone working with databases, especially beginners. From simple typos and missing quotes to ambiguous column names and incorrect query structure — these mistakes are part of the learning curve. The good news is that every error is an opportunity to better understand how SQL works. With practice, attention to detail, and a solid grasp of syntax, you’ll be able to write efficient, error-free queries. Always double-check your commands, use consistent naming, and don't hesitate to test your queries in smaller chunks before executing them on full datasets.
## FAQ
- **Q: Why does my SQL query return a syntax error even though everything looks correct?**
A: Even a small typo (like writing FORM instead of FROM) or a missing quote/bracket can cause a syntax error. Double-check all keywords and punctuation.
- **Q: What does “ambiguous column name” mean?**
A: This usually happens when two joined tables have columns with the same name, and the database doesn't know which one to use. Use table aliases (e.g., table_name.column_name) to clarify.
- **Q: Are SQL commands case-sensitive?**
A: SQL keywords are typically case-insensitive, but table and column names may be case-sensitive depending on the database system and configuration.
- **Q: What is the correct order of SQL statements in a query?**
A: A typical SQL query follows this order: SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY. Changing this order will cause errors.
- **Q: How can I avoid missing quote and bracket issues?**
A: Use a code editor with SQL syntax highlighting, and always pair your quotes/brackets. When in doubt, break down your query into smaller parts and test each step.
- **Q: Can I use the same table name in different cases (e.g., “Users” and “users”)?**
A: It's not recommended. Some databases treat names case-sensitively (like PostgreSQL), while others don't (like MySQL on Windows). Stick to a consistent lowercase naming convention.
https://serverspace.us/support/help/how-to-show-the-list-of-all-databases-in-mysql.mdLearn multiple methods for displaying the list of all databases in MySQL, including command-line and graphical tools. MySQL show tables
## Introduction
The integration of Database Management Systems (DBMS) is imperative, driven by a multitude of compelling imperatives. Foremost, DBMS systems furnish an impeccably structured and methodical framework for the efficacious storage and administration of expansive datasets. They ensure data integrity and precision, orchestrating the seamless facilitation of concurrent access and alterations by diverse users, all the while upholding the tenets of data consistency and reliability, attributes of paramount importance to enterprises and applications reliant upon the veracity and uniformity of their data.
Furthermore, DBMS systems offer an aegis of formidable security measures, including stringent user authentication and robust data encryption, effectively fortifying the bastion of protection for sensitive information against any untoward breaches or unwarranted encroachments. In addition, they empower the facile retrieval, in-depth analysis, and comprehensive reporting of data, thereby manifesting as a linchpin for decision-making steeped in data-driven discernment.
In that tutorial we consider one topic of administration DB: different ways to check list database on your DBMS system!
## Ways to see Databases
In the most of configuration usage DBMS we have installed version to server without GUI, which help interactively navigate through the whole system. That costs help to save efficiency, space memory and other resources on the server machine. But manage such system become difficult tusk for unprepared user so we can fix that! In the CLI of your running server enter command below:
```bash
mysql -u root -h localhost -p
```
Screenshot №1 — Get into
In that case you need to replace **root**,** localhost **for your credential optional. Option -u means user which will connect to the system, -h means target host for connection and -p authentification by password. After that enter password and wait login system proceed. Alright!
Now we can use command to see all DB:
```
SHOW DATABASES;
```
Screenshot №2 — Show DB
The I/O system display on our screen short information about created DB in the system. It’s important to highlight! Command not case-sensitive, you can write them in the different way, but label and name of DB, tables, user and another objects in contrast case-sensitive!
Second way to see list of DB, by use GUI system in the WEB its phpMyadmin. In that case you need to have pre-installed web-part of system:
Screenshot №3 — DB GUI
At the top of the screen in the tab, you can see Databases, by click to that field at the left list will displayed!
## Conclusion
This tutorial has equipped you with the knowledge and tools necessary to navigate and manage databases effectively, whether through command-line interactions or user-friendly GUI interfaces.
https://serverspace.us/about/news/public-cloud-vmware-in-kazakhstan-cloud-provider-serverspace.mdServerspace has unveiled a new location for its VMware cloud service. This is easy for users now to set up VS at the Kazteleport, Kazakhstan.
Cloud provider Serverspace introduces VMware server offerings in a Kazakhstan-based location.
Global cloud vendor Serverspace has unveiled a new location for its [VMware cloud service](https://serverspace.us/services/iaas.md). This is easy for users now to set up VS at the Kazteleport data center situated in Almaty, Kazakhstan.
Serverspace keeps broadening the VMware cloud’s regional influence, facilitating the establishment of a dependable cloud framework grounded on Enterprise-grade hardware. The Kazteleport Data Center aligns with global benchmarks for dependability, accessibility, and stringent security stipulations for server tech. This center boasts continuous equipment surveillance and fortified defenses against cyber threats and unsanctioned infrastructure intrusions.
The cluster incorporates 8 Cisco UCSB-B200-M5 blade servers and dual Intel® Xeon® Gold 6248R CPUs, each operating at 3.00GHz. Owing to state-of-the-art hardware, these servers ensure optimum security metrics for the data handled, as well as its accessibility and efficiency during extensive data operations.
“_Integrating Kazakhstan into the VMware, increasing the Serverspace’s user abilities. Our team employs top-notch equipment tailored for heavy data processing and computational tasks to guarantee the efficacy and dependability of our VMware cloud service. For Kazakhstan users, having the cluster situated in a local data center means expedited request handling and diminished latency during server communication_” said Svetlana Sharapova, the Head of Serverspace.
The public cloud, powered by VMware, offers the capability to [deploy virtual servers](https://my.serverspace.us/servers/create) with adaptable setups. Operating on Intel Xeon processors, it boasts swift scalability and allows for seamless migration of pre-existing virtual machines into the cloud.
**How to create a VM based on VMware in Kazakhstan?**
- Log into your account or sign up on [Serverspace](https://serverspace.ru/).
- Initiate server creation under the VMware cloud tab.
- Select the Almaty Data Center and designate server resources.
- Click the ‘create’ button.
https://serverspace.us/about/blog/global-presence-with-five-strategic-data-centers.mdServerspace reinforces its commitment to excellence with its global presence manifested through key data centers spread across the world.
In today’s digital age, seamless connectivity and reliable data storage solutions are paramount for businesses and individual users. With our reliance on technology only set to increase, the need for robust and strategic data infrastructure becomes even more pronounced. An international cloud provider, **Serverspace reinforces its commitment to excellence** with its vast global presence manifested through five key data centers spread across the world.
Having multiple data centers across different continents means that data doesn’t need to travel vast distances. This proximity ensures quicker access times and improved user experiences. Furthermore, all regions come with their own sets of data storage and management regulations. A global presence allows Serverspace to adhere to these local guidelines more effectively.
## **USA – NNJ3, New Jersey**
NNJ3 represents a data center situated a 30 miles away from the Manhattan, and nestled within Parsippany, New Jersey, USA. This facility boasts a pioneering cooling mechanism.
Moreover, due to its unique structural attributes and its advantageous positioning in the city (approximately 287 feet above sea level), it offers **robust data protection**, even during natural calamities.
[Read more](https://serverspace.us/infrastructure/datacenter-new-jersey.md)
## **Netherlands – AM2, Amsterdam**
The “AM2” facility stands as one of Europe’s premier DC, boasting **top-tier certifications** that attest to its dependability and operate in line with the PCI DSS standard. This center is strategically situated in Amsterdam, the Netherlands.
Equinix, Inc. is the esteemed proprietor of the AM2 DC in Amsterdam. With over two decades of expertise in crafting and upkeeping data centers, the company dominates the global arena, proudly operating 200 data centers spread across 24 nations and spanning five continents.
[Read more](https://serverspace.us/infrastructure/datacenter-amsterdam.md)
## **Turkey – Star of Bosphorus (Istanbul)**
Star of Bosphorus stands as Turkey’s premier ‘operator-independent’ commercial DC, with the distinct honor of having the Uptime Institute Tier III Design & Resort certification.
This facility is ingeniously constructed for **scalability, encompassing four distinct DCMs**. Every individual module is fortified with its unique infrastructure, encompassing power/cooling/fire protection, and robust physical security mechanisms.
[Read more](https://serverspace.us/infrastructure/data-centers.md)
## **Kazakhstan – Kazteleport, Almaty**
Kazteleport stands out as a **leading-edge facility in the CIS**, constructed with contemporary engineering techniques and best practices.
Using global standards, this data center ensures high reliability, availability, and full security for servers hardware.
[Read more](https://serverspace.us/infrastructure/data-center-almaty.md)
## **Canada – TOR3, Toronto**
TOR3 complies with international Tier III, PCI DSS, and ISO accreditations. Situated in Toronto, it stands as a testament to advanced data management.
Under the stewardship of Cologix, TOR3 maintains **rigorous standards** concerning power management, security measures, environmental control, and backup protocols.
[Read more](https://serverspace.us/infrastructure/data-center-toronto.md)
## Future development
Serverspace’s decision to establish these five data centers isn’t merely about physical expansion. It’s a testament to their commitment to delivering unparalleled services to their clients, irrespective of where they are. We are continually expanding our sphere of influence and preparing to launch a new location. This means that very soon our users will be able to deploy IT infrastructure in the UAE. Our equipment will be housed in the Equinix [Dubai DX1 data center](https://www.equinix.com/data-centers/europe-colocation/united-arab-emirates-colocation/dubai-data-centers/dx1).
DX1 is aptly positioned in Dubai, a hub at the crossroads of the globe’s most vibrant markets. This Dubai data center acts as the epicenter for connectivity within and beyond the MENA region. Establishing a presence in Equinix Dubai opens doors to thriving business ecosystems that can significantly reduce costs, enhance performance, and streamline your data center integrations.
The facility boasts recognitions from audits like SSAE16 and has garnered certifications such as ISO and LEED. Furthermore, **DX1 has been honored with industry accolades** for its operational dependability, leadership in the market, and sustainable endeavors.
Each center is equipped with state-of-the-art technology, ensuring data safety, high-speed access, and 24/7 support. Our global network stands as a beacon of their dedication to excellence and their understanding of evolving technological needs.
https://serverspace.us/about/news/new-debian-12-bookworm-os-template.mdCloud provider Serverspace has added the new Debian 12 "Bookworm" OS template. This release bringing a series of updates.
Cloud provider Serverspace has added the new Debian 12 “Bookworm” operating system template. Now, users can create virtual servers (VS) with this new OS in both the [vStack](https://serverspace.us/services/cloud-servers.md) cloud and [VMware](https://serverspace.us/services/iaas.md) cloud services. The release of this OS took place on June 10, 2023, bringing a series of updates.
The main points of the release are:
- Updated Linux kernel to version 6.1;
- Significantly improved performance of the BTRFS file system;
- Introduction of a new default audio server;
- Software updates for graphical environments, user and server applications, as well as development tools;
- Support for new versions of desktop environments;
- Introduction of a new desktop theme;
- Read/write support added for APFS (Apple File System);
- Inclusion of new fonts.
[slider background=”on”][slide uri=”/wp-content/uploads/2023/10/debian-12-desktop.webp” caption=””][/slide][/slider]
For a comprehensive list of updates, refer to the [official Debian website's documentation](https://www.debian.org/releases/bookworm/). Support for Debian 12 will persist for 5 years.
Steps to create a server with Debian 12 OS in the Serverspace control panel:
- Log into the Serverspace [control panel](https://my.serverspace.us).
- Choose either the [vStack](https://my.serverspace.us/vstack/servers) cloud or the [VMware](https://my.serverspace.us/servers) cloud service.
- Begin the cloud server creation process.
- Select the Debian 12 operating system.
- Choose additional server resources.
- Click on the “Create Server” button.
https://serverspace.us/about/blog/ai-horror-story.mdServerspace is launching a project that will merge the ideas of users with the capabilities of AI into a unique digital masterpiece.
### Trick or treat!
Halloween is around the corner, and Serverspace launched a new project that merged the creative ideas of worldwide users with the capabilities of artificial intelligence into a unique digital masterpiece. From an array of words collected by users worldwide, the AI crafted a spooky story and illustrated it.
This project isn’t just another interactive campaign. It’s an exploration of the boundaries where human imagination intersects with technological innovations. We invite you to dive into this exciting experiment! **Happy Halloween!**
# Boogieman from the Darknight
Life was blasting on the neon-lit streets of Darknight. It was the hub of technological advancement, where dreams were woven into lines of code, and reality merged with virtuality. The air buzzed with data all around, like an eternal mist. Anita, a young DevOps engineer, hunched over in her apartment. She was used to receiving odd emails (mostly from clients), but today was different. A sinister message flashed on the screen: _“I am going to eat your soul”_.
Cold sweat formed on her forehead as she read the signature — the fearsome Boogeyman from Darknight. Memories of tales that frightened everyone attending early-grade computer classes raced through her mind: stories of a digital demon that grew stronger by feeding off the greed of tech aficionados. Before Anita could catch her breath and shake off the fear, another alert blinked — _the security system detected a brute force attack_. As the surrounding walls began to crumble and her computer started to smoke, she realized she was caught in a dangerous game and ran out of the apartment. She knew where she had to rush to.
Anita’s frantic footsteps echoed loudly in the cold alleys of Darknight as she sought out the one person who might help her – Sir Samuel Vimes. The mage, known for his unparalleled knowledge, played his clandestine game from the backroom of the _“Echo of The Dark Knight”_ pub, aiding those who had also fallen prey to the Boogeyman. “Echo of The Dark Knight” was a true haven for techies. Sir Samuel Vimes had opened this pub a decade ago as a haven for those victimized by the Boogeyman. Every soul in Darknight knew him to be a friend. As Anita entered the pub, she felt the weight of many stares, including the gaze of a mysterious man named Timbuktu, who sat in the shadows, smoking his pipe and intermittently coughing. After hearing Anita’s story, Mr. Vimes pulled out two cut-glass tumblers from under the counter, filled them with rum, and informed our heroine that Timbuktu was the only person to have faced the Boogeyman and lived to tell the tale. He looked at Anita and confidently gestured to an empty chair at Timbuktu’s table, and Anita understood – she needed to sit.
Sir Samuel Vimes, silhouetted against the dim glow of myriad screens, listened attentively. _“The Boogeyman’s game is old, older than any code”_, Timbuktu muttered. _“You need to navigate the intricacies and traps of his digital domain”_. He told her about the eyes that stalk players – eyes devoid of sclera, filled only with a void so deep that it reflects humanity’s darkest fears. At that moment, another message arrived at Anita’s cell phone – it contained equally terrifying contents, a list of tasks that the Boogeyman demanded she complete to stay alive. Realizing there was no hiding from the hooded terror, Anita resignedly rose from her chair, made her way to the exit, and gave one last glance to the inebriated local tech drunkards. Day by day, Anita would check the task list, do what she could, and slowly forge ahead, as if she was progressing through the plot of her favorite computer game, “Cyberpunk: Unity”.
For every puzzle solved, Anita received a reward. These weren’t sweet candies but rather intriguing artifacts: a rusty chest whispering of ancient tales, a vessel filled with sticky resin shimmering peculiarly, and, curiously, a potato meticulously carved into the shape of a menacing skull. However, not all riddles yielded to her understanding – with every failure, she felt a digital noose tightening around her neck. She heard the ghostly echo of the Boogeyman’s laughter, sensed the chill of his presence, and saw data clusters in her apartment corrode with a grating sound that resonates deep within her soul.
While Anita’s fear was palpable, her curiosity persisted, and every reward seemed tantalizing. But the city’s shadows whispered a warning: Not all players emerge alive. And as Darknight’s streets grew darker, it felt like the light dimmed in sync with Anita’s faltering heart. The stakes had never been higher, and time was running thin Glancing at the task list, Anita ventured into the Catacombs.
The Darknight Catacombs harbored many secrets. Beneath the city’s bustling streets, in one of the ancient chambers, Anita stumbled upon the legendary Sacred Juicer. Its images were depicted in every history textbook, street banners, and engravings. Engraved on the side of the juicer was a verse, speaking of its power and the way to wield it. With reverence, she followed the inscribed directions, placing a ripe peach found nearby into the juicer. Golden, luminescent juice flowed into the container.
Then she lit a mysterious candle she had received as one of the “rewards”. When the wax fully melted, Anita mixed it with the peach juice. The room was filled with a fluorescent green light and a pungent acrid smell. Then, visions began. Horrifying scenes played out: the elongated, shadowy form of Boogeyman combined with quasi-humanoid creatures and performed some enigmatic ritual. Anita’s fear grew, and another vision forced her awake – she was lying on the cold floor of the catacombs, with a shadowy figure with empty eyes observing her every move. Anita leaned against the damp wall, sighing bitterly, but she wasn’t ready to give up. She knew – the main challenge was yet ahead.
The game was becoming increasingly intricate. Each task was harder than the previous one. Now, Anita was faced with a riddle encoded as “DevOps Trouble”. Just mentioning it made the digital realm of Darknight pulse with fear. Anita knew about it from the start of the game – Sir Samuel Vimes, on their first meeting at “Echo of The Dark Knight”, told her that this riddle was unsolvable. Nobody in the city had managed to decipher it, except for Timbuktu. Feeling desperate and weary, Anita returned to the bar, sat down next to Timbuktu again, and asked how he managed to solve the “DevOps Trouble” riddle. He, in the traditional Darknight manner, mysteriously replied – _“Follow your dreams”_. Anita immediately realized that help should be sought from an unexpected source – a somnologist in the “Bloodflow” district.
The woman, whose name no one knew, had an amazing ability to understand the workings of the mind during sleep. Upon seeing Anita, she immediately grasped the situation and explained that Bugiman’s riddles, especially “DevOps Trouble”, were meticulously designed to invade the player’s dreams and force them to relive their failures until exhaustion set in. It was a brutal psychological warfare targeting the player’s most vulnerable spots. Anita opened her notebook to jot down essential thoughts, but couldn’t grasp the essence. The somnologist spoke incoherently, stumbling over words and occasionally sobbing. The only thing Anita understood was that she should only rely on herself and her strength. Dejected and broken, Anita left “Bloodflow”.
When days turned into nights and the boundaries of the game blurred, Anita received a lavishly decorated invitation with a blood-red seal. It was an invitation to the “Bloody Pact” – a gathering of players ensnared in Bugiman’s treacherous game. The corridor of the building where the meetings were held was illuminated in red and filled with numerous life-sized dolls. Some players believed that such a doll could absorb Bugiman’s wrath and shield them from inevitable defeat.
In a large hall, lit by flickering candles, she met other players with the same vacant and ghostly gaze as hers. They exchanged stories – about encounters with Boogeyman, eating the horribly tasteless pizza from the “Reward” as part of a task, and their collective searing fear of Boogeyman. The atmosphere was a mix of camaraderie and dread. They all knew that this meeting was merely a brief respite. The real game, with its dangers and promises, awaited them outside.
Anita was well aware that she faced an unending onslaught of challenges, each increasingly undermining her spirit. Watching all these hapless souls, she delved deeper into her consciousness, drowning within, and just when the weight of it all threatened to crush her, she noticed a basket of fruits sitting on a modest table in the middle of the room. They were dimly lit, with moths fluttering around them. To an outsider, it might seem trivial, mere ordinary fruit, but to Anita, they became a heart-wrenching symbol of times gone by.
_“My little mouse”_, she whispered, tears streaming down her face as she remembered the small kitten she adored and lost. While Anita indulged in fresh fruits, her kitten loved to play with fireflies, batting at them with tiny paws. But as nostalgia gripped her, a haunting melody from the past resonated in her mind: teleportation into butter. It wasn’t just a lullaby sung by her grandmother. For her, it held a deeper, more sinister meaning. This tune was not just a memory, but a hint, a riddle she needed to solve to continue this treacherous game.
With the melody ringing in her ears, Anita wandered the streets of Darknight until she stood in front of an old, forgotten pool. The water was eerily still, and as she peered into its depths, she was met with a horrifying reflection: eyes devoid of sclera, filled with profound emptiness. The eyes seemed to track every move she made, their gaze frozen yet alert. The surrounding darkness was momentarily illuminated by a shimmering green fluorescent light, casting grotesque shadows.
Suddenly, the calm was shattered. Bushes rustled, ripples disturbed the pool’s surface, and from the dense greenery emerged the menacing figure of Boogeyman, flanked by his quasi-humanoid accomplices. Their presence filled the air with palpable dread, and it seemed the stakes of the game had just escalated once again.
Anita stood tense, tightly gripping a rusty chest in her hand. Her eyes were fixed on Boogeyman. Taking a deep breath, she cautiously opened the chest to reveal a box labeled” _“SLAY”_.
_“What kind of game is this, Boogeyman?”_ she asked, her voice firm, though with a hint of tremble.
Boogeyman smirked, _“A simple trick, my dear. Open a chest, but for that, you’ll need this container, a potato, and some tar”_.
Confused but determined, Anita ran home. Her bedroom was just as she left it, with scattered belongings and an untidily made bed. Anita placed the potato inside the chest and slowly poured the viscous tar over it. She had heard tales of such tricks from Sir Samuel Vimes, but she was unsure of both the sequence and method. As the tar dripped, forming a glossy layer over the potato, she hoped she was doing it right.
The heroine began to wait. But when seconds turned into agonizing minutes, it became clear that Anita had made a mistake. The “SLAY” box remained tightly sealed. Bugiman’s taunting laughter echoed menacingly around her.
_“You thought you could beat me at my own game?”_, he mocked.
Anita took a step back, her heart pounding wildly. Quasi-humanoid creatures circled her, their corrupted data clusters evident in their glitchy movements.
_“No”_, she whispered in despair.
Boogeyman advanced, his eyes – a deep, dark void – locked onto hers. And at that moment, she realized a horrifying truth. The game was never fair. It had always been a trap, a technological snare set in a world dominated by greed and malice.
As her vision blurred, the last thing Anita saw was Bugiman’s ghostly smirk, sealing her fate. She was now another lost soul, her digital essence forever merged with Darknight, proving that in the expanse of this city, no one ever emerges from the game victorious.
https://serverspace.us/support/help/how-to-use-the-chroot-in-linux-2.mdLearn how to use the Chroot command in Unix for system recovery after a crash or malicious attack on a VDS server hosted on Serverspace.
The Chroot command in Unix allows users to make a secure temporary milieu for programs by changing the root of the file systems. This isolation prevents any harm or damage to the primary system. [In the previous episode](https://serverspace.us/support/help/how-to-use-the-chroot-in-linux/), we consider two other functions of this utility.
## How to use it?
Chroot creates a new shell environment, meaning that any modifications made within this environment will only affect files and directories within the Chroot environment, not the central system.
For instance, if you need to test a program on a different operating system version that requires specific libraries unavailable on your primary system, you can build a Chroot environment with the necessary libraries and run the program in this isolated environment. This ensures that the program works correctly without causing any issues on the main system.
However, it is crucial to note that Chroot should only be used by experienced users because improper usage may cause system instability. Moreover, Chroot can help recover systems following emergency failures or malicious attacks.
## Installation and exploit
In that article, we consider one of the main functions of utility — system recovery. Chroot can be used for system recovery after a crash or malicious attack. They mean not a last role in that mechanism, the program isolates the file system from the impact that can appear after maintenance. Let's have a look!
If you have VDS on Serverspace then you need to open the control panel and go to the recovery tab:
Screenshot №1 — Preparation
Screenshot №2 — Tab
Then reboot your server and go ahead. Before usage, main utility update and upgrade your system :
```bash
sudo apt update -y && sudo apt upgrade -y
```
Screenshot №2 — Update
In the first step, we need to discover the label of the recovery disk with the command below:
```
fdisk -l
```
Screenshot №3 — Label of device
Mount device for point, therefore we will work with this. The command below creates a folder and that point:
```
mkdir mnt && mount dev/vda2 /mnt
```
Screenshot №4 — Mount disk
Then create a folder and copy the configuration file:
```
mkdir /mnt/chroot/etc && cp -p /etc/(passwd,group,shadow,gshadow} /mnt/chroot/etc
```
Screenshot №5 — Configuration files
Creating folders and mounting directories into the system:
```
mkdir /mnt/chroot/dev
mount –bind /dev /mnt/chroot/dev
mkdir /mnt/chroot/proc
mkdir /mnt/chroot/sys
mount –bind /proc /mnt/chroot/proc
mount –bind /sys /mmt/chroot/sys
```
Screenshot №6 — Mounting folder
Start the virtual environment and perform the necessary operations to restore the system, for example, updating packages or restoring the boot sector:
```
chroot /mnt
```
Screenshot №7 — Start chroot
After the operations are completed, exit the chroot environment and mount the file systems:
```
umount /mnt/chroot/sys && umount /mnt/chroot/proc && umount /mnt/chroot/dev
```
Screenshot №8 — Unmount directories
And at the end of the process reboot your preparation system!
## Conclusion
The **Chroot** command in Unix provides a secure temporary environment for running programs by **isolating** them from the main system. This isolation prevents any harm or damage to the primary system and can be used for testing programs on different operating system versions with specific libraries unavailable on the primary system. However, it is important to note that it should only be used by experienced users because improper usage may cause system instability. Additionally, **Chroot** can also be used for system recovery following emergency failures or malicious attacks.
In this article, we have seen how to use Chroot for system recovery after a crash or malicious attack on a **VDS** server on Serverspace. By following the steps outlined, users can update and upgrade their system, discover the label of the recovery disk, mount the device, create folders and copy configuration files, start the virtual environment and perform necessary operations like updating packages or restoring the boot sector. Finally, they can exit the chroot environment and mount file systems before rebooting their preparation system.
https://serverspace.us/support/help/gixy-nginx-configuration-analyzer.mdLearn how to install and use GIXY to detect errors and security issues in your Nginx configuration. Boost server reliability and harden your setup with this step-by-step guide.
GIXY is a powerful open-source tool designed specifically for analyzing Nginx configuration files. Acting as a static code analyzer, it helps system administrators and DevOps engineers identify security vulnerabilities, misconfigurations, and even opportunities for performance optimization. By scanning the configuration without running the server, GIXY provides quick feedback on potential issues that could affect the stability, security, or efficiency of your Nginx-based infrastructure.
Here are some key features and functionalities of GIXY:
- **Security Analysis**: GIXY focuses on security by detecting common security misconfigurations within your Nginx configuration files. It checks for known security vulnerabilities, insecure configurations, and potential attack vectors.
- **Misconfiguration Detection**: GIXY helps identify configuration settings that may lead to unexpected or undesired behavior. It detects issues such as duplicate or conflicting directives, incorrect syntax, unused or obsolete settings, and more.
- **Performance Optimization**: GIXY can also provide recommendations to optimize the performance of your Nginx server. It suggests improvements and best practices that can enhance the efficiency and responsiveness of your server configuration.
- **Detailed Reports**: GIXY generates detailed analysis reports, which include information about the identified issues, their severity level, and suggestions for remediation. The reports can be viewed in the terminal or exported to text or JSON, etc., for further analysis or sharing.
By using GIXY, you can proactively detect and resolve potential security risks before they lead to real-world issues. The tool ensures your Nginx configuration is properly structured, adheres to best practices, and avoids common pitfalls that can expose your server to attacks or cause downtime. In addition to security, GIXY also highlights configuration aspects that may impact performance and maintainability, helping you create a more efficient, stable, and reliable environment for your Nginx-based applications or websites.
## Installation
**Prerequisites**:
- Ensure that you have Nginx installed on your Ubuntu system.
- Make sure you have Python and Pip installed. If not, you can install them by running the following command:
```bash
sudo apt update
sudo apt install python3 python3-pip
```
Gixy Installation:
Install GIXY using pip by running the following command:
```bash
pip install gixy==0.1.20 pyparsing==2.4.7
```
We are installing pyparsing version 2.4.7 because in newer versions there is an error that doesn’t let Gixy parse nginx.conf as intended
## Configuration Analysis:
Once GIXY is installed, you can analyze your Nginx configuration files.
To analyze a specific Nginx configuration file, use the following command:
```
gixy /etc/nginx/nginx.conf
```
If your nginx.conf is moved somewhere else – change it to the actual path.
GIXY will analyze the Nginx configuration file and generate a report with potential security issues, misconfigurations, or performance optimizations.
The report will be displayed in the terminal.
Other than the terminal GIXY provides various output formats for the analysis report, including text, and json. You can specify the output format using the **`-format`** option.
For example, to generate a text report, you can use the following command:
```
gixy /etc/nginx/nginx.conf –format=text –output=/path/to/output
```
Replace “/path/to/output” with the desired path and filename for the HTML report.
GIXY offers additional options to customize the analysis process. You can explore them using the “gixy -h” command.
Remember to back up your Nginx configuration files before making any changes based on GIXY’s recommendations and test any modifications in a non-production environment.
## Conclusion:
GIXY is a valuable tool for any system administrator or DevOps engineer working with Nginx. In this guide, you've learned how to install GIXY, run a configuration analysis, interpret the results, and export reports in various formats. By integrating GIXY into your regular server maintenance routine, you can proactively detect security vulnerabilities, fix misconfigurations, and apply performance best practices — all before they affect your production environment. Whether you’re managing a single web server or a fleet of Nginx-based applications, GIXY helps ensure that your configurations are clean, secure, and optimized for reliability.
## FAQ: Using GIXY to Analyze Nginx Configuration
- **Q: Is GIXY still maintained?**
A: GIXY is no longer actively maintained, but it remains a useful static analysis tool for detecting common misconfigurations in Nginx. Be aware of compatibility issues with newer Python or pyparsing versions.
- **Q: Does GIXY support all Nginx directives?**
A: GIXY supports most commonly used Nginx directives, but it may not recognize newer or custom modules. Always double-check results manually when working with advanced configurations.
- **Q: Can I use GIXY in production?**
A: Yes. GIXY is a read-only tool and safe to run on production systems. However, always test any changes based on its recommendations in a staging environment first.
- **Q: What should I do if GIXY fails to parse my config?**
A: Try downgrading pyparsing to version 2.4.7, as newer versions can cause parsing errors. Use the following command:
```bash
pip install pyparsing==2.4.7
```
- **Q: Can GIXY be integrated into CI/CD pipelines?**
A: Yes. Since GIXY is a CLI tool and supports output in text or JSON, it can be integrated into CI workflows to automatically validate Nginx configs before deployment.
https://serverspace.us/support/help/screen-in-ubuntu-linux-screen-command.mdMaster the art of multitasking with the Linux screen command in Ubuntu. Learn how to create, manage, and detach.
## Introduction
One of the main requirements for any IT—specialist that have in your backpack of soft skills it’s the ability to automatization! But there are utility which help to destroy barrier technical obstacles in Linux. One connect — one session, it’s kinda uncomfortable for usage and for this purposes there is **screen**.
**Screen** utilizes two main components to facilitate the creation and management of virtual terminals. The first component is the terminal session, which acts as a container for multiple virtual terminals (windows). This terminal session handles the input and output for all the virtual terminals within it.
_The second essential component_ is the terminal multiplexer, which is responsible for managing various aspects of the virtual terminals within the terminal session. It processes commands related to switching between windows and handles the management of virtual terminals.
When a new window is created within screen (by using commands like Ctrl+a, c), the terminal multiplexer generates a new virtual terminal and initiates a shell process (e.g., bash) for that specific window. Each virtual terminal functions as an independent process, managing its input and output, as well as having its own environment and working directory.
When you disconnect from the screen session (Ctrl+a, d), the terminal session remains active on the server, and the virtual terminals continue running in the background. Upon reconnection (e.g., screen -r command), you can regain access to your virtual terminals, and the processes running inside them persist.
In summary, the combination of the terminal session and terminal multiplexer enables screen to provide an efficient way to work with multiple processes within a single terminal window. Moreover, it allows users to disconnect and later resume their work seamlessly, making screen a powerful and versatile tool for efficient command—line operations on Linux.
## Requirements
- Root rights;
- Ubuntu 16 or higher version;
- Several knowledge about work OS ;
- Internet connection.
## Installation
First of all we need to update and upgrade system packages in our machine for their properly work:
```bash
apt update && apt upgrade -y
```
Screenshot №1 — Updating packages
After update and upgrade system we need to install needed package of **screen **utility, that can help to work with different screens:
```bash
sudo apt-get install screen
```
Screenshot №2 — Installation
Press **Y **button for start installation process and wait until it will finished.
On almost all distributions we can see that package and installing process won’t be complex. That’s don’t take a long time, be patient. For start utility—type command syntax **screen**, you will see the hello—message:
```
screen
```
Screenshot №3 — Hello message
Press Space or Return to skip pop—up window then you will see new clear screen, utility created new terminal session which looks like container for save and manage virtual window. Let’s create terminal, we have two type of divide screen: horizontal and vertical. Also you can split already divide screen for more complex tasks. All command active through combination **Ctrl+a**, let’s create new window and divide screen, by pressing the button:
```
Ctrl+a+c
```
```
Ctrl+a+S
```
Screenshot №4 — Split screen
Reminder! For this utility, there is a difference when using a large and small register, highlight that moment. We can switch active window by combination:
```
Ctrl+a+Tab
```
And switch needed virtual terminal by combination for previous and next terminal accordance:
```
Ctrl+a+n and Ctrl+a+p
```
Also you can displayed on the screen list of th terminal windows:
```
Ctrl+"
```
Screenshot №5 — List of windows
If you want to see shorter info about it type:
```
Ctrl+a+w
```
Screenshot №6 — Shorter list
For more clearness usage that windows, you can change label of every window, by pressing:
```
Ctrl+a+Tab
```
Switch at the needed window and press bundle of keys:
```
Ctrl+a+A
```
Screenshot №7 — Rename
In our example you can see in the bottom line index and accordance label for that windows. You can see vertical line on the screen, divided it by command:
```
Ctrl+a+|
```
Also you can divide more complex, let’s separate right area by the command below:
```
Ctrl+a+S
```
Screenshot №8 — Multi split
At the start you will have no active window slide them as we described before:
```
Ctrl+a+p or n
```
For killing one process use combination:
```
Ctrl+a+k
```
For all bundle of virtual window:
```
Ctrl+a+\
```
And agree with close statement in the pop—up line. But if you want just minimize window of virtual terminal then you need to type:
```
Ctrl+a+Q
```
That combination minimize all windows exception main of focus, you can also detach from terminal and close connection to the server, but they will still work, by the combination of button:
```
Ctrl+a+d
```
And attached again by searching needed line:
```
screen -ls
```
And type their ID in the command below:
```
screen -r 23505
```
For get more information about combination to use, you can press:
```
Ctrl+a+?
```
Screenshot №9 — Help
And get help of usage this utility. Let’s represent real example of using that utility, obviously we can automize and customize a lot of routine or uncomfortable action, for example we need to check our free space on the storage and create backup. We divide screen and in the delay with 2 seconds monitor changes.
Screenshot №10 — Usage
## Conclusion
The screen utility in Linux offers a powerful and efficient way to manage multiple virtual terminals within a single terminal window. It consists of two essential components—the terminal session that acts as a container for virtual terminals and the terminal multiplexer responsible for managing these terminals. With screen, IT specialists can streamline their workflow by creating and organizing multiple terminals, switching between them, and even dividing the screen for complex tasks.
https://serverspace.us/infrastructure/datacenter-new-jersey.mdNNJ3 is a next-generation data center with an innovative cooling system. The data center is part of Cologix, an American company, which owns more than 20 modern data centers located in North America.
- SOC 1 (SSAE18/ISAE3402);
- SOC 2;
- HIPAA;
- PCI-DSS.
https://serverspace.us/about/blog/what-is-s3-storage.mdDiscover the power of S3 storage - a secure, scalable and cost-effective solution for storing and retrieving data on the cloud.
The amount of information that cannot be lost is growing every year. The more data you need to work with, the more urgent the need for reliable cloud storage, where files are safe and always available. It is not safe to store business-critical information on traditional local disks, removable media and tape drives. Financial and reputational losses in the event that the local storage fails can kill the entire business.
[Storing business data in the cloud](https://serverspace.us/services/storage/) has become a standard for a long time. Here they are reliably protected both from unauthorized access and from sudden loss. Recently, more and more companies are choosing S3 cloud object storage.
## Easy about complicated
The main advantage of S3 storage is the ability to work from any geographical point with files of any type and volume. The principle of S3 is simple: data is placed in many containers (folders). The contents of any container can be viewed, moved, or deleted. Each container and object has an address in the form of a unique identifier. It is used as a data access key. These keys can have any string value. If necessary, you can make the keys contain important information for the work — for example, whether the object belongs to a project.
You can also assign tags to objects in each container. Each object can have several tags of different types. This will come in handy if you need to describe it as accurately as possible. For example, you can create an audio file with tags of the artist’s name, song titles, album titles, and other information. In the future, this metadata is indexed, which greatly facilitates and significantly speeds up the search for the desired objects by the specified attributes. In addition, when working with them, there is no confusing hierarchical file system with complex and long addresses.
**An important point**: working with S3 storage, you know where and in what form your data is stored, who can access it and what resources your organization uses at any given time. Identification and access control tools combined with continuous data monitoring guarantee security.
## Why use object storage
Most likely, your company needs to work with a large amount of different data. These can be video surveillance system recordings, backups, hosting, big data storage and much more. If you realize that traditional cloud storage is no longer enough for all this, and working with the corporate cloud is getting slower, then it’s time for object storage. It will help you rationally organize work with any amount of information.
S3 cloud from Serverspace provider allows you to store an unlimited number of files on Enterprise equipment with 99.9% SLA. Triple replication reliably protects data on servers and provides them with a guarantee of security from external threats. Another advantage of Serverspace object storage is full compatibility with S3 and Swift protocols.
Here are common examples of S3 usage:
- **Storage of backups**. As already mentioned, triple replication in Serverspace minimizes the risk of data loss. You can flexibly manage backups by putting valuable data in private containers. In addition, you can store different versions of the same file in different containers;
- **Transferring static content to the cloud.** Any video and graphic materials can be stored. For example, photos, presets, templates, footage, source data and more, and you can store video surveillance system files, corporate archives, documents and website data. Thus, the load on the hosting and the company’s server is significantly reduced;
- **Creating applications that use data from the cloud.** You can start with small volumes and increase them as needed, without sacrificing performance or reliability. That is, you can focus only on creating applications, without thinking at all about efficient data storage and security;
- **Solving problems with traffic spikes.** Resources are instantly redistributed here so that the peak load does not affect the operation of applications. This eliminates additional costs.
## How to connect to S3 storage
You can’t process objects inside it, you can either upload or download them there. In addition, it is not the users themselves who work with it, but applications or individual systems that connect via the API. The basis of the API is the HTTP protocol. There are several ways to connect. Each company decides for itself which one is more convenient. Here are the two most popular options.
**S3Browser**
S3Browser will allow you to connect to the storage via S3 protocol. It is easy to use — you need to enter the account name, select the connection type “S3 Compatible Storage”, specify the connection address, access key ID, and secret key value and activate, if necessary, the data encryption option when connecting. After that, you can start working with the cloud.
**Swift API/Cyberduck**
To set up a Swift API connection, after installing and launching Cyberduck, you need to specify that you are connecting to the object cloud. Then you need to specify the server name, port number 443, access key and password. After that, you can get to work.
## For what do we need storage?
| What tasks is S3 storage suitable for? | |
| --- | --- |
| Ensuring the operation of websites and mobile applications | |
| Archiving, analysis of large amounts of data | |
| Storage of static content, multimedia files | |
| Storage of user data and backups | |
| Distribution of static files | |
| Data storage of backend platforms | |
| Electronic document management | |
| Storing transaction histories and logs | |
| Storing IP backups | |
| Storage of unstructured data | |
## Conclusion
The S3 object storage service is becoming more and more popular among various companies that need to work with a large amount of data. Representing a highly reliable solution, such S3 can store billions or even trillions of files, and its volume can be hundreds of petabytes. Security, reliability and fault tolerance make it more and more popular.
https://serverspace.us/about/news/serverspace-control-panel-release.mdServerspace, the cloud infrastructure provider, has released an updated dashboard design. As a result of Stage 1, there have been significant changes to the overall layout, calculators and settings pages.
Cloud provider [Serverspace](https://serverspace.us/index.md) has released a new control panel design. As a result of the first step, the team has made significant changes to the overall layout, calculators, and settings pages.
Previously, due to limited demand for mobile usage of the website and control panel, the mobile version was not adapted. However, by the end of 2022, the demand increased to over 32% of the total customer base. Therefore, the main goal of the release was to create mobile responsiveness. To ensure a faster launch on mobile devices, developers updated two main sections: “Server Creation” and “Refill balance”. Soon the team will update the remaining sections.
The Serverspace control panel interface has become not only more modern but also user-friendly. Through research and user feedback, the team has significantly simplified navigation and feature display in the panel.
## Key updates include
- Right side display of server configuration and cost in the server creation calculator. This update allows users to track selected parameters and their impact on the overall server cost.
- Additional display of the list of [cloud servers](https://serverspace.us/services/cloud-servers.md) in the form of cards. Users now have the option to choose between the familiar list format and the new card representation. The card displays key information about the server including its current status, data center, operating system, IP address, and cloud server resources.
- Tag management. Now it is allowed to add and remove tags directly in the server cards.
- Status filter and sorting. The addition of these features has made the server search process easier. Users can easily filter servers by their status and sort them accordingly.
- Copying code from system instructions directly in the control panel. Users can now utilize the necessary code from the panel’s instructions for server configuration or other tasks.
- Control panel adaptation for mobiles. Users now can use panel more comfortably on smartphones and pads, providing access to service creation and payment capabilities.
The updated design of the Serverspace control panel is the result of careful analysis of user needs and the team’s commitment to continuous improvement of the user experience. The new features and enhancements will enable users to more efficiently manage their cloud servers and achieve their goals in a more convenient and intuitive environment.
To take advantage of the updated panel, simply create a Serverspace account or log into your existing account.
## Plans
One of the upcoming updates will include a dark theme, allowing for a comfortable working environment, especially for developers who frequently work in low-light conditions or during nighttime.
The [Serverspace](https://serverspace.us/index.md) team is also actively working on improving the mobile version. In the near future, customers will be able to fully manage their cloud infrastructure on any device.
https://serverspace.us/about/blog/brief-history-of-three-popular-cms.mdHistory of three popular CMS (Content Management System). WordPress, Joomla, Drupal. WordPress hosting on VPS/VDS.
In the second half of the “nineties” the industry of “site building” was flourishing. Every company aspired to make itself known on the Internet, and every user dreamed of having a personal “home page”. All kinds of programs like FrontPage and Dreamweaver came to the webmaster’s aid, but most sites were still a set of static HTML pages, sometimes interspersed with CSS. A little later, the Server Side Includes technology appeared, which allowed to dynamically assemble a site on the server from standard blocks: “caps”, menu bars, “basement” and, in fact, useful content. After that, there was only one step left before the introduction of databases and content management systems, which greatly simplified the lives of both developers and resource owners.
## A look into the past
Some of us still found the times when any “interactive” like the notorious “guestbook” or chat was screwed to the site using CGI scripts (most often written in Perl), and to lay out a new publication or edit existing ones, we had to involve a webmaster. Moreover, the process itself often resembled a session of ritual magic with obligatory sacrifices. The appearance of the PHP language, which at first was deciphered as Personal Home Page Tools, greatly simplified the process of developing and maintaining websites: PHP scripts for administration and publication of content began to appear like mushrooms after the rain, some even supported primitive HTML templates. Since not all hosting providers offered access to the DBMS at free and cheap rates at that time, such scripts were often stored in plain text files embedded in web pages. At about the same time, Active Server Pages (ASP) technologies from Microsoft and JavaServer Pages (JSP) became widespread, but the second one did not catch on in the end.
However, the turning point in the birth of CMS was not the widespread introduction of interpreted scripting languages like PHP and JavaScript, but the appearance in 1998 of the Document Object Model (DOM). Simplifying, we can say that DOM is a kind of API that provides scripts with access to the content of HTML documents and allows you to dynamically change the content without reloading the web page. Actually, this principle formed the basis of web applications, now known as content management systems.
From the point of view of architecture, CMS solves several practical problems, and the dynamic generation of web pages is far from the main one. One of the main ones is access differentiation, that is, the division of users into administrators who have the ability to create and change content on the entire site or in certain sections, and simple “readers”, as well as the management of user groups. The second is the layout of pages and the delivery of content according to the client’s request. There are other functions: processing and storing service data, backup, and updating components — these backend modules are usually hidden from users, but no less important. Conventionally, we can say that modern CMS consist of two sets of web applications: content management programs (Content Management Application, CMA), and applications for delivering content to the user (Content Delivery Application, CDA). They work together as a single integrated system.
The first—ever content management system was brought to the market by the IBM holding company FileNet – this commercial product was based on the previously created electronic document management system and was only adapted for publishing web pages. In 1995-96, several more similar commercial programs appeared, but the real heyday of content management systems came with the advent of open source CMS. Communities quickly formed around such platforms, developing and maintaining the code of the systems themselves, as well as creating additional modules for them. And the first in this cohort was Drupal, which was released on January 15, 2001.
## Drupal
The author of Drupal is Dries Baytart, a student of the Faculty of Computer Science at the University of Antwerp: the popular CMS grew out of a bulletin board written by him in PHP, using which graduate students could exchange messages. Later, Bytart posted his brainchild along with the source code on the Internet on a website registered by him Drop.org . In general, initially he planned to call this resource “Dorp”, which means “village” in Dutch, but he made a mistake during the domain registration process, and then decided that “Drop” sounds even better. The name of the engine itself is an “Anglicized” word “Druppel”, meaning “drop of water” in Dutch. And the CMS logo symbolizes this very drop.
The first version of the engine boasted a rather limited set of functions: it supported the registration of new users, the publication of messages on forums with the possibility of their administration, and the import of content in RSS format. Later, in 2002, other features were added that turned Drupal into a full-fledged CMS: publishing articles, configuring site display templates and plug-in support.
Until 2003, Drupal remained a little-known project until the headquarters of the US presidential candidate from the Democratic Party, Howard Dean, created a DeanSpace campaign website on it, as well as more than 50 satellite sites in support of the candidate. This spurred the popularity of Drupal — the election race showed that based on this CMS, it is possible to deploy websites with different design and content fairly quickly and without significant effort. When the election was over, former technical staff of Howard Dean’s headquarters founded CivicSpace Labs, whose main business was the development of Drupal-based websites.
Since then, the popularity of this CMS has only grown: today Drupal is one of the three most common CMS, although it is inferior in this indicator to WordPress. As of March 2022, the Drupal community had more than 1.39 million members, and the modular architecture of the engine makes it suitable for sites of any size, from small blogs to enterprise-level applications. Drupal-managed resources are able to withstand high load due to the availability of caching mechanisms that optimize performance. And thanks to its built-in multilingual support, Drupal makes it easy to translate and localize websites, which makes it a suitable choice for companies targeting a global audience.
## WordPress
Chronologically, WordPress has become the second open source CMS based on PHP and MySQL, which has gained even more popularity compared to competing projects. The development of this engine in 2001 was started by a self-taught programmer Michel Valdrihi: initially he called his project b2 / cafelog. Two years later, several thousand websites were operating on the basis of this platform, designed primarily for blogging. Then an American programmer and entrepreneur Matt Mullenweg became interested in her: he was just looking for a suitable script for a personal website on which he could post photos. Having created a blog based on b2/cafelog, on January 24, 2003, Matt published a post in it, where he expressed a number of ideas for further development of CMS functions. The first to comment on this post was programmer Mike Little, who expressed a desire to join the development, and Matt’s girlfriend, Kristin Salleck, came up with a name for a new project — WordPress. So the platform was born, which is rightfully considered to be the most popular CMS in the world today. And the first beta version of WordPress 0.70 was released only four months later – on May 27, 2003.
The main driving force behind the popularity of [WordPress](https://serverspace.us/services/cloud-marketplace/wordpress/) is a huge community that creates design templates and modules for this engine. The range of these extensions is truly great: among them there are both commercial and free. The official WordPress catalog has hundreds of thousands of themes for websites of any subject (unofficial — even more), in addition, the creators of Internet projects based on WordPress can find plugins and modules with completely different functionality: from online libraries, online stores and collections of software, to online learning systems. There are many quite successful commercial companies whose main business is the development of paid templates and plugins for WordPress.
Since its inception in 2003, WordPress has evolved from a simple blogging platform into a reliable CMS that runs websites from personal pages to enterprise-level applications. According to data for 2021, more than 42% of sites on the Internet are operated by this CMS.
The main advantage of the system is the site management interface, which, according to the idea of the creators, is understandable and accessible to users even without a technical background. However, over the years, this interface has acquired a large number of elements, among which it is no wonder that even a person with experience gets confused and gets lost. You can argue with me, but personally it seems to me that there is no trace of the former convenience and lightness for a long time. Sometimes you have to Google for a long time to figure out how to disable a particular function or fix some small jamb in the template. In general, over the years, WordPress has mutated from a fairly convenient and simple engine for a website into a giant clumsy monster, which today is no longer a CMS, but an environment for developing and launching various web applications. At the same time, it is a rather slow environment: the more plugins are installed and enabled in the admin panel, the slower the site works (and enabling optimization, image compression and caching does not always help, and if it helps, then not for long).
However, a huge range of modules and plugins more than compensates for all the disadvantages of WordPress — a website on this engine can literally be turned into anything. And if one plugin is unable to solve the problem, nothing prevents you from installing several. In the end, you can write the missing functions yourself in PHP or hire a specialist for this — professional developers for WordPress, thanks to the popularity of the platform, quite a lot.
## Joomla!
I have also actively used this CMS for many years in parallel with WordPress, and therefore I can compare them based on personal experience. If earlier the interfaces of the WordPress admin panel and Joomla (officially the name of the engine is written with an exclamation mark, but I will omit it, with your permission, in the future) were radically different, now they are like twin brothers, except that in the Joomla admin panel there is an upper menu in addition to the sidebar. Who knows, but personally I liked the old interface with icons like Windows more. At some point, the seemingly eternal confusion with “sections” and “categories” of materials disappeared in the Joomla architecture, after which it became even relatively convenient to work with it.
Joomla appeared in 2005 as a fork of the commercial CMS Mambo from Miro International, and the first versions of this engine even supported native extensions of Mambo — the so-called “mambots”. But then the evolution of Joomla, as usual, went its own way. Project leader Andrew Eddy founded the company Open Source Matters, Inc. (OSM), which engaged in the further development of this CMS. The name for the engine was suggested by the community, which quickly migrated under the wing of OSM with Mambo — this is the word “jumla” adapted to the English pronunciation, which means “all together” in Swahili. The community also chose a logo by voting, which then became a registered trademark of OSM.
As with WordPress, Joomla is distributed for free, while commercial components — templates, plugins, modules and technical support – bring money. The number of Joomla community is more modest compared to WordPress, but the choice of extensions is quite large, and this assortment allows you to cover most of the needs of site creators. In addition, Joomla has the ability to integrate with other specialized CMS — various implementations of online stores, social networks, online education systems.
Now we can call Joomla the second most popular CMS on the Internet (after WordPress): thanks to the support of the community, a large assortment of plugins and multilingualism, this engine is actively used to create websites all over the world. This CMS has a team of adherents not only among users, but also among numerous developers, testers and designers who provide regular updates, bug fixes and expansion of capabilities.
## What to choose?
In addition to this “magnificent trinity”, there are many other CMS, both general-purpose and specialized, created for specific tasks. As they say, the taste and color of markers are different: all the engines listed in this note are written in PHP, all use MySQL DBMS (Drupal can also work with MariaDB, Percona Server, PosgreSQL, SQLite, WordPress — with MariaDB, and Joomla — with PostgreSQL). Virtual hosting services of almost any [modern hosting provider](https://serverspace.ru/services/vps-server/cloud-hosting/) meet similar requirements, and if you search, you can find a free site for hosting a site on one of these engines. Moreover: in the [VPS/VDS](https://serverspace.ru/services/vps-server/) control panel of many hosters, you can [install WordPress](https://serverspace.ru/services/cloud-marketplace/wordpress/), Joomla or Drupal by pressing one button (“quick installation of less popular CMS is also found, but less often).
It is almost impossible to give universal advice on which CMS to choose for your project — these engines are good in their own way. Personally, I use all three for different purposes: I have several online stores running on a bundle of WordPress + WooCommerce, and Joomla and Drupal are involved in simpler projects. Each CMS has its own advantages and disadvantages, but in general, we can say that using a ready-made engine, for which there are a bunch of plugins and adaptive templates that correctly display the site both on desktops and on mobile devices, saves a lot of time.
However, it seems to me that the time of monolithic CMS is gradually going away: more flexible frameworks and microservice web content delivery systems adapted to modern realities and devices are coming on their heels: smart watches, smart speakers with voice assistants, game consoles. The need to provide multi-channel content delivery is gradually coming onto the scene (what classic CMS cope with, frankly, is unimportant). The leading role in this, most likely, will be played by the so-called API-First CMS, combining a whole set of content management tools through APIs, often based on microservices. They will take root in the same way as the “classic” monolithic engines have taken root — time will tell.
https://serverspace.us/about/news/serverspace-in-turkey.mdInternational cloud provider Serverspace continues development in the European region. It has successfully opened a local representative office in Turkey.
International cloud provider Serverspace continues development in the European region. It has successfully opened a local [representative office in Turkey](https://serverspace.com.tr/). Serverspace will actively develop the local provider and strive to achieve the same standards as local service providers.
The new representative office allows Turkish users to order various types of cloud services provided in the Serverspace control panel to manage their cloud infrastructure. The website and control panel have been adapted for Turkish customers, with the use of the Turkish language and the ability to accept payments through Turkish bank cards. In the control panel, users can select the specification of the virtual server using our flexible calculator, and the cost is displayed in Turkish Lira.
The ability to create virtual services is available in five data centers in Europe, North America, and CIS countries. Plans are underway to add locations in new regions of the world, including Turkey. Stay tuned for updates and news on our website.
Information about the representative office:
- Website: [Serverspace.com.tr](https://serverspace.com.tr/);
- Control Panel: my.serverspace.com.tr;
- Technical Support Phone: +90 212 900-35-36;
- Currency: Turkish Lira, ₺;
- Payment: Turkish bank cards.
https://serverspace.us/about/blog/story-of-containerization-origins-kubernetes-docker.mdExplore the origins and evolution of containerization in this captivating narrative. Managed Kubernetes. Deploy server with pre-installed Docker.
Everything has a story. Sometimes it is full of unexpected twists and turns, like the detective novel plot, in others it is quite simple and uncomplicated. The 2 most popular containerization systems, Docker and Kubernetes, also have a history. Today’s article is about the emergence and evolution of these famous technologies. Both they trace their roots back to VM which had their beginnings in the 60s. The first experiments in this area were done by IBM in Yorktown Heights, they developed software emulators for IBM 7040 computers that allowed to run multiple instances of an app on a single machine. In the future, these emulators were to facilitate the development of hardware-independent programs, and to make it easier to port code to machines with other architectures. Virtualization was required for improvement of high-level programming languages: it helped to create the execution environment for user’s apps, to carry out the operating environment replication, to emulate the system of processor’s instructions.
If the emergence of VM was the starting point for the development of containerization systems, the turning point in their history was certainly 1979, when AT&T and Bell Laboratories developed version 7 of Unix. Among other innovations, this version introduced the chroot system call, which changed the location of the root folder of a process and its children. This laid the foundation for process isolation and file sharing for every process in Unix. A process running in the system was given its own memory allocation and file descriptors. Additionally, inter-process communication (IPC) technology was introduced. In 1982 the chroot was incorporated as part of BSD, and this allowed similar isolation mechanisms to be used in derived systems. Nevertheless, Unix still had a single process space, network stack and IPC for all users, which could not prevent one application from hijacking system resources, and could affect the work of other OS users. In other words, the task of organizing effective kernel control over resource usage by processes was still relevant.
## FreeBSD Jail
The next step on the road to modern containers was taken in 2000 by R&D Associates, a small private company offering shared hosting services. This provider was trying to solve an important technical problem: to separate its own resources on the server from the projects of its clients, so that they could work independently and not interfere with each other. R&D Associates’ servers used FreeBSD, so the Jail technology they created worked with that OS.
Jail was a virtualization system that allowed you to run multiple instances of FreeBSD inside FreeBSD, which used the same kernel, but their own independent environment and set of applications. Accordingly, such an isolated system had its own settings, allowing such a “virtual server” to be configured to meet the needs of the user. The process running inside Jail runs in a kind of “sandbox”, while the isolated system itself uses a local set of files, processes, user and superuser accounts. From the inside, it is virtually indistinguishable from a real operating system.
Screenshot №1 — FreeBSD Jail
This technology was first introduced in FreeBSD version 4.0, released on March 14, 2000 – that version introduced the jail utility and system call. Prior to FreeBSD 7.2, each isolated OS instance required a dedicated IP address to run, but this version introduced support for multiple IPv4 and IPv6 addresses for each VM and the ability to map a “container” to specific processors on multiprocessor servers.
## Linux-VServer
For a year, FreeBSD Jail was considered the most advanced *nix-based virtualization system until its Linux counterpart, VServer, appeared in 2001. Like Jail, VServer allowed sharing OS resources by adding virtualization features to the Linux kernel. Programmers Jacques Gelinas and Herbert Pötzel are considered the creators of VServer, and the product itself was distributed for free under the GNU GPL license as open source software.
Each isolated copy of the system was called a “security context” in Linux-VServer terminology, and the system running in it was a VPS. The VPS was run by a chroot-like utility. Actually, starting a VPS was just a matter of initializing an operating system in a new security context and stopping it was just a matter of destroying all the processes that were bound to that security context.
Linux-VServer quickly gained popularity among shared hosting providers, where VPS based on different Linux distributions, first of all, Debian, were created under this technology.
Screenshot №2 — Virtual Private Server
VPS built with Linux-VServer could use a common file system and common file sets (via hard links), which saved disk space. Processes [on the VPS](https://serverspace.ru/services/cloud-servers/) ran as normal processes on the host system. Using Linux-VServer required changes to the Linux kernel, and this tool lacked clustering or process migration capabilities, so the host kernel was a single point of failure for all VPS. In addition, some system calls and parts of the /proc and /sys file systems remained unvirtualized. All of this together can be considered a drawback of Linux-VServer compared to modern containerization systems, which provide a much higher level of isolation.
In 2005, another virtualization technology for Linux called Open VZ (Open Virtuzzo) appeared. It also used a patched Linux kernel and allowed to run multiple copies of an OS running a single kernel in so-called “virtual environments” (VE). Despite some popularity, Open VZ never became part of the official Linux kernel.
First containers
## First containers
The first containers, officially called by this term, appeared in February 2004 in Sun Microsystems’ Solaris 10 OS, and were used on x86 and SPARC servers. Unlike the previously described virtualization systems, Solaris Containers included not only isolated “sandboxes” to run the OS (called “zones” in the developer’s terminology), but also system resource management tools that allowed the creation of “snapshots” of individual zones and their cloning. That is, orchestration mechanisms.
Zones were completely isolated [cloud servers](https://serverspace.us/services/cloud-servers.md) within the host OS. Such OS instance had its network name, used dedicated network interfaces, its own file system, a set of users (including root) and configuration. The virtual server did not require hardcoded memory or CPU allocations – hardware resources were shared, but if necessary, the administrator had the ability to reserve certain server capacities for a specific zone. Processes inside containers ran in isolation, had no access to each other and therefore could not conflict.
Screenshot №3 — First containers
The main difference between Solaris Containers and its predecessors was that, as before, virtual OSs used the host system kernel, but the administrator could run copies of the system in containers with their own kernel if desired. This was the next important step in the evolution of containerization technology.
## Контейнеры от Google
In 2006, Google developed its own resource sharing system called Process Containers. It was later renamed control groups, or cgroups for short, and later incorporated into the Linux kernel.
Screenshot №4 — Google’s container
Technologically, cgroups are a group of processes for which restrictions are imposed at the operating system level on the use of various resources – memory, I/O, network. Such isolated groups of processes can be combined into hierarchical systems and managed. Cgroups realize not only isolation, but also prioritization and strict accounting. Special management mechanisms are used to control groups: it is possible to temporarily “freeze” a selected group, create its “snapshot” and restore the container state from a control point. Based on this technology, the LXC system was created two years later.
## LXC и Warden
Linux Containers (LXC) is a complete container system for Linux which provides full virtualization at the OS level. It was developed by programmers Daniel Lescano, Stéphane Grabe and Serge Ayune in 2008. LXC relied on cgroups and the namespace isolation principle supported by the Linux kernel since version 2.6.24. LXC allows containers to run at OS level, using their own process and network space, without having to create a full VM.
Continuity is one of the hallmarks of IT development, and in particular of open source products. LXC has been the basis for several projects to implement isolated containers not only in Linux, but also in other operating systems. One of these was Warden, released in 2011 by the CloudFoundry community. Warden allows you to isolate environments in any OS, running as a daemon and providing an API to manage containers. CloudFoundry created a client-server model for orchestrating a set of containers across multiple hosts, part of which was Warden, which provided users with a service for managing cgroups, namespaces and process lifecycles in isolated environments. The Warden developers later replaced LXC with their own virtualization system.
Screenshot №5 — DEA
The second project that took LXC as its basis (but later also abandoned this technology in favor of its own development) was the Docker project, launched in 2013.
## Docker
Work on Docker began at the startup incubator Y Combinator in 2011, with programmers Kamel Funadi, Solomon Haiks, and Sebastian Pahl as its creators. Unlike its predecessors, this containerization system was originally conceived as a commercial service [for cloud infrastructures](https://serverspace.ru/services/iaas/), available to customers on the SaaS model.
The first commercial company to use Docker for its internal projects was the French cloud provider dotCloud, and the product was presented to the general public at the PyCon conference in Santa Clara in March 2013. Already on September 19 of the same year, Docker announced a partnership with Red Hat Corporation to integrate the product into Fedora, RHE Linux and OpenShift. A year later, in Docker version 0.9, LXC was replaced by its own library libcontainer, written in Go programming language.
Screenshot №6 — Docker
Since Docker appeared on the market and many cloud providers implemented the service of providing containers to customers as a service, the popularity of this technology began to grow rapidly. In fact, Docker has become the founder of the entire ecosystem for container management. One of the brightest representatives of this family is Kubernetes.
## Kubernetes
Launched in June 2014, [Kubernetes](https://serverspace.us/services/managed-kubernetes.md) has quickly become the most popular system for deployment automating, scaling and management of industrial-grade containerized applications. This open-source software allows you to manage entire clusters of containers as a single entity.
Screenshot №7 — Kubernetes
Initially, this product was born in the bowels of Google for internal needs – the corporation needed a reliable system to manage clusters of VPS serving the search engine and other busy company services. The first project version was code-named Google Borg after one of the heroines from the science-fiction series Star Trek, but later it was renamed Project Seven. Developers Joe Beda, Brendan Burns, Craig McLuckie, Tim Hawkin and Brian Grant chose a naval helm with seven handles as the logo. However, this name did not seem too catchy to Google, and it was decided to change it: the new name of the product was the ancient Greek word – “helmsman”. Often the numeronym k8s is used instead for short – because there are 8 letters between the “k” and the “s” in the word “kubernetes”.
In 2014, Google published the Kubernetes source code, written in Go, in the public domain, and a year later a special Cloud Native Computing Foundation (CNCF) was founded together with the Linux Foundation, to which the developers transferred the rights to the product. Initially Docker was used as the container management engine, but in 2016 it was replaced by its own Container Runtime Interface (CRI) component, which supported other containerization systems in addition to Docker.
The container security, as well as the high speed of deployment, led to the emergence of a separate DevOps direction aimed at developing containerized applications that reduce the time to market for new projects. Since the advent of Kubernetes, most of the major cloud players, including VMWare, Azure, AWS and others, have announced support for it on top of their own infrastructures. Containerization systems are continually evolving, with new tools for creating and deploying containerized applications, as well as for managing large container clusters in data centers. Kubernetes supports increasingly complex application classes, enabling enterprises to migrate to both hybrid cloud and microservices architectures. Containerization has become the foundation of modern software infrastructure, and Kubernetes is used in most large enterprise projects today. As of June 2023, the Kubernetes project on GitHub is active community among open source products, with over 3,400 members. This indicates that container technology is very popular, and the number of companies using it to provide various services to their customers will only grow.
https://serverspace.us/about/news/new-data-center-star-of-bosphorus-in-turkey.mdCloud provider Serverspace has connected hardware in a new location - Turkey. Users now have the opportunity to order VMs based on the vStack virtualization platform in the leading data center - Star of Bosphorus.
Cloud provider Serverspace is expanding in the European region. The company has connected hardware to a new data center located in Turkey. Users nowcan order [cloud servers](https://serverspace.us/services/cloud-servers.md) based on the vStack virtualization platform in the advanced data center – Star of Bosphorus.
[Star of Bosphorus](https://serverspace.us/infrastructure/data-centers.md) is a modern data center designed with seismic-resistant construction technology. It is the first data center received international certification from the Uptime Institute Tier III Design & Resort. NGN, a global system integrator operating in the Middle East market, is the data center owner company.
## Key features of Star of Bosphorus
- It is the first seismic-resistant data center in Turkey, capable of withstanding earthquakes up to 9 on the Richter scale.
- It has a capacity of 16 MW.
- It is equipped with a 4-level access control system.
- It has a 2N redundancy scheme to ensure uninterrupted power supply.
- It is equipped with an N+1 redundancy cooling system and backup generators.
- It is equipped with a fire suppression system using gas – NOVEC 1230.
- It complies with international standards such as SOC 1, LEED, PCI DSS, Tier III.
A cluster of 7 vStack-R 2U servers, powered by high-performance Intel Xeon Gold CPUs, has been deployed in the data center. Each physical server supports configurations of up to 16 CPUs and 128 GB of RAM.
## To create a VPS in Turkey, follow these steps
- Go to the [Serverspace](https://serverspace.us/index.md) control panel on the website.
- Start creating a VM and select the desired resource specifications.
- Choose the Istanbul, Turkey data center.
- Configure the remaining server configuration resources.
- Click on the “Create” button.
The virtual server in Turkey will be deployed within 40 seconds.
The new location is also available for creating servers, configuring networks and gateways, ordering Custom Servers and Kubernetes clusters.
https://serverspace.us/about/news/serverspace-accelerated-the-answering-of-support-requests-by-40.mdServerspace cloud provider is working on speeding up user request processing. The company reported a 40% reduction in initial response time for requests.
Serverspace cloud provider is working on speeding up user request processing. The company reported a 40% reduction in initial response time for requests.
The company has expanded the library of common user requests, prolonged support specialists studying and set maintenance KPIs. These steps have already shown their effectiveness. The speed of initial request processing increased by 40% in June.
As representatives said before, the goal of this project is to find a solution for any request within 30 minutes. Achieving this benchmark is the key to generating irresistible customer satisfaction and, as a result, steady business growth.
“Technical support is our main advantage. Serverspace is going to achieve high customer loyalty and increase its influence by offering high-quality virtualization tools and the expertise to address any questions” said Svetlana Sharapova, head of Serverspace.
Serverspace is an international cloud provider that offers automatic deployment of virtual infrastructure based on Linux and Windows in less than 1 minute from all over the world. Open API, CLI, and Terraform tools are available for integrating clients’ services.
https://serverspace.us/about/blog/web-development-security.mdDefence techniques and descriptions of frequent web application security threats such as SQL injections, XSS attacks, CSRF attacks and session hijacking.
Security in web development is an integral aspect of any successful project. The robustness of a web application’s security system determines the preservation of user’s confidential data, the resilience of the web service, and ultimately, the reputation of the company. In today’s digital economy era, ignoring security issues can be a critical mistake.
## Main security threats in web development.
Some of the most common threats in web development include:
**SQL injections** – this type of hacking occurs through the embedding of malicious SQL commands into database queries. SQL attacks can lead to unauthorized access to information, its alteration, or deletion. Protection against SQL is a critical aspect of web development security. There are various strategies and techniques that can help protect web applications from such attacks:
- Prepared and Parameterized Queries: Using prepared or parameterized queries is one of the most effective ways to prevent SQL injections.
- Escaping special characters: another approach where all special characters used in SQL (e.g., quotes) are replaced with their safe equivalents.
- Privilege restriction: Assign to database users only those privileges that they genuinely need to perform their tasks.
- Use of Web Application Gateways or Firewalls (WAF): They can detect and block SQL injection attempts by analyzing incoming traffic.
- Penetration testing and regular security audits: Regular testing of web applications for vulnerabilities, such as SQL injections, can help identify and rectify security issues before they are exploited by malicious actors.
**Cross-Site Scripting (XSS)** is one of the most common security threats in web development. An XSS attack is one where malicious actors embed harmful scripts into web pages viewed by other users.
Malicious scripts are often transmitted through input forms on websites that have an XSS vulnerability (those that do not filter or effectively filter user input). When other users view these pages, their browsers execute the malicious scripts.
Depending on the nature of the attack and the web application’s security measures, XSS injections can be divided into three main types: Stored, Reflected, and DOM-based.
Stored XSS attacks occur when the malicious script is stored on the server and sent to each user who views the page. They are the most dangerous because they affect a large number of users.
Reflected XSS attacks are embedded in the URL and activated when it is opened. Such attacks usually occur when a malicious actor lures the victim into opening a specially prepared URL, for example, by sending it via email or through a message.
DOM-based XSS attacks occur when a malicious script alters the DOM (Document Object Model) structure of a web page, leading to the execution of malicious code.
To protect against XSS, it is important to use secure development techniques, including filtering and escaping user input, using Content Security Policy (CSP), and other security technologies.
**Session Hijacking (or session interception)** is a type of attack where a malicious actor intercepts and uses a user’s session to perform unauthorized actions. Session hijacking is often used to bypass the authentication process and gain unauthorized access to web services and sensitive information. Network eavesdropping and cross-site scripting (XSS) are the main techniques for session hijacking.
Protection against session hijacking usually includes the following measures:
- Use of secure data transmission protocols (such as HTTPS) that encrypt session data and prevent interception.
- Limiting the lifespan of sessions and session tokens to reduce the time during which an attacker can use a hijacked session token.
- Employing server-side security measures, such as user IP address validation, to ensure that the session token is used by the same user to whom it was initially issued.
- Regularly updating and testing web applications to detect and eliminate vulnerabilities that could be used for session hijacking.
A **CSRF (Cross-Site Request Forgery) attack** is an attack where a malicious actor forces a victim to perform an unwanted action on a site where they are authenticated.
CSRF verification, or CSRF protection, is a set of measures used to prevent such attacks. One common protection method is the use of a CSRF token, a unique and random number generated for each user session. When a user submits a request to perform an action, the server checks if the CSRF token in the request matches the token stored in the session. If the tokens don’t match, the server rejects the request.
A CSRF verification failure usually means that the CSRF token check failed: the token is missing from the request or does not match the token in the session. This can happen if a user tries to submit a form with an expired token, or if a malicious actor attempts a CSRF attack.
## Security in Web Application Design
The main principles of secure design include data protection at all application levels, the use of secure authentication and authorization methods, error handling without disclosing excessive information, and more.
The importance of ensuring security in the early stages of development. It’s crucial to understand that security should be integrated at the design stage of the web application. This will help avoid costly changes in the future and provide reliable data protection.
## Security at the Web Application Development Stage
Writing secure code requires programmers to understand the main threats and how to prevent them. Various methodologies and best practices exist, such as the “principle of least privilege” or “defense in depth”.
The use of secure libraries and development tools can speed up the development process and make it more reliable.
## Web Application Security Testing
Web application security testing is a process in which potential vulnerabilities in a web application that could be exploited by attackers are checked. As web applications become increasingly complex and hold more data, security testing becomes a key aspect of web application development.
Manual website security testing: Manual testing is typically performed by security experts who manually check the application for vulnerabilities. This may include checking for vulnerabilities to attacks such as SQL injection, XSS attacks, CSRF attacks, and others. Experts can also conduct stress testing to ensure the application can handle a high volume of requests without compromising security.
Automated website security testing: Automated testing involves using software to automatically check the application for vulnerabilities. This can be faster and more efficient, especially for large applications. Some popular tools for automated security testing include OWASP ZAP, Nessus, Burp Suite, and others.
Online website security testing: There are various online services that allow you to check a website for malware and other threats. Some of these include VirusTotal, Sucuri SiteCheck, and Quttera. Penetration testing: Penetration testing involves simulating a real cyber attack on a web application to identify and eliminate vulnerabilities. Penetration testing can be conducted by internal staff or independent organizations, and it typically involves a wide range of techniques and methodologies.
Web application security testing should be conducted regularly throughout the entire life cycle of application development to ensure its security and protect user data.
## Maintaining Website Security
Continuous updating and improving website security includes updating the system and components of the web application. Auditing web application security and responding to website security threats in real-time requires constant monitoring and quick response to emerging threats.
It’s important to remember that various methods of protecting web applications from attacks are not a one-time task, but a continuous process. Threats are constantly changing and evolving, and neutralizing them requires a systematic and consistent approach.
https://serverspace.us/about/blog/python-basics-a-guide-for-beginners.mdAre you wondering where to begin with Python learning? Discussion about the fundamentals of Python programming and a selection of beneficial resources.
Python is a language developed by Guido van Rossum in the late 1980s and early 1990s. Originally designed to speed up and simplify the work of programmers, Python has become widely recognized and immensely popular due to its user-friendliness, simplicity, and active developer community support.
Despite its simplicity, Python continues to evolve and improve, remaining one of the most popular programming languages in the world. Its versatility makes it attractive for both beginners and experienced developers alike.
As interest in artificial intelligence, data analysis, and machine learning grows, Python has taken a prominent role in future technologies. Its prospects remain promising, and it is expected to continue topping the list of popular programming languages in the future.
Python is applied in various fields and domains, but most commonly in the following:
- Web Development: Creating web applications and websites using frameworks such as Django and Flask.
- Data Analysis and Scientific Research: Processing and visualizing information, as well as conducting scientific calculations.
- Artificial Intelligence and Machine Learning: Developing and implementing machine learning and AI algorithms.
- Task Automation: Python provides convenient tools for automation, saving time and effort.
- Game Development: Prototyping and developing gaming applications.
- Graphic Design and Image Processing: Automating image processing and analysis tasks.
- Robotics: Programming robots and automating their control.
## Distinguishing Python from Other Programming Languages (PL)
- Python is renowned for its understandable syntax. The language itself is clean and concise, making it easy for beginners to learn and use Python.
- Python boasts an active and supportive developer community, providing extensive documentation, libraries, modules, and solutions for various tasks.
- This programming language is designed to be written line-by-line, simplifying debugging and development processes.
- Python supports various operating systems and platforms, making it a portable and flexible language.
- The language comes with a set of standard libraries, along with numerous third-party libraries and modules, streamlining the execution of diverse tasks without the need to write code from scratch.
- Python provides dynamic typing, which means variables can change their data type during program execution.
- Python is an open and free language, allowing users to utilize, modify, and distribute it freely.
## Where to Start Learning Python
Beginning Python programming involves learning its fundamental concepts and syntax. Familiarize yourself with data types, variables, conditional statements, loops, and functions. Utilize interactive programming environments like Jupyter Notebook or Python’s interactive mode (via the command line or built-in interpreter). This will allow you to practice and see results immediately. Next, delve into examples and problem-solving: immerse yourself in code samples available in Python documentation and online resources. Gradually move on to solving simple tasks to reinforce your knowledge and enhance your understanding of the language.
### Practice
Start writing your own programs and projects. Apply the concepts you’ve learned in practice and develop your programming skills. Familiarize yourself with various Python libraries and frameworks for beginners; they expand the language’s functionality and simplify your initial development. For example, explore libraries for data analysis (NumPy, Pandas), web development (Django, Flask), artificial intelligence (TensorFlow, PyTorch), and more.
### Join the Community!
Engage with the Python community through forums, social media groups, or meetups. Interacting with experienced developers and exchanging knowledge can be incredibly valuable. Don’t be afraid to start with simple tasks and gradually progress to more challenging ones. Practice and patience will help you master Python and become a skilled developer.
Of course, to work with this language, you need to prepare your platform and install Python on your computer. Follow these simple steps:
- Go to the [official Python website](https://www.python.org/).
- On the main page, navigate to the “Downloads” section and select the version of the language you want to download. We recommend choosing the latest stable version, as it is the most up-to-date.
- Download the installation file for your operating system (Windows, macOS, Linux).
- Run the installation file. You may need to grant permissions or confirm administrative rights to proceed with the installation.
- Follow the instructions provided by the Python installer. The installation process is typically straightforward and does not require any specific configurations. By default, Python will be installed in the “Program Files” directory on Windows or “/usr/local/bin” on macOS and Linux.
- After the installation is complete, open the command prompt (in Windows – “Command Prompt”, in macOS and Linux – “Terminal”) and type the command “python –version” (without quotes). If Python is successfully installed, you will see the version of Python that you selected during the installation.
- Now Python is successfully installed on your computer, and you are ready not only to learn the basics of programming in Python but also to program in this powerful and versatile language!
### Free Platforms Teaching Python Basics for Beginners
- [Codecademy](https://www.codecademy.com/): Codecademy’s Python course offers an interactive learning experience, guiding you through Python syntax, data types, and control flow with practical examples.
- [Coursera](https://www.coursera.org/): Coursera hosts Python courses from reputable universities, allowing you to learn from expert instructors and engage with a supportive community.
- [edX](https://www.edx.org/learn/python): edX offers various Python courses, including those from renowned institutions like MIT and Harvard, with options for both beginners and advanced learners.
- [SoloLearn](https://www.sololearn.com/learn/courses/python-introduction): SoloLearn is a mobile app that provides bite-sized Python lessons, quizzes, and challenges, making learning convenient on the go.
- [Real Python: Real Python's website offers](https://realpython.com/) a collection of free tutorials and articles for Python learners, covering topics from basic concepts to advanced techniques.
### Useful Materials about Python from Serverspace
Be sure to explore our articles on topics like “[First Python Program](https://serverspace.us/support/help/first-python-program/)” and “[How to write a module in Python 3](https://serverspace.us/support/help/how-to-write-a-module-in-python-3/)“, as well as the Python section in our Knowledge Base.
https://serverspace.us/about/blog/introduction-to-devops-key-principles-and-practices.mdWhat is DevOps? DevOps principles. What does a DevOps engineer do and how to become a DevOps developer from scratch? Step-by-step instructions for beginners
In this article we’ll break down the basics of DevOps, its benefits, tools, give you a guide to becoming a DevOps specialist from scratch, and, for bonus, some useful free resources for learning DevOps. Let’s dive in!
## What DevOps is in simple terms
To understand how DevOps stands for, we should refer to the terms “Development” and “Operations”. Devops development (Devops Engineering) is a philosophy that aims to integrate software development and operations processes. In this case, the goal of DevOps is to optimise and automate processes, reduce the time-to-market, and increase the reliability and stability of IT systems.
## DevOps principles
DevOps principles are based on several key aspects that make it stand out from other approaches to software development and operations:
- **Collaboration and culture**
The essence of DevOps is a collaboration between development and operations departments. Compared to traditional approaches where development and operations work separately, DevOps fosters greater collaboration and communication, which the Puppet State of DevOps report shows leads to 20-30% faster development times.
- **Continuous Integration and Delivery (CI/CD)**
Organizations using CI/CD release updates 2-3 times faster than those who don’t. This increases the speed of delivery of new features and patches, which has a positive impact on business and user satisfaction.
- **Automation**
Automating labor-intensive processes can reduce time spent on routine tasks and reduce errors. Automation can also lead to a 25% reduction in IT costs.
- **Monitoring and feedback**
Collecting and analyzing data on system performance and user feedback allows the team to quickly respond to issues and improve the product. Companies that use monitoring tools are 2-3 times faster in detecting and fixing problems.
- **Infrastructure as Code (IaC)**
IaC enables automation of infrastructure deployment and management, which reduces errors and speeds up processes. Using IaC can reduce infrastructure deployment time by 50-60%.
Compared to other approaches such as Agile and Waterfall, DevOps ensures faster delivery speed, improves product quality, and increases team satisfaction. Through its principles, DevOps helps organizations better adapt to changing business and market requirements. by 50-60%.
## Benefits of DevOps
- Increased development speed: according to the same Puppet State of DevOps report, companies adopting DevOps practices are 200 times more likely to release code.
- Improved product quality: thanks to continuous integration and delivery, error rates in the production phase are reduced by 60%;
- Improved collaboration and cooperation: DevOps contributes to a 50% increase in NPS (Net Promoter Score);
- Reduced downtime: Disaster recovery time is 24% shorter for companies using DevOps;
- DevOps tools and practices;
- Continuous Integration and Delivery (CI/CD): Jenkins, Travis CI, GitLab CI/CD, Bamboo, and Spinnaker;
- Configuration management: Puppet, Chef, Ansible, Terraform, and other tools;
- Infrastructure as Code (IaC): Terraform and CloudFormation;
- Virtualisation and containerisation: Docker for application containerisation and Kubernetes for DevOps (container orchestration);
- Monitoring and logging: Prometheus, Grafana, ELK Stack, Datadog, and Splunk;
- Cloud platforms: Amazon Web Services (AWS), Google Cloud Platform (GCP), and Microsoft Azure.
## DevOps engineer from scratch: step-by-step instructions
Becoming a professional in DevOps engineering requires effort, time and continuous learning. We have written a step-by-step plan on how to become a DevOps engineer:
### Step 1: Learn the basics of programming and system administration
First of all, you will need basic programming skills and an understanding of what DevOps does. Most DevOps developers prefer languages like Python, Ruby, or JavaScript. According to GitHub statistics, Python is the 3rd most popular programming language in 2023. Free resources for learning Python include Codecademy, SoloLearn, and the official Python documentation, as well as our Knowledge Base section with Python tutorials.
Knowledge of Unix/Linux is also important as most DevOps tools run on these operating systems. According to data from the Stack Overflow Developer Survey 2023, Linux/Unix is the most popular platform among professionals. Free resources for learning Linux include Linux Journey and the Linux Foundation’s Introduction to Linux.
### Step 2: Master DevOps tools
Fully understanding what a DevOps engineer does and what tools they use (Git, Jenkins, Docker, Kubernetes, Ansible, and Terraform) is key to success in this field. These tools enable CI/CD, configuration management, containerization, and IaC practices. Free sources of DevOps information include official documentation as well as online courses on Katacoda.
### Step 3: Cloud training
Cloud platforms (AWS, GCP, and Azure) play one of the most important roles in modern DevOps. According to the Flexera 2023 report, 92% of enterprises use multi-cloud strategies. Free sources of information on cloud technologies include AWS Training and Certification, Google Cloud Training, and Microsoft Learn.
### Step 4: Obtain DevOps training certifications and credentials
Obtaining a certificate of training in the DevOps engineering profession will help increase the loyalty of your future employer and put your knowledge in front of them. According to ACloudGuru, the most sought-after certifications are AWS Certified DevOps Engineer, Microsoft Certified: Azure DevOps Engineer, and Google Cloud – Professional DevOps Engineer. Most certification organizations offer free training materials and practice tests.
### Step 5: Continuous Learning
The technological world is constantly changing and evolving. Therefore, continuous learning and updating your skills is critical for DevOps engineers. Keep up with the latest trends and best practices, participate in conferences and workshops, and read professional blogs and articles (DevOps.com, The New Stack, and DZone).
And now, as promised, links to useful free resources and training courses:
- [EdX:](https://www.edx.org/)
Offers free courses on DevOps from renowned universities and institutions.
- [Coursera:](https://www.coursera.org/)
Provides access to free DevOps courses when audited (without certification).
- [Katacoda:](https://www.katacoda.com/)
Offers free, hands-on DevOps environments and scenarios for practicing DevOps tools and principles.
- [Docker Curriculum:](https://docker-curriculum.com/)
A free comprehensive guide for learning Docker, a fundamental DevOps tool.
Don’t be afraid to start learning DevOps! You have all the materials you need to dive deep into the profession at your fingertips, all you need is a **little perseverance**.
Your Serverspace
https://serverspace.us/about/blog/how-to-optimize-db-performance.mdPractical guide to MySQL and PostgreSQL optimization: tune queries, indexes, and configs to boost database performance and fix common bottlenecks.
For most production applications, the database is where things slow down first, no matter how well the rest of the stack is built. MySQL and PostgreSQL continue to dominate the relational database landscape, and both come packed with tools for squeezing more performance out of a system — yet neither one delivers strong results automatically. Real gains come from getting several layers right at once: a schema that reflects how data actually gets queried, indexes chosen with intent rather than added reflexively, configuration parameters tuned to the hardware they run on, and a monitoring routine that catches problems before they turn into outages. This article breaks down what that looks like in practice for MySQL and PostgreSQL specifically, focusing on concepts and techniques you can actually apply rather than abstract theory.
## Introduction: Why Database Optimization Matters
It’s hard to overstate how deeply databases are woven into the systems we rely on every day. Behind nearly every interaction — placing an order, scrolling a feed, logging into an account — there’s a database quietly handling the request in the background. As businesses scale and the volume of stored information multiplies, the pressure on these systems shifts from simply storing data to processing it efficiently under real-world load. A database that performs well at a few thousand records can behave very differently once that number grows into the millions, and this is precisely where performance tuning stops being optional and becomes a core engineering responsibility. Slowdowns rarely stay contained to the database layer either — a sluggish query eventually surfaces as a frustrated user staring at a loading spinner, or as a checkout process that times out at the worst possible moment. Beyond user experience, inefficient database operations also translate directly into higher infrastructure costs, since CPU cycles, memory, and disk I/O are all finite resources that get consumed faster when queries aren’t well structured. This is why response time and throughput are treated as two of the most telling indicators of database health: the first measures how quickly a single request gets answered, while the second reflects how many requests the system can handle simultaneously without buckling under pressure.
Teams responsible for production systems typically approach optimization from several angles at once — refining the structure of SQL queries, choosing indexes that match actual query patterns rather than guessing, and configuring caching layers to avoid redundant lookups for data that’s requested over and over again. None of these levers work in isolation, and pulling one too aggressively can create new problems elsewhere, which is part of what makes performance tuning as much an art as it is a science. As applications expand to support more concurrent users or new features, the database architecture itself often needs to evolve too, whether through connection pooling, partitioning large tables, or distributing load across replicas.
Ultimately, the organizations that treat database performance as an ongoing discipline rather than a one-off fix tend to be the ones that scale smoothly, while those that ignore it usually find out the hard way, often during a traffic spike they didn’t see coming.
## How DBMS Engines Work: The Foundation of Database Performance
To effectively optimize database performance, it’s important to understand how relational database management systems (RDBMSs) are structured in depth. This will allow you to better assess system needs and apply appropriate database performance optimization techniques.
## **DBMS Operating Principles and Mechanisms**
At the heart of every DBMS lies the database engine — the component responsible for handling queries, managing how data is accessed, and controlling storage. To search, update, and save information efficiently, the engine relies on a combination of algorithms and internal data structures.
Several core mechanisms shape how well a database performs:
**Indexing.** A major factor in how fast data can be retrieved. Indexes are special structures that let the system locate specific rows almost instantly, instead of scanning the entire table.
**Buffering.** Databases keep a memory buffer where frequently accessed data is temporarily held, cutting down retrieval time and keeping performance stable even under heavy load.
**Query Optimizer.** Before running a query, this component evaluates possible execution paths and picks the most efficient one, relying on statistics and available indexes to make that decision.
**Transactions.** This mechanism keeps data consistent and reliable, making sure multiple users can work with the database simultaneously without conflicts or corruption.
Grasping how these mechanisms work together is the first step toward making real, measurable improvements to database performance.
## Why Database Performance Optimization Is Critical
As data volumes grow and query complexity increases, database performance can degrade. An unoptimized DBMS can become a bottleneck in system performance, causing delays and loss of productivity.
Optimizing the DBMS not only speeds up query response times, but can also:
- reduce infrastructure maintenance costs;
- increase system reliability;
- improve overall user experience;
- extend the life of existing hardware.
In other words, database optimization is both a technical and a business task that directly influences the efficiency of your applications.
## Internal Database Performance Optimization
Internal database performance optimization focuses on what happens inside the DBMS: schema design, indexes, and memory settings. These are the core levers when you want to increase database performance without immediately scaling hardware.
### Indexes
Indexes significantly speed up the extraction of data from the database. However, redundant indexes can slow down insertion, update, and deletion processes. It is important to create indexes only for those columns that often participate in query conditions: WHERE JOIN and ORDER BY.
Regularly review and clean up unused indexes. This simple step can improve database performance both for reads and writes.
### Normalization and Schema Design
Normalization is the process of organizing data in a database in a way that reduces data duplication and avoids unwanted anomalies. Proper normalization can improve performance and facilitate scaling by keeping data consistent and structures predictable.
At the same time, for some analytical and reporting workloads, selective denormalization or materialized views may be used as part of your overall database optimisation strategy to speed up heavy read queries.
### Memory and Cache Settings
Customizing memory settings, such as buffer and cache sizes, can have a significant impact on performance.
- In MySQL, particular attention should be paid to settings related to the InnoDB storage engine, especially innodb_buffer_pool_size which determines how much data and indexes can be cached in memory.
- In PostgreSQL, parameters such as shared_buffers work_memmaintenance_work_mem help control how much data is processed in memory during queries and maintenance operations.
For modern MySQL (8.0+), the legacy Query Cache has been removed, so database optimization should focus on InnoDB tuning, proper indexing, and query design rather than relying on a global query cache.
## Query Optimization: How to Improve Database Performance with Better SQL
Query design is one of the most important aspects of **database performance optimization**. Even a well-tuned server cannot compensate for inefficient SQL.
### Using Query Plan Explanation (EXPLAIN)
Use the EXPLAIN command to analyze how MySQL executes a query and determine which indexes are used or ignored. For PostgreSQL, EXPLAIN ANALYZE provides both the planned and actual execution details, which is extremely useful when you need to understand how to optimize database performance for specific queries.
Regularly reviewing query plans is a practical way to improve database performance without changing hardware.
### Optimizing Joins and Subqueries
Whenever possible:
- avoid correlated subqueries that are executed once per row;
- rewrite them as regular joins where applicable;
- make sure join conditions are indexed on both sides.
It is also preferable to use explicit JOIN syntax instead of mixing multiple comma-separated tables, as it makes intent clearer and helps prevent accidental Cartesian products.
## Working with MySQL: Practical Database Performance Optimization
MySQL is one of the most popular database management systems and is used in a variety of applications. However, to achieve maximum database performance, it is important to know how to optimize MySQL server correctly.
### MySQL Performance Monitoring and Profiling
MySQL provides several tools that help you analyze query behavior and execution time:
- the slow query log to detect the most expensive queries;
- EXPLAIN to understand execution plans;
- Performance Schema and SHOW STATUS to monitor internal metrics.
These tools help you identify bottlenecks and decide where to focus your database optimisation efforts.
Keep an eye on server metrics such as CPU, RAM, and disk usage. High resource usage combined with slow queries usually indicates that it is time to review your indexing, query patterns or configuration.
### Key MySQL Settings for Better Database Performance
For InnoDB-based workloads, start with:
- innodb_buffer_pool_size — often 60–70% of RAM on a dedicated database host;
- innodb_log_file_size and innodb_flush_log_at_trx_commit — affecting durability vs performance;
- connection limits and temporary table sizes.
Tuning these parameters based on real workload metrics is one of the most effective ways to **increase database performance** in MySQL.
## PostgreSQL Optimization: The Path to Efficient Database Performance
PostgreSQL is a powerful and flexible open-source database management system. However, even such an advanced DBMS requires regular optimization to ensure high database performance and responsiveness. Let’s get to know the key aspects of PostgreSQL optimization.
### PostgreSQL Performance Optimization (Internal)
**Transaction Management.** PostgreSQL relies on a multiversion concurrency control model to keep concurrent transactions from interfering with one another. Rather than locking rows for every read, the system stores multiple versions of the same row simultaneously, and each transaction works against the snapshot that was valid at the moment it started. When a row is updated or deleted, the old version isn’t removed right away — it’s simply marked as obsolete and left in place, which is what eventually produces the dead tuples that accumulate over time. Left unmanaged, this buildup quietly inflates table size, slows down sequential scans, and degrades index efficiency, since both queries and index lookups still have to wade through tuples that are no longer relevant. This is precisely the problem the VACUUM process exists to solve, reclaiming the space taken up by dead rows and feeding fresh statistics back to the query planner so it can keep making smart decisions. Most production setups lean on autovacuum to handle this automatically, but its default thresholds aren’t always tuned for tables that see heavy write or update traffic, which means administrators often need to adjust the relevant settings manually to keep bloat from creeping back in.
**Data Types and Extensions.** Beyond basic numeric and text fields, PostgreSQL exposes a much richer set of data types that opens the door to far more flexible application design. JSON and JSONB make it possible to store semi-structured documents directly inside relational tables, hstore offers a simple key-value structure for lightweight attribute storage, and extensions like PostGIS turn the database into a fully capable engine for spatial and geographic data. None of these choices are purely cosmetic — picking the wrong type for a given column can quietly inflate storage requirements or slow down every query that touches it, while the right type often unlocks indexing and query strategies that wouldn’t otherwise be available.
**Indexes.** Indexing remains one of the most direct ways to speed up data retrieval in PostgreSQL, and the database offers more flexibility here than most relational systems. B-tree indexes cover the vast majority of everyday lookups and comparisons, but PostgreSQL also ships with specialized structures built for less conventional use cases: GIN indexes are well suited to full-text search and to querying inside JSONB documents, GiST handles geometric and geospatial queries efficiently, and SP-GiST is built for data that splits naturally into non-overlapping partitions. Choosing the right index type — and avoiding the temptation to over-index a table — is often what separates a database that scales gracefully from one that slows to a crawl as data volume grows.
### PostgreSQL Query Optimization (External)
Use ANALYZE to collect statistics on tables so that the optimizer can correctly estimate query costs. Combine this with EXPLAIN ANALYZE to see how a specific query is actually executed and where time is spent.
When optimizing queries:
- Use LEFT JOIN only where it is really necessary.
- When possible, replace correlated subqueries with regular joins as a way to improve database performance.
- Avoid unnecessary SELECT * in frequently executed queries.
## PostgreSQL Performance Optimization Tools and Configuration
To increase database performance in PostgreSQL, it is important to combine monitoring and configuration tuning.
- **Monitoring tools.** Many PostgreSQL monitoring tools such as pg_stat_statements or PgBadger can help you identify performance bottlenecks, frequently executed queries, and inefficient patterns.
- **Server configuration.** Special attention should be paid to configuration parameters such as shared_bufferswork_mem, and maintenance_work_mem to ensure maximum performance of your PostgreSQL server. In many production deployments, a connection pooler such as PgBouncer is also used to manage a large number of client connections efficiently.
## Tips and best practices
Optimizing a database goes beyond picking a tool or tweaking settings — it demands a long-term mindset, a clear strategy, and ongoing learning. Below are practical recommendations to help boost both the speed and safety of your database.
Data schema design: thorough planning is essential before development starts. Map out the core entities, how they relate to each other, and how the system might need to scale. Requirements evolve over time, so a schema that works now may need adjustments later — designing with future growth in mind from the start saves trouble down the road.
Regular testing and monitoring: tools like query profilers or performance monitors reveal which operations are slowing things down. Routine load testing helps confirm the system can hold up under real traffic and surfaces issues before they become critical.
Security Encryption: any data, particularly sensitive information, needs to be protected both while stored and while moving across the network.
Data backup: routine backups stored somewhere secure are what make recovery possible if disaster strikes.
Access control: limit database access through role-based permissions, keeping the number of accounts with full privileges as small as possible.
Training and skill development: technology moves fast, and staying current through ongoing learning keeps you ahead of the curve. Even if you stick with a particular DBMS, exploring other platforms can spark fresh ideas for improving the one you already use.
Recommendations for optimizing database performance: managing databases blends technical skill with experience and judgment — it spans everything from grasping core DBMS concepts to applying targeted fixes for systems like MySQL and PostgreSQL.
## Optimizing a database — key points:
Getting real performance gains starts with understanding how your specific DBMS operates internally, which lets you tune it properly. A schema built with future needs in mind heads off many performance headaches later. Ongoing optimization, testing, and monitoring let you spot weak points and measure whether your changes actually helped. Protecting your data — through encryption, backups, and tight access rules — should never be an afterthought. Since tools and methods keep changing, keeping pace with new developments is key to sustained performance. In short, optimization is never really “finished” — it takes ongoing time and effort, but the payoff in speed, stability, and data security is well worth it. Trying new approaches is encouraged, just make sure they’re grounded in solid, tested knowledge rather than guesswork.
It’s worth noting that none of these mechanisms operate in isolation — they form a tightly interconnected system where a change in one component reshapes the behavior of the others. When a new index is added to a table, the query optimizer must immediately reassess its cost estimates and may shift toward a completely different execution plan, sometimes favoring an index scan over a sequential scan that previously seemed more efficient. Buffering, in turn, interacts with this process by determining which blocks of data are already warm in memory, which directly influences how the optimizer calculates the expected cost of disk I/O versus memory access. In high-concurrency environments, transaction management adds yet another layer of complexity, since locking strategies and isolation levels can either ease or intensify the pressure on the buffer pool depending on how many simultaneous operations compete for the same rows or pages. For this reason, database engineers in large-scale production systems rarely tune a single mechanism in isolation; instead, they monitor how index selectivity, cache hit ratios, and transaction throughput evolve together under real workloads. A poorly chosen index, for instance, can quietly degrade write performance even while it accelerates specific read queries, creating a trade-off that only becomes visible once the system is observed over time and under realistic load patterns. Similarly, an oversized buffer pool can consume memory resources that would otherwise support more concurrent connections, meaning that performance gains in one area can introduce bottlenecks elsewhere.
This is why experienced database administrators treat performance tuning as an ongoing, iterative process rather than a one-time configuration task, regularly revisiting statistics, execution plans, and resource allocation as data volume and query patterns shift. Modern DBMS platforms increasingly attempt to automate parts of this balancing act, using adaptive algorithms that adjust buffer sizes or reorder join operations based on observed runtime behavior rather than static, pre-defined rules. Even so, automation has its limits, and a deep understanding of how indexing, buffering, query optimization, and transaction control intersect remains essential for anyone responsible for keeping a database both fast and reliable at scale. Ultimately, the goal isn’t to maximize any single metric in isolation, but to find a sustainable equilibrium where read speed, write efficiency, memory usage, and data consistency all coexist without one constantly undermining the others.
https://serverspace.us/about/news/serverspace-launced-cdn.mdCloud provider Serverspace integrated the Content Delivery Network (CDN) service.
Cloud provider Serverspace integrated the Content Delivery Network (CDN) service. It gives users two options for connecting their domain to the CDN: through zone delegation or by setting up A and CNAME records. This gives users the freedom to choose how best to integrate a CDN into their current structure.
## Content Delivery Network
A [CDN](https://serverspace.us/services/cdn.md) (content delivery network) is a distributed infrastructure of servers hosted in different geographic locations. The CDN service significantly improves the speed of content delivery to end users and reduces the load on the main server.
Server resources located on three continents are united in a geo-distributed structure covering 5 points of presence: the United States, Canada, the Netherlands, Turkey, and Kazakhstan. Soon, the geographic coverage is planned to be expanded with the addition of three new locations: Brazil, the UAE, and Singapore.
Switching to a CDN service provides several significant benefits: reduced site response latency, increased web page load speed, and improved SEO ranking. This is achieved by redirecting content from servers optimally close to the user. Requests for web pages are handled automatically, providing instant content from a nearby server.
Serverspace will continue to integrate service management tools. Shortly, the service plans to expand the geographic scope of the service as well as add the ability to track the geography of requests to CDN-connected domains.
## How do I connect a domain to the Serverspace CDN?
- Create an account on [Serverspace](https://serverspace.us/index.md);
- Go to the CDN tab and select the connection method: via zone delegation or CNAME record;
- Follow the instructions in the panel;
- Click the “Connect” button.
*Instructions are available in the [control panel](https://my.serverspace.us/) in the CDN settings section.
https://serverspace.us/support/help/first-python-program.mdThe instructions cover the simplest programs in Python. How to write your first Hello, World! and as a multiplication of numerical data.
## Introduction
The simplest Python program is to print a string saying Hello, World! Let’s figure out how to write it. To do this, we need to install the latest version of Python on our system..
## Preparing before starting
To get started, you need to expand [virtual environment](https://serverspace.us/support/help/python-3-virtual-environment-on-ubuntu-22-04/) in Python 3. You will also need to [initial setup](https://serverspace.us/support/help/initial-server-setup-with-ubuntu-20-04/) our server.
## First program
Let’s use the Python 3 command line:
```
python3
```
Let’s execute the command that displays information:
```
print("Hello, World!")
```
At the output we get the result:
```
Hello, World!
```
The print() statement performs the function of outputting data to the console.
Let’s create a file with Vim:
```
vim TestFirstProgramm.py
```
And add a one-line code:
```
print("Hello, World!")
```
To run the program itself, run the command:
```
python3 TestFirstProgramm.py
```
Consider also the use of variables in code and the use of print() to print information from variables:
```
#Assigning values to variables
a = "Hello,"
b = " World!"
print(a+b)
```
At the output we get the result:
```
Hello, World!
```
Variables are assigned not only string data types, but also integer or floating point numbers.
In the following example, consider the multiplication of numbers using variables. Let’s assign the value 5.60 to the variable “a” and the value 5 to the variable “b” and multiply them using the print(a*b) statement, according to the following code:
```
python3
a = 5.60
b = 5
print(a*b)
```
We get the following result:
```
#Result:
28.0
```
## Conclusions
As a result, we can say that writing the first program in the Python programming language is not difficult. There are various possibilities such as:
-
writing a[module](https://serverspace.us/support/help/import-modules-into-python-3/) for projects;
- creating classes inside modules;
- defining a [function](https://serverspace.us/support/help/how-to-create-functions-in-python-3/) within a class;
- importing modules using the import statement.
https://serverspace.us/support/help/how-to-change-the-mariadb-data-directory-to-a-new-location-in-centos-7.mdDiscover why and how to move the MariaDB data directory to a new location on CentOS 7. This step-by-step tutorial explains the process of reconfiguring your server for better storage management and performance.
## What is MariaDB
MariaDB is very popular SQL-based dadabase system. It is more powerful and fully compatible with it’s “ancestor” – MySQL.
## Why might you need to move MariaDB data directory to another location
There are two mainly reasons:
- Current disk’s space is over;
- Faster disk drive installed and you want to improove databases performance.
## How to change database data location
Before any opeations I strongly advice you to ensure what is current data location. Just open an SSH-session as root user, login to the MariaDB and run this command:
```bash
mysql -u root
select @@datadir;
```
Quit and stop the service:
```
quit;
service mariadb stop
```
Create new directory and move databases data into:
```
mkdir && rsync -av
```
Edit database service configuration file:
```
sed -i 's|||g' /etc/my.cnf
cat /etc/my.cnf
socket=/mysql.sock
EOT
```
Create special socket-file and set permissions:
```
touch /mysql.sock && chmod 777 /mysql.sock
```
Start the service:
```bash
service mariadb start
```
Check where is data located now:
```bash
mysql -u root
select @@datadir;
```
## Conclusion
After this article reading you knew what is MariaDB, possible reasons to move its data to other location and how to do this.
https://serverspace.us/support/help/how-to-write-a-module-in-python-3.mdThe instructions cover options for writing modules, importing modules, adding a module to sys.path, and extracting information about system paths.
## **Introduction**
Modules in Python are files with a ".py" extension that are coded in Python. Any file written in Python can be referenced as a module.
Several modules are available after installing the Python language. Some modules have to be installed manually.
Installing modules manually we covered in our guide about [importing modules into Python 3](https://serverspace.us/support/help/import-modules-into-python-3/).
With this guide, you will understand how to:
- Write a module;
- Access to modules from other directories;
- Using an environment variable;
- Module in Python 3 environment variable.
## Preparation for work
You must have a Debian/CentOS//[Ubuntu](https://serverspace.us/support/help/initial-server-setup-with-ubuntu-20-04/)-based distribution set up, setting up a user with sudo privileges. Configured [virtual environment](https://serverspace.us/support/help/python-3-virtual-environment-on-ubuntu-22-04/) Python language. WWe recommend that you prepare in advance before starting work.
## Writing and importing modules
The first step is to check the Python version with:
```
python3 –version
```
At the moment, the current version is 3.10.6. If you have an older version, then update the package index and software packages using:
```bash
sudo apt update && apt upgrade -y
```
Let’s start the virtual environment and use the Vim text editor to create a new file called testingFile.py and add the following lines of code at the very beginning by specifying the shebang. Shebang – using #! specify the path to the Python interpreter, see our instructions for more details.
```
#!/usr/bin/env python
# Function definition
def test():
print("This is test file")
```
If we run with:
```
python3 testingFile.py
```
We will get an empty result. We need to create a second file and name it test2.py and open it with vim and import testingFile.py into the test2.py file and call the test function.
```
vim test2.py
#!/usr/bin/env python3
#File import
import testingFile
#Calling a function from testingFile
testingFile.test()
```
We get the following result, as in Screen 1.
Screen 1 – Calling a function from an imported module
We are importing the module without using "from testingFile import test", we need to call the function using the module name. The use of from import can be considered in our instructions.
Consider the use of variables in our module, add a line at the very bottom:
```
#!/usr/bin/env python3
# Function definition
def test():
print("This is test file")
#Assigning a value to a variable
name = "serverspace"
```
Next, in the test2.py file, at the end, add a line by changing our code to the following form:
```
#!/usr/bin/env python3
#File import
import testingFile
#Calling a function from testingFile
testingFile.test()
#Calling a print function using a variable
print(testingFile.name)
```
Output is shown in Figure 2.
Screen 2 – Calling a variable from a module
Having considered calling the print function and variable, let’s look at creating a class and add a few attributes to the class using the following commands.
```
#!/usr/bin/env python3
# Function definition
def test():
print("This is test file")
#Assigning a value to a variable
name="serverspace"
#Class definition
class TestingClass:
def __init__(self, name, age):
self.name = name
self.age = age
def tell_me_about_TestingClass(self):
print("this class is " + self.name + ".")
print(self.name + "is the testing's name")
```
Now, using the test2.py file, we will call the initialization function and information about the class:
```
#!/usr/bin/env python3
#Import module
import testingFile
#Function call
testingFile.test()
#Output information from another module
print(testingFile.name)
#Calling functions from a class
server = testingFile.TestingClass("testingserver", "30 y.o.")
server.tell_me_about_TestingClass()
```
The result is shown in Screen 3.
Screen 3 – Calling functions from the TestingClass class
First, we create a variable called "server", call the class from the testingFile.py module, assign values for the variable name "testingserver" and the value "30 y.o." for the age variable.
It is important to keep in mind that a module is a definition, but at the same time it is possible to implement code. Consider a new module example in test3.py
```
#!/usr/bin/env python3
def TestHello():
print("Testing Hello, World!")
#Calling a function in a module
TestHello()
```
Import the module into the test4.py file and check the TestHello function call:
```
#!/usr/bin/env python3
import test3
```
We get the result in accordance with Screen 4.
Screen 4 – Calling a function from a module
The reason is simple, inside the test3.py file, we create a function called TestHello and inside it we implement the text printing function. Then we call the created function and import it into the test4.py file. Thus, by running test4.py, we call the text printing function from the TestHello function.
## Accessing modules from other directories
Sometimes some modules are useful not only for one project, but also for other projects. For this reason, it is not necessary to store the module in the same project directory. You can create a shared directory and refer to this directory using several methods.
### Using an environment variable
If the module is outside the project, use the sys module and use it to specify the path to the environment where the file with the desired module is located. For example, if we create the test5.py file in the home directory, we will not be able to import the test3.py file located in the virtual environment directory. Consider how to specify the path to the test3.py file:
```
import sys
sys.path.append('/root/testing/')
import test3
```
And we will get a successful result, as shown in Screen 5.
Screen 5 – The result
We can get a successful result by specifying the correct path to the test3.
### Module in Python 3 environment variable
This method is considered an effective solution, the module becomes available for the entire environment and system. Checking Which Path Python Checks With Commands
```
python3
import sys
print(sys.path)
```
As a result, we will get the test paths of the Python interpreter, as shown in Screen 6.
Screen 6 – Common ways to check the Python interpreter
Select the desired path and copy the test3.py file to the desired path.
```
cp testing/test3.py /usr/lib/python3.10
python3 test5.py
```
In the test5.py file, remove the import of the sys module. Let’s run the code:
```
cat test5.py #to make sure the sys import line is removed or commented out
python3 test5.py
```
We get the output as in Screen 7.
Screen 7 – Accessing a module from a shared path
Copying the module to the Python interpreter’s common checkout path proved to be the most efficient. The reason is that in order not to import the sys module in the code files every time and specify the path to the desired module, it is worth copying the desired module to the common path. Do not forget about the backup of the necessary modules, no one excludes the removal of non-standard modules after updating Python packages.
## Conclusions
In this guide, we have covered the following options:
- Creating a module;
- Importing the created module;
- Refer to the module by importing the sys module from being in another directory;
- Adding the created module to the common path of the Python interpreter;
- Obtained information about common paths when searching for a module using the Python shell.
https://serverspace.us/support/help/import-modules-into-python-3.mdImport modules, change module names to shorter names. Working with module functions. Execution on the Python command line.
## Introduction
Python provides various features. Let’s look at a few built-in functions:
- print() – for data output;
- abs() – to return the absolute value of a number;
- int() – to convert another data type to an integer;
- len() – returns the length of a sequence or collection.
Modules must be used, due to limited functionality. We connect external modules and thus get more functions.
Modules in Python have a ".py" extension at the end of the file. You can refer to functions, classes, or variables in other modules using the Python command line.
When we import the test module, the interpreter looks for the built-in module. If it doesn’t find it, it looks for the test.py file in the directory it gets from the sys.path variable.
This tutorial will cover checking, installing, importing and changing long names of modules with functions.
## Preparing for import
Need to use [our instruction](https://serverspace.us/support/help/python-3-virtual-environment-on-ubuntu-22-04/), to prepare in advance before starting work. You need to update the package index and update the software packages that are required.
Important! Run as a user with sudo access. If you work on a production server, so as not to harm your data in the server.
## Checking for Installing Modules
After installing the Python update, we get access to a number of modules. The modules are installed with Python and the standard library for minified tasks.
To test Python on the command line, type:
```
python3
```
The command interpreter will open and after ">>>" you will be able to perform various functions.
To check, we activate the virtual environment with:
```
source /testing/testingv/bin/activate
python3
```
The name will be prefixed with (testingv) as shown and enter the Python shell as shown in Screen 1.
Screen 1 – Activation of the virtual environment and the command interpreter
We import two modules “math” and “matplotlib”. Math – is a built-in module for mathematical calculations and the command should be executed without error. Matplotlib is a library for working with 2D graphics, we can see the results in Screen 2.
Screen 2 – Error when importing matplotlib
Exit the shell and use pip3 (the command interpreter for installing libraries) to install matplotlib.
```
exit() – exit from the command interpreter;
pip3 install matplotlib
```
The result is shown in Screen 3.
Screen 3 – Installing matplotlib
Let’s try to re-import the modules again and get a successful result, as shown in Screen 4.
```
import math
import matplotlib
```
Screen 4 – Successful import of modules
We consider the first step completed. We were able to install the module using pip3 and did the import successfully.
## Importing modules
Let’s exit the shell and create the testing_random.py file. The line with importing modules is inserted at the very top of the code or under the shebang. The shebang is #!/usr/bin/env python3 – execute the file as a Python program, using the environment to get the path to the interpreter file. Import the random library to generate random numbers.
```
#!/usr/bin/env python3
import random
```
By importing modules, access to its functions is opened. Before executing the function, to begin with, the name of the module is indicated, a period is put and the name of the function is indicated. Consider an example of generating random numbers 7 times from 5 to 15 using the randint function, as shown in the following lines of code.
```
import random
print("Output:")
for i in range(7):
print(random.randint(5, 15))
```
Let’s run the file with “python3 testing_random.py”. At the output, we get 7 columns with different generated values. For example, in our case, this is the following data:
```
Output:
6
14
14
12
12
12
12
```
At the same time, please note that the data should not be lower than 5 and not higher than 15. In case of using other modules, you should import other modules at the beginning of the code.
```
import random
import math
```
Let’s edit the code, when receiving the result, we will indicate 7 columns of the generated data from 5 to 15, and add the output number Pi.
```
import random
import math
print("Output:")
for i in range(7):
print(random.randint(5,15))
print(math.pi)
```
When executing this code, we get the following data:
```
Output:
9
13
12
15
7
14
13
3.141592653589793
```
Also with the help of import it is possible to import several modules at once.
## Using from import
The from statement is useful because we don’t have to specify the module name before using the function. This process simplifies the speed of writing code. At the beginning, we specify which function we import from the module and write the code. Consider a simplified version of our previous code and the result is shown in Screen 5:
```
from math import pi
from random import randint
print("Output")
for i in range(7):
print(randint(5,15))
print(pi)
```
Screen 5- Output
It’s safe to say that importing a few functions from a module at the beginning of the code saves a lot more time than naming the module and then naming the function in the code.
## Changing the name of the module and functions
In Python, it is perfectly possible to replace a module name with a shorter name by using “as” at the beginning of the code. This case must be used if the module name already exists in the code. You can also replace the module with a long name, which we use more often. An example is shown in the following line of code:
```
import math as m
print(m.pi)
print(m.e)
```
The result is shown in Screen 6.
Screen 6 – The result of the executed code
Output of numbers of constants Pi and Exponent.
You can also use “as” to shorten the name matplotlib.pyplot, for example to pyplt. You can see in [official guide](https://matplotlib.org/2.0.2/users/pyplot_tutorial.html) on using the matplotlib module.
## Conclusions
The instructions covered options such as:
- Module import;
- Using a function using the name of the added module;
- Importing a function from a module;
- Using a function without a module name;
- Changing the name of the module;
https://serverspace.us/support/help/how-to-create-functions-in-python-3.mdThe instructions cover options for defining a function, assigning key arguments, and using the main() function.
## Introduction
A function in Python is a block of instructions that takes input, executes instructions, and returns input information. Blocks of code defined as a function can be reused.
Python has built-in functions:
- print() —displays information;
- int() — converts a string or numeric data type to an integer data type;
- len() — returns the length of the value.
In this tutorial, we will look at creating new functions for use in our project.
## Preparation before work
Need to prepare [system for work](https://serverspace.us/support/help/initial-server-setup-with-ubuntu-20-04/), install the latest Python 3 and deploy [virtual environment](https://serverspace.us/support/help/python-3-virtual-environment-on-ubuntu-22-04/).
## Function definition
Let’s consider the usual code such as for displaying information. Let’s create a test_hello.py file and add a function in our virtual environment. A function is defined using the def() keyword:
```
def hello():
```
If you are using the Vim text editor, after creating the function, Vim redirects to the second line using automatic tabulation.
Let’s add the following piece of code to output information to the console.
```
def hello():
print("Hello, Dear, User!")
```
Call the function at the end of the code hello().
```
def hello():
print("Hello, Dear, User!")
hello()
```
Let’s run the code and get the result:
```
python3 test_hello.py
```
Screen 1 – The result of the written function
Functions come in different complexity, the simplest one was discussed above.
Consider the function below, which will use if-else conditional statements to iterate over vowels in strings.
```xml
# Creating the names function()
def names():
# Name input variable
name = str(input('Enter your name: '))
# Checking for vowels
if set('aeiou').intersection(name.lower()):
print('Your name has vowels!')
else:
print('Your name does not contain vowels')
# Iterate by name
for letter in name:
print(letter)
# Function call
names()
```
So, we created the names() function and used if-else conditional statements and a for statement in it.
## Working with parameters
Up to this point, we have considered functions without the use of parameters, then we will define the function and its parameters.
Parameters are objects within our function that point to an argument that the function can take.
Consider code with three parameters i, j and k and create a function to add them all together in different configurations. Then their sums will be printed in the add() function. Call the function to get the result.
Let’s write the following piece of code in a new TestAdd.py file:
```
def add(i, j, k):
q = i + j
w = i + k
e = j + k
print(q, w, e)
add(20, 25, 30)
```
We passed the data to the parameters, i.e. 20 – for parameter i, 25 – for parameter j, 30 – for parameter k. The program performs the following mathematical operations:
```
q = 20 + 25
w = 20 + 30
e = 25 + 30
```
Let’s run the program and get our result in the form:
```
45 50 55
```
When we passed 20, 25, and 30 as parameters to the add() function, we got the expected result.
## Key Arguments
Parameters can be called not only in order, but also using key arguments at the time when the called function identifies the arguments by the name of the parameter.
Let’s create a file called TestInfo. Let’s define the info() function and assign parameters. Let’s add a print() statement to display information. At the end of the code, we call the info function using the parameters and their values defined inside the info() function call.
```
#Function with parameters
def info(name, age):
print("Name: " + name)
print("Age: " + str(age))
```
Next, consider assigning values to parameters.
```xml
# Function definition with parameters
def info(name, age):
print("Name: " + name)
print("Age: " + str(age))
#Calling a function with parameters above
info("ServerSpace", 25)
#Calling a Function Using Key Arguments
info(name="Team", age=35)
```
Let’s run the code and get the result:
Screen 2 – Result obtained using parameters and key arguments
In the following code, consider specifying the age parameter at the beginning of the info() function call. After defining the function, we call the print() statement to print information about the name and age.
At the end of the code, we call the info function, first specifying the age, then the name. But before that, we get the result about the name, then about the age inside the info () function. The reason is that the order in which the print() statement is called has not changed:
```
# Function definition with parameters
def info(name, age):
print("Name: " + name)
print("Age: " + str(age))
#Calling a Function Using Key Arguments
info(age=40, name="ServerSpaceTeam")
```
Screen 3 – The result of calling parameters in reverse
## Assigning Key Arguments
Copy the file TestInfo.py and change the name to TestInfoValue.py
```
cp TestInfo.py TestInfoValue.py
```
By default, the age parameter is assigned the value “1”. If you call the info function without specifying the value of the age parameter, we get the result Age = 1. Consider the options for calling the info function with the value of the age parameter and using the key argument:
```
# Function definition with parameters
def info(name, age=1):
print("Name: " + name)
print("Age: " + str(age))
#Calling a Function with a Key Argument and Without a Key Argument
info(name="ServerSpace")
info(name="Team", age=15)
```
Screen 4 – Result of the executed code using the default value
We have considered two kinds of calling the info() function. In the first case, we specified a value for the name parameter and did not specify a value for the age parameter, and when displaying information, the age parameter was assigned a default value of “1”. In the second case, values were specified for both parameters, but the default value of the age parameter was not displayed.
## Returning values
Data from parameters can be passed to a function. The value of a parameter can be returned using the return statement.
When using return without an argument, we get a result with a value of None.
Let’s create a TestSquare.py file and define the testsquare function with the i parameter. Let’s add a variable j in which we raise the parameter i to the third power. We use return to return the value obtained as a result of the operation inside the j variable. Using the result variable, we assign the value 5 to the i parameter in the testsquare function. At the end of the code, we use the print() statement to print the result information. This will return the value of the operation 5 ** 3. Using “**” in Python denotes exponentiation:
```
def testsquare(i):
j = i ** 3
return j
result = testsquare(5)
print(result)
```
After running the code and get the output:
Screen 5 – Returning a function with return
If we comment out the return j line, we get the result:
Screen 6 – Returning None value
Consider returning a function with return in TestAdd.py:
```
def add(i, j, k):
q = i + j
w = i + k
e = j + k
return q, w, e
result = add(20,25,30)
print(result)
```
Let’s run the code and get the result:
Screen 7 – The result of the return of the function
We get the value (45, 50, 55) as a tuple, because when the return function was called, the variables were specified separated by commas.
## Using main() as a function
The main() function puts the components of the program into one function, while the main() function does not have to be called in the program.
Consider using main() in a regular program, let’s create a TestMain.py file. Let’s define the TestMain function and add a print() statement to print text. Let’s define a main() function and add a print() statement. At the bottom of the code, add TestMain() and main() to call functions and display text. Let’s write the code, run it and get the result:
```xml
def TestMain():
print("Hello, Dear, User!")
def main():
print("This is test text")
TestMain()
main()
```
Screen 8 – The result of the above code
In Python, you can use the following ‘__main__’ construct, which will run top-level code.
The whole structure looks like this:
```
if __name__ == '__main__':
```
Consider a program using the ‘__main__’ construct. The logic of the program is that the code parses the entered value into the name variable and matches it with vowels. If the name contains vowels, the result will be returned
“Your name has vowels”:
```xml
#Declaring a global variable and for entering a name
name = str(input('Your name: '))
# Function to check vowels
def vowel():
if set('aeiou').intersection(name.lower()):
print('Your name has vowels!')
else:
print('Your name has no vowels!')
# Iteration of letters in a name
def print_letters():
for letter in name:
print(letter)
# Main function definition
def main():
has_vowel()
print_letters()
# Executing the main function
if __name__ == '__main__':
main()
```
You can also specify two functions has_vowel() and print_letters() at the end, the result will be the same:
```
if __name__ == '__main__':
has_vowel()
print_letters()
```
Screen 9 – The result of the executed code
## Conclusions
As a result, we can say that functions are objects that take arguments and return a value.
For more information about writing a module in Python, we suggest looking in [our guide](https://serverspace.us/support/help/how-to-write-a-module-in-python-3/).
Here we looked at possibilities such as:
- definition of functions;
- work with function parameters;
- key arguments;
- returning values with return;
- using main() as a function.
https://serverspace.us/support/help/how-to-configure-continuous-integration-pipelines-with-concourse-ci-in-ubuntu-20-22.mdSetting up a Continuous Integration Pipeline with Concourse CI on Ubuntu 20/22 - Serverspace. Running the Hapi.js Test Application
## Introduction
Set up continuous integration and automate test pipelines with Concourse CI’s composable declarative syntax. Compared to other systems for setting up continuous integration, the Concourse team makes every effort to simplify the management of the continuous integration pipeline.
The previous instructions looked at downloading and setting up Concourse on an Ubuntu 22.04 server and secured our web interface with SSL from a Let’s Encrypt CA.
In this tutorial, we’ll look at using Concourse to run tests automatically, and the changes will be committed to our repository.
Consider setting up a continuous integration pipeline using the “hello world” application, using the code [Hapi.js](https://hapijs.com/), created on the Node.js web framework to ensure the process of code synchronization with assembly and testing. Let’s add CI definitions to the product repository itself. Let’s use the terminal and the “fly” utility to start the pipeline in Concourse. Finally, let’s add the changes to our repository in order to save them and implement the tests in the CI workflow.
## Preparation for work
Before you start, you need to run a server based on Ubuntu/Debian/CentOS, RAM must be at least 1 GB.
Set the user’s permissions to execute with sudo.
Download and install the Concourse utility from the official site or from GitHub and the Nginx web server installed using the package manager. You need to set up a TLS/SSL security certificate, set up a reverse proxy server for the Concourse web interface.
We need to get a domain name that points to our Concourse server.
Use the following instructions for proper setup:
- [Installing and configuring the server with a standard user](https://serverspace.us/support/help/initial-server-setup-with-ubuntu-20-04/);
- [Install Concourse CI](https://serverspace.us/support/help/installing-concourse-ci/);
- [https://serverspace.ru/support/help/ustanovka-i-nastrojka-nginx/](https://serverspace.ru/support/help/ustanovka-i-nastrojka-nginx/)[Installing and configuring Nginx](https://serverspace.us/support/help/install-and-configure-nginx-on-centos-7/);
- [Configuring Concourse CI Security with SSL](https://serverspace.us/support/help/installing-concourse-ci/);
In this manual, the entire process of work is considered on a working computer with pre-installed Ubuntu Linux. For this reason, you should make sure that you have installed various utilities for editing text files that are convenient for you to use.
You will also need the Git utility on your local computer and follow our instructions for proper configuration.
When we made sure that the Concourse server is running and that the local computer has all the tools for working with text files and Git is installed, let’s proceed to the main task of our instructions.
## Using Fly on the Command Line
You need to make sure that Concourse Worker and Fly are installed on the main server (to manage the pipeline using the command line).
For everyday work with Concourse CI, it is more convenient to install fly on a working computer, which has daily tools for working with the development of various products.
To get the latest version of fly, you need to open the Concourse CI web interface installed on the server:
```
https://server_url
```
After authorization in the server, in the lower right part of the screen, you can download fly by selecting your system at the workplace:
Screen 1 – Fly version and link to files
We click on the icon of our local system and download it to a directory convenient for us, in our case it is Downloads.
### Linux and MacOS
If your main workstation has Linux or a device running MacOS, follow these steps to install and run Fly:
```bash
chmod +x /root/fly
```
Next, you need to add the fly utility to the “PATH” environment to run it in the terminal:
```
install /root/fly /usr/local/bin
```
Let’s run the fly utility and get version information:
```
fly –version
```
We get a result that matches the version from the web interface:
```
7.9.0
```
### Windows
If the primary system is a Windows workstation, you need to run PowerShell and add the bin directory:
```
PS C:\Users\Serverspace> mkdir bin
```
You need to copy the downloaded fly.exe utility to the bin directory:
```
PS C:\Users\Serverspace> mv .\Downloads\fly.exe .\bin\
```
Let’s check the relevance of the profile by running the command:
```
PS C:\Users\Serverspace> Test-Path $profile
```
If the result is True, the current profile is available in the system.
If the result is False, you need to create a new profile:
```
PS C:\Users\Serverspace> New-Item -path $profile -type file -force
```
As a result, we get:
```
Directory: C:\Users\Serverspace\Documents\WindowsPowerShell
Mode LastWriteTime Length Name
—- ————- ——— —-
-a—- 31.01.2023 18:05 0 Microsoft.PowerShell_profile.ps1
```
Let’s open the created Notepad text editor profile file:
```
PS C:\Users\Serverspace> notepad.exe $profile
```
A new text file editor window will open and add to the PATH environment and specify the path to the file:
```
$env:path += ";C:\Users\Serverspace\bin"
```
Save the file and exit.
Let’s start reading the path from $profile:
```
PS C:\Users\Serverspace> . $profile
```
Next, run the command to check the version of the downloaded fly file:
```
PS C:\Users\Serverspace> fly.exe –version
```
As an output, we get:
```
7.9.0
```
When executing commands from Windows, you need to change every fly command (in this tutorial) to fly.exe.
## Authorization using the command line
After successfully launching fly, you need to log in to the installed Concourse, each server can use several “targets”, with which you can identify the necessary pipeline in the system and execute commands in it.
In this tutorial, let’s take a look at the tutorial in the target name of the Concourse system:
```
fly -t tutorial login -c https://concourse_server_url
```
It is necessary to fill in the login and password from the configuration file /etc/concourse/web_environment of our server.
As a result, we get:
```xml
logging in to team 'main'
username: serverspace
password:
target saved
```
If authorization is successful, a .flyrc file will appear in your home directory.
Let’s check the creation of “tutorial” in .flyrc:
```
fly -t tutorial sync
```
As a result, we get:
```
version 7.9.0 already matches; skipping
```
## Forking and Cloning a Repository
After setting up fly, you need to set up the repository to use the Concourse pipelines.
In a web browser, open the link to the repository, which we will use in our instructions.
In Concourse, you need to add a continuous integration pipeline to the main [repository branch](https://github.com/do-community/hello_hapi).
Screen 2- hello_hapi repository
In the terminal, go to the user directory. Let’s make a copy of the repository on our working computer, for this we will use the following commands of the git clone utility and go to a new branch:
```bash
cd
git clone https://github.com/githubUser/hello_hapi
cd hello_hapi
git checkout -b pipeline
```
After executing the commands, we get the following line:
```
Switched to a new branch 'pipeline'
```
We have switched to a new branch.
## Set up continuous integration for an application
Let’s define our files that are associated with the project repository. Thus, we will ensure the synchronization of the work of continuous integration with the code under test.
The test suite is located in the test directory. It contains three tests. The test script resides in package.json, which stores the test element in the scripts object.
It is necessary to create a directory called ci and define two subfolders named tasks and scripts in it, and we will place the product continuous integration files in them.
Let’s execute the following command:
```
mkdir -p ci/{tasks,scripts}
```
## Adding a pipeline
In the ci directory, we will create a file called pipeline.yml, in which we will specify our configuration settings:
```
vim ci/pipeline.yml
```
After creating the configuration file for the main pipeline, we need to add our configuration to it.
### Definition for NPM Cache
Let’s add the following configuration:
```
—
resource_types:
– name: npm-cache
type: docker-image
source:
repository: ymedlop/npm-cache-resource
tag: latest
```
The processes that decouple from the continuous integration data are processed by Concourse and extract the abstraction status information and they are converted into resources.
Resources are source data for Concourse to use when receiving or sending information.
The resource_types string will define new resource types that you can implement in your pipeline.
### Defining and caching a repository
Add the following piece of code to pipeline.yml to define the actual resource for the pipeline:
```
resources:
– name: hello_hapi
type: git
source: &repo-source
uri: https://github.com/githubUser/hello_hapi
branch: master
– name: dependency-cache
type: npm-cache
source:
https://serverspace.us/support/help/how-to-provide-access-to-the-multiple-servers-with-one-public-IP-via-Serverspace-control-panel.mdI described here how to provide access to the multiple servers with only one "public" IP-address via Serverspace control panel
## What is a reason to “cloak” a few servers behind the one public IP
There are two reasons why you could be needed to “hide” your servers:
- **Security reasons**. If you “set” any host “on-the-road” between your server and the Internet, you will create a private “safe area” cause any intruders will have needs to pass a “border” before they got access to the server;
- **Money saving.** There are no unused IPv4 subnets worldwide, IPv6 is not whidespread yet. So, IP-address cost is rising and will be higher in the future. You may save your money through less public IPs using.
To make your own private network space we will use Network Address Translation (NAT) technology. Follow further steps:
To create protected network login to Serverspace client area, then go to **VMWare Cloud > Networks >** **Add Network **section and choose network options. Take in mind assigned external IP, it is your network “gate”;
Next step you need to change your servers network interfaces settings. Add private interface and remove public (optional), then turn off and on all servers to accept changes;
Finally, you will see internal IP-addresses of each server. Take them in mind;
Go back to your network settings and add address translation rules for access to the servers;
Minimal rules list should looks like below;
## Checking
To check the result is enough try to connect to your network public IP and port you’re “forwarded” to the server;
## Conclusion
In this instruction I showed how to provide connection to the multiple servers via once IP-address with Serverspace client area features.
https://serverspace.us/support/help/how-to-keep-the-docker-container-running-after-starting-services.mdAfter this article reading you will know how to save docker container alive even if all current operations finished.
## What’s the problem point
Docker will run pre-built software into the “sandboxed” container. On the one hand, this approach us to provide absolutely idempotence, we have a guarantee that software is not dedends of the environment and “behaviour” is the same at any time. On the other hand, Docker will stops when predefined commands done. Example – container will immidiately stops after _echo _command:
```bash
docker run # Run command
docker ps # Check the running containers
```
This Docker’s bahaviour is not a bug, it is a feature to save system resources. But sometimes container should run permanently, e.g. if software should wait “incoming” connections.
## How to “force” Docker container never stops
You can got your aim several methods:
Pseudo-terminal launch. This way is good if you need to keep container running time-to-time. Just run your command with _-it _flags:
```bash
docker run -it bash # Run command interpreter
# Run command "inside" the container
docker ps # Check the container status
```
Run any command “in a loop”. To prevent container stop you can run any command in a cycle, then you can close the terminal session:
```bash
docker run bash -c
```
Then just check container status:
```bash
docker ps
```
You can get the same result if run docker in “detached” mode. Just use _-d _flag:
```bash
docker run bash -c
```
```
# Run command docker ps # Check the running containers
```
## Conclusion
After this article reading you knew how to save docker container alive even if your scenario finished.
https://serverspace.us/support/help/configuring-concourse-ci-security-with-ssl.mdConfiguring Concourse CI Security with SSL - Serverspace. Redirecting HTTP traffic to HTTPS. Linking a domain to a local address.
## Introduction.
Automatic assembly of projects after updating the code is actually a standard procedure allows you to view & test the product developed on the go, immediately look through errors and, as a result, quickly find and fix the problem. With the advent of Docker, they have become no less relevant and in demand. There are dozens of CI systems themselves today: Jenkins, Atlassian Bamboo, Bitbucket Pipelines and so on. The problem is that they are quite complex, most of them are commercial and cost a certain amount and, most importantly, require a specialist and time to configure and constantly adjust, which they usually cannot afford in small projects and even more so in individual development.
Concourse CI is a continuous integration system required for automating testing pipelines using unified declarative syntax. Concourse CI makes the process of the implementation of continuous integration simpler, while it requires almost no time to deploy and study.
In our previous [guide](https://serverspace.us/support/help/configuring-concourse-ci-security-with-ssl/) we looked at Concourse CI installation and configuration on a Debian 10 server. We figured out how to run it from the CLI and use the web interface.
In this instruction, we are going to look at protecting the gui by setting up the reverse proxy server via Nginx.
Reverse proxy usage has some advantages like: restricting access to certain content, allows staying anonymous, allows you to avoid restrictions on viewing content, reduces the load on the main servers due to caching of static and dynamic content, compresses content to reduce download time, and it uses a software firewall, which can protect against the most common web attacks.
## Before we get started
Firstly we should deploy a virtual server with OS Debian 10. There should be at least 1 GB of RAM. Follow the[tutorials according](https://serverspace.us/support/help/initial-server-setup-with-ubuntu-20-04/) to the instructions to configure a simple account without superuser rights.
Install and set up Concourse CI using the [official website](https://about.gitlab.com/) or [GitHub](https://github.com/concourse/concourse/releases).
Installing Nginx and setting up an encrypted connection.
You should get a domain name to access by domain, not by IP address.
## Reverse proxy specification
Let’s begin with editing the server block file to configure SSL and redirect traffic to the Concourse CI server.
The /etc/nginx/sites-enabled directory contains the file, which is the default file after nginx is installed.
Let’s make edits to the file to set up a proxy server. It will route traffic to the site by domain name.
Let’s start. Add lines at the top of the default file from the /etc/nginx/sites-enabled directory before the main part of the server block. Specify the local server IP address and port that our Concourse server is listening on:
```css
upstream concourse {
server 127.0.0.1:8080;
}
```
You need to find the block responsible for servicing SSL. By default the line with listen 443 is used. Make sure that after server_name there is your domain name.
Set up the “location /” block in this block. It sends requests to the Concourse server:
```css
location / {
include proxy_params;
proxy_http_version 1.1;
proxy_read_timeout 90;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://concourse;
}
```
After making edits, don’t forget to save the file and exit it.
Using the command let’s check the correctness of the file:
```
nginx -t
```
As a result, we get syntax ok. Test is successful.
You need to reboot nginx to apply the changes
```bash
service nginx restart
```
You configured Concourse server for the domain.
## Binding a domain to a network interface
After all the configuration settings, we need to bind our local address to our domain. Open the web-environment file from the /etc/concourse directory and convert the string CONCOURSE_EXTERNAL_URL to the following and add the local IP address:
```
CONCOURSE_EXTERNAL_URL=https://serverspace.tm
CONCOURSE_BIND_IP=127.0.0.1
```
Let’s exit and save the changes.
We must relaunch the concourse-web service to apply the edits.
```bash
service concourse-web restart
```
Let’s check which address works with port 8080 using the command:
```
netstat -tlnup | grep :8080
```
As an output, we get the following line
```
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 1781/concourse
```
The interface only listens on the local IP address.
Now we will make edits to the firewall deleting the rule for port 8080:
```
ufw delete allow 8080
```
All requests will be processed by Nginx which runs on port 80.
## Iterface verification
Interface provide the ability to browse all pipelines and tasks, monitor the results.
Let’s open a browser and enter our domain name. We will get to the Concourse welcome page:
Screen 1 – Concourse welcome page
Then enter the login and password you specified during configuring Concourse:
Screen 2 – Field for login and password
After successful authorization, we can open the interface:
Screen 3 – Page with our pipeline
Now you have the access to Concourse gui via the domain.
## Conclusions
We looked through:
- Changing Nginx file to route traffic by default;
- Binding a local IP address to a domain;
- Gui testing via a domain.
https://serverspace.us/support/help/protect-setup-for-smb-traffic.mdThis article described a lot of methods protecting SMB traffic corporate protocol on Windows Server for deny lateral SMB traffic
## Introduction
What is one of the most dangerous things on this planet for the corporate network? Perhaps, if one of these mechanisms detail was destroyed, the offender would run a DDoS attack on your server or an employee misconfigured systemю However, a more global problem conclusion in the system itself. Protocols are an essential part of it. They set rules of transmission packet data units, which remember the blood in the organism. Any infection and virus contribute via this liquid. Absolutely the same thing with protocol!
The **SMB**, or Server Message Block, is a protocol developed for file transferring via the network. Its purpose is to facilitate sharing of files, printers, and other resources between computers connected to a network. The significance of this set of rules is quite remarkable. Different OS got the opportunity to communicate without restrictions, such as Mac OS, Linux, and Windows.
Therefore, it is used in corporate networks quite often and unfortunately, vulnerability is a big problem!
## Analyze: check your protocols
Let’s take a first look at the version of the protocol you use:
- hold down the keyboard shortcut Win+R and write "powershell";
- then enter the command below into the CLI.
```
sc.exe qc lanmanworkstationе
```
Find raw with "Dependencies" and check parameters, which are opposite:
Screenshot №1 — Check the SMB version
This indicates that your SMB client supports the appropriate protocol version:
- **smb1** — “mrxsmb10.sys “;
- **smb2** — “mrxsmb20.sys “;
- **smb3** — “mrxsmb30.sys “.
If by unlucky chance you have the protocol of the first version or you want to be sure that it will not disturb you for sure, then I advise you to turn it off with the commands below:
```
sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi
```
The line above turns on dependencies of SMB2/3.
```
sc.exe config mrxsmb10 start= disabled
```
And this command disables the first version protocol. All these actions are due to SMB1 does not have a strong encryption algorithm, therefore which will be a problem for the confidentiality, integrity and availability of a network.
## Action: protection steps
If you have a second or third version of the protocol, so you need complete two actions to save information security: configure firewall rules, which will allow you to delimit the network by a specific port and enable encryption, which will avoid interception and decryption.
### Add Firewall rules
There are a few cases of network architecture in which people use SMB out of their LAN, however, it is a very small percentage. Then SMB, maybe, а tasty morsel for attackers. You need to write rules for incoming and outgoing connections for your firewall. Block TCP-port with number 445:
Screenshot №2 — Firewall block port
Screenshot №3 — Application of the rules
And you need to make similar actions for outgoing rules.
### Turn on encryption
In Windows Server you have default settings for SMB: turn off encryption. This problem has a quick solution. On the server side, open an elevated command prompt and type the following command:
```
reg add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" /v "SMBEncryption" /t REG_DWORD /d 1 /f
```
And for the client write follow line:
```
reg add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "RequireSecureNegotiate" /t REG_DWORD /d 1 /f
```
Here is a breakdown of the command and its attributes:
- **/v “SMBEncryption”** — This attribute specifies the name of the value that will be added;
- **/t REG_DWORD** — This attribute specifies the type of data that will be stored in the value. In this case, it will be a 32-bit binary value (a DWORD);
- **/d 1** — This attribute specifies the data that will be stored in the value. In this case, it sets the value to 1, which enables SMB encryption;
- **/f** — This attribute tells the reg command to force the operation without prompting for confirmation. If this attribute is omitted, the command will prompt you to confirm before making any changes.
Overall, this command adds a new value to the Windows Registry that enables SMB encryption on the server or client, depending on which command is used.
## Conclusion
I strongly recommend applying to cancel culture to SMB1 due to the lack of encryption. Use a newer version of that protocol SMB2/3 or turn off them if you don’t need them. Turn on encryption and add firewall rules for TCP-port 445.
## You may be also interested in
- [Get the Windows cloud server](https://serverspace.us/services/vps-server/windows.md)
- [Cloud DNS services](https://serverspace.us/services/dns-hosting.md)
- [More instructions for Windows servers](https://serverspace.us/support/help/category/windows/)
https://serverspace.us/support/help/windows-multiple-ip-addresses-powershell.mdLearn how to configure multiple IPv4 addresses on Windows Server 2016 and 2019 using PowerShell. Automate network setup across multiple servers efficiently.
In some scenarios, such as web hosting or application servers, it may be necessary to configure multiple IP addresses on a single network adapter in Windows Server. While adding one or two IP addresses through the graphical interface is manageable, manual configuration becomes inefficient when dealing with multiple servers and network adapters. In such cases, PowerShell provides a reliable way to automate network configuration on Windows Server 2016 and 2019.
First you need to run Powershell as an administrator. You can do this by right-clicking on the “Start” menu and selecting “Windows PowerShell (Admin)” in case of an English version of OS:
Screenshot №1. Start PowerShell as Administrator
Next, a PowerShell window will open. Now you need to determine on which interface you need to add the required IP addresses.
Using below command, we determine the required network interface:
```
Get-NetAdapter
```
Screenshot № 2. Determine network adapters for setup
In this case, one network adapter named “Ethernet”, and we will use it. Let’s first find out which IPs are already configured on this adapter using the command :
```
Get-netIpAddress -ifalias Ethernet -addressFamily Ipv4 | ft
```
Screenshot № 3. Find out which IPs are already configured
To add a new address, for example 192.168.10.10, you must use the following command:
```
New-NetIPAddress -addressfamily Ipv4 -IPAddress 192.168.10.10 -PrefixLength 24 -InterfaceAlias "Ethernet" -SkipAsSource $True
```
Check the result by running this command below:
Screenshot № 4. Result by running command New-IPAddress
As you can see, the adapter has been assigned another IPv4 address — 192.168.10.10. If you want outgoing traffic to be sent from the added IP address, you need to change parameter as below :
Screenshot № 5. Set outgoing traffic to be sent from the added IP address
If you need to add a larger number of addresses, for example 5, then you can use the script. Using an array of numbers, for example, from 11 to 16 and a foreach-object loop, add 5 more IP addresses:
```
11..16 | foreach-object {New-NetIpAddress -ifalias Ethernet -AddressFamily IPv4 -PrefixLength 24 -IPAddress "192.168.10.$_" -verbose}
```
Screenshot № 6. Adding multiple IP by script
After executing the command, check with the already familiar command:
Screenshot № 7. Result after executing script
In this article, we demonstrated how to use PowerShell to automate the configuration of multiple IP addresses on a single network interface in Windows Server 2016 and 2019. This approach significantly reduces manual effort and helps standardize network configuration across multiple servers.
- [Cloud servers powered by Windows Server OS](https://serverspace.us/services/vps-server/windows.md)
- [VPS powered by Linux Ubuntu](https://serverspace.us/services/vps-server/linux.md)
- [Instructions for Windows Server](https://serverspace.us/support/help/category/windows/)
https://serverspace.us/support/help/setup-open-source-siem-system-on-debian.mdLearn about SIEM systems: setting up and maintaining them to improve the speed and effectiveness of cyber — incident responses
Get a broad understanding of management and control of the **SIEM system**, setup and maintenance, which can help upgrade the effectiveness and speed of reaction to cyber—incidents and provide a high—security mode for your information system. Get knowledge about the type of architecture building with SIEM for small and medium businesses. Explore more features of controlling cyber—incidents, based on correlation analysis and risk management methods.
## SIEM system
**SIEM** (Security Event Management + Security Information Management) — systems that monitor information systems, analyze real—time security events originating from network devices, information security tools, IT services, design and application infrastructure, and help detect information security incidents. Problems of detecting incidents in corporate networks:
- security tools, servers and network devices create millions of events, terabytes of logs;
- it is ineffective to respond to all IB incidents: 50—95% of them are false positives on the SPI;
- data from a single means of protection does not reveal complex and targeted attacks;
- the events are scattered across different systems and dozens of reports
- regulatory requirements in the field of information security.
## Setup SIEM system
Before installing any software, we need to update the index and package on Debian:
```bash
sudo apt update && sudo apt upgrade -y
```
Screenshot №1 — Update package
Next stage: install the required packages.
```bash
sudo apt-get install suricata
```
Screenshot №2 — Installation
## Configure Suricata
```
sudo nano /etc/suricata/suricata.yaml
```
Screenshot №3 — Open config
In the configuration file, set the appropriate network interface for Suricata to monitor:
```
default-log-dir: /var/log/suricata/
af-packet:
– interface: enp0s5
```
Screenshot №4 — Change interface
Note: Replace “enp0s5” with your network interface name, you can use the command below:
```
ifconfig
```
Screenshot №5 — Check your config
Save and close the configuration file. Start Suricata in IDS mode:
```
sudo suricata -c /etc/suricata/suricata.yaml -i enp0s5 –init-errors-fatal
```
Screenshot №6 — Check status
Verify that Suricata is running by checking its log files:
```
tail -f /var/log/suricata/fast.log
```
As a result output system will look like a string with information about your settings, if you don’t enter any value, you receive an appropriate answer.
## SIEM system conclusion
In conclusion, setting up an open—source **SIEM system** on Debian is a crucial step towards enhancing the security of information systems for small and medium businesses. SIEM systems help detect potential security incidents by monitoring and analysing real-time security events. However, detecting incidents in corporate networks can be challenging due to the high volume of events generated by various security tools and devices. With a properly configured SIEM system, businesses can effectively manage cyber incidents based on correlation analysis and risk management methods, thus providing a high—security mode for their information system.
https://serverspace.us/support/help/install-freeradius-linux.mdStep-by-step guide to installing and configuring FreeRADIUS on AlmaLinux. Quickly set up a secure RADIUS server with this easy tutorial
Modern business network architecture has a complicated structure and a lot of devices can connect simultaneously which is a convenient feature for hackers and anybody who has illegal intentions. To solve this problem people invented one exciting solution. Radius server (aaa server), which can provide 3 functions of protection: authentication, authorization, and accounting. Every step on the system will be logged and all entries, and points of input are under control.
## RADIUS server
**FreeRADIUS** — is an exceptional RADIUS server that offers centralized authentication and authorization services for devices, including switches, routers, VPN gateways, and WiFi access points. Its unique ability to manage user access to network resources based on various parameters, such as identity, location, device characteristics, and time of day, makes it a versatile solution for enterprise, academic, and service provider environments.
The server supports multiple authentication methods and can integrate with external databases like SQL, LDAP, and Kerberos for efficient user and device information storage and retrieval. With its scalability, flexibility, and robustness, FreeRADIUS remains a top choice for organizations seeking a reliable and customizable **RADIUS** solution.
## Install FreeRADIUS
Before installing any software, we need to update the index and package on AlmaLinux:
```bash
sudo dnf update -y
```
Screenshot №1 — Update package
Install the necessary package for the RADIUS server:
```bash
sudo dnf install freeradius
```
Screenshot №2 — Install RADIUS-server
After installation, you need to configure the server according to your requirements. Configuration files we can find with the command below:
```
sudo nano /etc/raddb/radiusd.conf
```
But you can still use anything, a convenient text editor. Open the file and look at the parameters: logging, authentication protocol, and ports. All settings can be modified for your purposes.
Screenshot №3 — Configuration file for the server
Next, create a file with the name "user.conf" in the same directory:
```
sudo touch /etc/raddb/user.conf
```
Launch your text editor and use this command to open the file, we are using nano, but you can choose your own favourite text editor:
```
sudo nano /etc/raddb/user.conf
```
In the config add the client’s devices and shared secret using the following syntax:
```
client {
secret =
}
```
Screenshot №4 — Configuration file for devices
Instead of "client IP or hostname" enter what you need credentials and the same thing with the "shared secret", instead put a very strong password because of its single and fast method to get access to your system.
**Notice**: that the configuration file determines rules for the client's device!
Now, we go set up config for a user account: configuring accounts and groups for authentication on the server side, an open—source implementation of the RADIUS protocol. This involves creating user accounts and assigning them group memberships in the database.
```
sudo nano /etc/raddb/users
```
And paste this:
```
Cleartext-Password := ""
```
Screenshot №5 — Configuration file for the client
Replace with the desired username, and with the corresponding password in clear text format. Similarly, open the groups file in your text editor using the following command:
```
sudo nano /etc/raddb/groups
```
And enter this:
```
User-Name == ""
```
Screenshot №5 — Configuration file for groups
Launch the RADIUS server: After completing the configuration, initiate the server using the relevant command. For instance, you can activate the server by executing the following:
```bash
sudo systemctl start radiusd
```
And that's it!
## FreeRADIUS Linux
Setting up a RADIUS (AAA) server on AlmaLinux using FreeRADIUS is a relatively simple task when following the foundational steps outlined in this guide. By completing the basic configuration process, you can quickly deploy a functional authentication, authorization, and accounting server suitable for small to medium-scale environments. This tutorial focused on the essentials to help you get started with minimal friction.
However, FreeRADIUS is a highly flexible and powerful tool that supports a wide range of advanced features — including custom modules, integration with SQL or LDAP databases, dynamic VLAN assignment, EAP authentication methods, and more. These capabilities open the door to complex enterprise-level network policies and robust access control.
For users seeking to go beyond the basics, further exploration of the official documentation and additional community resources is recommended. With continued learning and refinement, FreeRADIUS can serve as the backbone of a secure, scalable network access infrastructure.
https://serverspace.us/support/help/nginx-cipher-suites.mdLearn how to add and configure cipher suites in your Nginx server to enhance SSL security. This guide will help you improve your website’s SSL ranking and boost its value in Google search results.
## What is nginx cipher and why should you change its
Nginx is one of the most known webserver today. To prove the website is really what its seems, SSL-certificates are using everywhere. It looks wonderful, seemingly. But the reality is that SSL cipher’s sets are changes cause there are always new algorithms appears. So thats the reason why “out-of-the-box” Nginx configuration isn’t optimal too often.
## How to check your server’s SSL rank
Before check you need a [fast'n'reliable VDS](https://serverspace.us/services/cloud-servers.md) with webserver “inside” and domain which DNS-records are “pointed to this server. Then you can look at the current SSL ciphers using [this service](https://www.ssllabs.com/ssltest/). As we see, default configuration isn’t highly graded:
To fix it just open your Nginx configuration file, find the directive _ssl_ciphers_ and replace its value with follow code:
```xml
ssl_ciphers EECDH:+AES256:-3DES:RSA+AES:RSA+3DES:!NULL:!RC4;
```
Save the file, restart service via _systemctl restart nginx _command and check the result again:
## Conclusion
After this article reading you know how to “raise” your website’s SSL rank, it will be useful for SEO.
https://serverspace.us/about/news/serverspace-named-momentum-leader-in-g2s-spring-report.mdServerspace got into 3 reports from G2 this spring. G2 Grid and Small-Business Grid reports for VPS. Momentum Grid Report. The user satisfaction score is 75.
Serverspace got into 3 reports from G2 this spring. Every season, the provider gets into the G2 Grid and Small-Business Grid reports for VPS and it is named High Performer. Now Serverspace was ranked 8th in the Momentum Grid Report for VPS and was named the Momentum Leader by real users.
Here's some details of Momentum Grid Report:
- The user satisfaction score is 74.
- The overall Momentum Grid score is 55.
- Web recognition growth increased by 92%.
Serverspace has been recognized based on feedback from real users for each of the Virtual Private Servers (VPS) related questions featured in the G2 Momentum Grid Report. To qualify for inclusion in the Usability Index, Serverspace has got 20 reviews from users with positive evaluation of the service and 5 responses аor every question that pertains to usability. This achievement demonstrates Serverspace commitment to providing a user-friendly and efficient service.
Serverspace also has received positive feedback from users in the Small-Business Grid report for VPS, indicating that the provider is meeting their needs at a high level. As a result, the satisfaction rating points have been increased to 75.
The team at Serverspace is grateful for the support of their users and is committed to continuously enhancing their service. Users are encouraged to provide feedback on [G2.com](https://www.g2.com/products/serverspace/reviews) regarding their experiences with Serverspace, including any likes or dislikes they may have. This valuable feedback will help Serverspace understand their users’ needs better and make necessary improvements to their service.
https://serverspace.us/about/blog/why-do-ssl-connection-errors-occur-and-how-to-fix-them.mdUncover the reasons behind SSL connection errors and learn effective solutions to fix them. Enhance your website's security and ensure seamless SSL connectivity
Often, when installing an SSL certificate, you can encounter many problems that prevent the HTTPS protocol from functioning normally.
In our blog, we will analyze the most common problems with SSL and ways to solve them.
So what exactly is SSL? SSL, the same Secure Socket Layer, is an Internet protocol that creates a closed connection on the user/server path.
If you connect to a resource, it requests server information about the certificate. He also responds positively if the certificate is present. Then the browser receives the same certificate. After that, the name, the validity period of the certificate, and the root certificate are checked.
## Causes of SSL connection errors
If the work of the certificate is performed correctly, then the browser line will have a special icon:
Screenshot №1 — Secure connection
The leading causes of these problems may be:
- The date and time on your device are set incorrectly;
- The SSL certificate is unreliable;
- Firewall or antivirus that does not allow access to the resource;
- Using QUIC;
- Old OS version;
- Old, outdated certificates ;
- The appearance of the “Invalid CSR” problem when generating a certificate from the control panel cloud provider.
Now, about each one separately.
## Problem related to incorrect date and time
The validity period of the certificate will not be considered if the time and date on your device are not true.
If this is the cause of the problem, then the browser will display a message about the incorrect date and time, as shown in the screenshot below:
Screenshot №2 — Time error
To get rid of this warning, you should adjust the time on your device. After the page is reloaded, the problem should disappear.
## The “Unsecured SSL—certificate” problem
When you go to a web resource protected by the HTTPS protocol, a warning may appear that “the SSL certificate of the site is not trustworthy”.
Screenshot №3 — SSL error
The set incorrect time, which we have analyzed above, is one of the reasons for this problem. Another reason may be that you do not have a root certificate. To fix this, you need to install a special GeoTrust Primary Certification Authority package, which will contain our missing root certificate.
To do this — after the race, you must:
- Using the Win+R combination, output the command line and enter this certmgr.msc command into it. Then click “Ok”. You will see a window with the certificate centre.
- Next, you should open the “Trusted Root Certification Authorities” pool on the left. After that, select the “Certificates” folder, click on it PCM, and then click on “All tasks — import”.
After that, you will start the certificate import wizard. Click on the “Next” button.
Screenshot №4 — Import wizard
- Then select the “Overview” menu and specify the root certificate we downloaded. Click on “Next”:
Screenshot №5 — Browse file
- After opening the next window, you should specify the item “Put all certificates in the next storage”/ Then click “Next”. You have successfully imported your certificate.
Screenshot №6 — Root folder
Then reboot and check if you have this problem anymore.
## Firewall or antivirus blocking your web resource
Sometimes a firewall can block resources. To check if your firewall blocks a certain one of them, you must disable it and re-visit the site again.
If you were able to connect, then you need to add it to the list of reliable web resources, and then it will work even with the firewall enabled.
Screenshot №7 — Firewall
Also, your certificate may be blocked by your antivirus tool. If this is the case, then disable SSL and HTTPS protocol verification in it, and then try to access the web resource.
If necessary, then add an exception for the antivirus in the form of the resource we need.
## QUIC protocol enabled
QUIC is a protocol that is still in the experimental stage. It provides a fast internet connection. Its main function is to support multiple connections. You can disable this protocol in the browser configuration.
Now we will show you how to disable this protocol in Google Chrome:
- After opening the search engine, enter the chrome command://flags/#enable-quic;
- In the window that appears, it will be highlighted: Experimental QUIC protocol. To the right of this parameter, you will have a menu in which you will have to change the option to Disable.
- Next, make a reboot, and the problem should disappear.
This method works both on Apple’s Mac OS and Microsoft’s OS.
## An old version of your OS
SSL may give an error because you have an old version or an un—updated OS. Most often it appears on older versions of Windows.
To get rid of this problem, all you need to do is install an update on your OS. After that, check whether the SSL certificate has started working correctly.
## Using SSL Certificate version 3.0
Sometimes this problem may occur due to the use of outdated SSL protocol version 3.0 by web resources. For the browser to support the outdated protocol, you need to follow these steps:
- You have to open a browser and open “Settings” in it.
- Scroll down the page and select “Additional”.
- In it, find the “System” section and select the “Proxy Server Settings” option and use the PCM to open it.
Screenshot №8 — Proxy browser
A settings window opens where you can configure your proxy.
- Then switch the parameter you need. Then click on “Ok” and then restart the browser.
## Invalid CSR errors when generating a certificate from the cloud provider’s control panel
While you are activating the certificate, there is a chance to get this problem: “Invalid CSR”. The reasons for this problem may be:
- Invalid FQDN name, like Common Name. In this field, you need to specify the full domain name by type: domain.com or subdomain.domain.com (for subdomains). The domain name must be specified without https://. You cannot use intranet names (text.local). To request wildcard certificates, the domain name must be specified as *.domain.com .
- If any letters or numbers other than Latin letters are used in your CSR or password, special characters cannot be used in it either. This also applies to passwords for the CSR/RSA pair.
- If you have incorrectly specified the country code. The country code must be two—letter. For example UK, IO, BY, etc.
- If the control string has an incorrect number of characters. The CSR request must start with the control line —————BEGIN CERTIFICATE REQUEST————— and end with the control line —————END CERTIFICATE REQUEST—————. These lines should have 5 hyphens on each side.
- If spaces are incorrectly placed at the beginning or end of the CSR string. You cannot use a space at the end of a CSR line.
- If the number of characters in the key is incorrect. Its weight should be more than 256 bytes.
- If an incorrect name is used in the CRS code for the certificate for one domain name. For example, the SAN name. In the CSR code for a certificate designed to protect a single domain name, there should not be a SAN (Subject Alternative Names). SAN names are specified for multi—domain (UCC) certificates.
- If you have recreated or extended the certificate period, and the Common Name field has changed. This field must remain constant. This field should not change.
https://serverspace.us/about/blog/detailed-history-of-cloud-technology-development.mdImmerse yourself in a detailed exploration of the history and evolution of cloud technology. Discover how this transformative technology, once the exclusive purview of the military and academia, now underpins our global digital ecosystem
Many people born in the XXI century believe that cloud technologies appeared during their generation. In fact, the history of “clouds” has been going on for at least six decades, and there have been periods of stagnation and stages of rapid development. The basis for them was laid, as it happened with a number of other technological innovations, by the military. And yet, under what circumstances did cloud technologies originate and how did they develop? About this — in our article today.
## From Military Innovation to Modern Technology: The Birth of Cloud Computing
Exactly sixty years ago, in 1963, the Office of Advanced Research Projects (DARPA), acting, as you know, in the interests of the US Department of Defense, allocated a grant of two million dollars to the Massachusetts Institute of Technology for a very interesting development. It received the name Project on Mathematics and Computing, abbreviated as Project MAC, although, of course, it had nothing to do with “macs” (in the modern sense). The goal of the researchers, whose group was headed by cybernetics scientists Robert M. Fano and Fernando Jose Corbato, was to develop a fundamentally new time-sharing system designed to organize shared access to the resources of electronic computers to several remote users. The reason for the interest in such technologies on the part of the military department, in general, is obvious: computers at that time were expensive, and there were relatively few of them, and the need for computing was growing rapidly.
Photo from the MIT Museum, Computer Science Laboratory, early 60s
Project MAC was based on the experimental Corbato Compatible Time-Sharing System (CTSS) created by Fernando Jose Corbato a few years earlier, which allowed users of several terminals connected to a computer to access the same program running on such a machine. The CTSS code was reworked and improved, as a result of which, within six months, 200 users in ten different MIT laboratories were able to connect to one computer and centrally run programs on it. This event can be considered a starting point in the history of the development of cloud technologies, since within the framework of this experiment, the main underlying principle was implemented — a multi-user mode of on-demand access to shared computing resources.
## UNIX, Multics, and Plan 9: Crucial Milestones in Cloud Technology
By 1969, based on the MAC project, Bell Laboratories and General Electric had created a multi-user time-sharing operating system called Multics (Multiplexed Information and Computing Service), which was based on the principles laid down by MIT scientists. In addition to organizing access to applications, Multics provided file sharing, as well as implemented some security functions and data protection from accidental damage. It was on the basis of this system that Ken Thompson created the first version of UNIX in November 1971, which for many years became the most popular multi-user operating system in the world.
Ken Thompson (behind the PDP-11 keyboard) and Dan Ritchie — UNIX developers
We can say that since the advent of UNIX, there has been a lull in the history of cloud technology development for some time, since this system fully met the requirements of both numerous commercial enterprises and educational institutions where it was used in the educational process. The lull lasted exactly until Bell Laboratories itself decided to replace UNIX with a more modern OS, focused primarily on the sharing of hardware and software resources.
This decision was another step towards the development of modern cloud technologies. The new Plan 9 system, developed by a team of UNIX creators led by Ken Thompson, made it possible to fully work with files, file systems and devices, regardless of which computer connected to the network they are physically located on. De facto, this OS turned the entire computer network into one global multi-user computing system with shared resources, which were accessed on demand and in accordance with user rights — that is, in fact, into a kind of modern “cloud”.
Plan 9 Development Team, Bell Labs
## Virtualization and the Evolution of Cloud Systems
The next important step in the evolution of cloud systems was the emergence of virtual machines. The idea of virtualization originated shortly after the advent of multi-user time-sharing systems. In the mid-60s, experiments with technologies that can be classified as the first hypervisors were conducted at the IBM Research Center of Thomas J. Watson in Yorktown Heights, where the IBM M44/44X experimental system was developed. On the basis of the IBM 7040 computer, the researchers created several independent computer emulators in which their own instances of programs could be launched and run in parallel in their own isolated environment.
IBM M44/44X
Around the same time, other IBM departments were experimenting with the IBM CP-40 machine: a specially modified IBM System/360 Model 40 computer. Isolated hardware and software containers were developed for this computer, in which an operating system with time-sharing and virtual memory CMS (Cambridge Monitor System) could work. This OS was created by employees of the Cambridge IBM Research Center (CSC) in close collaboration with researchers at the Massachusetts Institute of Technology who worked on the MAC project. Such virtual machines were called a “pseudo-computer” in Cambridge, and the main goal of the project was to implement the collaboration of several users with virtual memory.
IBM System/360 Model 40
Application virtual machines, or so-called managed runtime environments (MREs), have been developing in parallel, providing high-level abstraction for various programming languages. Their main task was to provide a platform-independent programming environment that abstracts from the underlying hardware or operating system and allows the application to run the same way on a machine with any hardware configuration. Such a “virtual machine” serves only one process, runs as a normal application inside the main OS and terminates when this process exits.
The appearance of the first MRE dates back to 1966 — this technology was used by the BCPL object code compiler. Later, the use of object code, which can later be translated into executable code for various hardware architectures, was adopted by compilers of other high-level languages. Managed runtime environments have developed rapidly, and the apogee of their evolution is considered to be the appearance of the Java Virtual Machine. Which, in turn, pushed Bell Labs to suspend the development of the Plan 9 project and start developing the Inferno OS instead, in the core of which the Dis register virtual machine was used.
The Inferno operating system could do all the same things as Plan 9, but the use of virtualization brought the sharing of hardware and software resources to a fundamentally new level. The developers assumed that Inferno would be able to fully work on various devices and hardware platforms without additional adaptation, launching the same applications and providing users with the same functionality. In fact, this platform, created in 1996, became the first truly cloud-based operating system in history, at least in its architecture. Although it has not found wide application, Inferno has laid a solid foundation for the further development of distributed cloud technologies.
It is believed that the term “cloud computing” first appeared in the same 1996 in the internal documentation of Compaq. It was used to refer to distributed data processing in local networks, although some researchers believe that it appeared much earlier in a number of academic papers. In particular, Computerworld magazine mentioned in one of its publications that the phrase “cloud computing” was used back in the 60s by J. K. R. Licklider, the first director of the ARPA Information Processing Technology department.
Joseph Carl Robnett Licklider
A certain contribution to the development of cloud technologies was made by Apple, which launched the Paradigm project in 1989. As part of this project, it was planned to develop a fundamentally new operating system capable of distributing a typical computing load between multiple devices simultaneously operating on the network. The main platform for such an operating system was to be pocket personal computers, which at that time did not yet have significant computing power, but were considered the most promising vector for the development of computer technology.
Inside Apple, the project did not receive the proper support of the head John Scully, so soon a separate company General Magic was created for its further development, and the operating system itself received the working name Magic Cap. The interface of this OS used the metaphor of a building: for example, a calendar and an email client could be found in an “office space”, and games and other entertainment could be found in a “living room”. For the development of user applications, the Magic Script language specially created by General Magic was used: an object-oriented C dialect. Unfortunately, the Magic Cap distributed operating system did not receive further development, but a number of its ideas and concepts were used in the architecture of the Apple Newton PDA, and much later they were reflected in iOS.
Magic Cap Interface
Since about the second half of the nineties, another lull has come in the history of cloud technology development, which was interrupted with the beginning of the era of mass distribution of cheap and ubiquitous Internet access. Which, in turn, caused the emergence of a huge number of complex and multifunctional web applications that required significant server capacity for their work. And already in the first half of the “noughties” there was a tendency for the gradual transformation of local software installed directly on the device into “cloud” programs operating on the principle of SaaS — Soft as a Service. All this combined breathed a second life into the idea of cloud computing.
## The Emergence of Public Cloud Services: Amazon, Google, and Microsoft
The first provider to offer users a public cloud service was Amazon, which launched the Simple Storage Service, or Amazon S3, on March 14, 2006. The company, which built powerful data centers for internal needs, considered that it was quite able to share computing power with its customers by leasing them. Initially, Amazon opened access to object cloud storage with a web interface, the capabilities and functionality of which gradually grew and developed. Already in October 2007, more than 10 billion objects were stored in the Amazon cloud, in January of the following year their number exceeded 14 billion, and then began to grow exponentially: by the end of 2008, the storages already contained 29 billion objects, a year later — 64 billion, in March 2010 this number reached 102 billion, and by March 2021 exceeded 100 trillion objects.
Amazon became the first company to offer a public cloud service
On April 7, 2008, another giant of the IT industry joined Amazon with its Google Cloud Platform project, and a little later, in October 2008, Microsoft Corporation joined with the Azure project.
Now it is virtually impossible to imagine the global IT landscape without “clouds”: [cloud services](https://serverspace.us/index.md) allow customers not only to flexibly manage infrastructure, save on equipment, backup and technical support, but also to access a huge number of services, applications and data from anywhere in the world. At the same time, all modern capabilities of cloud technologies are based on three fundamental pillars: the separation and sharing of resources, virtualization and the possibility of remote access to these resources via the Internet. It is noteworthy that all three of these components originated in the early sixties of the last century in the research laboratories of MIT, IBM, Bell Labs and other technology companies, many of which were funded by ARPA. The current technological level, which in 1963 would have seemed like a real fantasy to scientists, is, by and large, just a logical development of the scientific and technical base laid down 60 years ago.
https://serverspace.us/about/blog/dynamic-dns-what-is-it.mdTired of losing remote access every time your IP changes? Here's how Dynamic DNS fixes that for good.
Often, while working on the Internet, the user needs a static IP address. It can be obtained by contacting the Internet provider directly or using a particular service called Dynamic DNS (or, as it is also called, DynDNS, DDNS). Let’s talk about the second option in more detail.
Dynamic DNS is a service that assigns a specific IP address to the network equipment, by which the user can connect to his equipment from anywhere.
**Important:** do not confuse Dynamic DNS with Primary and Secondary DNS. Dynamic DNS is a service, and Primary and Secondary DNS are the hardware that provides access to the Internet.
## How to connect
For example, we use the Netis N2M v2 router, which supports not only DynDNS but also VPN, IPv6, etc. To activate the service, go to the router’s control panel, select the “Dynamic DNS” section and the press to **Enable** button:
Screenshot №1 — Control panel
Look for this function on the menu at the left of panel:
Screenshot №2 — Dynamic DNS panelNow we can use two service of registration оur own domain: no—ip and Dyn DNS. Consider main mechanism of any service that provide company include in two steps:
- Domain registration;
- Install machine—agent.
Firts one help to make request to your machine/router using domain name, second point at this time make a translation to the domain provider your real — time IP address that changes A—record and help to make hard association with your machine.
Register a new user by clicking to the link on the right “Go to register”. After your click the browser will be open and display main service. We need to click on the Dynamic DNS:
Screenshot №3 — No ip site
Then you can use different tariff begin at the point of your requirement and choose free or pay form:
Screenshot №4 — No—ip tariff
After registration you can download agent program and follow to the steps displaying in the instructions of the service. Write your credentials to router panel that connect two sides service and your home network.
Screenshot №5 — Write credentials
After the above actions, we save the changes, restart the router and check the performance of the DDNS service: open the browser and enter the domain that was received during registration. The control panel opens with the activated service. All functions available on the user’s home network will also be available via no—ip. For example, if an FTP server is enabled on the router, it will also be active in Dynamic DNS.
## YDNS
YDNS is a provider, which was created in Germany. You have to register via login and have quite a complicated password. YDNS provides a high-quality service for updating the DNS addresses of your device and does not require a lot of personal data from you to start using.
Screenshot №6 — YDNS
**Significant!** If you do not have a “white” IP address, the site administration suggests using its own option.
## Dynip.com
The second representative is DynIP. The service offers a choice of 3 tariffs: Basic, Professional and Enterprise:
Screenshot №7 — DynIP tariff
The main difference from the previous provider: DynIP is not free. To check the quality of the service, you can download Free Trial Dynamic DNS and use the program for free for 30 days.
## Recommendations
https://serverspace.us/about/news/extended-configurations-in-amsterdam.mdCloud provider Serverspace has launched a new cluster in its Amsterdam data centre. Create VPS/VDS servers with advanced CPU configurations.
Cloud provider Serverspace has hosted modern hardware in an additional cluster in data centre AM2. It is the third cluster in Amsterdam. Its main feature is the possibility to create extended configurations of [cloud server](https://serverspace.us/services/cloud-servers.md) resources. It is now possible to order VPS with processors (CPUs) of up to 32 cores.
In the data centre, our specialists installed 6 2U servers of the SuperMicro build. Servers of this brand have performed well in this and other locations, so we used a new series model based on 3rd generation Intel Xeon Gold 6326 16-core processors with a clock speed of 2.90GHz in the new cluster.
Our specialists have successfully implemented two L2/L3 switches, the Cisco Nexus 93180YC-EX, to provide maximum performance and meet the growing needs of today’s data centers. These switches support both Layer 2 (L2) and Layer 3 (L3) functionality, allowing them to efficiently manage network traffic and provide optimal data switching.
As part of the expansion of resources in the Dutch data centre, customers can now deploy [VPS](https://serverspace.us/services/vps-server.md) with CPUs of up to 32 cores. This enables the full potential of data processing to be exploited and provides high performance for user applications and services. Virtual servers with large CPU specifications are capable of handling complex and computationally intensive tasks. Increasing the number of CPU cores allows the load to be distributed across multiple parallel threads, resulting in faster task execution and improved system responsiveness.
## How do I set up a server with an extended CPU configuration in Amsterdam?
To order a VPS with a extended configuration in Amsterdam you need to
- go to Serverspace panel;
- start creating a VPS via the vStack cloud tab;
- check the VPS resources. Select up to 32 CPUs in the CPU selection line;
- select the location – Amsterdam, Netherlands;
- click on the button “Create” in the bottom right corner.
Automatically VPS will be created in the chosen location.
* All new projects, as well as projects where all services and resources in Amsterdam have been previously removed can order VPS in the new cluster.
https://serverspace.us/support/help/how-to-create-a-slackbot-using-python-3-on-ubuntu-20-04.mdLearn how to construct a Slackbot with Python 3 on Ubuntu 20.04. Enhance team communication with this straightforward guide
Creating Slackbot using Python on Ubuntu 20.04:
- [Intro](#step1)
- [Preparation](#step2)
- [Launching Slackbot](#step3)
- [Configurating Python.3](#step4)
- [Messages from our bot](#step5)
- [Test actions with our bot](#step6)
- [Launching a Flask app](#step7)
- [Launching our Flask app](#step8)
## Intro:
Slack – a corporate messenger, which was designed to improve productivity in your workplaces. With it you will be able to exchange messages, create public or private chats, make calls (voice or video calls), and to integrate with different Slackbots. Slackbot is an application which was designed to interact with users through conversations. It has many functions and options, like: send warnings and messages, launching any tasks.
In our tutorial, to deploy Slackbot we will use Python and Ubuntu 20.04. Slack has a lot of tools in its own arsenal, in order to help you interact with Python’s _Application Programming Interface (API)_ and its integrations.
To test abillities of the Python and Slack API, a _CoinBot_ will be launched, which will be monitoring chat and flip a coin when it will be triggered. After all you can upgrade your bot for more practical purposes and your own ideas.
_Blot:_ In our tutorial, we are using Python.3, that means that if you will be using versions wich were released earlier, bot won’t be able to work.
## Preparation:
Everything would work, if you have these elements:
1) Slack on your PC and Workplace (workspace) in which you are going to work. If you don’t have one, then you should create one on the official Slack website.
2)Virtual machine or PC with public IP address.
## Launching Slackbot
Firstly, let’s launch our Slack application in the Slack API Control Panel (SCPAPI). Enter menu of your workplace and after that go to SCPAPI.
Then, click on the “Create an App” menu, as on our screenshot:
Thereafter you will be required to name your app. Our name will be “_CoinBot_“, but your name is up to you. After that, choose a Workspace that is more convenient for you, where application will be installed.
Afterwards, your app will be ready to work. You could go to the control panel.
From that panel, you can customize your app: upload new permissions, connect notifications to any events, install your application in any Workplace, and a lot of other things.
Now, we need to give special rights to our app, if we want our application to have an acces to send messages in our chats.
To have this permission: we have to click on “Permissions” context menu, as on our screenshot:
After that, you will be in the “OAuth & Permissions” menu. You need to go lower to the “Scope”. There you shoulf select “Bot Token Scopes”. In that menu, press the “Add on OAuth Scope” menu:
As a next step, we need to add the permission _chat:write. _You can search it in the special desk.
After that your app will have a permission to write in chats.
Nextly, after you added this right , you should add your app again to your Workspace.
Go a little lower at this page to the “Oauth Tokens for Your Workspace”, than snap on the “Install to Workspace” button:
After our actions, Slack is going to seggest you to look throw permissions which are available for this app. If everything arranges you, click on the button with “Allow”:
Than our bot is ready to go, Slack is going to provide you with your user token, it is going to be used to access your Workspace:
Still in that menu you have a button “Reinstall to Workspace”, which you can use if you have some errors with your bot, it is going to be reinstalled, after clicking on that button.
Our last thing to do is to add our chatbot in your workspace. If you have an already created channel you can move to that step now: ["Adding a bot to your channel"](#stepchannel)
In case you don’t have chats launched yet, then follow these couple of steps:
Find the “Add channel” context menu, and select “Create a new channel” button in it:
After, select a name for your channel and optionally fill the description bar.
## Adding a bot to your channel
If you want tio add bot to your cht, you should put ypur cursor on the name of the chat and click on the “View channel details” context menu:
Then switch to “Integration” menu and click on the “Add Application” button:
Then search your application by it’s name or simply scroll down to find it. In our case “CoinBot”:
After all our actions, bot will be launched in our chat:
## Python setup
We have to set up Python, so we can install and manage our Slack bots.
Firstly, let’s install python v.3 and corresponding tool helpers. We are going to do that on our VM with Ubuntu v.20.04 deployed on it.
Initially, Python v.3 is already preinstalled on all Ubuntu servers version 20.04, but to convince we have all updates available, we should download all previous updates on our system using these commands:
```bash
sudo apt update
```
```bash
sudo apt -y upgrade
```
After that, we can see wich version we have :
```
python3 -V
```
The answer will look something like this:
```bash
Python 3.8.2
```
Nextly, we should download pip tool, which will get us access to package management:
```bash
sudo apt install -y python3-pip
```
After that we are going to deploy the virtual environment(VE):
```
python3 -m venv ~/.venvs/slackbot
```
After that we need to activate it:
```
source ~/.venvs/slackbot/bin/activate
```
Now our terminal in brackets will display our virtual environment, it should be something like that:
```
(slackbot) root@Ubuntu-Bot-Python:~#
```
Nextly, with pip tool, we are going to install some important Python components:
```bash
pip install slackclient slackeventsapi Flask
```
Explanation: slackclient and slackeventsapi – tools that make using the Slack API easier. Flask – microweb framework which is going to be used to deploy our bot.
After we have seted up Python, we can set up our bot.
## Creating a class for Slackbot messages in Python
Slack is using specially formatted JSON data to send messages.
Let’s launch a Python class that simulates a coin toss.
Reminder – we do all the actions in a virtual environment. In our case, the virtual environment is root@Ubuntu-Bot-Python:~#
First, using the touch command, create a file called coinbot.py:
```
touch coinbot.py
```
Then open this file with the nano editor, you can use any other editor:
```
nanocoinbot.py
```
Add the following content to our file:
```python
# import the random library to help us generate the random numbers
import random
# Create the CoinBot Class
class CoinBot:
# Create a constant that contains the default text for the message
COIN_BLOCK = {
"type": "section",
"text": {
"type": "mrkdwn",
"text": (
"Ok! Flipping a coin.\n\n"
),
},
}
& # The constructor for the class. It takes the channel name as the a
# parameter and then sets it as an instance variable
def __init__(self, channel):
self.channel = channel
# Generate a random number to simulate flipping a coin. Then return the
# crafted slack payload with the coin flip message.
def _flip_coin(self):
rand_int = random.randint(0,1)
if rand_int == 0:
results = "Heads"
else:
results = "Tails"
text = f"The result is {results}"
return {"type": "section", "text": {"type": "mrkdwn", "text": text}},
# Craft and return the entire message payload as a dictionary.
def get_message_payload(self):
return {
"channel": self.channel,
"blocks": [
self.COIN_BLOCK,
*self._flip_coin(),
],
}
```
Then let’s save and close our file with a keyboard shortcut.
Now our bot can send messages, and you can add it to your workspace.
## Test messages from our Slackbot
Now let’s check that our class creates the correct load.
Create a file called coinbot_test.py:
```
nano coinbot_test.py
```
Then add the following content to the created file
Important: Be sure to change the server name to your own in coin_bot = coinbot(“#YOUR_CHANNEL_HERE”).
```xml
from slack import WebClient
from coinbot import CoinBot
import os
# Create a slack client
slack_web_client = WebClient(token=os.environ.get("SLACK_TOKEN"))
# Get a new CoinBot
coin_bot = CoinBot("#YOUR_CHANNEL_HERE")
# Get the onboarding message payload
message = coin_bot.get_message_payload()
# Post the onboarding message in Slack
slack_web_client.chat_postMessage(**message)
```
Save and close this file.
Before running the test, you need to export your token, which is listed on the Slak API:
Now export your token:
```
export SLACK_TOKEN="Your token"
```
Now we can test our bot. Run the following script in your terminal:
```bash
python coinbot_test.py
```
After that, a message about a coin toss will be sent to you in the channel on which you installed your application. Make sure your bot actually gave you either heads or tails.
## Creating a Flask app to run Slackbot
Now that your bot can toss a coin, create and send messages, we will deploy Flask, which will process the messages and give some kind of reaction to them if their content matches some criteria.
First, let’s configure the firewall settings to allow traffic on port 3000:
```
sudo ufw allow 3000
```
Now check the status of ufw:
```
sudo ufw status
```
You should see output similar to this:
```
Output
status: active
To Action From
— —— —-
OpenSSH ALLOW Anywhere
3000 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
3000 (v6) ALLOW Anywhere (v6)
```
We will then create a file for our Flask application.
Let’s call this file app.py:
```
touch app.py
```
Then, open this file with any of the editors. We will use nano:
```
nano app.py
```
Let’s add the following content to our app.py file:
```python
import os
import logging
from flask import Flask
from slack import WebClient
from slackeventsapi import SlackEventAdapter
from coinbot import CoinBot
# Initialize a Flask app to host the events adapter
app = Flask(__name__)
# Create an events adapter and register it to an endpoint in the slack app for event injestion.
slack_events_adapter = SlackEventAdapter(os.environ.get("SLACK_EVENTS_TOKEN"), "/slack/events", app)
# Initialize a Web API client
slack_web_client = WebClient(token=os.environ.get("SLACK_TOKEN"))
def flip_coin(channel):
"""Craft the CoinBot, flip the coin and send the message to the channel
"""
# Create a new CoinBot
coin_bot = CoinBot(channel)
# Get the onboarding message payload
message = coin_bot.get_message_payload()
# Post the onboarding message in Slack
slack_web_client.chat_postMessage(**message)
# When a 'message' event is detected by the events adapter, forward that payload
# to this function.
@slack_events_adapter.on("message")
def message(payload):
"""Parse the message event, and if the activation string is in the text,
simulate a coin flip and send the result.
"""
# Get the event data from the payload
event = payload.get("event", {})
# Get the text from the event that came through
text = event.get("text")
# Check and see if the activation phrase was in the text of the message.
# If so, execute the code to flip a coin.
if "hey sammy, flip a coin" in text.lower():
# Since the activation phrase was met, get the channel ID that the event
# was executed on
channel_id = event.get("channel")
# Execute the flip_coin function and send the results of
# flipping a coin to the channel
return flip_coin(channel_id)
if __name__ == "__main__":
# Create the logging object
logger = logging.getLogger()
# Set the log level to DEBUG. This will increase verbosity of logging messages
logger.setLevel(logging.DEBUG)
# Add the StreamHandler as a logging handler
logger.addHandler(logging.StreamHandler())
# Run our app on our externally facing IP address on port 3000 instead of
# running it on localhost, which is traditional for development.
app.run(host='0.0.0.0′, port=3000)
```
Save and close the file.
Explanation: We add the following statements because:
_import os_ – we will use to access environment variables
_import logging_ – we will use to log application events.
_from flask import Flask_ – we will use to create a Flask application
_from slack import WebClient_ – we will use to send messages via Slack
_from slackeventsapi import SlackEventAdapter_ – we will use to receive events from Slack and process them
_from coinbot import CoinBot_ – we will use to instantiate your CoinBot and generate the message payload.
## Launching your Flask application
After all, our Flask application is ready to work with the application, let’s test it.
First, let’s add our Slackbot app.
On the Slack API page, go to the “Basik information” section and scroll down to the “App Credentials” subsection:
Click on “Show” as shown in the screenshot and then copy the Signing secret.
Now we export our signature secret with this command:
```
export SLACK_EVENTS_TOKEN="MY_SIGNING_SECRET_TOKEN"
```
Now we can test our application.
Start the Flask application using that code:
```
python3 app.py
```
Example of the output:
```
(slackbot) [19:37:05] danial:CoinBot$ python app.py
* Serving Flask app "app" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:3000/ (Press CTRL+C to quit)
```
Now let’s finish setting up our application in the Slack UI.
Firstly, we are going to provide our application the right to read, process activities in chat and respond to them.
In the user interface menu, select the “Event Subscriptions” section and switch the “Enable Events” toggle switch to the “On” position, as shown in the screenshot:
After, open the “Subscribe to bot events” menu and select _message.channels:_
After our actions, your application in futere will have an opportunity to process messages.
Once you save the changes, you will have a yellow context menu at the top of the screen informing you that you need to reinstall the application in order to apply the following changes.
Click on reinstaliation link in this banner to reinstall the app:
You will then have a context menu with the new permissions applied. If you agree with everything, click “Allow”:
After all, our bot will be ready. Mve to your chat and send a message with the phrase “Hey Danny, flip a coin”.
Your is going to check your luck and show you the result . Congratulations, we launched our bot!
https://serverspace.us/support/help/instruction-for-installing-and-configuring-php-and-mysql-in-conjunction-with-iis.mdFollow ServerSpace's instructions to install and configure PHP and MySQL with IIS. Ideal for setting up dynamic web environments
It happens that on a Windows server it is necessary to use it as a web server. The first thing that comes to mind is to install WAMP. Or just install Apache, MySQL and PHP separately. However, particularities also happens, for example, instead of Apache, you want to use IIS. The reasons can be completely different. From the system administrator’s lack of desire to learn something new, to the radical views on the part of the information security service. We are going to look throw how to create a bunch of IIS + MySQL + PHP.
IIS is a set of Internet services from Microsoft, in other words, a web platform. The peculiarity of IIS is that it supports a large number of modules and applications, including work with MySQL and PHP.
** In the Serverspace you can [create a server](https://serverspace.us/services/cloud-servers.md) with already installed apps “MySQL and PHP”.**
**Installing IIS.**
Open the Server Manager.
In the window that will open, you should select “Add roles and features”.
In the window Install Roles and Features Wizard, optionally, check the "Skip this page by default" box. This page will appear every time you are going to try adding a role or features. After that press the "**Next**" button.
As a next step we should check that the option “**Install roles and features**” is selected in the** Installation type** menu . After that, click on the "**Next**" button.
At the stage of selecting servers, simply click "**Next**", because in our case there is one server
At the step of selecting server roles, check the box "**Web server (IIS)**", click on the "**Next**" button.
In the window that is going to appear, click the “**Add Components**” button. Window will close.
In the remaining window of the wizard, click on the "**Next**" button.
At the stage of selecting components, we recommend you to put a tick in the box "**Features of the .NET Framework 3.5**". Click “**Next**“.
At the step "**Web Server Role (IIS)**" – click "**Next**".
Optionally, you can check additional services of the Web Server role, such as an FTP server. We press the "**Next**" button.
Confirm the installation by clicking on the "**Install**" button.
We need to wait for the end of the installation process.
The** IIS** icon will appear in the Server Manager window. We need click on it.
In the updated window, right-click on the server name. Select “**IIS Manager**” from the context menu.
In the manager window that appears, in the left side, select the current server. In the right part of the window – “**Get new web platform components**“.
A default browser window will open, prompting you to download and install the Web Platform Installer.
Download the installation package, run and install it.
After installation, click "**Get new web platform components**" again.
The Web Platform Installer wizard will start.
**Installing MySQL and PHP.**
There is a search field in the program window. Let’s use it. In the search results, select the PHP package. Click on the "**Add**" button.
Similarly, find the MySQL package, click “**Add**“. When all packages are added, click the "**Install**" button.
As on Linux systems, the installer will ask for a password for the MySQL root user. Do not forget the entered password. Click “**Continue**“.
The central part of the window lists the programs that will be installed. To view the text of the license agreement for the installed software, click on the hyperlink. If you agree, click the “**Accept**” button.
We need to wait for the installation to finish.
Installation result. Click “**Finish**“.
As you can see, the "PHP Manager for IIS" package has not been installed. Install it in the same way. We find through the search field, click on the "**Add**" button, then on the "**Install**" button.
Remember that the program was not installed due to an incorrect digital signature. It happens. Download the program from [github](https://github.com/phpmanager/phpmanager/releases). Don’t forget about the bitness of the OS.
The result will be an MSI file. Install it as a normal program. You may need to close IIS Manager during installation
Once the installation is complete, the “**PHP Administrator**” icon will appear in the IIS Manager window. Open it with a double click.
In the window that opens, check phpinfo(). click on the appropriate hyperlink.
In the opened window for selecting a site and URL, select the default site. Click “**OK**“.
The result of executing the phpinfo() function will be displayed in the IIS manager.
**Let’s check the MySQL installation result.**
We need to open a PowerShell window and go to the DBMS location directory using the command:
```
cd "C:Program FilesMySQLMySQL Server 5.5bin"
```
Try to connect to the DBMS:
```
./mysql -u root -p
```
Enter the password wich you have specified during installation.
https://serverspace.us/support/help/secured-windows-server-checklist.mdSecure your Windows server with our comprehensive checklist. Implement essential measures to protect against vulnerabilities and ensure robust server security
Check-list of secured Windows Server:
- [Regularly install updates to the operating system and installed software.](#step1)
- [Use software from trusted sources](#step2)
- [Properly configure the firewall](#step3)
- [Rename the administrator account](#step4)
- [Use multiple administrator accounts](#step5)
- [Use a user account with limited rights](#step6)
- [Restrict file and folder sharing, enable password protection](#step7)
- [Enable prompting for a password to log in when exiting idle mode, as well as disconnecting sessions when idle](#step8)
- [Use the Security Configuration Wizard](#step9)
- [Correctly configure security policies](#step10)
- [Use local security policies](#step11)
- [Protect Remote Desktop Service (RDP)](#step12)
- [Configure Terminal Services Gateway](#step13)
- [Install the TS gateway service](#step14)
- [Installing an SSL certificate](#step15)
- [It remains only to configure group policies](#step16)
- [Isolate server roles. Disable unused services](#step17)
The issue of server security has been and will be relevant. Let’s consider the basic rules for ensuring the security of servers running OS of the Window Server family.
[step num=”1″]****
### Regularly install updates to the operating system and installed software.
In everyday life, there is an opinion that Windows does not need updates and it is generally better to turn them off, allegedly "so that the system does not go dumped". This is one of the biggest mistakes. It is important to install updates in a timely manner, especially critical ones. This task is simplified by a special utility, which can be found on the official website of [Windows Update](https://www.microsoft.com/ru-ru/itpro/windows).
It is also important to keep installed related software up to date, including DBMS, various frameworks, and so on.
****
### Use software from trusted sources.
We recommend you to make sure the source is reliable, before downloading the installation package of software, including Open Source. It often happens that a resource visually similar to the official website distributes already compromised software (Fishing). A file with malicious code may be added to the installation package.
****
### Properly configure the firewall.
It is important to understand that the server is accessible from the Internet. For this reason, the OS must be protected by any device acting as a firewall. If there are no such devices, then the Windows Firewall will be the last hope for protection against unauthorized connections to the server.
The fewer TCP / UDP ports available from the outside, the less likely it is to attack the server. In this matter, it is important to understand what you need to block. If we are talking about a web server, then TCP ports 80 and 443 must be left available (the service listens on these ports by default).
These were public ports, but do not forget that there are ports, access to which must be provided according to the "white" list principle, i.e. only to a certain group of people. Ports example:
- 3389 – RDP (Remote Desktop Protocol);
- 135-139 – NetBIOS;
- 445 – Samba (sharing files and folders);
- 5000 – 5050 – FTP in the passive mode;
- 1433 – 1434 – SQL ports;
- 3306 – standart port for MySQL;
- 53 – DNS
It’s not hard to create a rule. Open **Start menu→ Control Panel → System and Security → Administrative Tools → Windows Firewall with Advanced Security.**
In the program window, right-click on “**Rules for incoming connections**“. In the context menu that opens, select “**Create Rule**“.
****
### Rename the administrator account.
****
### Use multiple administrator accounts.
If several people are administering the server, you should create an individual account for each. Such a measure will allow you to track down the culprit in what happened.
****
### Use a user account with limited rights.
It is not always necessary to use an account with administrative rights to perform everyday tasks. We recommend you to create an account with limited rights. If the account is compromised, the attacker will have to try to get administrator rights and do some bad things will be much complex for him. Also, such a measure can help save the server from its own actions.
In case of unauthorized access under the administrator account, the attacker will have full access to the system.
****
### Restrict file and folder sharing, enable password protection.
We strongly recommend you to do not share connections to anonymous users or users without a password. Even if the files stored in folders are of no value, nothing prevents an attacker from replacing your file with a file with malicious content. The consequences of such change can be very different.
In addition to using password protection, we recommend restricting different users in the level of access to both files and folders (read, write, change).
****
### Enable prompting for a password to log in when exiting idle mode, as well as disconnecting sessions when idle.
When using a physical server (not remote or virtual), it is recommended that you enable the user password prompt on wakeup. This setting is configured in the control panel: **Control Panel → All Control Panel Items → Power Options.**
It is also important to set user inactivity limits, and "upon return" request a password. This will exclude the possibility of another person logging in on behalf of the user if he left or forgot to close the RDP session. To configure this item, use the **secpol.msc** local policy setting.
****
### Use the Security Configuration Wizard.
([SCW – Security Configuration Wizard](https://docs.microsoft.com/en-us/previous-versions/orphan-topics/ws.11/cc754997(v=ws.11))) allows you to create XML files of security policies, which can later be transferred to other servers. These policies include not only service usage rules, but also general system settings and Firewall rules.
****
### Correctly configure security policies.
In addition to the initial configuration of Active Directory group policies, they should be periodically reviewed and reconfigured. This is one of the main ways to ensure the security of the Windows infrastructure.
For the convenience of managing group policies, you can use not only the gpmc.msc utility built into Windows Server, but also the ([SCM-Security Compliance Manager](https://technet.microsoft.com/ru-ru/library/cc677002.aspx)).
, utility offered by Microsoft.****
****
### Use local security policies.
In addition to using Active Directory group security policies, you should also use local policies that affect the rights of both remote users and local accounts.
To manage local policies, you can use the appropriate “Local Security Policy” snap-in, called by the **secpol.msc** command from Start -> Run (Windows key + R).
****
### Protect Remote Desktop Service (RDP).
- Block RDP connections for users with a blank password.
The presence of users without passwords is unacceptable, but if this cannot be avoided, then you can at least disable the connection to RDP. To do this, open **Start → Administrative Tools.**
In the directory that opens, run the **Local Security Policy.**
In the Local Security Policies window, on the left, select **Local Policies → Security Options.** In the main part of the window, we find “**Accounts: Limit local account use of blank passwords to console logon only**“.
Select this item by double-clicking and move the switch to the "**Disabled**" position. Press the “**OK**” button.
**Change default RDP TCP port.**
Replacing the TCP port numbers of standard services with other values may well increase the security of the server, the main thing is not to forget the new port number.
To change a port:
- Open the Windows Registry Editor – Windows + R
- Just in case, we create a backup copy of the registry (File → Export)
- Expand the branch **HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp** and, in the right part of the window, find the PortNumber parameter.
-
- Open the option by double-clicking the mouse. In the window that opens, select the **Calculation system: Decimal**, specify a new port value, click the "**OK**" button and close the registry editor window.
In order to be able to connect to the server, we create an appropriate rule for the Windows Firewall. Right-click on “**Inbound Rules**” and select “**New Rule**” from the context menu.
In the "**Wizards**" window, select "**For Port**"
Then select "**TCP Protocol**", "**Specific Local Ports**" and specify a new port number.
As a next step is to select “**Allow the connection**”
We configure for which networks the rule will apply, we mark the necessary ones with daws.
At the final step, specify the name of the rule and a description for it.
Reboot the server to apply the changes.
To connect to a remote desktop, we now use an IP address or a domain name, and specify the port through a colon.
****
### Configure Terminal Services Gateway.
The "TS (Remote Desktop Services) Gateway" service allows you to secure a remote desktop connection by using the HTTPS(SSL) protocol, thereby saving the system administrator from having to set up a VPN. The tool is able to comprehensively control access to machines, as well as set authorization rules and requirements for remote users, for example:
- Users or groups of users who are allowed to connect to internal network resources;
- Network resources to which users can connect;
- Whether client computers should have Active Directory membership;
- Whether clients need to use smart card or password based authentication, or can use one of the above authentication methods.
The operation logic of the Remote Desktop Gateway requires the use of a separate machine. However, it does not prohibit the use of a standalone virtual machine.
****
### Install the TS gateway service.
Open Server Manager.
Select “**Add roles and features**”
At the "**Installation type**" stage, select "**Install roles and features**“.
The next step is to select the current server.
Server role – **Remote Desktop Service.**
Let’s move on to the role service. Select “**Remote Desktop Gateway**“.
We proceed to the confirmation stage, click the “**Install**” button.
****
### Installing an SSL certificate.
After installing the role, in the Server Manager window, select **Tools → Remote Desktop Services → Remote Desktop Gateway Manager**.
In the window that opens, in its left part, click on the server icon. In the main part of the window, select “**View and change certificate properties**“.
In the "**Properties**" window that opens, go to the "**SSL Certificate**" tab. Select the item “**Create a self-signed certificate**“, click the button “**Create and import a certificate**“.
If you have a previously created certificate, you can use one of the options below, depending on who issued it.
In the new window, check the settings. If everything is correct, click "**OK**".
With a new window, the system will notify you of the successful creation of the certificate and give you the path to the file.
Go to the server properties window. Click “**Apply**“.
****
### It remains only to configure group policies.
In the "**Remote Desktop Gateway Manager**" window, in the left column, expand the server branch, select "**Policies**", then "**Connection Authorization Policies**". In the right column of the same window, select "**Create a new policy**"** →** "**Wizard**".
In the new window, select “**Create only a remote desktop connection authorization policy**“, click “**Next**“.
Specify the desired name for the policy. We recommend that you enter the name in Latin.
The next step is to choose a convenient authentication method – a password or a [smart-card](https://docs.microsoft.com/ru-ru/windows/win32/secauthn/smart-card-authentication). Leave only “**Password**” checked. Click the “**Add Group**”
In the group selection window, click on the “**Advanced**” button.
The window size will change. Click on the "**Search**" button. In the results found, select “**Domain Admins**” and click the “**OK**” button.
In the group selection window, check the selected object names and click "**OK**".
The group has been added. To proceed to the next step, click the “**Next**” button.
At the next step, select the item "**Enable device redirection for all client devices**" and click "**Next**".
Set up session timeouts. And actions after their expiration. We recommend disconnecting the session so that background user processes do not take up CPU time. Click “**Next**“.
At the last stage, we view the summary, click "**Finish**".
To confirm the creation of the policy, click “**Close**“.
**Set up a resource authorization policy.**
The process is carried out similarly to the previous one.
In the Remote Desktop Gateway Manager window, expand the **Policies → Connection Authorization Policies** branch. In the right part of the window, select **"Create a new policy" → "Wizard"**.
In the window that opens, select “**Create only a remote desktop resource authorization policy**“, click the “**Next**” button.
The first step is to specify the desired name for the authorization policy. We strongly recommend that you specify the name in Latin. We press the "**Next**" button.
In the group selection window, click on the “**Advanced**” button.
The window will resize. Press the “**Search**” button. In the search results, find “**Domain Admins**” and click the “**OK**” button.
In the group selection window, check the selected object names and click "**OK**".
The group has been added. To proceed to the next step, click the “**Next**” button.
In the next step, we allow users to connect to any network resource. To do this, select the appropriate option and click the "**Next**" button.
Set up allowed ports. If the port of the RDP server has not been changed, then leave 3389. Click "**Next**".
The final step is to check the settings and click the "**Finish**" button.
In the updated window, click “**Close**“.
****
### Isolate server roles. Disable unused services.
At the stage of preliminary planning of the network architecture, one of the main tasks is to plan the risks in case of failure of any element of the network. There can be many reasons for this – from equipment failure to “hacking” from the outside. The more roles assigned to the server, the more severe the consequences will be if the server fails. To minimize risks and damage, you should, if possible, delineate server roles at the design stage. Disabling services and server roles that are needed will also have a positive effect on its operation.
The ideal case is that one server performs one specific function, such as a Domain Controller, or a file server, or a terminal server. In practice, such a separation of roles is difficult to achieve.
Role isolation can also be handled by virtual servers. Modern virtualization technologies offer a high level of performance and stability, while neither the administrator nor the user experiences any restrictions. Properly selected hardware and configured software parts can be a full-fledged replacement for a whole fleet of equipment.
**Overview of Windows Nano Server.**
**Nano Server** became a further development of **Windows Server Core**. This version of the distribution kit excludes the use of a graphical user interface. All management is focused on WMI – Windows Management Instrumentation, as well as Windows PowerShell. This Windows Server distribution has 92% fewer critical security recommendations. Nano Server is only available to Microsoft Software Assurance customers and cloud computing platforms such as Microsoft Azure and Amazon Web Services. Starting with Windows Server build 1709, Nano Server can only be installed inside a container host.
https://serverspace.us/support/help/elk-stack-on-centos-7.mdLearn how to install and set up the ELK Stack (Elasticsearch, Logstash, and Kibana) on CentOS 7. This guide helps you streamline log management and enhance data analysis on your server.
This comprehensive guide offers a clear, step-by-step walkthrough for installing and setting up the ELK Stack — which includes Elasticsearch, Logstash, and Kibana — on a virtual server running CentOS 7. Whether you’re a system administrator, DevOps engineer, or developer looking to implement centralized log management and powerful data visualization, this tutorial will help you get started with a production-ready setup. By the end of this guide, you'll have a fully operational ELK Stack configured to collect, process, and display log data in real time.
## What Is the ELK Stack?
ELK stands for Elasticsearch, Logstash, and Kibana:
- **Elasticsearch** — a powerful search and analytics engine.
- **Logstash** — a data processing pipeline that ingests, transforms, and forwards data.
- **Kibana** — a visualization interface that lets you explore and analyze data stored in Elasticsearch.
Together, these tools provide a flexible and scalable log management and data analysis solution.
## System Requirements
To ensure stable performance, your server should meet the following minimum requirements:
- RAM: 4 GB
- CPU: 2 cores
## Step 1: Install Java
The ELK stack requires Java. Install it using:
```bash
yum -y install java-1.8.0
```
Verify the installation:
```
java -version
```
## Step 2: Install and Configure Elasticsearch
Add Elasticsearch GPG Key:
```
sudo rpm –import https://artifacts.elastic.co/GPG-KEY-elasticsearch
```
Add Elasticsearch Repository:
Create the file:
```
sudo vi /etc/yum.repos.d/elasticsearch.repo
```
Add the following content:
```
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
```
Install Elasticsearch:
```bash
sudo yum install elasticsearch
```
Configure Elasticsearch:
Edit the config file:
```
vi /etc/elasticsearch/elasticsearch.yml
```
Uncomment and set the following:
```
bootstrap.memory_lock: true
network.host: localhost
http.port: 9200
```
Edit the sysconfig file:
```
vi /etc/sysconfig/elasticsearch
```
Set:
```
MAX_LOCKED_MEMORY=unlimited
```
Enable and Start Elasticsearch:
```bash
systemctl daemon-reload
systemctl enable elasticsearch
systemctl start elasticsearch
```
## Step 3: Install and Configure Kibana
Download and Install Kibana:
```bash
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.4-x86_64.rpm
rpm -ivh kibana-6.2.4-x86_64.rpm
```
Configure Kibana:
```
vi /etc/kibana/kibana.yml
```
Set the following values:
```
server.port: 5601
server.host: "[Your_Server_IP]"
elasticsearch.url: "http://localhost:9200″
```
Enable and Start Kibana:
```bash
systemctl enable kibana
systemctl start kibana
```
Open Firewall Port:
```
sudo firewall-cmd –add-port=5601/tcp –permanent
sudo firewall-cmd –reload
```
## Step 4: Set Up Nginx as a Reverse Proxy (Optional but Recommended)
Install NGINX and Utilities:
Refer to this guide for basic NGINX installation.
```bash
yum install httpd-tools
```
Create NGINX Virtual Host:
```
vi /etc/nginx/conf.d/your-domain-or-ip.conf
```
Example config:
```css
server {
listen 80;
server_name your-server-ip;
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/htpasswd.kibana;
location / {
proxy_pass http://localhost:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
```
Create Authentication File:
```
sudo htpasswd -c /etc/nginx/htpasswd.kibana admin
```
Restart NGINX:
```bash
systemctl restart nginx
```
## Step 5: Install and Configure Logstash
Download and Install:
```bash
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.2.4.rpm
```
```
rpm -ivh logstash-6.2.4.rpm
```
Enable and Start Logstash:
```bash
systemctl restart logstash
```
```bash
systemctl enable logstash
```
## Step 6: Access Kibana
After completing all steps, open your browser and navigate to:
```
http://[Your_Server_IP]:5601
```
Example:
```
http://123.234.123.234:5601
```
You're now ready to start exploring and visualizing your data with **Kibana**!
Need help with data pipelines or dashboards? Explore more ELK Stack tutorials on our site
https://serverspace.us/support/help/reserve-copying-backup.mdExplore ServerSpace's guide on backup and reserve copying to ensure data safety. Learn techniques for data redundancy in cloud services
Service **Reserve copying** is avaible for all users of [virtual machines](https://serverspace.ru/services/vps-server/).
### How it works
Reserve copying is performed once a day on a geographically remote disk array. Parameter **Storage depth** calculates how long the backups will be kept (1, 2, 3 or 4 weeks). Keep in mind, that copies older than the selected period are automatically deleted.
### How to activate a service
When you will be creating a new server, backup activating is going to occure with the help of the corresponding field and with the choice of the storage depth.
If you already have server, you can activate this serice in the server menu **Backup**, as previously with occuring a storage depth.
Don’t forget to save changes.
### How to backup server from Reserve copying
If you want to backup your server, you should go to the tab **Backup** → **Backup from reserve copying** and choose a variant of backup: Near or Above. In the first variant, you will have a duplicate of your server, in the second variant you will backup your current server.
Choose a date of a reserve copy, which you want to backup.
If you are backuping “Above” you should additionaly put a tick in special tab. Press button **Backup**.
### How to inactivate a backup service
If you want to deactivate a backup service, you should go to the tab **Backup** → **Shedule** and press the button **Disabled**. Confirm your actions with button **Change**.
### Billing and price-list
The cost of the service is calculated with the formula:
_Z = G * S * (N / 7)_
Here G – is cost of the service for 1 gigabite, S – the total volume of all server disks, N – storage depth. Information about current cost of the service you can always find in the tab **Billing** of your server.
Rules of tarification:
- service is tarificating in every 10 minutes ;
- total cost is not depending on the server status (if it is on or off).
[Selections of VPS/VDS](https://serverspace.us/services/cloud-servers.md)
https://serverspace.us/support/help/bitrix24-install-on-the-server-under-centos-7.mdStep-by-step guide to install Bitrix24 CRM on a CentOS 7 server. Includes system requirements, configuration steps, and key features for business efficiency.
## Benefits of Bitrix24
One of the most popular CRM today is Bitrix24. Its prevalence is due to fairly good quality and support from the developer, ease of management, a large number of plug-ins from third-party developers that expand the basic functionality.
## Server Requirements
Bitrix24 can be installed on any server that meets the following requirements:
- Modern 64-bit edition of Linux;
- At least 2GB of RAM;
- At least 10 GB of disk space (excluding the space occupied by the OS);
- An account with privileged rights;
- An active domain name with DNS records “directed” to the server’s IP address;
- Valid license key (trial access for 30 days is possible).
## Installation and setup
To install the Bitrix24 on Centos 7, 1C developers created a special script, to use it do follow:
Log in to the server with elevated rights;
```
sudo -s
```
Install the _wget_ utility to get the installation script further;
```bash
yum install -y wget
```
Download the installation script and run it. If necessary, the script will offer to disable SELinux, with which you must agree;
```bash
wget https://repo.bitrix.info/yum/bitrix-env.sh
bash bitrix-env.sh
```
Reboot the server;
Run the script again. The system update will start, wait for the process to complete, as a result you should see a message as in the screenshot below;
Close the terminal and login as root again. You will be prompted to change the bitrix account password. Do it.
Create a pool by pressing the number “1”:
Enter a name for the pool. If you have one site on the server, it is advisable to enter its domain name:
The script will start its work, when finished, open your site in a browser. A window like the one below should appear. Click the “Install” button:
Select the required edition of the Bitrix24, enter your license key in the field below and click on the “Download” button:
Accept the license agreement:
If you have a license key – fill in the proposed fields, if you are installing a trial version – uncheck the box:
The Bitrix24 installation will begin. Upon completion, you will be prompted to set a username and password to enter the CMS. Do it:
Choose a site design template from the proposed ones or download a third-party one from the 1C marketplace:
The remaining steps depend on the selected theme and the options provided for it, look something like this:
At the end, you will be taken to the Bitrix24 administrative panel. This completes the installation:
## Conclusion
In this article, we explored the key benefits of Bitrix24 — a powerful and flexible CRM system that offers extensive integration capabilities, user-friendly management, and a wide ecosystem of third-party plugins. Thanks to its active support from the developer and high demand in the business environment, Bitrix24 remains one of the most popular CRM platforms on the market.
We also provided a detailed step-by-step guide to installing Bitrix24 on a CentOS 7 server using the official installation script from 1C. This script significantly simplifies the deployment process, automatically configuring the environment, downloading the necessary components, and guiding you through licensing and first-time setup.
After completing all the steps, you'll have a fully functional Bitrix24 instance ready to manage projects, communications, and customer relationships efficiently. Whether you're testing it during the 30-day trial or activating it with a license key, Bitrix24 can become a cornerstone of your digital infrastructure with minimal setup effort.
## FAQ
- **What is Bitrix24 used for?**
Bitrix24 is a CRM and business management platform used for organizing communications, automating workflows, managing tasks, handling customer relations, and integrating team collaboration tools in one place.
- **Can I install Bitrix24 without a license?**
Yes. During installation, you can skip the license key to activate a free 30-day trial version. After the trial, a license is required to continue using advanced features.
- **What operating systems are supported for Bitrix24 installation?**
The official installation script supports modern 64-bit Linux distributions. CentOS 7 is commonly used, but other compatible systems may work as well with manual configuration.
- **Is a domain name required for Bitrix24 to work?**
Yes. An active domain name with properly configured DNS records pointing to your server is required for Bitrix24 to function correctly in a production environment.
- **What should I do if installation fails due to SELinux or firewall settings?**
The installation script will prompt you to disable SELinux if it interferes. Additionally, make sure required ports (like HTTP/HTTPS) are open in your firewall settings.
https://serverspace.us/support/help/installing-concourse-ci.mdInstalling Concourse CI - Serverspace. Setting up services to start. Setting up a reverse proxy to gain access from the outside.
## **Preamble**
Concourse CI – modern, scalable system for high performance and performance with composable declarative syntax. Compared to experiments for setting up a continuous experiment, the Concourse team has made every effort to simplify the management of the continuous experiment pipeline.
In our tutorial, we’ll look through installing Concourse CI on Ubuntu/Debian/CentOS server, which will be pre-installed and configured. Let’s set up a PostgreSQL database to use as a backend.
## **Preparation for installation**
Before installing Concourse CI, it is necessery to deploy a Debian/Ubuntu/CentOS server and configure it. You can do this using our [instruction](https://serverspace.io/support/help/initial-server-setup-with-ubuntu-20-04//).
## Installing and configuring PostgreSQL
Pevious to downloading and installing Concourse CI, it is necessery to update indexes of packages and install PostgreSQL. To do that, follow that code:
```bash
apt update
apt install postgresql postgresq-contrib
```
Next to installing PostgreSQL, we have to create a user in the concourse database. User creation must be done as postgres.
```
sudo -u postgres createuser concourse
```
Concourse connects to a atc database. It is necessery to create an atc database and assign ownership rights to the concourse user.
```
sudo -u postgres createdb –owner=concourse atc
```
Next to installation and creation database process, we can download and install Concourse CI.
## Download and install Concourse CI
You are aible to use file from [official site](https://concourse-ci.org/) of Concourse or from GitHub. In our case, we consider downloading from [GitHub](https://github.com/concourse/concourse/releases). It is neccesery to download server.
```bash
curl -LO "url_for_concourse_linux.tgz"
tar -xzf concourse*.tgz
```
After that, we need to download the _fly_ client to your home directory and unzip it:
```bash
curl -LO "ufl_for_fly"
tar -xzf fly*.tgz
```
After that, we have to define the rights to run files on the unpacked files and move all files to the directory – /usr/local/bin
```bash
chmod +x concourse* fly*
mv concourse* /usr/local/bin/
mv fly* /usr/local/bin/
```
Let’s make sure that our versions of concourse and fly are relevant using command:
```
concourse –version
fly –version
```
As a result, we get versions 7.9.0.
## **Service configuration****Concourse ****CI**
After all, it is necessery to create concourse directory in /etc/:
```
mkdir -p /etc/concourse
```
Moving on we have to create encryption keys to access the service and set up the configuration for Concourse.
Go to the /etc/concourse directory and generate the keys:
```bash
sudo ssh-keygen -t rsa -q -N " -f /etc/concourse/tsa_host_key
sudo ssh-keygen -t rsa -q -N " -f /etc/concourse/worker_key
sudo ssh-keygen -t rsa -q -N " -f /etc/concourse/session_signing_key
```
Check what is inside the folder via:
```
ls -l
```
As a result, we are going to get a list of generated keys:
```
-rw——- 1 spcsteam spcsteam 1823 Jan 4 12:18 session_signing_key
-rw-r–r– 1 spcsteam spcsteam 393 Jan 4 12:18 session_signing_key.pub
-rw——- 1 spcsteam spcsteam 1823 Jan 4 12:18 tsa_host_key
-rw-r–r– 1 spcsteam spcsteam 393 Jan 4 12:18 tsa_host_key.pub
-rw——- 1 spcsteam spcsteam 1823 Jan 4 12:18 worker_key
-rw-r–r– 1 spcsteam spcsteam 393 Jan 4 12:18 worker_key.pub
```
We are going to make a copy of the worker_key.pub key in order to distribute this key to employees for authorization.
```
cp /etc/concourse/worker_key.pub /etc/concourse/authorized_worker_keys
```
We are going to create a configuration file to launch the WEB UI of the Concourse service.
```
vim /etc/concourse/web_environment
```
In the file, specify the paths for using the keys and the path to the file to start PostgreSQL. And also specify the login, password, server address and port.
```
CONCOURSE_SESSION_SIGNING_KEY=/etc/concourse/session_signing_key
CONCOURSE_TSA_HOST_KEY=/etc/concourse/tsa_host_key
CONCOURSE_TSA_AUTHORIZED_KEYS=/etc/concourse/authorized_worker_keys
CONCOURSE_POSTGRES_SOCKET=/var/run/postgresql
CONCOURSE_BASIC_AUTH_USERNAME=serverspace
CONCOURSE_BASIC_AUTH_PASSWORD=p@ssw0rd
CONCOURSE_EXTERNAL_URL=http://server_IP:8080
```
Let’s save the file and exit it.
We are going to create a configuration file for the Concourse backend. Specify the path to the key, local address and port:
```
vim /etc/concourse/worker_environment
```
```
CONCOURSE_WORK_DIR=/var/lib/concourse
CONCOURSE_TSA_WORKER_PRIVATE_KEY=/etc/concourse/worker_key
CONCOURSE_TSA_PUBLIC_KEY=/etc/concourse/tsa_host_key.pub
CONCOURSE_TSA_HOST=127.0.0.1:2222
```
Services are started from the /etc/systemd/system/ directory, for this reason two files must be created to start the web and worker services.
```
vim /etc/systemd/system/concourse-worker.service
```
```xml
Description=Concourse CI worker process
After=concourse-web.service
User=root
Restart=on-failure
EnvironmentFile=/etc/concourse/worker_environment
ExecStart=/usr/local/bin/concourse worker
WantedBy=multi-user.target
```
This file specifies the user from whom the service is started, the path to the configuration file and the path to the worker file to be launched from the /etc/concourse directory.
Now let’s create a file to start the WEB UI service in the /etc/systemd/system directory:
```
vim /etc/systemd/system/concourse-web.service
```
```xml
Description=Concourse CI web process (ATC and TSA)
After=postgresql.service
User=concourse
Restart=on-failure
EnvironmentFile=/etc/concourse/web_environment
ExecStart=/usr/local/bin/concourse web
WantedBy=multi-user.target
```
Let’s add port 8080 to the ufw rules to get access from another host and start the services:
```bash
ufw allow 8080
service start concourse-web.service
service start concourse-worker.service
```
We are going to add autoloading to the concourse-web and concourse-worker services so that they start automatically when the server starts:
```bash
systemctl enable concourse-web concourse-worker
```
## **Access to ****Web-interface**
On the command line, run the following command:
```
fly -t tutorial login -c http://127.0.0.1:8080 -u serverspace -p p@ssw0rd
```
As a result, we are going to get:
```
logging in to team 'main'
target saved
```
Let’s check the active component using the command:
```
fly -t tutorial workers
```
```
#Result
name containers platform tags team state version age
01fb36b82106 0 linux none none running 2.4 1d
```
The Web interface is checked through a web browser. Enter the server address and port in the address bar.
## **Conclusion**
As a result, we can say that the following actions were considered:
- Downloading source files from GitHub;
- Setting up Concourse and Fly;
- Setting configuration files;
- Set up files to start the worker and web services;
- Create a worker;
- Login to the web interface.
https://serverspace.us/support/help/install-gnome-ubuntu-22-04.mdLearn how to install the GNOME desktop environment on Ubuntu 22.04 and set up remote access using xRDP and VNC. Step-by-step guide for connecting with Remote Desktop and MobaXterm.
GNOME is a modern, user-friendly, and completely free desktop environment designed for UNIX-like operating systems, including Linux distributions. It offers a visually appealing interface, intuitive navigation, and a variety of integrated tools that simplify daily tasks. Installing GNOME on a clean vStack Cloud server provides a robust graphical interface, especially for users who prefer desktop environments over command-line interactions. In this guide, we will focus on setting up GNOME with minimal system requirements to ensure optimal performance, even on cloud servers with limited resources.
## Preparing for installation
Before installing GNOME, select Ubuntu 22.04 as the operating system for your server. Begin with the initial system setup according to our detailed instructions, which include configuring user accounts, securing SSH access, and updating the system to the latest packages. By starting with a fresh installation, you ensure that GNOME integrates smoothly with the server environment without conflicts from pre-installed packages or configurations. Initial system setup as in [our instruction](https://serverspace.us/support/help/initial-server-setup-with-ubuntu-20-04/).
[MobaXterm](https://mobaxterm.mobatek.net/download.html) – an utility for various types of connection to the server, also considers connecting using VNC.
## Updating packages
Update the package and software package index with the following command:
```bash
apt update && apt upgrade -y
```
## Installing GNOME on Ubuntu
The ubuntu-gnome-desktop package requires a minimum of 2.5 GB of free space on the system. The package is installed as follows:
```bash
apt install ubuntu-gnome-desktop -y
```
The installation process begins, and depending on the speed, the package is downloaded.
After installing the working environment, install xRDP according to our guide to [xRDP installation](https://serverspace.io/support/help/how-to-xrdp-ubuntu-20.04).
If you are unable to log in with a regular user, it is recommended that you set a password for root by connecting via SSH and restarting the xRDP service.
Let’s set up the desktop as follows, start the installation as in Screen 1.
Screen 1 – Starting the desktop installation
If you can’t connect via xRDP. You must set the password for the root user by logging in through the root user and use the command:
```
passwd
```
Let’s choose the keyboard layout as in Screen 2:
Figure 2 – Selecting a keyboard layout
Let’s turn off the agreement with the transfer of data to applications requiring geolocation, as shown in Screen 3:
Screen 3 – Refusal to transfer geolocation data
The result is about setting up the working environment as shown in Screen 4, the result is successful:
Screen 4 – Successful result
To check system information, check with the command:
```
cat /etc/os-release
```
According to Screen 5:
Screen 5 – System Information
Let’s try to install a web browser using the command:
```bash
apt install firefox
```
After installation, launch the browser using the command line:
```
firefox
```
The result is shown in Figure 6:
Screen 6 – Launching the browser
To configure VNC, using [our instruction](https://serverspace.io/support/help/vnc-connection-ssh-tunnel-ubuntu-20-04/).
When logging in via VNC via MobaXterm, we will add a session with our IP address and specify the port depending on the assignment after starting vncserver. Click "OK" and log in as shown in Screen 7:
Screen 7 – Setting up a VNC session
The result of connecting using VNC is shown in Figure 8:
Screen 8 – Connections via VNC
## Conclusion
In this guide, we covered the complete process of setting up a GNOME desktop environment on Ubuntu 22.04. We explored two main methods for remote access: connecting via xRDP and using VNC with tools such as Windows' built-in "Remote Desktop Connection" and MobaXterm.
Through practical comparison, xRDP proved to be the most efficient and versatile solution. It not only provides full graphical access to the desktop environment but also allows launching a command line interface directly within the session—a feature that VNC lacks. By following these steps, you can create a fully functional and accessible GNOME desktop on your cloud server, combining ease of use with powerful remote management capabilities.
## FAQ
- **Q: What is GNOME and why install it on Ubuntu 22.04?**
A: GNOME is a popular free desktop environment for UNIX-like systems. Installing it on Ubuntu 22.04 server provides a graphical interface to simplify system management and user interaction.
- **Q: How much disk space do I need to install GNOME on Ubuntu 22.04?**
A: The ubuntu-gnome-desktop package requires at least 2.5 GB of free disk space for a successful installation.
- **Q: What is xRDP and why use it?**
A: xRDP is a remote desktop protocol server that allows you to connect to the Ubuntu desktop environment remotely using standard Remote Desktop clients, providing efficient GUI access.
- **Q: How can I fix login issues with xRDP?**
A: If you cannot log in via xRDP with a regular user, set a password for the root user via SSH and restart the xRDP service. Use the command passwd to set the password.
- **Q: What tools can I use to connect to Ubuntu’s GNOME desktop remotely?**
A: You can use Windows built-in Remote Desktop Connection to connect via xRDP, or MobaXterm to connect using either xRDP or VNC protocols.
- **Q: What are the differences between xRDP and VNC?**
A: xRDP allows command line launching and generally provides better integration with the desktop environment, while VNC is more limited but can be useful for graphical remote sessions.
- **Q: How do I update packages before installing GNOME?**
A: Run apt update && apt upgrade -y to update your package lists and upgrade installed software.
https://serverspace.us/support/help/how-to-django-postgres-gunicorn.mdIt is a powerful framework for building applications in Python, which helps reduce development time with its library of tools and modules.
## Introduction
Django is a free and open source framework for developing web applications in Python. It provides powerful tools to develop complete websites and web applications. It allows developers to create applications quickly and efficiently without losing quality.
Django is famous for its versatility and power in web development. It is a powerful framework for building applications in Python, which helps reduce development time with its library of tools and modules. It is also known for its powerful templating and automatic URL construction features. This framework also provides good application security as it automatically checks incoming data and prevents attacks.
## Comparison with other frameworks
- Flask (Python) Disadvantages: you have to write most of the code yourself and not enough tools for large projects;
- Ruby on Rails Disadvantages: Slow start-up, high memory overhead and high threshold for entry;
- Pyramid Disadvantages: Difficult to set up and not enough tools for large projects;
- Laravel (PHP) Disadvantages: difficult to configure and no easy-to-use tool to build a “database”.
Postgres is known for its high reliability and performance. It also has advanced features for data analysis, including analytical functions and tools for dealing with geospatialization. There is also a wide range of plugins that can complement its functionality.
Gunicorn is renowned for its ease of use and high performance. It is a simple Python process manager that can handle multiple requests on a single server. Gunicorn has many built-in features such as support for the HTTP/1.1 protocol, automatic restarting and scaling vorkers. It can also be used in combination with other web frameworks such as Django and Flask.
Nginx is one of the most popular and reliable web servers. It is easy to install and configure, has high performance and low resource usage, supports web applications and dynamic websites, and has many different features, including static content pushing, proxying, URL redirection and routing. It can mainly be used to handle web traffic, as well as for fault tolerance and high performance.
## Getting started
Update the software packages.
```bash
sudo apt update
```
Install the following software.
```bash
sudo apt install python3-pip python3-dev libpq-dev postgresql postgresql-contrib nginx curl
```
## Configure database
Login to Postgres.
```
sudo -u postgres psql
```
Command to create a database for the project.
```sql
CREATE DATABASE "yournameproject";
```
Create a database, a user, and optimize our database to make it work faster.
```sql
CREATE DATABASE "yournameproject"
```
.
The database has been created and we need to make changes on certain parameters.
```sql
CREATE USER "YourUsername" WITH PASSWORD 'password';
```
The user was successfully created and I decided to optimize the “DB” by changing the parameters to speed up our “DB”.
```sql
ALTER ROLE "Yourproject" SET timezone TO 'UTC';
ALTER ROLE "Yourproject" SET default_transaction_isolation TO 'read committed';
ALTER ROLE "Yourproject" SET client_encoding TO 'utf8';
```
These parameters are created to give the user an account to connect to the database with a password.
Next, the role for the user will be configured with a default time zone of UTC, a default transaction isolation of “Read Completely” and a default client encoding of UTF-8.
Granted access to the user to administer the “DB”.
```
GRANT ALL PRIVILEGES ON DATABASE "yourproject" TO "myprojectuser";
```
## Creating a workspace for project
I have created a “DB” and now we can move on to the remaining requirements of the project. To make things a little easier, I have set up all the requirements we need in a virtual environment.
Let’s write these commands.
```
sudo -H pip3 install –upgrade pip
sudo -H pip3 install virtualenv
```
After installing the “virtualenv” tool, I start shaping our project.
I have created a directory where we will store our files for the project, and navigate to it
```
mkdir ~/yourprojectdir
cd ~/myprojectdir
```
In the directory created a virtual environment.
```
virtualenv yourprojectenv
```
_virtualenv is a command that allows you to create isolated environments for different projects and use different versions of libraries and applications._
This allows the same technology stack to be maintained for all projects in the organisation, reducing the risk of incompatibilities and bugs.
This directory will immediately contain the local version of Python and the package management system.
Before we assign requirements to our project we need to run the virtual environment. Type this command.
```
source yourprojectenv/bin/activate
```
The command line will change, showing that you are now running in the Python virtual environment. It will be like this.
As you run the virtual environment, install the required components.
```bash
pip install django gunicorn psycopg2-binary
```
## Project creation
A project directory has already been created for the framework, so we need to specify the path for initialization, because the second directory contains the subdirectory with the control script code inside it.
```
django-admin startproject yourproject ~/yourprojectdir
```
After that, you will need to change a couple of parameters in the generated project file. Open settings file with any text editor.
```
nano ~/yourprojectdir/yourproject/settings.py
```
Now we need to change the settings.
Then scroll below and find the section that provides the password, the name is “DB”.
Also look for string DATABASES, configure this string for your data.
Scroll down and add the parameter to specify where you want to store static files.
## Final configuration
Using the management scripts I will move the “DB” schema.
```
~/yourprojectdir/manage.py
~/yourprojectdir/manage.py migrate
```
Create an administrative user for the project.
```
~/yourprojectdir/manage.py createsuperuser
```
Collected all the static content in the given directory.
```
~/myprojectdir/manage.py collectstatic
```
The command needs to be validated. After that, all the files will be moved to the “static” directory of the project.
Also open the port which will be used for the project.
```
sudo ufw allow 2222
```
## Check
Check our project by starting the framework server.
```
~/myprojectdir/manage.py runserver your_ip:2222
```
Go to the web browser to check if the framework works.
After authorization in to the web resource, you are directed to the control panel.
## Output
In this post I have shown you how to prepare your Ubuntu 20.04 system to start a Django project with a Postgres database; Gunicorn web server and configured Ngnix proxy.
https://serverspace.us/about/cases.mdCases
Serverpace helps you build reliable cloud infrastructure. See what our users have achieved with Serverspace.
https://serverspace.us/about/news/serverspace-was-included-in-g2-spring-reports.mdServerspace was named a High Performer in G2 Grid reports. It means that provider has high customer satisfaction and works for a narrow audience.
Serverspace scored 53 points and was named a High Performer in G2 [Grid](https://www.g2.com/reports/8060a4f3-c299-4789-a7eb-28b35d303fa9/preview) and [Small-Business Grid](https://www.g2.com/reports/2109f64e-9d19-4a6a-8000-de2dca6479f8/preview) reports for Virtual Private Servers. It means that provider has high customer satisfaction and works for a narrow audience compared to the rest of the companies in the category.
Here’re some details:
- 100% of users rated Serverspace 4 or 5 stars;
- 100% of users believe the provider headed in the right direction;
- 98% of users noted the ease of use;
- 95% of users appreciated the quality of tech support service;
- 93% of users said they would be likely to recommend Serverspace.
Serverspace team appreciates users’ support and will strive to further improve the service. Every user can always [leave feedback](https://www.g2.com/products/serverspace/reviews) on G2 about what he likes or dislikes about Serverspace.
https://serverspace.us/about/news/earn-credits-for-tasks-in-the-serverspace-control-panel.mdServerspace now has a control panel section with tasks. Upon completing these tasks, clients can get bonus funds and use them as a payment for the ordered services.
Serverspace now has a control panel section with tasks. Upon completing these tasks, clients can get bonus funds and use them as a payment for the ordered services.
To get the bonuses, a user needs to go to the “[Refill balance](https://my.serverspace.us/billing/addmoney)” section in the control panel, then open the “Get Bonuses” tab and accomplish any task according to the instructions. Upon a confirmation, bonus funds will be credited to the user's balance.
Several tasks are currently available:
- $5 for a review about Serverspace on Gartner;
- $0.5 for each subscription to our Instagram and Twitter accounts;
- $0.5 for sharing our posts on Instagram and Twitter.
The purpose of each task is improving the user experience and Serverspace’s products. The task list will be constantly updated.
**Note:** The “Get bonuses” tab is only available to users who have refilled their balance at least once.
The process of accrual and expenditure of bonus funds is regulated by the [Terms of service](https://serverspace.us/conditions/terms-of-service.md).
https://serverspace.us/about/news/serverspace-now-supports-oracle-linux-8-6.mdServerspace added support for Oracle Linux 8.6 template. The new version is available in vStack cloud tab in the control panel, the previous version 8.5 is disabled for creating new virtual machines in the Control Panel.
Serverspace now supports the sixth update of Oracle Linux 8 for the 64-bit Intel, AMD (x86_64), and Arm (aarch64) platforms. The new version is available in the vStack cloud tab in the control panel, and the previous OS version is no longer used for creating new virtual machines in the control panel.
The release is based on the Red Hat Enterprise Linux 8.6 package base with the RHCK kernel for the x86_64 platform. It includes the Unbreakable Enterprise Kernel (UEK) 6.3 installation image, which is based on the Linux 5.4 core and is more innovative than other commercial Linux kernels.
What is new in Oracle Linux 8.6?
- support for drop-in configuration files to OpenSSH servers;
- Policy-Based Decryption (PBD) for automated unlocking of LUKS-encrypted drives;
- modulsync command for modular software management;
- enchanced the shell and command line tools;
- php: 8.0 and Perl 5.32 module streams for dynamic programming languages;
- useful updates for compilers and development toolsets for GCC, Rust, LLVM, PCP, Grafana;
- improved security and network settings.
Read the [Oracle Linux blog](https://blogs.oracle.com/linux/post/announcing-the-release-of-oracle-linux-8-update-6) and their [release note](https://docs.oracle.com/en/operating-systems/oracle-linux/8/relnotes8.6/index.html) to learn more about all the improvements in Oracle Linux 8.6.
Existing applications will operate normally in the new version of the OS. Applications certified in previous RHEL 8 or Oracle Linux 8 releases won't require recertification in the current edition.
https://serverspace.us/about/news/introducing-serverspace-one-click-app-marketplace.mdServerspace has launched a service designed for deploying vStack servers with preinstalled applications. Now users don't have to install software on virtual machines themselves.
Serverspace has launched a service designed for deploying vStack servers with preinstalled applications. Now users don’t have to install software on virtual machines themselves.
Which apps are available in the marketplace?
- WordPress — content management system (CMS).
- Docker — platform for building, deploying, and managing containers.
- PostgreSQL — object-relational database management system.
- PHP — C-like general-purpose scripting language used for web development.
- Apache — web server.
- Nginx — web server and mail proxy.
- LAMP — server software set that includes Linux, Apache, MySQL/MariaDB, and PHP.
- LEMP — server software set that includes Linux, Nginx, MySQL/MariaDB, and PHP.
The list of applications will be updated.
To deploy the application, the user needs to:
- Open the [control panel](https://my.serverspace.us/vstack/servers/create) and start creating a vStack server.
- Select the data center and server configuration.
- Select the desired application from the list.
- Click “Create”.
By clicking “Create”, the user sends a request that specifies all the characteristics of the future server. The system sees this and runs a script to install the selected application on the server. Server deployment will take about 40 seconds, but application installation will take from 1 to 15 minutes.
The application is not charged. The user pays only for the resources that he chose in the process of creating the server.
https://serverspace.us/about/news/new-tor3-data-center-in-canada.mdServerspace expands in North America. Now users can deploy vStack virtual servers in the Cologix TOR3 data center in Canada. VPS hosting in Canada.
Serverspace expands in North America. Now users can deploy vStack virtual servers in the Cologix TOR3 data center in Canada.
The data center is located in a minimal seismic zone, in downtown Toronto. Like New Jersey’s NNJ3 data center, TOR3 is owned by Cologix, a leading North American interconnection and hyperscale edge data center company.
TOR3 complies with Tier III certification and the requirements of international standards ISO 27001 and PCI DSS. It has high standards in the organization of vital systems maintenance in the data center:
- The data center is equipped with an uninterrupted power supply with 2N redundancy, as well as backup generators, modular equipment power distribution systems and automatic transport switches (ATSs).
- The high level of cooling is provided by N+1 air conditioning, APC in-row server room cooling system with hot aisle isolation.
- Security at the data center is ensured by 24/7 security guards, dual interlocking doors, biometric access and a round-the-clock closed-circuit television system.
- The data center uses the cross-zoned VESDA fire safety system and dual interlocked pre-action fire suppression.
To deploy a VPS in Canada, users should:
- open the Serverspace control panel;
- start creating a vStack server;
- select the data center in Toronto, Canada;
- configure the rest of the server resources;
- click on the “Order” button.
Cloud server deployment time in Canada takes about 40 seconds.
New location in Canada is available for VPN service rental.
https://serverspace.us/support/help/how-to-setup-wireguard-vpn-client-on-centos.mdLearn how to install WireGuard VPN client on CentOS Linux operating system and setup a tunnel with a WireGuard VPN server.
WireGuard is an application that can provide a secure virtual private network (VPN), it is simple to use and setup. It uses strong cryptographic protocols and algorithms to cyph data. Designed exclusively for the Linux kernel, it can be deployed on Windows, macOS, FreeBSD, iOS and Android.
In our case we will use CentOS 8.3 for WireGuard setup.
How to set up the WireGuard VPN client:
- [How to Install the WireGuard Client on CentOS](#step1)
- [How to create a private and public key](#step2)
- [How to run WireGuard](#step3)
## Installing WireGuard Client on CentOS
Client installation is similar to server. Log in to your Linux server, after logging in, add the EPEL and Elrepo repositories to install the kernel modules and WireGuard tools.
```bash
sudo dnf install epel-release elrepo-release -y
```
Now let's install WireGuard from epel repository:
```bash
sudo dnf install kmod-wireguard wireguard-tools
```
## Generating Private and Public Keys
WireGuard works by encrypting the connection using a pair of cryptographic keys. The key pair is used by passing the public key to the other party, which can then encrypt its message so that it can only be decrypted with the corresponding private key. To secure two-way communication, each side must have its own private and public keys, since each pair provides only one-way messaging.
Generate a client public and private key pair by running the following command:
```
wg genkey | tee private.key | wg pubkey > public.key
```
After that, create a client configuration file, in the following directory:
```
sudo nano /etc/wireguard/wg0.conf
```
In the file type:
```
PrivateKey =
Address = 10.0.0.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
PublicKey =
AllowedIPs = 10.0.0.2/32
```
Notes: In the publickey line insert the server public key that we generated [in the previous article](https://serverspace.us/support/help/how-to-setup-wireguard-vpn-server-on-centos/) and on the private key insert the client private key.
## WireGuard Startup
To start the connection, type the following command:
```
sudo wg-quick up wg0
```
Now the client can communicate with the server, you can ping the server from the client with the command
```
ping 10.0.0.1
```
To find out the connection status, run the following command:
```
sudo wg show
```
You will get all the connection details as shown below
Congratulations! Your client computer now has access to the VPN network.
https://serverspace.us/support/help/how-to-setup-wireguard-vpn-server-on-centos.mdLearn how to install WireGuard VPN server on CentOS Linux operating system and setup tunnels with remote hosts.
WireGuard is an application that can provide a secure virtual private network (VPN), it is simple to use and setup. It uses strong cryptographic protocols and algorithms to cyph data. Designed exclusively for the Linux kernel, it can be deployed on Windows, macOS, FreeBSD, iOS and Android. In our case we will use CentOS 8.3 for WireGuard setup.
How to Install WireGuard VPN Server on CentOS 8.3:
- [How to install server WirrGuard on CentOS](#step1)
- [How to generate private and public keys](#step2)
- [How to tune server configuration](#step3)
- [How to configurate FireWall](#step4)
- [How to launch WireGuard and enable it on boot](#step5)
## Installing WireGuard Server on CentOS
Download the latest updates using the command data:
```bash
sudo yum update
```
```bash
sudo dnf update
```
Add the EPEL and Elrepo repositories to install the kernel modules and WireGuard tools.
```bash
sudo dnf install epel-release elrepo-release -y
```
Make sure we have the PowerTools repository enabled as EPEL packages may depend on packages from it,
```bash
sudo yum install 'dnf-command(config-manager)'
```
```bash
sudo yum config-manager –set-enabled PowerTools
```
Now let's install WireGuard from epel repository:
```bash
sudo dnf install kmod-wireguard wireguard-tools
```
## Generation of Private and Public Keys
WireGuard works by encrypting the connection using a cryptographic key pair. The key pair is used by passing the public key to the other party, which can then encrypt its message so that it can only be decrypted with the corresponding private key. To secure two-way communication, each side must have its own private and public keys, since each pair provides only one-way communication.
Before generating the key pair, go to the:
```
cd /etc/wireguard
```
Set the permission for this directory:
```
umask 077
```
To generate a key pair, type the following command:
```
wg genkey | tee private.key | wg pubkey > public.key
```
## Setting Up the Server Configuration
To start configuring the WireGuard server, go to the /etc/wireguard folder and create the file **wg0.conf **
```
sudo nano /etc/wireguard/wg0.conf
```
Add the following directives to the configuration file:
```
PrivateKey =
Address = 10.0.0.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
PublicKey =
AllowedIPs = 10.0.0.2/32
```
Copy the private key we generated earlier and paste it into the PrivateKey.
Similarly, we have to generate a key pair for the client, copy the client’s public key and paste it into PublicKey.
To copy the key value, run the following command:
```
sudo cat /etc/wireguard/public.key
```
```
sudo cat /etc/wireguard/private.key
```
## FireWall setup
By default, the firewall stops all communication between the internal (wg0) and the public network (eth0).
Let’s change that with these commands:
```
sudo firewall-cmd –add-interface=wg0 –zone=internal
```
```
sudo firewall-cmd –permanent –zone=internal –add-masquerade
```
## Launch WireGuard and Make It Start at Boot
Now we are ready to start the server, to start WireGuard we use **wg-quick** and specify the name of the new interface:
```
wg-quick up wg0
```
If the configuration is perfect, you will see the following screen,
To check the status of the WireGuard server enter:
```
wg show
```
Congratulations, we have successfully started up the WireGuard server!
https://serverspace.us/support/help/how-to-install-wireguard-vpn-server-on-ubuntu.mdLearn how to install WireGuard VPN server on Ubuntu Linux operating system and setup tunnels with remote hosts.
WireGuard is an application that allows you to establish a secure virtual private network (VPN), known for its simplicity and ease of use. It uses proven cryptographic protocols and algorithms to protect data. Originally designed for the Linux kernel, it can be deployed on Windows, macOS, BSD, iOS and Android.
This WireGuard vpn setup uses Ubuntu 20.04.
## Installing WireGuard Server on Ubuntu Linux
Log in via SSH to the Linux server, after logging in, check if the machine is updated by running the following command:
```bash
sudo apt-get update && sudo apt-get upgrade
```
Now install WireGuard by running the following command:
```bash
sudo apt-get install wireguard
```
## Setting up IP Forwarding
For VPN to work we need to enable packet forwarding, only then we will be able to connect through Wireguard server, to do this we need to edit /etc/sysctl.conf file:
```
sudo nano /etc/sysctl.conf
```
remove the “#” for the following command:
```
net.ipv4.ip_forward=1
```
After that, run the following command to apply the changes:
```
sysctl -p
```
The following message will be displayed:
## Generation of Private and Public Keys
WireGuard works by encrypting the connection using a cryptographic key pair. The key pair is used by passing the public key to the other party, which can then encrypt its message so that it can only be decrypted with the corresponding private key. To secure two-way communication, each side must have its own private and public keys, since each pair provides only one-way communication.
Before generating the key pair, go to the
```
dwg sudo cd /etc/wireguard
```
Set the permission for this directory:
```
umask 077
```
To generate a key pair, type the following command:
```
wg genkey | tee private.key | wg pubkey > public.key
```
## Setting Up the Server Configuration
To start configuring the WireGuard server, go to the /etc/wireguard folder and create the file **wg0.conf **
```
sudo nano /etc/wireguard/wg0.conf
```
Add the following directives to the configuration file:
```
PrivateKey =
Address = 10.0.0.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
PublicKey =
AllowedIPs = 10.0.0.2/32
```
Copy the private key we generated earlier and paste it into the PrivateKey.
Similarly, we have to generate a key pair for the client, copy the client’s public key and paste it into PublicKey.
To copy the key value, run the following command:
```
sudo cat /etc/wireguard/public.key
```
```
sudo cat /etc/wireguard/private.key
```
## Launch WireGuard and Make It Start at Boot
Now we are ready to start the server, to start WireGuard we use **wg-quick** and specify the name of the new interface:
```
wg-quick up wg0
```
If the configuration is perfect, you will see the following screen,
To check the status of the WireGuard server enter:
```
wg show
```
Congratulations, we have successfully started up the WireGuard server!
https://serverspace.us/support/help/how-to-quickly-deploy-a-website-on-wordpress-on-an-ubuntu-server.mdLearn how to quickly deploy a webserver on wordpress CMS on Ubuntu operating system and get your own web site up and running.
WordPress is one of the most popular content management systems (CMS) in the world. Millions of websites use this tool because it is the most user-friendly for the average user who is not very skillful in web programming. Today we will set up and configure an Ubuntu server from scratch on which we will deploy WordPress.
** In the Serverspace you can [create a server](https://serverspace.us/services/cloud-servers.md) with already installed app “WordPress”.**
## Creating the Server
The fastest way to get a server is to deploy a so-called VPS. This is a virtual server based on VMWare or in our case vStack — a unique development of ServerSpace corporation, which allows you to create a server in 40 seconds.
So, let’s go to the serverspace website [https://serverspace.us/](https://serverspace.us/index.md) and register there. Authenticate to your account and navigate: vStack cloud -> Servers -> Create Server. Next, choose the operating system, in our case it will be Ubuntu 20.04 x64. Then choose the location of the server, if you plan to develop the site for customers from the US, choose the New Jersey data center.
Then choose the server config. For our test site we will use a virtual server with 2 CPUs, 4 GB of RAM, 60 GB hard drive and 50Mb/s internet connection speed. This configuration will be enough for about 50,000 users per day, which is almost an unattainable dream for a newly deployed website in the first few months. If the number of users increases, you can easily add resources to your server. For this feature, VPS is very good at the initial stage.
We choose the "login and password" authentication and log in to our server by using putty.
## Setting up the Ubuntu Server
Before installing WordPress, we need to install a package of server software — the Apache web server and the MySQL database, as well as the PHP language. But before that, we need to update our OS:
```bash
sudo apt-get update && sudo apt-get upgrade -y
```
### Installing Apache Web Server
In order to install the latest version of the Apache webserver, enter the following commands:
```bash
sudo apt install apache2 apache2-utils
```
Then add Apache to the autorun and start the service:
```bash
sudo systemctl enable apache2
```
```bash
sudo systemctl start apache2
```
To check if Apache is available online, let’s type in the IP address of your server in your browser. If you are installing a webserver on a local machine, use the address http://127.0.0.1 or http://localhost
By default, all HTML documents are located in the /var/www/html directory. We also require the Apache “mod_rewrite” module for WordPress to work correctly. To enable it, run the following command:
```
sudo a2enmod rewrite
```
Then restart the webserver:
```bash
sudo systemctl restart apache2
```
### Installing the MySQL Database
To install the mysql db, run the command:
```bash
sudo apt install mysql-client mysql-server
```
To complete the setup, run the command:
```
sudo mysql_secure_installation
```
The system will prompt you to install a password verification plugin, which will prohibit the use of weak passwords:
Then you will need to change the password and disable access to the superuser account from the network and also disable guest access. So we answer y for all.
### Installing PHP
And finally, before you install WordPress on Ubuntu 20.04 — you require installing PHP and a few modules to work with the web server and MySQL database. To do this, run the command:
```bash
sudo apt install php7.4 php7.4-mysql libapache2-mod-php7.4 php7.4-cli php7.4-cgi php7.4-gd
```
To test how PHP works, create a file named test.php in /var/www/html/:
```
sudo nano /var/www/html/test.php
```
File text:
```php
```
Save it and then open http://ip-address/test.php in a web browser. If everything is set up correctly, you will see a page with information about the PHP version. Naturally, as a matter of security, it should be removed after a successful test.
## Installing WordPress on the Ubuntu Server
So finally download the latest version of CMS WordPress from the official website:
```bash
wget -c http://wordpress.org/latest.tar.gz
```
Extract the contents of the archive to your current folder:
```bash
tar -xzvf latest.tar.gz
```
Copy the WordPress files from your current folder to /var/www/html/:
```bash
sudo rsync -av wordpress/* /var/www/html/
```
In order for the web server to work properly with these files, you need to set the correct permissions for them, namely the user and group www-data:
```bash
sudo chown -R www-data:www-data /var/www/html/
```
```bash
sudo chmod -R 755 /var/www/html/
```
And now the installation of WordPress on Ubuntu 20.04 is complete, but there is still left to configure the database connection. To have WordPress open by default, let’s delete the index.html file:
```
sudo rm /var/www/html/index.html
```
### Creating a Database for the New Website
To create a database, first log in to the mysql management interface, to do so, execute:
```bash
sudo mysql -u root -p
```
Enter the password that you entered during installation, then separately execute the following commands to create the database, user and set the correct privileges for them:
```bash
mysql> CREATE DATABASE wp_db;
```
```bash
mysql> CREATE USER 'wpusr'@'localhost' IDENTIFIED BY 'password';
```
```bash
mysql> GRANT ALL PRIVILEGES ON wp_db.* TO 'wpusr'@'localhost';
```
```bash
mysql> FLUSH PRIVILEGES;
```
```bash
mysql> EXIT;
```
Replace wp_db with the desired database name, wpusr with the username, and password with the desired password. The modifier localhost means that you can connect to the database only from local machine.
## Configuring WordPress on the Ubuntu Server
Everything is ready to configure WordPress. Type in the ip address of your server where you installed WordPress, or localhost if the paltform was installed on a local computer. In the first window, the program will ask you to choose a language. Then click “Next” and enter the database name, username, and password that you used during db creation.
Finally, all that’s left is to choose a website name, an admin login, and come up with a complex password.
At the end, all that’s left is to log in, and you can use the WordPress content management system you’ve just set up.
Congratulations, now you can easily create your own website using a bunch of templates, plugins and a graphical interface. This is where the fun part begins.
https://serverspace.us/support/help/fixing-inactive-repositories-in-centos-8.mdInstructions to fix inactive repositories in CentOS 8.
Due to the fact that CentOS 8 is no longer supported, its repositories begin to be unavailable and give errors.
If you encounter this error, we recommend switching to the current OS – OEL 8.
If for some reason you cannot switch OS, then to correct this error, it is enough to enter 2 commands:
```
sed -i 's/^mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
```
```
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
```
Done!
https://serverspace.us/services/vps-server.mdReliable Windows/Linux VPS Hosting with 24/7 Human Support in 6 Data Centers worldwide | 10 min Pay-As-Yo-Go | Unlimited traffic | Serverspace
Assistance with server migration and administration upon request.
https://serverspace.us/services/vps-server/linux.mdLinux VPS hosting with Ubuntu, Debian, or Oracle pre-sets. Deploy easily in 7 locations with free traffic and a trial period.
Virtual servers in the cloud in 1 minute with Ubuntu, Debian, or Oracle Linux preset.
https://serverspace.us/services/vps-server/cloud-hosting.mdExplore cloud VPS hosting optimized for any CMS. Web hosting from your trusted VPS provider in USA with 24/7 support & transparent billing.
Deploy any number of sites with 99.9% SLA guaranteed.
https://serverspace.us/about/news/apple-pay-and-google-pay-support.mdServerspace added support for accepting payments via Apple Pay and Google Pay. Now users can pay for services faster and more conveniently.
Serverspace now provides payments via Apple Pay and Google Pay. Our users will no longer have to fill in the bank cards details manually. Serverspace automatically connects to user accounts at Apple and Google and transits anonymized payment information to the payment gateway.
This feature is designed to simplify paying for the cloud infrastructure and save time on processing payment transactions.
**To pay for services using Apple Pay or Google Pay, perform these three simple steps:**
- Log in to the Serverspace via the control panel from a device or application that supports Apple Pay or Google Pay.
- Define the sum of your payment.
- Click “Pay”.
https://serverspace.us/about/news/new-debian-11-os-template.mdServerspace has added support for a new version of the Debian 11 x64 Linux-distribution for users of the vStack cloud service.
Servespace has added support for a new version of the Debian 11 x64 “Bullseye” Linux distribution for users of the vStack cloud service. We keep supporting the previous version of Debian 10.7 x64.
Debian 11 distribution is expected to be maintained for 5 years by the Debian team. This distribution outstands version 10.7 with a more stable operation and a number of useful updates.
### What’s new in Debian 11
- Updated the Linux core to version 5.10 from core 4.19. This will allow customers to use resources more efficiently.
- Updated the desktop theme. Now it looks fresher, more modern, and simpler.
- Added support for the exFAT file system. This eliminates problems with mounting external disk formatted on Windows or macOS devices.
- Improved password protection of local accounts by replacing the encryption algorithm with yescript.
- Simplified the printing and scanning function by updating the CUPS and SANE utilities.
The full list of changes can be found in the official reference section [Debian.org](https://www.debian.org/releases/bullseye/amd64/release-notes/index.en.html).
**Interesting fact:** the version name “Bullseye” is given in honor of the horse character from the famous “Toy Story” Pixar series.
https://serverspace.us/about/news/new-feature-autopay.mdServerspace cloud provider users now have the opportunity to set up the Autopay option in the control panel.
Serverspace keeps implementing new functionality for the control panel. Now users can set up the Autopay option. It helps to avoid project blocking when the balance lacks funds.
### To set the Autopay option
- Click Refill Balance in the control panel.
- Click Enable and specify the sum you need.
The balance will be refilled automatically with the defined sum 3 days before the balance is out. To disable the Autopay option, navigate to Refill Balance, click Disable under the record with the date and sum of payment.
https://serverspace.us/about/news/serverspace-provides-new-service-managed-kubernetes.mdThe Serverspace users have access to the Managed Kubernetes service, which allows to create and configure clusters for any task.
The Serverspace users have access to the [Managed Kubernetes service](https://serverspace.us/services/managed-kubernetes.md). It allows to create and configure clusters for any task ranging from local testing to corporate software development.
Kubernetes provides deployment, scaling, and increase of application stability. It ensures continuous project run due to distribution between several nodes. Projects keep running even if some system components are unavailable.
Serverspace automated the update of all components. Thus users can focus on their work and don't worry about cluster management. To secure proper work of high-loaded systems, users can enable the High Availability cluster with three master nodes. It can stand the failure of any application component and provides service without interruptions. Load balancing and traffic routing are set up by an ingress controller.
In Serverspace, we developed a user-friendly interface for creating a Kubernetes cluster. The process consists of two stages:
- Selecting one of the data centers: New Jersey, Amsterdam, Almaty.
- Selecting a node configuration. Enabling a High-Availability cluster and Ingress controller if needed.
You can start working with nodes using the command tool "kubectl".
https://serverspace.us/about/news/new-windows-server-2022-os-template-for-vmware-cloud-service.mdCloud infrastructure provider Serverspace has added a Windows Server 2022 OC template for the VMware cloud service.
Serverspace has added a Windows Server 2022 server OC template for the VMware cloud service. The new version has improved security and simplified work with the application platform.
Multilevel security provides safe connections using the HTTPS and TLS 1.3 protocols which are enabled by default. It also provides the Secure-core technology, which can be activated via Windows Admin Center.
The integration with Kubernetes has improved interaction with Windows containers and application compatibility. Due to the smaller container image size, the operating system boots up 30% faster.
Extra features of the operating system:
- The new OC Windows Server 2022 version includes Microsoft Edge browser instead of Explorer.
- The UDP protocol data transmission channel has got about 100 updates. It speeds up the Internet connection to the Windows Server 2022 resources.
- The smooth network data traffic has been established, and it improves performance at high speeds due to the TCP protocol. TCP HyStart ++ helps reduce packet loss when starting the connection, and RACK reduces the retransmission time.
- The Improved storage migration service has simplified the storage migration to Windows Server.
The complete list of new features for the Windows Server 2022 OS is available on [microsoft.com](https://docs.microsoft.com/en-us/windows-server/get-started/whats-new-in-windows-server-2022).
The new OS has the Long Term Servicing Channel (LTSC) state; therefore, the extended system support will last ten years from the date of release.
https://serverspace.us/about/news/serverspace-added-new-oracle-linux-8-5-template.mdServerspace has added a new OS template – Oracle Linux 8.5, which is available to the vStack cloud service users.
Now, Serverspace users can create a vStack server on the Oracle Linux 8.5 with RHCK CPU for the platform x86_64.
The new OS version includes the Unbreakable Enterprise Kernel (UEK) installation image version 6.3, based on the Linux 5.4 core and optimized for Oracle software and hardware. UEK is installed by default and provides more updates than other commercial Linux cores.
Existing applications are compatible with the userspace of the OS. Applications certified in previous RHEL 8 or Oracle Linux 8 releases won't require recertification in the current edition.
The new version includes software updates, new security patches, and some system changes. Refer to the [Oracle Linux blog](https://blogs.oracle.com/linux/post/announcing-the-release-of-oracle-linux-8-update-5) and [release note](https://docs.oracle.com/en/operating-systems/oracle-linux/8/relnotes8.5/index.html) to learn more about improvements in Oracle Linux 8.5.
https://serverspace.us/about/news/serverspace-terraform-provider-has-been-verified-by-hashicorp.mdServerspace obtained the verified Terraform provider status. Now you can be sure we meet the technical requirements of HashiCorp.
HashiCorp added Serverspace Terraform provider to the list of [verified providers](https://registry.terraform.us/browse/providers?page=3&tier=partner). This means Serverspace Terraform provider has been verified and meets the technical requirements for managing the Serverspace infrastructure. Now Servespace Terraform provider is a member of the HashiCorp Technology Partner Program, which ensures that users have the necessary tools for cloud infrastructure deployment.
Terraform is an automated open-source tool from HashiCorp that allows you to safely and efficiently build and modify a cloud infrastructure. It is managed with special configuration files, in which users describe the parameters of their servers and networks.
Features of Terraform Provider:
- Infrastructure as Code management. Users define infrastructure parameters in a configuration file.
- Declarative transaction management. Users don't have to monitor all possible transit states of the infrastructure. It's enough to define the necessary resources.
- Terraform can be used with a version control system. Users can always restore one of the previous infrastructure states.
- Smooth operation. Multiple usages of the same configuration file will result in the same outcome. There's no risk of human errors.
To start using [Serverspace Terraform Provider](https://serverspace.us/services/serverspace-terraform-provider.md), you should specify it in the Terraform configuration file. The tool can automatically install the provider as you initialize the working directory with the “terraform_init” command. Then you will be able to create configuration files with infrastructure parameters and deploy projects in the Serverspace cloud.
Detailed information about the Serverspace Terraform Provider is available in the [documentation](https://registry.terraform.us/providers/itglobalcom/serverspace/latest/docs).
https://serverspace.us/about/news/serverspace-launched-edge-gateway.mdDue to the vStack platform update, Serverspace cloud provider users can connect Edge Gateway to isolated networks and configure Firewall and NAT rules.
Due to the vStack platform update, Serverspace cloud provider users can connect isolated networks to the Internet using Edge Gateway and configure NAT and Firewall rules.
Serverspace, an international cloud infrastructure provider, has launched its Edge Gateway service for working with external and internal networks. Now users can configure NAT and Firewall via Edge Gateway and connect from isolated networks to external networks using a public IP address.
NAT (Network Address Translation), or network address translation, is a mechanism that allows users to map one IP address to another. It provides Internet access for internal network devices using only one external WAN port IP address. The mechanism hides private network addresses from external users and provides confidentiality and additional security for data within the network.
A firewall is a system that monitors and filters incoming and outgoing network traffic. It is necessary to ensure the security of a computer network from Internet users and external threats. It acts like a wall that restricts Internet traffic inside or outside a private network. A firewall controls Internet activity and allows or denies access to devices.
Serverspace has developed a simple control panel interface so users can quickly set up the Edge Gateway. They can add rules directly in the control panel.
https://serverspace.us/support/help/how-to-backup-linux-server-with-veeam-agent.mdThis tutorial will show you how to easily backup your Linux server to network share or locally using Veeam backup agent.
In our example we will use Ubuntu 20.04 OS. So you need to download the Veeam agent software from here [Veeam Software for Enterprise](https://www.veeam.com/linux-backup-download.html?ad=in-text-link) and copy the deb file your ubuntu machine where you plan to install the agent.
## Veeam Agent Installation
Go to the directory where you have saved the veeam-release package and install the package with the following commands for Debian / Ubuntu
```
dpkg -i ./veeam-release* && apt-get update
```
And just run the package installation
```bash
sudo apt-get install veeam -y
```
After installation finishes just run
```
veeam
```
and veeam agent gui will launch.
## Veeam Agent Configuration
Backing up with Veeam Agent for Linux is very easy. There aren’t too many options to choose from, so you can check them out for yourself. In our case I will make a full backup of the whole system and move it to samba share.
So lets create a task to backup our server to our storage using smb.
```
veeam
```
We are immediately prompted to specify the license file. Since we don’t have a license, we refuse. We are greeted by the main window of the program.
Press C (configure) to setup a backup job. We give it a name for the job and then choose that we want to backup entire machine.
As a destination for the system backup, we select Shared Folder.
Next, you will need to enter access parameters to the backup location. In my example I've shared a folder on a Windows server, so I've chosen SMB share.
The Restore Points item specifies the depth of the archive. That’s the number of copies you want to keep on the server. If you make a backup every day and specify 14, the system backups for the last 14 days will be preserved. If you backup every other day, then 28 days, and so on.
You can create several tasks with different backup depths. For example: every day 7 backups, once a week 4, and once a month 12. This way you will always have the last 7 backups of the system for that week. Then one backup per week for the last month and 12 backups per month for the last year. Press Enter to continue
Advanced options disabled by default for free version, but if you have a license I recommend to encrypt the backup.
Press enter to continue and see the backup schedule, in free version you cannot edit this also.
Press enter and fishish.
The backup will start ASAP. If you get an error:
The current system does not support cifs. Please install the cifs client package.
Install the cifs client package:
```bash
sudo apt-get install cifs-utils
```
Restart veeam and continue.
Now you have started the backup process. You can monitor its progress.
If you get an error that snapshot creation failed
Try the following:
We need to get deeper to the root cause so we go to the Backup log folder of VEEAM /var/log/veeam/Backup
Navigate to the job log and open it with text editor, for example nano.
We found that modeprobe failed to load module veeamsnap
For this we need to install linux-headers first, just check your kernel version :
```
uname -r
```
And install the right linux-headers
```bash
sudo apt-get install linux-headers-5.4.0.-74-generic -y
```
And now we need to load veeamsnap:
```
modprobe veeamsnap
```
Run veeam again and press S. It should work now
After completing a system backup, you can check the contents of your shared drive by accessing it directly from the Windows.
This completes the configuration of a full server backup. The system backup is now in a safe place.
https://serverspace.us/support/help/adding-a-volume-and-creating-partitions-in-freebsd.mdThis guide will show you how to mount new volumes and create partitions on virtual servers with the FreeBSD operating system family.
After adding a volume in the control panel, you need to make it available in the operating system.
Log on to the server as sudo or root and browse all volumes, execute the following command:
```
geom disk list
```
Example:
```
Geom name: vtbd0
Providers:
Name: vtbd0
Mediasize: 26843545600 (25G)
Sectorsize: 512
Stripesize: 4096
Stripeoffset: 0
Mode: r1w1e3
descr: (null)
ident: BHYVE-72B8-3EC6-7459
rotationrate: unknown
fwsectors: 0
fwheads: 0
Geom name: vtbd1
Providers:
Name: vtbd1
Mediasize: 42949672960 (40G)
Sectorsize: 512
Stripesize: 4096
Stripeoffset: 0
Mode: r0w0e0
descr: (null)
identr: BHYVE-679A-4260-62AE
rotationrate: unknown
fwsectors: 0
fwheads: 0
```
This tutorial will show how to mount the /dev/vtbd1 40 GB device as a standard ufs (Unix Fast File System) partition and how to add a swap partition.
Note: if the added volume does not show up in the list, you have to restart the server.
Create a GPT partitioned volume with the command:
```
gpart create -s gpt /dev/vtbd1
```
Note: GPT is a GUID Partition Table format which uses a Logical Block Addressing (LBA) system.
To view the volume, run the command:
```
gpart show vtbd1
```
```
=> 40 83886000 vtbd1 GPT (40G)
40 83886000 – free – (40G)
```
Example 1
To add the first 10 GB partition, use the command:
```
gpart add -t freebsd-ufs -s 10G /dev/vtbd1
```
```
vtbd1p1 added
```
This example will add the second partition of 20 GB:
```
gpart add -t freebsd-ufs -s 20G /dev/vtbd1
```
```
vtbd1p2 added
```
The third partition can be added without specifying an initial LBA and size, so it will be created on all available space:
```
gpart add -t freebsd-ufs /dev/vtbd1
```
```
vtbd1p3 added
```
To check the resulting partitions:
```
gpart show vtbd1
```
```
=> 40 83886000 vtbd1 GPT (40G)
40 20971520 1 freebsd-ufs (10G)
20971560 41943040 2 freebsd-ufs (20G)
62914600 20971440 3 freebsd-ufs (10G)
```
To create a file system on volume partitions, run the following commands. The -U option specifies the use of the Soft Update mechanism, which increases the speed of creating and deleting files:
```
newfs -U /dev/vtbd1p1
newfs -U /dev/vtbd1p2
newfs -U /dev/vtbd1p3
```
Next you need to create a mount point for each partition:
```
mkdir /mnt/volume1
mkdir /mnt/volume2
mkdir /mnt/volume3
```
To change the access mode of the partitions, you need to execute the following command:
```bash
chmod -R 660 /mnt/volume1
chmod -R 660 /mnt/volume2
chmod -R 660 /mnt/volume3
```
To mount partitions automatically after the server restart, you need to make changes in /etc/fstab file. Use a text editor like vi or nano to open this file:
```
vi /etc/fstab
```
In the file that opens, you need to add the following lines and save your changes:
```
/dev/vtbd1p1 /mnt/volume1 ufs rw 0 0
/dev/vtbd1p2 /mnt/volume2 ufs rw 0 0
/dev/vtbd1p3 /mnt/volume3 ufs rw 0 0
```
To mount partitions use:
```
mount -a
```
To display the list of mounted devices and the occupied space, use the command:
```
df -h
```
```
Filesystem Size Used Avail Capacity Mounted on
/dev/vdbd1p1 9.7G 8.0K 8.9G 0% /mnt/volume1
/dev/vdbd1p2 19G 8.0K 18G 0% /mnt/volume2
/dev/vdbd1p3 9.7G 8.0K 8.9G 0% /mnt/volume3
```
Example 2 (adding a swap partition)
First we need to add 1GB swap partition:
```
gpart add -t freebsd-swap -s 1G /dev/vtbd1
```
```
vtbd1p1 added
```
The second partition can be added without specifying an initial LBA and size, so it will be created in all free space:
```
gpart add -t freebsd-ufs /dev/vtbd1
```
```
vtbd1p2 added
```
To check the resulting partitions:
```
gpart show vtbd1
```
```
=> 40 83886000 vtbd1 GPT (40G)
40 2097152 1 freebsd-swap (1.0G)
2097192 81788848 2 freebsd-ufs (39G)
```
To create a file system on the volume partitions, run the following command. The -U option specifies the use of the Soft Update mechanism, which speeds up the creation and deletion of files:
```
newfs -U /dev/vtbd1p2
```
Note: the swap partition does not need to be formatted.
Next, you need to create a mount point for every partition except swap:
```
mkdir /mnt/volume1
```
To change the access mode of the partitions, you need to execute the following command:
```bash
chmod -R 660 /mnt/volume1
```
To mount partitions automatically after the server restart, you need to make changes in /etc/fstab file. Use a text editor like vi or nano to open this file:
```
vi /etc/fstab
```
You need to add the following lines and save your changes:
```
/dev/vtbd1p1 none swap sw 0 0
/dev/vtbd1p2 /mnt/volume1 ufs rw 0 0 0
```
Use the following command to mount partitions:
```
mount -a
```
Next you need to mount the swap partition:
```
swapon /dev/vtbd1p1
```
You can use the command swapinfo to check if the partition was mounted successfully:
```
swapinfo
```
```
Device 1K-blocks Used Avail Capacity
/dev/vtbd1p1 1048576 0 1048576 0%
```
Use this command to display a list of mounted devices and space occupied:
Note: The swap-type partition is not displayed in this list.
```
df -h
```
```
Filesystem Size Used Avail Capacity Mounted on
/dev/vdbd1p2 38G 8.0K 35G 0% /mnt/volume
```
https://serverspace.us/support/help/how-to-add-a-volume-and-create-partitions-for-linux-systems.mdThis instruction will help you to mount new volumes and create partitions on virtual servers with Linux operating systems.
After adding a volume in the control panel, you must make it available in the operating system. Connect to the server with sudo privileges and view all volumes. Enter the following command:
```
fdisk -l
```
Example result:
```
Disk /dev/vda: 25 GiB, 26843545600 bytes, 52428800 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 775D7B55-7C02-4DAE-AC79-B81AAA1BECE3
Device Start End Sectors Size Type
/dev/vda1 2048 104447 102400 50M EFI System
/dev/vda2 104448 52428766 52324319 25G Linux filesystem
Disk /dev/vdb: 40 GiB, 42949672960 bytes, 83886080 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
```
This instruction will describe how to mount the added 40 GB /dev/vdb storage device and partition it into three volumes:
- 1 primary partition, 10GB
- 1 extended partition, 30 GB
- 1 logical partition inside the extended partition, 20 GB
Only 4 primary partitions can be created on a single physical hard disk. An extended partition is a special type of partition which contains “free space” where more than four primary partitions can be created. Partitions created within an extended partition are called logical partitions.
Run the fdisk utility to create partitions:
```
fdisk /dev/vdb
```
To add a new partition, use the n command:
```
Command (m for help): n
```
Partition type:
```
p primary (0 primary, 0 extended, 4 free)
```
```
e extended
```
Use the p option to select the primary type:
```sql
Select (default p): p
```
Note: Press Enter to select the default values.
```
Type in the partition number:
```
```
Partition number (1-4, default 1): 1
```
Enter the first sector:
```
First sector (2048-83886079, default 2048): 2048
```
Enter the last sector:
```
Last sector, +sectors or +size{K, M, G} (2048-83886079, default 83886079): +10G
```
Next, you need to add an extended (additional) partition by selecting the **e** option:
```
Command (m for help): n
```
```
Partition type:
```
```
p primary (1 primary, 0 extended, 3 free)
```
```
e extended
```
```sql
Select (default p): e
```
Set the partition number:
```
Partition number (2-4, default 2): 2
```
To make second partition size to take up all remaining disk space, you may leave it at its default value by pressing Enter:
```
First sector (2099200-83886079, default 2099200):
```
```
Last sector, +sectors or +size{K, M, G} (2099200-83886079, default 83886079):
```
Next, you need to create a logical partition inside the extended partition (the logical partition will be defined automatically). To do this, enter the command **n** in the **fdisk** utility, then select the logical partition using the **l** option:
```
Command (m for help): n
```
```
Partition type:
```
```
p primary (1 primary, 1 extended, 2 free)
```
```
l logical (numbered from 5)
```
```sql
Select (default p): l
```
Set the beginning on the sector by default, press Enter:
```
First sector (2101248-83886079, default 2101248):
```
Enter the last sector according to your desired logical partition size:
```
Last sector, +sectors or +size{K, M, G} (2101248-83886079, default 83886079): +20G
```
To display added partitions, use **p** command:
```
Command (m for help): p
```
```
Device Boot Start End Sectors Size Id Type
```
```
/dev/vdb1 2048 20973567 20971520 10G 83 Linux
```
```
/dev/vdb2 20973568 83886079 62912512 30G 5 Extended
```
```
/dev/vdb5 20975616 62918655 41943040 20G 83 Linux
```
**Note: **The extended partition has 10 GB of free space where you can create more logical partitions.
Use the **w** command to save your changes:
```
Command (m for help): w
```
Now create a file system on the primary and the logical partition using the **mkfs** utility, specifying the file system type after the dot.
```
mkfs.ext4 /dev/vdb1
```
```
mkfs.ext4 /dev/vdb5
```
**Note:** the extended partition cannot be formatted with file systems like **ext3**, **FAT**, or **NTFS**, and cannot directly hold data.
Next you need to create a mount point for each partition:
**Note:**
- Usually, the mount point is created in the /mnt or /media directories;
- You do not need to create a mount point for an extended partition.
```
mkdir /mnt/volume1
```
```
mkdir /mnt/volume2
```
To change the access mode of the partitions you have to execute the following command:
```bash
chmod -R 660 /mnt/volume1
```
```bash
chmod -R 660 /mnt/volume2
```
To mount partitions automatically after the server restart, make changes in **/etc/fstab** file. Use a text editor like nano or vi to open this file:
```
nano /etc/fstab
```
Add the following lines to the file that opens and save the changes:
```
/dev/vdb1 /mnt/volume1 ext4 defaults 0 0
```
```
/dev/vdb5 /mnt/volume2 ext4 defaults 0 0
```
To mount partitions use:
```
mount -a
```
To print the list of mounted devices and the occupied space, use the command:
```
df -h
```
```
Filesystem Size Used Avail Use% Mounted on
```
```
```
```
/dev/vdb1 9.8G 37M 9.3G 1% /mnt/volume1
```
```
/dev/vdb5 20G 45M 19G 1% /mnt/volume2
```
https://serverspace.us/support/help/how-to-manage-groups-in-ad-part-2-managing-members-in-a-group.mdThis tutorial will show you how to manage group membership in Active Directory domain using ADUC, ADAC and Microsoft Windows Powershell.
In average AD forests, groups govern authorization to sensitive data. Groups can distribute content or help to give access to files, services or even AD delegation. After installation you will gain several built-in groups such as Domain Admins group or Account Operators.
The Active Directory Users and Computers (ADUC) and the Active Directory Administrative Center (ADAC) are programs that provide graphic UI to interact with groups and help to manage them. ADAC differs from ADUC in a way that it has PowerShell History this provides the ability to see the PowerShell cmdlets behind the GUI.
In order to manage groups, you have to sign in to a DC, a doman-joined server, or a device with the Remote Server Administration Tools (RSAT) installed.
Speaking about access level you need to have a domain admin account, the Account Operators account, or have rights to create groups in certain OU via delegation.
# Managing Members of a Group
It is possible to manage group membership using several ways:
## Managing Group Membership via ADUC
### Adding a User to a Group
Open ADUC (dsa.msc). Go to the OU where the needed user resides. From the Action menu, select Find. In the Name field, type in the name of the user that you want to add to a group, and then press Enter.
Rightclick the needed user object and select “Add to a group” from the menu.
In the “Select Groups” window, type in the name of the needed group, otherwise, click the “Advanced” button to search for the needed group. Click “Check Names”. Click OK to add the user to the group.
### Removing a User from a Group
From the Action menu, select “Find”. In the “Name field”, type in the name of the needed group and press Enter. Rightclick the group and select Properties. Switch to the “Members” tab. In the “Group Properties” window select a user that you need to remove and click Remove.
Click Yes in the confirmation window. Click OK and you are done.
## Perform Group Membership changes via ADAC
### Adding a User to a Group
To add a user to a group using the ADAC in the left navigation pane, switch to the Tree view. Go to the OU or container where the user resides. Use Global Search, to find the needed user. Type in the name of the user object in the search field, and then press Enter. From the list of Global Search results, rightclick the user object and select Add to group
In the Select Groups window, type in the name of the group that you want to add the user account to. Click “Check Names”. Click OK to finish user addition.
### Removing a User from a Group
To remove a user from a group, go to the OU or container where the group resides. Under Global Search, type in the name of the group, and then press Enter. From the list of Global Search results, select the group. Rightclick it and select Properties from the list. In the left navigation pane, click Members, as shown in the following screenshot:
In the Members section select the needed user and click Remove and the user will be removed without any confirmation window.
## Using Windows PowerShell
Use the following cmdlet to add a user to a group:
```
Import-Module ActiveDirectory
```
Add-ADGroupMember -Identity “CN=ITGroup,OU=OfficeCorp,DC=office,DC=local” -Members “GSoul”
Use the following lines of PowerShell code to remove a user from a group in Active Directory:
```
Import-Module ActiveDirectory
```
```
Remove-ADGroupMember -Identity "CN=ITGroup,OU=OfficeCorp,DC=office,DC=local" -Members "GSoul"
```
Type "y" to confirm your removal action.
https://serverspace.us/support/help/how-to-manage-groups-in-ad-part-1-creating-and-deleting-groups.mdIn this tutorial you will learn how to create, change and delete groups in Active Directory domain using ADUC, ADAC and Windows Powershell.
In average AD forests, groups govern authorization to sensitive data. Groups can distribute content or help to give access to files, services or even AD delegation. After installation you will gain several built-in groups such as Domain Admins group or Account Operators.
The Active Directory Users and Computers (ADUC) and the Active Directory Administrative Center (ADAC) are programs that provide graphic UI to interact with groups and help to manage them. ADAC differs from ADUC in a way that it has PowerShell History this provides the ability to see the PowerShell cmdlets behind the GUI.
In order to manage groups, you have to sign in to a DC, a doman-joined server, or a device with the Remote Server Administration Tools (RSAT) installed.
Speaking about access level you need to have a domain admin account, the Account Operators account, or have rights to create groups in certain OU via delegation.
## Group Scopes
There are three group scopes:
- Global groups
- Universal groups
- Domain local groups
When deciding what group to create, you need to know what are the group types and how they differ. Global groups and universal groups can be nested into domain local groups and global groups can be nested into universal groups. Therefore, it is very popular that global groups are created for departments, universal groups for distribution groups, and domain local groups for access rights.
## Group Types
There are two group types:
- Distribution groups
- Security groups
Distribution groups do not have a security identifier (SID) and, therefore, can’t be used to allow access to resources, except for resources within Microsoft Exchange Server. On the opposite side security groups do have SIDs. It is possible to convert a distribution group into a security group, and vice versa.
# How to Create a Group
There are several methods to create a group.
## Creating a group with ADUC
Open ADUC (dsa.msc). Navigate to the OU or Container where you want to create the group. Rightclick the OU or Container where you want to create a new group in and select New-> Group.
In the New Object – Group screen, specify the following values:
- Specify the Group Name.
- Specify the Group scope or accept the default Global scope.
- Specify the Group type or accept the default Security type.
Click OK to create the group.
## Creating a Group with ADAC
Open ADAC (dsac.exe). Rightclick the domain name and select New->Group from the menu.
In the Create Group screen, specify the following values:
- Specify the Group name
- Specify the Group scope or accept the default Global scope.
- Specify the Group type or accept the default Security type.
Click OK to create the group.
## Creating a Group Using Command Prompt
Use the following cmd.exe command to create a group in AD:
```
dsadd.exe group "CN=ITGroup,OU=OfficeCorp,DC=office,DC=local"
```
## Creating a Group Using Windows PowerShell
Use the following PowerShell code:
```
Import-Module ActiveDirectory
```
```
New-ADGroup -GroupCategory Security -GroupScope Global -Name "ITGroup" -Path "OU=OfficeCorp,DC=office,DC=local" -SamAccountName "ITGroup
```
# How to Delete a Group in AD
Here are several methods to do that.
## Deleting a User Using ADAC
Open ADUC (dsa.msc). Perform these actions:
Navigate to the OU or container where the group that you intend to delete resides.
From the Action menu, select Find. In the Name field, type in the name of the group you intend to delete, and then click Find Now. From the list of Search results, select the group.
Rightclick the group and select Delete from the list. Click Yes in confirmation window.
## Deleting a Group with ADAC
Open the ADAC (dsac.exe). Perform one of these series of actions:
Navigate to the OU or container where the group that you intend to delete resides. From the main menu pane, under Global Search, type in the name of the group you intend to delete, and press Enter.
From the list of Global Search results, select the group. Right-click the group this time, select Delete from the list. Click Yes in the Delete confirmation popup window.
## Deleting a Group Using Command Prompt
Use the following command to delete a group in Active Directory:
```
dsrm.exe "CN=ITGroup,OU=OfficeCorp,DC=office,DC=local"
```
Type "y" for confirmation and press Enter.
## Deleting a Group Using Windows PowerShell
Use the following PowerShell code:
```
Import-Module ActiveDirectory
```
```
Remove-ADObject -Identity "CN=ITGroup,OU=OfficeCorp,DC=office,DC=local"
```
Type "y" for confirmation and press Enter.
https://serverspace.us/support/help/how-to-backup-windows-server-with-veeam-backup-agent.mdHere is step by step instruction on how to easily make a backup of your windows server using Veeam backup agent.
Backups are always important for every organization, especially now when we face ransomware attacks everyday. Here is the instruction on how to easily make a backup of your windows server using Veeam agent.
## Downloading and Installing Veeam Backup Agent
First, we need to download Veeam backup agent from official web site, here is the download link:
[https://www.veeam.com/windows-endpoint-server-backup-free.html](https://www.veeam.com/windows-endpoint-server-backup-free.html)
After download is complete, we need to install this software, you will need admin rights for that. Unzip the Veeam Agent Windows and run it.
Accept all terms and proceed to install. The install is straightforward and will finish automatically.
Skip the removable backup target
And in the next window click **Finish
**
## Creating Recovery Media
Now we need to create recovery media, keep all things by default and click **Next**
****
Select a path where you want to store this media, you can use local or network storage for that, in my case I will save it on local drive, click **Next** and **Create**. Wait until the image creation is complete, it will take some time.
Click **Finish** and open **Veeam Agent** in Windows tray.
## Configuring Veeam Backup Agent
It will ask to install a license file, click **No** and then "**Add new job**". The wizard will open.
First you need to specify the name of the job and click **Next**. After that we need to select the backup type. In our example I will make a full backup of **entire computer**.
Click **Next** and chose the backup destination, in this example we will make a backup to **shared drive.**
"Keep backups for 7 days" option specifies the depth of the archive. That’s the number of days you want to keep backups on the server. If you make a backup every day and specify 8, the system backups for the last 8 days will be preserved. If you backup every other day, then 4 days, and so on.
You can create several tasks with different backup depths. For example: every day 7 days, once a week 30, and once a month 365. This way you will always have the last 7 backups of the system for that week. Then one backup per week for the last month and 12 backups per month for the last year.
Click on **Advanced** to add some extra settings, you need to go to **Storage** tab and enable **backup encryption**:
Create, enter and save strong password in your password manager. Click **Ok**, then **Next**.
Now we need to setup the **Schedule**, in this example I will make just one backup. So, I uncheck the daily option.
Click **Apply**, check the summary and check "**Run the job when I click Finish**" option. And click **Finish**.
The backup will begin shortly, and we can check full its status by clicking on the job and then on "**Processing**"
After job is complete, we can view our backup on our network drive:
https://serverspace.us/support/help/how-to-manage-groups-in-ad-part-3-managing-expiring-groups-and-viewing-nested-group.mdThis guide will help you to create and manage expiring group membership in AD and also you will find out how to get a list of nested groups.
In average AD forests, groups govern authorization to sensitive data. Groups can distribute content or help to give access to files, services or even AD delegation. After installation you will gain several built-in groups such as Domain Admins group or Account Operators.
The Active Directory Users and Computers (ADUC) and the Active Directory Administrative Center (ADAC) are programs that provide graphic UI to interact with groups and help to manage them. ADAC differs from ADUC in a way that it has PowerShell History this provides the ability to see the PowerShell cmdlets behind the GUI.
In order to manage groups, you have to sign in to a DC, a doman-joined server, or a device with the Remote Server Administration Tools (RSAT) installed.
Speaking about access level you need to have a domain admin account, the Account Operators account, or have rights to create groups in certain OU via delegation.
## Managing Expiring Group Memberships
Group memberships can be configured to expire. To use the expiring group membership option, the Active Directory FFL needs to be at least Windows Server 2012 R2. The Privileged Access Management feature needs to be enabled. This can be achieved using the following lines of PowerShell on a system with the Active Directory Module for Windows PowerShell installed:
```
Import-Module ActiveDirectory
```
```
Enable-ADOptionalFeature "Privileged Access Management Feature" -Scope ForestOrConfigurationSet -Target office.local
```
Type "y" to confirm this action. Note that this is irreversible feature and cannot be disabled.
Set Expiring Group Memberships via Windows PowerShell.
Normally, to add a user object to a group, you’d use the following lines of PowerShell:
```
Import-Module ActiveDirectory
```
```
Add-ADGroupMember -Identity "CN=ITGroup,OU=OfficeCorp,DC=office,DC=local" -Members "GSoul"
```
However, to add a user with an expiring group membership to a group you need to use the following lines of PowerShell on a system with the Active Directory Module for Windows PowerShell installed:
```
Import-Module ActiveDirectory
```
```
Add-ADGroupMember -Identity "CN=ITGroup,OU=OfficeCorp,DC=office,DC=local" -Members "GSoul" -MemberTimeToLive (New-TimeSpan -Days 14)
```
To view the time-to-live for group memberships, use the following lines of PowerShell code:
```
Import-Module ActiveDirectory
```
```
Get-ADGroup "CN=ITGroup,OU=OfficeCorp,DC=office,DC=local" -Property member -ShowMemberTimeToLive
```
Look for TTL option, it is displayed in seconds.
## Viewing Nested Group Memberships
This instruction will show you how to enumerate all members of a group, even members in nested groups.
Using ADUC
As an admin, you could click groups on the Members tab and enter the properties of nested groups to look at its members. When groups are heavily nested, though, this becomes very hard to perform such action.
View All Group Members Including Nested Groups via PowerShell.
Use the following lines of PowerShell code to enumerate all group memberships in a group:
```
Import-Module ActiveDirectory
```
```
Get-ADGroupMember -Identity "CN=ITGroup,OU=OfficeCorp,DC=office,DC=local" -Recursive | Out-GridView
```
## Finding Empty Groups
This guide will help you to find groups without group members. Every object in Active Directory takes up resources. When a group is not used you can consider it to deletion to make room for other more important objects.
## Finding Empty Groups with PowerShell
Use the following lines of PowerShell to find all groups without memberships in Active Directory:
```
Import-Module ActiveDirectory
```
```
Get-ADGroup -Filter * -Properties members | Where-Object {$_.Members.count -eq 0} | Out-GridView
```
https://serverspace.us/support/help/windows-run-commands-cheat-sheet.mdBoost productivity with this guide to 30+ essential Windows Run commands. Ideal for system administrators to access tools, settings, and perform tasks faster.
The Run utility in Windows is a quick and powerful way to access system tools, settings, and applications without having to navigate through multiple menus. With just a few keystrokes or a simple command, you can open the Registry Editor, Task Manager, Control Panel, or even connect to a remote desktop. Whether you’re a system administrator or just an advanced user looking to speed up daily tasks, knowing the right Run commands can save you time and effort. Below is a comprehensive cheat sheet of the most popular Windows Run commands — from system diagnostics to user account management — all in one place.
## Launching Run Dialog Box
But first we need to know how to open Run dialog box. There are three ways to achieve this in Windows:
- Press the “Windows+R” button combination on your keyboard.
- Right-click on the Start menu and select “Run” from the menu.
- Just find Run in Windows Search.
## Windows Run Commands Cheat Sheet
- **_msconfig_** – System Settings.
- **msinfo32** – System Information.
- **resmon** – Resource Monitor.
- **main.cpl** – Mouse Settings.
- **mstsc** – Remote Desktop Service.
- **cmd** – The Command Prompt.
- **explorer – **Windows Explorer.
- **taskmgr **– Task Manager.
- **shutdown **– Windows Shutdown.
- **chkdsk – **Check Disk Utility.
- **cleanmgr – **Clean Disk Manager.
- **dxdiag – **DirectX Options.
- **powershell – **Windows PowerShell Console.
- **winver – **Windows Version.
- **control folders – **Folder Options.
- **diskmgmt.msc** – Disk Manager.
- **eventvwr.msc** – Event Viewer.
- **gpedit.msc** – Local Group Policy Editor.
- **regedit** – Registry Editor.
- **sysdm.cpl** – System Properties.
- **powercfg.cpl – **Power Options.
- **magnify** – Magnifier.
- **charmap** – Windows Character Table.
- **ncpa.cpl** – Network Connections.
- **mrt –** Malware Removal Tool.
- **devmgmt.msc** – Device Manager.
- **netplwiz** – User accounts.
- **services.msc** – Services.
- **appwiz.cpl** – Programs and Components.
- **control** – Control Panel.
- “**.**” – open the folder of the current user.
- **osk** – On-Screen Keyboard.
- **snippingtool** – Scissors.
- **mdsched** – Windows memory checker.
## Most Popular Run Commands
- **_msconfig_** – System settings. In the system settings you can change Windows boot parameters and the features of its background services. If you have two OSes installed on your device you can choose which to boot next time. Another great option is to load secure boot after next restart.
- **resmon** – Resource Monitor. Application which helps to monitor your system resources, you can get real-time information about CPU, RAM, disk and network.
- **msinfo32** – System Information. Contains detailed information about both the hardware and software on your computer.
- **main.cpl** – Mouse Properties. In this menu you can change settings related to the operation of your mouse.
- **mstsc** – Remote Desktop Connection Settings. You can use this tool to connect remotely to another computer or server and control it.
- **cmd** – The Command Prompt. Console where you can type in commands to configure Windows or run applications. You can view cheat sheet for it here.
- **explorer **– Windows Explorer. Opens Windows explorer where you can navigate between folders and disks in quick access location.
- **taskmgr **– Task Manager. Opens task manager where you can kill frozen applications, restart services and monitor system resources.
- **shutdown **– Computer shutdown. Shuts the system down without notice, be careful.
- **chkdsk – **Check Disk Utility. Starts a utility that can check disk for errors and fix them.
- **cleanmgr – **Clean Disk Manager. Can free space on your disks by removing temp files or empty recycle bin.
- **dxdiag – **DirectX Options. Displays full data about DirectX installed components and drivers.
- **powershell – **Windows Powershell Console. Opens Microsoft Powershell console where you can run different cmdlets to get data or configure Windows and applications.
- **winver – **Windows Version. Opens a window with full information about current Windows version.
- **controlfolders – **Folder Options. Opens folder options window where you can change folder settings such as "show hidden files and folders" or "show file extensions".
- **diskmgmt.msc** – Disk Management. Opens Disk Management utility where you can create volumes and partitions, format disks, apply different labels to disks etc
- **eventvwr.msc** – Event Viewer. Shows console with security, applications, system and other events generated by Windows and applications.
- **gpedit.msc** – Local Group Policy Editor. Opens the editor where you can manage your local group policy settings.
- **regedit** – Registry Editor. Gives access to the Windows registry where you can adjust different settings. It is very powerful tool so be careful when you change its parameters.
- **sysdm.cpl** – System Properties. Settings window to manage the system security, remote connectivity features, rename computer or enter it to a domain.
- **powercfg.cpl – **Power Options. Allows you to manage your device's power settings. Very useful for mobile devices.
- **magnify** – Magnifier. This command opens the magnifier in Windows, which can be used for images inspecting or reading tiny text.
- **charmap** – Windows Character Table. Gives you access to different Windows fonts and symbols you choose.
- **ncpa.cpl** – Network Connections. In this menu you can manage network connections, change IP v4/v6 addresses, change network device MAC and many other settings.
- **mrt – **Microsoft Windows malware removal tool. This command invokes Microsoft’s virus removal tool. It scans your computer for any malware on-demand.
- **devmgmt.msc** – Device Manager. A menu where you can find out the details of the connected devices, computer parts and the version of the installed drivers.
- **netplwiz** – User accounts. In this menu you can manage local user accounts, e.g. add a new account or change the type of an existing account by raising or lowering its privileges. There is also an option to change the password for the selected account and configure its security policy settings.
- **services.msc** – Services. This window lists all the services that run in the background and are the basis of the Windows system functioning.
- **appwiz.cpl** – Programs and Components. Although there are other ways to uninstall unnecessary programs in Windows, this command still comes in handy because it displays a list consisting only of third-party applications.
- **control** – Control Panel. Contains all basic Windows settings
- “**.**” – open the root folder of the current user. We quite often have to open the user’s folder in Windows. To make this process faster and easier, just type a dot in the “Run” dialog box and you’ll instantly find the files you need.
- **osk** – On-Screen Keyboard. If you want to use the onscreen keyboard, this command comes in handy.
- **snippingtool** – Scissors. Snippingtool is still the main tool for taking screenshots in Windows without using third-party apps.
- **mdsched** – Windows memory checker. This is a built-in check of your RAM will help you check performance problems and possibly fix them.
## FAQ: Frequently Asked Questions About Windows Run Commands
- **Do I need administrator rights to use Run commands?**
Most Run commands work without admin rights, but some tools like regedit, gpedit.msc, or diskmgmt.msc may require elevated permissions. If a command doesn't launch, try running it from an admin account.
- **Can I create shortcuts for Run commands?**
Yes, you can create desktop or taskbar shortcuts for Run commands by right-clicking, choosing “New → Shortcut,” and entering the command (e.g., cmd or eventvwr.msc).
- **Are these commands available in all Windows versions?**
Most commands work in Windows 10 and 11. However, some may be missing in Home editions (like gpedit.msc) or older systems like Windows 7 or 8.
- **Is it safe to use Run commands?**
Generally, yes — if you know what the command does. Avoid changing advanced settings unless you're sure, especially in tools like regedit or msconfig, which affect system behavior.
https://serverspace.us/support/help/how-to-restore-windows-server-via-veeam-agent.mdThis guide will show you how to easily restore Microsoft Windows volume using free backup tool - Veeam Agent.
After backuping your volume in your Windows Server via Veeam agent you need to be able to restore it if you have some issues with data such as corruption or loss. Here is the instruction for volume restoration. You can perform it from any Windows machine with Veeam Agent installed.
Press Windows+S buttons and type Veeam, choose Volume restore in displayed search.
In the appeared window choose **Network storage** and click **Next**.
Choose **Shared folder** and click **Next**
Enter path to share with the backup image and enter credentials to it. Click **Next.**
Choose the backup image to restore from. Click **Next**.
Choose the restore point to which you want to roll data back. Click **Next.**
Choose the disk to which you want to restore the volume. Note that you cannot restore on live system disk. If you don't have such disk in the list, you need to create it first and then perform restore process again.
Click **Next**, then click **Restore**.
After restoration process is completed, click **Finish** to close the wizard. Now you can go to your restored drive and view restored files.
https://serverspace.us/support/help/how-to-restore-linux-server-via-veeam-agent.mdThis guide will show you how to easily restore a volume on a Linux server using free backup tool - Veeam Agent.
After backuping your volume in your Linux Server via Veeam agent you need to be able to restore it if you have some issues with data such as corruption or loss. Here is the instruction for volume restoration. You can perform it from any Linux machine with Veeam Agent installed.
Note that you need to have Veeam agent being installed.
Type **veeam** in the terminal, and Veeam agent application will open.
Press "R" and **Imported backups** window will open immediately. Press "i" option to load a backup from network drive.
Select "**Add shared folder**" and press "**Enter**".
Enter shared drive path and credentials to access it.
Choose the needed backup from the list and press "**Enter".**
The backup will be mounted to **/mnt/backup** path. Press "**Enter**" to close the window.
Now you can browse this path via bash commands or file manager such as midnight commander and copy corrupted or lost files manually to their initial locations.
When you finish working with restored files and folders, you can unmount the backup from the **/mnt/backup** folder. In the Veeam Agent control panel, press the ‘u’ key to unmount a backup. Veeam Agent will stop the backup mount session and display a notification window.
Press Enter to close the window and return to the Veeam Agent control panel.
https://serverspace.us/support/help/how-to-install-chocolatey-package-manager-on-windows-server.mdThis guide will help you to install Chocolatey - package manager for Windows that will help you easily install and update your software.
This instruction will show you how to install the Chocolatey package manager on Windows Server, which will make installing and uninstalling programs in Windows as easy and convenient as on Linux-based operating systems. In addition, you will be able to easily update your installed applications in one click or command.
## What is Chocolatey?
There were times when Linux-based OSes had very complicated application installation mechanism, it is still persist and you can compile any application from a source code now using make or magic. In this case Linux developers introduced very convenient way to install applications – package managers. Now you have the possibility to compare compiling and modern package management mechanism – apt-get, yum for OSes and pip, gem for languages where applications with dependencies are installed with a simple command and are just as easy to update or remove. Windows is this case didn't make any revolutional improvements, it just made its store but it is still not popular at all. In Windows still we have to search the web for programs and manually update them, which is not only inconvenient but also more dangerous for the security of the system. In this case Chocolatey was created to make program management in Windows more convenient and more similar to how it is done in Linux. It created a software repository and a special client for Windows that is capable of downloading, installing and updating programs from this directory almost automatically.
## Installing Chocolatey
The Chocolatey client is PowerShell utility. To install it, open a Windows PowerShell with administrator privileges and enter the following code:
```
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
```
Now lets wait for the process to complete and the software will be ready to use. After that you can get acquainted with the main features of the program. To do this, enter the **choco /?** command which will show you how to use the program and basic commands.
As you have probably already understood, all operations are performed by typing special commands in the PowerShell. For example, if you need to install a program, just type:
```
choco install package_name
```
To update it:
```
choco update package_name
```
To see the entire list of available programs in the repository, type:
```
choco list
```
or use the search in the online version of the catalog – [https://community.chocolatey.org/packages?q=](https://community.chocolatey.org/packages?q=)
## ChocolateyGUI
If you don’t really like typing commands manually, you can get a GUI for Chocolatey. It is called ChocolateyGUI and is installed by typing in PowerShell:
```
choco install chocolateygui
```
The process will take some time and require to type “a” to confirm the installation.
To run ChocolateyGUI just type in its name in Windows Search and it will output the installed program.
The program has a very simple and intuitive interface. The installation of the programs is very simple just rightclick the needed application from the list and click install after that.
Then wait a bit for installation to complete
After installation is complete you can find the program using Windows Search.
In order to delete software just rightclick it and select uninstall.
In order to update all software automatically, just run:
```
choco upgrade all
```
https://serverspace.us/support/help/automation.mdThis guide will show you how to automate server creation process in serverspace using API, CLI or Terrarform utilities.
## List of API Keys
API keys to access your project.
## API
[Serverspace Public API](https://docs.serverspace.io/public_api.html) – a public API for interaction with the Serverspace services. Actions performed in the Serverspace control panel can also be performed using the public API.
### Authorization
To work with the public API, create an API key for the project and pass it in the X-API-KEY header with every request. For example, when using the cURL utility, the header would look like this:
```
-H "X-API-KEY: lmGwbvllpIqIrKROOCLgE5Z941MKP5EYfbkgwtqJZGigfXUTpuYRpNQkCqShmm6r"
```
All API requests must be made through HTTPS, here is the URL of the endpoint of the public API:
```
https://api.serverspace.io/
```
###
### Usage Examples
Let’s get information about the project by sending a request using the cURL utility:
```bash
curl -X GET
https://api.serverspace.io/api/v1/project
-H 'content-type: application/json'
-H 'x-api-key: lmGwbvllpIqIrKROOCLgE5Z941MKP5EYfbkgwtqJZGigfXUTpuYRpNQkCqShmm6r'
```
This will return information about the project:
```
{
"project": {
"balance": 400.07,
"created": "2019-04-08T10:35:53.7021047Z",
"currency": "EUR",
"id": 1,
"state": "Active"
}
}
```
Let’s create a server with the following configuration: Amsterdam, name: “api-example”, Debian 10.7 operating system, server configuration – 1 GB RAM, 1 CPU, 25 GB SSD boot drive, 50 Mbps:
```bash
curl -X POST
https://api.serverspace.io/api/v1/servers
-H 'content-type: application/json'
-H 'x-api-key: lmGwbvllpIqIrKROOCLgE5Z941MKP5EYfbkgwtqJZGigfXUTpuYRpNQkCqShmm6r'
-d '{
"location_id": "am2",
"image_id": "Debian-10.7-X64",
"cpu": 1,
"ram_mb": 1024,
"volumes": [
{
"name": "boot",
"size_mb": 25600
}
],
"networks": [
{
"bandwidth_mbps": 50
}
],
"name": "api-example"
}'
```
The result returns a task ID, which can be used to track the server creation process:
```
{
"task_id" : "lt1507097"
}
```
## CLI
s2ctl is a Serverspace in the command line. The CLI gives you the ability to control your infrastructure via terminal, just like via the control panel. The tool is available on our Github.
### Installation
s2ctl is available for Linux and Windows as a separate binary file. Download the archive from Github and unzip it.
Installation on Linux
- Download the archive from the GitHub repository:
```bash
wget https://github.com/itglobalcom/s2ctl/releases/download/vX.X.X/s2ctl-vX.X.X-linux.tar.gz
```
X.X.X.X is the number of the latest version of the utility.
- Unzip the downloaded archive:
```bash
tar -xzf s2ctl-vX.X.X-linux.tar.gz
```
- Navigate to the created directory and run the s2ctl utility:
```
cd s2ctl-vX.X.X-linux
./s2ctl –help
```
- (Optional) You can also add the directory which contains the s2ctl executable to the $PATH environment variable to access the utility from anywhere in the operating system. To see what is in the $PATH variable right now, type the command:
```
echo $PATH
```
To add a new directory to the list, use the command:
```
export PATH=$PATH:""
```
The $PATH variable is set by the shell each time it starts, but you can make it include the path to the utility in every new shell you open. The exact method depends on which shell you’re using.
For example, for bash you need to add the following line about the corresponding file:
```
echo 'export PATH=$PATH:""' >> .bashrc
```
Use the command to apply the changes:
```
source ~/.bashrc
```
Installation on Windows
- Download the file s2ctl-vX.X.X-windows.zip from [Github](https://github.com/itglobalcom/s2ctl/releases) and unzip it.
Run the command line:
- Press Win+R or Start → Search → Enter run → OK
- Enter cmd command → OK
- By default, the command line displays the home directory of the current user. Navigate to the directory with the extracted file:
```
cd
```
- Go to the desired directory and run the command:
```
s2ctl –help
```
- (Optional) You can also add the directory where you placed the s2ctl binary to the PATH environment variable to access the utility from anywhere in the operating system.
Find System (Control Panel) in Search, and open it.
- Click the Advanced system settings.
- Click on Environment Variables. In the System Variables section find the PATH variable and select it. Click Edit. If the PATH variable does not exist, click New.
- In the Edit System Variable (or New System Variable) window, specify the value for the PATH environment variable. Click OK. Close all remaining windows by clicking OK.
### Authorization
In order to work with the CLI you must create an API key for the project and also a context. Otherwise, you will need to pass the API key with each request.
Context Creation
Using contexts simplifies the use of the s2ctl utility. In this case you do not have to explicitly specify the API key for each command.
To create a context, use the following command:
```
s2ctl context create -k -n
```
For example:
```
s2ctl context create -k lmGwbvllpIqIrKROOCLgE5Z941MKP5EYfbkgwtqJZGigfXUTpuYRpNQkCqShmm6r -n example
```
Key Transfer
To pass the API key explicitly, it must be specified at the end of the command with the –apikey option:
```
s2ctl –apikey
```
For example:
```
s2ctl images –apikey lmGwbvllpIqIrKROOCLgE5Z941MKP5EYfbkgwtqJZGigfXUTpuYRpNQkCqShmm6r
```
### Usage Examples
Get information about the project with the following command:
```
s2ctl project show
```
This will return information about the project:
```
id: '1'
balance: '400.24'
currency: EUR
state: Active
created: '2019-04-08T10:35:53.7021047Z'
```
Create server:
```
s2ctl server create –name test-cli –location nj3 –image Ubuntu-20.04-X64 –cpu 2 –ram 2048M –volume boot:30720M –volume volume:10240M –public-network 50 –public-network 60
```
This will return the task ID, which can be used to track the server creation process:
```
task_id: lt1512053
```
## Terraform
Terraform provider Serverspace allows you to manage cloud resources using the Infrastructure as Code approach. Management is done using special configuration files in which you describe the desired state of your infrastructure.
### Installing Terraform
First, let's install Terraform in your operating system. We recommend using the Terraform developer’s manual.
### Provider Configuration
- Create an API key for the project that will work with Terraform.
- Create and navigate to the directory which will be used to work with Terraform Provider.
- Create and open the provider.tf configuration file.
- Insert the provider information in the file, where is your API key, and save the changes:
```
terraform {
required_providers {
serverspace = {
source = "itglobalcom/serverspace"
version = "0.2.0"
}
}
}
variable "s2_token" {
type = string
default = ""
}
provider "serverspace" {
key = var.s2_token
}
```
- Open a command prompt and navigate to the directory where you created the file. Perform an initialization to verify that it is correct:
```
terraform init
```
You will see the following message if initialization is successful:
```
Initializing the backend
Initializing provider plugins
– Finding itglobalcom/serverspace versions matching "0.2.0"
– Installing itglobalcom/serverspace v0.2.0
– Installed itglobalcom/serverspace v0.2.0 (self-signed, key ID 062XXXXXXXXXXXX)
Partner and community providers are signed by their developers.
If you'd like to know more about provider signing, you can read about it here: https://www.terraform.io/docs/cli/plugins/signing.html
Terraform has created a lock file .terraform.lock.hcl to record the provider selections it made above. Include this file in your version control repository so that Terraform can guarantee to make the same selections by default when you run "terraform init" in the future.
Terraform has been successfully initialized!
You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work.
If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary.
```
## Your Infrastructure Description
With Serverspace Terraform Provider, you can create infrastructure with various configurations. You can find detailed documentation in the [Terraform Registry](https://registry.terraform.io/providers/itglobalcom/serverspace/latest/docs).
Let’s take a look at the example of creating a simple infrastructure with two servers connected via isolated network:
- Server in Amsterdam called “server-1” with Ubuntu 20.04 operating system. Server configuration – 2 GB RAM, 2 CPUs, 40 GB SSD boot drive, additional 20 GB SSD drive, 50 Mbit/s. SSH connection to the server. Redis data storage installed on the server.
- Server in Amsterdam called “server-2” with Ubuntu 20.04 operating system. Server configuration – 8 GB RAM, 4 CPUs, 40 GB SSD boot drive, 70 Mbps.
- Isolated network in Amsterdam addressing 192.168.0.0/24
Follow the steps below to set up this infrastructure:
- Create and open the file ssh_key.tf, which will contain the public part of the ssh key to create the server.
- Insert the information about the public part of the ssh key into the file ssh_key.tf and save the changes, replacing the contents of the public_key variable with your value:
```
resource "serverspace_ssh" "terraform" {
name = "terraform-key"
public_key = "ssh-rsa AAAAB3NzaJUDjlM= root@CentOS.local"
}
variable "pvt_key" {
type = string
default = ""
}
```
- Create and open the main.tf file that will contain the infrastructure description.
- Insert the description of your infrastructure into the file.
```
resource "serverspace_server" "server1" {
image = "Ubuntu-20.04-X64"
name = "server-1"
location = "am2"
cpu = 2
ram = 2048
boot_volume_size = 40*1024
volume {
name = "bar"
size = 20*1024
}
nic {
network = ""
network_type = "PublicShared"
bandwidth = 50
}
nic {
network = resource.serverspace_isolated_network.my_net.id
network_type = "Isolated"
bandwidth = 0
}
ssh_keys = [
resource.serverspace_ssh.terraform.id,
]
connection {
host = self.public_ip_addresses[0]
user = "root"
type = "ssh"
private_key = file(var.pvt_key)
timeout = "2m"
}
provisioner "remote-exec" {
inline = [
"export PATH=$PATH:/usr/bin",
"sudo apt-get update",
"sudo apt-get install -y redis-server",
"exit 0"
]
}
}
resource "serverspace_server" "server2" {
image = "Ubuntu-20.04-X64"
name = "server-2"
location = "am2"
cpu = 4
ram = 8192
boot_volume_size = 40*1024
nic {
network = ""
network_type = "PublicShared"
bandwidth = 70
}
nic {
network = resource.serverspace_isolated_network.my_net.id
network_type = "Isolated"
bandwidth = 0
}
}
resource "serverspace_isolated_network" "my_net" {
location = "am2"
name = "my_net"
description = "Example for Terraform"
network_prefix = "192.168.0.0"
mask = 24
}
```
- To create the infrastructure described above, run the command:
```
terraform apply
```
A dialog window will appear:
```
Terraform used the selected providers to generate the following execution plan.
Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
# serverspace_isolated_network.my_net will be created
+ resource "serverspace_isolated_network" "my_net" {
+ description = "Example for Terraform"
+ id = (known after apply)
+ location = "am2"
+ mask = 24
+ name = "my_net"
+ network_prefix = "192.168.0.0"
}
# serverspace_server.server1 will be created
+ resource "serverspace_server" "server1" {
+ boot_volume_id = (known after apply)
+ boot_volume_size = 40960
+ cpu = 2
+ id = (known after apply)
+ image = "Ubuntu-20.04-X64"
+ location = "am2"
+ name = "server-1"
+ public_ip_addresses = (known after apply)
+ ram = 2048
+ ssh_keys = (known after apply)
+ nic {
+ bandwidth = 0
+ id = (known after apply)
+ ip_address = (known after apply)
+ network = (known after apply)
+ network_type = "Isolated"
}
+ nic {
+ bandwidth = 50
+ id = (known after apply)
+ ip_address = (known after apply)
+ network_type = "PublicShared"
}
+ volume {
+ id = (known after apply)
+ name = "bar"
+ size = 20480
}
}
# serverspace_server.server2 will be created
+ resource "serverspace_server" "server2" {
+ boot_volume_id = (known after apply)
+ boot_volume_size = 40960
+ cpu = 4
+ id = (known after apply)
+ image = "Ubuntu-20.04-X64"
+ location = "am2"
+ name = "server-2"
+ public_ip_addresses = (known after apply)
+ ram = 8192
+ ssh_keys = (known after apply)
+ nic {
+ bandwidth = 0
+ id = (known after apply)
+ ip_address = (known after apply)
+ network = (known after apply)
+ network_type = "Isolated"
}
+ nic {
+ bandwidth = 70
+ id = (known after apply)
+ ip_address = (known after apply)
+ network_type = "PublicShared"
}
}
# serverspace_ssh.terraform will be created
+ resource "serverspace_ssh" "terraform" {
+ id = (known after apply)
+ name = "terraform-key"
+ public_key = "ssh-rsa AAAAB3NzaJUDjlM= root@CentOS.local"
}
Plan: 4 to add, 0 to change, 0 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
```
- Enter yes to create the infrastructure.
```
Enter a value: yes
serverspace_ssh.terraform: Creating
serverspace_isolated_network.my_net: Creating
serverspace_ssh.terraform: Creation complete after 1s [id=3181]
serverspace_isolated_network.my_net: Creation complete after 8s [id=l2n403]
serverspace_server.server2: Creating
serverspace_server.server1: Creating
serverspace_server.server1: Still creating [10s elapsed]
serverspace_server.server2: Still creating [10s elapsed]
serverspace_server.server1 (remote-exec): (Reading database
serverspace_server.server1 (remote-exec): (Reading database 5%
serverspace_server.server1 (remote-exec): (Reading database 10%
serverspace_server.server1: Creation complete after 1m3s [id=l2s190038]
Apply complete! Resources: 4 added, 0 changed, 0 destroyed.
```
- To view the current infrastructure, run the command:
```
terraform show
```
- This will display the current infrastructure configuration:
```
# serverspace_isolated_network.my_net:
resource "serverspace_isolated_network" "my_net" {
description = "Example for Terraform"
id = "l2n403"
location = "am2"
mask = 24
name = "my_net"
network_prefix = "192.168.0.0"
}
# serverspace_server.server1:
resource "serverspace_server" "server1" {
boot_volume_id = 58909
boot_volume_size = 40960
cpu = 2
id = "l2s190038"
image = "Ubuntu-20.04-X64"
location = "am2"
name = "server-1"
public_ip_addresses = [
"45.138.24.19",
]
ram = 2048
ssh_keys = [
3181,
]
nic {
bandwidth = 0
id = 59576
ip_address = "192.168.0.1"
network = "l2n403"
network_type = "Isolated"
}
nic {
bandwidth = 50
id = 59575
ip_address = "45.138.24.19"
network_type = "PublicShared"
}
volume {
id = 58910
name = "bar"
size = 20480
}
}
# serverspace_server.server2:
resource "serverspace_server" "server2" {
boot_volume_id = 58911
boot_volume_size = 40960
cpu = 4
id = "l2s190039"
image = "Ubuntu-20.04-X64"
location = "am2"
name = "server-2"
public_ip_addresses = [
"31.44.3.68",
]
ram = 8192
ssh_keys = []
nic {
bandwidth = 0
id = 59578
ip_address = "192.168.0.2"
network = "l2n403"
network_type = "Isolated"
}
nic {
bandwidth = 70
id = 59577
ip_address = "31.44.3.68"
network_type = "PublicShared"
}
}
# serverspace_ssh.terraform:
resource "serverspace_ssh" "terraform" {
id = "3181"
name = "terraform-key"
public_key = "ssh-rsa AAAAB3NzaJUDjlM= root@CentOS.local"
}
```
Congrats with your first infrastructure as a code implementation.
https://serverspace.us/about/news/serverspace-launches-its-own-terraform-provider.mdTerraform is a software tool for creating declarative code that allows users to manage their cloud infrastructure efficiently and securely.
Serverspace has added a new tool for automated cloud resources management — [Terraform](https://registry.terraform.io/providers/itglobalcom/serverspace/latest). Now there is no need for users to create their cloud infrastructure manually, they just need to describe its desired state, and the program will take care of the rest.
## What is Terraform?
Terraform is a software tool from HashiCorp that allows you to declaratively manage the cloud infrastructure using the "Infrastructure as code" approach. Management is carried out using special configuration files in which the user describes the desired state of the future infrastructure.
## How to use it?
- Install Terraform in your operating system;
- Create an API key for the project that will work with Terraform;
- Set a description of your future infrastructure;
- Enjoy the process.
Detailed information on how to set up and use Terraform is described in your profile settings in the control panel in the "[Automation](https://my.serverspace.us/account/api-key)" tab.
https://serverspace.us/about/news/refactoring-of-the-section-ssl-certificate-at-the-spa.mdServerspace has transferred the SSL section to SPA. Now the pages load faster, and they do not need to be completely reloaded again.
Serverspace has transformed the SSL section into a single-page application (SPA), so now it is a part of the ecosystem. Page loading has speeded up, thanks to this feature: full-page loading is no longer required.
The page describing the validation process has also been optimized in the SSL Certificate section. In addition, the control panel design has been upgraded for more comfortable work and style consistency.
https://serverspace.us/about/news/cloud-provider-serverspace-updated-the-api.mdServerspace keeps improving the infrastructure management experience. Users have new opportunities to work with the Serverspace API.
Serverspace keeps improving the infrastructure management experience. The [Serverspace API](https://serverspace.us/services/api.md) has gained more features. When creating a vStack server, you can connect it to isolated networks. They provide private access to their applications and ensure enhanced security.
Now the Serverspace API allows expanding the disk size and edit name. The user can also change the bandwidth of a public network, increase and decrease the width of the interface channel.
https://serverspace.us/about/news/partners-new-referral-calculator-in-serverspace.mdThe cloud provider Serverspace updated the “Partners” section in the control panel. Now the banner design corresponds to the general concept.
Serverspace updated the "Partners" section in the control panel. There have been three changes:
- updated the design of advertising banners
- increased the number of formats for banners
- launched referral calculator
Now the **banner design** corresponds to the general concept of Serverspace.
**Banner formats** are adapted to most advertising platforms. Now you can use banner sizes:
- 240×400
- 728×90
- 160×600
- 200×300
- 600×90
- 240×200
- 300×250
- 120×240
https://serverspace.us/about/news/control-panel-refactoring-of-the-cloud-provider-serverspace.mdThe cloud provider Serverspace refactored the control panel and transferred four new sections to the SPA (Single Page Application).
The cloud provider Serverspace refactored the control panel and transferred four new sections to the SPA: "SSL certificates", "Monitoring", "Billing" and "Technical support". The update made it possible to speed up page loading and prepare the control panel for a future large-scale UI update.
From a technical point of view, one of the main advantages is reducing the load on the server-side. This was made possible by redistributing the JSON processing function from the backend to the frontend. The last section remains in the queue for refactoring, the update of which let you get started a full-fledged redesign of the control panel.
https://serverspace.us/about/news/automated-network-connection-at-the-os-level-for-linux-and-freebsd-servers.mdvStack cloud templates were updated in cloud provider Serverspace, that made it possible to customize the guest OS.
vStack cloud templates were updated in Serverspace. This made it possible to customize the guest OS. First of all, the process of connecting additional networks was automated as customization.
When connecting additional networks through the [control panel](https://my.serverspace.us/) to servers running Linux and FreeBSD, it is no longer necessary to configure interfaces manually at the OS level. This saves users time and makes their work more comfortable.
As part of the vStack cloud service, servers can be combined into isolated networks of up to 1 Gbit/s within a single data center. In VMware cloud, in addition to isolated networks, you can create public or routed networks, as well as configure VPN, NAT and Firewall at the network level.
https://serverspace.us/about/news/serverspace-deployed-new-clusters-in-new-jersey-and-amsterdam.mdWe have launched two new clusters in New Jersey and Amsterdam. There are more resources, and server configurations are more powerful.
The company purchased new hardware, which was delivered to data centers in New Jersey and Amsterdam. Users now have the opportunity to create more powerful server configurations and use more resources. Now available for each virtual machine:
- up to 16 cores;
- up to 128 GB of RAM.
Important note: only empty projects will be connected to new clusters. If you want to create servers with large configurations, you need to first create a new project in the control panel or delete all existing services in the current one.
https://serverspace.us/support/help/multiple-network-interfaces-on-centos-8.mdLearn how to configure multiple network interfaces on CentOS 8 using source-based routing. Ensure correct inbound and outbound traffic for each public IP.
When a CentOS 8 system has two or more network interfaces with public IP addresses, standard routing configuration is often insufficient. By default, all outgoing traffic is sent through a single default gateway, regardless of which interface received the incoming request.
In this tutorial, we configure source-based (policy-based) routing on CentOS 8 to ensure that traffic originating from each public IP address is routed back through the correct network interface.
## Network interface parameters
[Cloud servers in Serverspace](https://serverspace.us/services/cloud-servers.md) have the function of automatically configuring network interfaces when they are added or a server is created. Therefore, if you use them, proceed to the next step. Otherwise, first you need to set the correct parameters of the network interfaces.
Open the network interface settings file. Their names can be viewed using the **ip a** command, or set new ones if they are not configured.
```
nano /etc/sysconfig/network-scripts/ifcfg-enp0s5
```
You can copy the configuration below and replace the following values with your own:
- interface name (enp0s5)
- gateway (GATEWAY)
- MAC address (HWADDR)
- IP address (IPADDR)
- subnet mask (NETMASK)
```
BOOTPROTO=none
DEFROUTE=yes
DEVICE=enp0s5
GATEWAY=54.43.32.1
HWADDR=56:67:78:89:01:ab
IPADDR=54.43.32.11
MTU=1500
NETMASK=255.255.255.0
ONBOOT=yes
STARTMODE=auto
TYPE=Ethernet
```
Configure all network interfaces in the same way. **GATEWAY** for the second, third, etc. interfaces are not specified, since this is the default gateway and there should only be one.
## Disable NetworkManager
We will configure policy-based routing using **network-scripts**, so we will disable **NetworkManager** and related services:
```bash
systemctl mask NetworkManager.service
systemctl stop NetworkManager.service
systemctl mask NetworkManager-wait-online.service
systemctl mask NetworkManager-dispatcher.service
```
Install the **network-scripts** package.
```bash
dnf install network-scripts
```
Let’s start the **network service**:
```bash
systemctl enable network
systemctl start network
```
## Source based routing setup
Source-based routing in Linux is implemented using multiple routing tables and rules managed by iproute2.
Let’s check if the **iproute** package is present. If not, install it.
```bash
dnf install iproute
```
Add new tables to configure routing policies.
```
nano /etc/iproute2/rt_tables
```
Add records to the end of the file:
```
400 400
401 401
```
Each row is a new table. Record format – **priority** space **table name**. These values must be unique relative to other entries in the file. The **priority** is numeric, and the **table name** can contain letters. Add as many new tables as there are interfaces you are setting up.
The following files will contain the routing settings. For each interface, you need to create a pair of files: **rule-eth-name**, **route-eth-name**, where **eth-name** should be replaced with the name of the interface. Example for **enp0s5** interface:
```
nano /etc/sysconfig/network-scripts/rule-enp0s5
```
Insert the following line into it with the current IP address instead of **54.43.32.11** and the name of the table created in the previous step instead of **400**:
```
from 54.43.32.11 lookup 400
```
Second file:
```
nano /etc/sysconfig/network-scripts/route-enp0s5
```
Replace **54.43.32.0/24** with the address of your subnet, **enp0s5** with the name of the interface, **400** with the name of the corresponding table, and **54.43.32.1** with the gateway for routing traffic and insert it into the open file:
```
54.43.32.0/24 dev enp0s5 table 400
default dev enp0s5 via 54.43.32.1 table 400
```
After creating such files for each network interface, restart the network service and our goal is achieved.
```bash
systemctl restart network
```
## Conclusion
Configuring source-based routing on CentOS 8 allows multi-homed servers to correctly handle inbound and outbound traffic across multiple network interfaces. By using separate routing tables for each public IP address, you avoid the limitations of default routing and ensure reliable external connectivity. This approach is essential for servers with multiple public interfaces in cloud and data center environments.
## FAQ
- **Q1: Why is configuring multiple network interfaces not enough to ensure availability from the Internet?**
A1: Because by default, all outgoing traffic uses a single default gateway regardless of the incoming interface. Without source-based routing, replies might leave through the wrong interface, causing connectivity issues.
- **Q2: Can I set multiple default gateways for each network interface?**
A2: No, the system allows only one default gateway. Source-based routing solves this by creating separate routing tables per interface.
- **Q3: What is source-based routing and why is it important?**
A3: Source-based routing directs outgoing packets based on their source IP address or interface. It ensures that replies to incoming traffic go out through the same interface they arrived on, which is critical for multi-homed servers with several public IPs.
- **Q4: Do I need to disable NetworkManager to configure source-based routing on CentOS 8?**
A4: Yes, this tutorial uses network-scripts for configuration, so disabling NetworkManager is necessary to avoid conflicts.
- **Q5: Will this setup work for servers with more than two network interfaces?**
A5: Absolutely. You just need to create corresponding routing tables and configuration files for each interface.
https://serverspace.us/support/help/install-and-configure-nginx-on-centos-7.mdIn this tutorial, we will walk you through the installation and basic configuration of Nginx web server on CentOS 7.
Nginx is a very popular web server due to its performance and ease of use. In this tutorial, we will walk you through the installation and basic configuration of Nginx on CentOS 7.
** In the Serverspace you can [create a server](https://serverspace.us/services/cloud-servers.md) with already installed app “Nginx”.**
## Installing Nginx
If you use a non-root user, then you must have sudo rights and to add to all the commands sudo in front of them.
To install Nginx, add the EPEL repository.
```bash
yum install epel-release -y
```
Now we will install Nginx, as well as the nano text editor for convenience.
```bash
yum install nginx nano -y
```
By default, Nginx is configured to work with both IPv4 and IPv6 addresses. If the last one is not configured on the server, as in my case, then the web server simply will not start. Therefore, we immediately go to the config:
```
nano /etc/nginx/nginx.conf
```
Find the next line and comment on it, that is, put a # sign at its beginning:
```
listen [::]:80 default_server;
```
Result:
```
# listen [::]:80 default_server;
```
Let’s save the file and check the config for errors:
```
nginx -t
```
Output:
```
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
```
If your output looks different, then it says what errors need to be corrected in the config.
Now let’s start Nginx and add it to autorun.
```bash
systemctl enable –now nginx
```
If you are using Firewall, you need to add an allowing rule for the web server. Below is an example for Firewalld, enter the commands in sequence:
```
firewall-cmd –zone=public –permanent –add-service=http
firewall-cmd –zone=public –permanent –add-service=https
firewall-cmd –reload
```
## Configuring the location of site files
By default, nginx displays an information page on the site. Let’s set up a different location for the site files and add our own page. First, let’s create the required directories.
```
mkdir -p /var/www/default
```
Now let’s create the page itself in a new folder:
```
nano /var/www/default/index.html
```
And add content to it, which can be anything. For example:
```
# My first web page
```
Let’s set the owner of the directory and the file in it to the nginx user:
```bash
chown -R nginx:nginx /var/www/default/
```
We will use the virtual host already in the nginx configuration and replace the configuration for the location of the site files. To do this, open the nginx configuration:
```
nano /etc/nginx/nginx.conf
```
You need to find the **server** section, which starts with **listen 80 default_server;**, and in it the **root** parameter, which sets the path to the site files. Let’s replace it with the path **/var/www/default/** we just created:
```
server {
listen 80 default_server;
# listen [::]:80 default_server;
server_name _;
root /var/www/default/;
...
```
Save the file and restart nginx.
```bash
systemctl restart nginx
```
Now, when accessing the server address from the browser window, you will see the contents of the newly created page.
## PHP processing setup
To work with PHP, install php-fpm:
```bash
yum install php-fpm
```
Now let’s run it and add it to startup:
```bash
systemctl enable –now php-fpm
```
Add to the nginx configuration at the end of the same **server** section as before, settings for working with php-fpm:
```
nano /etc/nginx/nginx.conf
```
```css
location ~ .php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 16k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
include fastcgi_params;
}
```
Restart nginx:
```bash
systemctl restart nginx
```
Let’s create a file for testing php-fpm functionality:
```
echo "" > /var/www/default/info.php
```
Let’s open http://server-IP/info.php in the address bar of the browser and see information about PHP:
Screenshot 1. Checking PHP operation.
This output confirms that nginx + php-fpm is working. After testing the server operation, be sure to delete this page, because it poses a threat to server security.
https://serverspace.us/support/help/connecting-the-pfsense-2-4-server-to-the-network.mdThis is a guide on how to connect a PFSense 2.4 server to the network on using the command line and the web interface.
This is a guide on how to connect a PFSense 2.4 server to the network on Serverspace using the command line and the web interface.
Let’s install the **PFSense** virtual server on an isolated network. First, you must connect the server to the isolated network in the **Control Panel**. Click on **Networks** in the vertical menu on the right, select the desired network (or create a new one) and connect the server. The server must be switched off while connecting.
Connecting server to network
## Connecting PFSense via Command Line
Turn on the server and open a terminal as root by clicking on "Web Console" and typing in login and password.
## Setup When You Have DHCP Disabled.
In the pfSense user menu, enter an option 1 (Assign Interfaces).
```
Enter an option: 1.
```
Enter "**y**" to confirm the network configuration.
```
Valid interfaces are:
vtnet0 ca:04:d7:1a:3c:a1 (up) VMware VMXNET3 Ethernet Adapter
vtnet1 ca:04:8e:66:d4:47 (down) VMware VMXNET3 Ethernet Adapter
Do VLANs need to be set up first?
If VLANs will not be used, or only for optional interfaces, it is typical to say no here and use the webConfigurator to configure VLANs later, if required.
Should VLANs be set up now [y|n]? y
```
In some cases it is possible to optionally set the parent interface name for the VLAN. If you do not know what value to specify, press **Enter**.
```
VLAN Capable interfaces:
vtnet0 ca:04:d7:1a:3c:a1 (up)
vtnet1 ca:04:8e:66:d4:47
Enter the parent interface name for the new VLAN (or nothing if finished):
```
Enter the name of the external interface. This interface is already configured.
```
If the names of the interfaces are not known, auto-detection can be used instead. To use auto-detection, please disconnect all interfaces before pressing 'a'; to begin the process.
Enter the WAN interface name or 'a' for auto-detection (vtnet0 vtnet1 or a): vtnet0
```
Enter the name of the local interface. It will be configured afterwards.
```
Enter the LAN interface name or 'a' for auto-detection
NOTE: this enables full Firewalling/NAT mode.
(vtnet1 a or nothing if finished): vtnet1
```
Press "**y**" to confirm the interfaces assignment.
```
The interfaces will be assigned as follows:
WAN -> vtnet0
LAN -> vtnet1
Do you want to proceed [y|n]? y
```
The following entry will be displayed on the command line after successful saving of the settings.
```
Writing configurationdone.
One moment while the settings are reloading done!
VMware Virtual Machine – Netgate Device ID: XXXXXXXXXXXXXXXXXXXXXX
*** Welcome to pfSense 2.4.2-RELEASE-p1 (amd64) on pfsense24 ***
WAN (wan) -> vtnet0 ->; v4: XXX.XXX.XXX.XXX/24
LAN (lan) -> vtnet1->
```
To set the IP address of the LAN interface, enter an option 2 (Set interface(s) IP address).
```
Enter an option: 2
```
Enter the number that corresponds to the type of the interface you want to configure.
```
Available interfaces:
1 – WAN (vtnet0 – static)
2 – LAN (vtnet1)
Enter the number of the interface you wish to configure: 2
```
Enter the local IP address on the network specified in the control panel, in our case it will be 10.0.0.3.
```
Enter the new LAN IPv4 address. Press ; for none:
> 10.0.0.3
```
Specify the subnet mask.
**Note:** The subnet mask specifies a fixed part of the address and impacts the network capacity (number of available addresses). It is specified as the number of bits that do not change from address to address. For example, 24 is equivalent to writing “255.255.255.0” and represents 256 available (254 working) addresses.
```
Subnet masks are entered as bit counts (as in CIDR notation) in pfSense.
255.255.255.0 = 24
255.255.0.0 = 16
255.0.0.0 = 8
Enter the new LAN IPv4 subnet bit count (1 to 31):
> 24
```
In the next two steps, press Enter.
```
For a WAN, enter the new LAN IPv4 upstream gateway address.
For a LAN, press for none:
>
Enter the new LAN IPv6 address. Press for none:
>
```
Press "**n**" when asked if you want to enable the DHCP server on the LAN.
```
Do you want to enable the DHCP server on LAN? (y/n) n
```
Press Enter to finish.
```
The IPv4 LAN address has been set to 10.0.0.3/24
You can now access the webConfigurator by opening the following URL in your web browser:
http://10.0.0.3/
Press to continue.
```
After a successful IP address assignment, the following entry will be displayed.
```
WAN (wan) -> vtnet0 -> v4: XXX.XXX.XXX.XXX/24
LAN (lan) -> vtnet1 -> v4: 10.0.0.3/24
```
## Setup When You Have DHCP Enabled:
To obtain an IP address dynamically, option 8 (Shell) must be selected.
```
Enter an option: 8
```
Execute **dhclient **command with local interface name.
```
dhclient vmx1
```
Use the **ifconfig** utility to see the IP address and settings that were obtained.
## Connecting via the Web Interface
Go to the control panel of the pfSense interface and enter the login and password indicated under the web address.
To add a LAN interface, select **Interfaces **in the horizontal menu and then click on **Assignments**.
Assignments menu in Pfsense
In the appeared window, select the required interface, click **Add**, and save the selected parameter by clicking on **Save**.
To configure the interfaces, select **Interfaces**, then LAN.
Select **Enable interface** in the appeared window.
Enable interface in pfsense
## Setup When DHCP is disabled.
In the **IPv4 Configuration Type** field, select **Static IPv4**.
In the **IPv4 Address** field, specify the local network address and mask. Save your changes by clicking **Save** at the bottom of the window.
**Note:** the subnet mask defines a fixed part of the address and impacts the network capacity (the number of available addresses). It is specified as the number of bits that do not change from address to address. For example, 24 is equivalent to writing “255.255.255.0” and represents 256 available (254 working) addresses.
Apply the saved changes by clicking **Apply Changes**.
## Setup When DHCP is enabled.
In the **IPv4 Configuration Type** field, select **DHCP**. Save the changes by clicking **Save**, then **Apply Changes**.
The assigned IP address is displayed at the bottom of the main page to the right of the system information.
https://serverspace.us/support/help/permissions-delegation-in-active-directory.mdIn this guide you will know how to delegate permissions in Active Directory such as unique rights for creating users and groups.
In large organizations, there are several teams of IT administrators and help desk specialists, in this case delegation is needed. For example, help desk specialists or team leaders may reset passwords, system administrators may change group memberships, and only IT architects admins may manage OUs. This separation of duties is really helpful for operations and security.
To perform delegation of control you need Domain Admins permissions or have full control on the OUs you want to delegate control over. You can do that several ways: via ADUC, command prompt and others.
## Delegation via ADUC
In order to delegate control via **Active Directory Users and Computers (dsa.msc)**. Follow these:
Run dsa.msc. Rightclick the needed OU, and select Delegate control
The **Delegation of Control Wizard** appears where you need to click "**Next**". Then click "**Add**" choose to whom you want to delegate control and click **Next**
On the Tasks to Delegate window, select the tasks you want to delegate, you can also Create a custom task from scratch.
Click **Next** and **Finish.**
Delegation permissions can be viewed in OU's properties on the **Security **tab.
## Delegation via the command line
For permissions delegation Microsoft developed **dsacls.exe**. It is good for scripted deployments. It is also good for displaying current permissions. You can use /a parameter to display all permissions for the OU, for example:
```
dsacls.exe "OU=Employees,DC=office,dc=local" /a
```
**_ _**
Here we can see KJenkins permissions which we've delegated in our previous example.
In order to add new delegated privileges for an account we need to assign to it permissions according to certain syntax. Syntax consists of basic permissions and Advanced, here is the list of basic permissions:
- **GR –** Generic read
- **GE** – Generic execute
- **GW** – Generic write
- **GA** – Generic full control
The most popular advanced permissions:
- **SD** – Delete
- **DT** – Delete an object and all child objects
- **RC** – Read security information
- **WD** – Change security information
- **WO** – Change owner information
- **CC** – Create child object
- **DC** – Delete child object
- **RP** – Read property
- **WP** – Write property
Lets delegate to our user KJenkins** Delete** permissions to Employees OU:
```
dsacls.exe "OU=Employees,DC=office,DC=local" /G OFFICEKJenkins:SD;
```
** **
## Delegation via the built-in groups
By default, there are built-in groups, such as Account Operators and Server Operators which has administrative tasks in Active Directory.
You can place any user to these groups and get additional permissions in domain without the need to grant full control access. But be warned that built-in Account Operators group provides more permissions than are actually required. They can create, modify, and delete all objects, except members of the Domain Admins group, in all OUs except the Domain Controllers OU.
## Best Practices for OU Rights Delegation
- Build a delegation control matrix to document all access rights to your AD
- Always use groups when delegating permissions, don't use individual user accounts. It will be easier and more secure for you to grant delegation access
- Avoid deny permissions because they take precedence over allowed ones and this can make your access lists too complex to manage.
- Try to test the delegation settings for any unwanted effects.
https://serverspace.us/support/help/how-to-enable-active-directory-recycle-bin.mdActive Directory Recycle Bin enables a feature for administrators to restore deleted objects. This guide will help you to do that.
Active Directory Recycle Bin enables a feature for administrators to restore deleted objects.
How to enable Active Directory Recycle Bin:
- [Find Domain Naming Master Server](#stepone)
- [Enable Recycle Bin in AD Administrative Center](#steptwo)
- [Enable Recycle Bin in PowerShell concole](#stepthree)
## Finding Domain Naming Master Server
We recommend enabling Recycle Bin feature on your DC with **Domain Naming Master** role. In order to get what domain controller holds this role, you need to use netdom.exe application with following parameters (run it in cmd):
```
netdom.exe query fsmo
```
**_ _**
Alternatively, this can be achieved in PowerShell console under elevated privileges:
```
Import-Module ActiveDirectory
Get-ADForest | Format-List DomainNamingMaster
```
**_
_**
## How to Enable Recycle Bin in AD Administrative Center.
To do this, you need a domain admin user account. Start AD Administrative Center(**start->run->dsac.exe**).
Click on your domain name and in the “**Tasks**” pane click “**Enable Recycle Bin**“.
Alternatively, right-click your domain in overview, and click "**Enable Recycle Bin**".
The confirmation window appears, which tells us that Recycle Bin can only be enabled once without a disabling option. Click **OK**.
After enabling the bin we need to refresh ADAC window click OK in appeared warning and refresh ADAC by clicking on refresh button in top right corner of the window:
You will see that new container named "**Deleted Objects**" appears near "**Computers**" container.
## How to Enable Recycle Bin in PowerShell Console.
Recycle Bin can also be enabled with PowerShell console. You need to run **PowerShell.exe** under elevated permissions and type in the following code:
```
Import-Module ActiveDirectory
Enable-ADOptionalFeature -Identity "CN=Recycle Bin Feature,CN=Optional Features,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=office,DC=local" -Scope ForestOrConfigurationSet –Target "office.local"
```
Replace _office, local, office.local _with your own domain parameters. System will ask for confirmation, type in "**y**" to continue and "**Deleted Objects**" container appears.
So now after an AD object is deleted it’s "**isDeleted**" attribute is set to "**true**", however it’s "**isRecycled**" attribute is untouched. With these parameters deleted object moves to "**Deleted Objects**" from where you can easily restore it by right-clicking it and selecting restore.
In 60 days the recycle lifetime expires, and "**isRecycled**" parameter changes to “**true**“, in this case an object is deleted permanently.
https://serverspace.us/support/help/how-to-manage-active-directory-computers-part-1-creating-and-deleting-computer-accounts.mdThis guide will show you how to create and delete computer accounts in Microsoft Active Directory with multiple ways.
Computer accounts or objects represent devices connected to the AD. They are stored in AD database after connecting to the domain. This is needed to apply different GPOs to them and keep track of their updates if you have WSUS installed. And what is more important establish secure authentication for users logging into Windows.
In order to manage computers, you need domain admin, account operators or delegated rights and do it from workstation with RSAT tools installed or domain controller.
## How to Create a Computer Account in AD
Let's create a computer account using multiple methods. This account can be used to attach a device to it.
### Creating Computer Account with ADUC
Run **ADUC (****dsa.msc****).**
Go to the OU where you want to store such objects, rightclick on this **OU -> New-> Computer:**
Or you can do it by clicking on **Action -> New -> Computer.**
In the **New Object – Computer**, enter the **Computer name** and **pre-Windows 2000** one according to your naming policy. Choose which group can enter this machine to the domain and click **OK.**
**
**
### Creating Computer Account with ADAC
Run ADAC(dsac.exe), rightclick the domain name, select **New->Computer. **The **Create Computer **screen appears where you need to type in **Computer name, Computer NetBIOS** **name**, according to your naming policy. Specify OU where you want to store the computer item by clicking on **Change** You can also specify which group can enter this computer to a domain and protect it from deletion. Click **OK **in the end.
### Creating Computer Account with Cmd.exe
For this task we need to use dsadd.exe. Use the following command to create a computer object in Active Directory:
** **
```
dsadd.exe computer "CN=WKS033,CN=Computers,DC=office,DC=local"
```
### Creating Computer Account with PowerShell
Use the following lines of PowerShell code to create a computer account named "WKS033" in office.local domain.
```
Import-Module ActiveDirectory
New-ADComputer -Name "WKS033″ -sAMAccountName " WKS033″ -Path "CN=Computers,DC=office,DC=local"
```
## How to Delete a Computer Account in AD
It is important to delete old computers from your domain to avoid mess in WSUS reports and GPOs application. There are several ways to achieve that.
### Deleting Computer Account from AD with ADUC
Run **ADUC (****dsa.msc****)**.
Go to OU that contains needed computers, from the **Action **menu, select **Find**. Type in computername in the **Name** field and click **Find Now** Delete the computer in search results by rightclicking on computer and selecting **Delete** option.
Click **Yes** in confirmation window. If you receive the following error afterwards:
Rightclick the computer again, and go to **Properties -> Object** uncheck the "**Protect object from accidental deletion**" and perform deletion operation again.
### Deleting Computer Account from AD with ADAC
Run **ADAC (****dsac.exe****).** Switch the left pane to tree view and find the needed OU, type the name of the computer in the **Filter** pane and press Enter. Select the computer for deletion in the search results, rightclick it and select Delete. Click **Yes** to confirm.
If you receive the error message:
Rightclick the computer object **-> Properties** and uncheck the "**Protect from accidental deletion**" option.
After that redo the deletion process.
### Deleting Computer Account from AD with cmd.exe
** **For this task we need to use **dsrm.exe**. Use it with following parameters to delete a computer account, in our case it is WKS033.
** **
```
dsrm.exe "CN=WKS033,CN=Computers,DC=office,DC=local"
```
### Deleting Computer Account from AD with Windows PowerShell
This task is also can be easily done with Powershell, here is the code for deleting a computer account. In our example computer name is WKS033
```
Import-Module ActiveDirectory
Remove-ADComputer -Identity "CN=WKS033,CN=Computers,DC=office,DC=local"
```
https://serverspace.us/support/help/how-to-manage-ous-in-active-directory.mdLearn how to manage Organizational Units (OUs) in Active Directory. This step-by-step guide covers creating, modifying, and deleting OUs to keep your AD structure organized and efficient.
An organizational unit (OU) is a sub container or subfolder in an AD where user accounts, computers, groups, etc reside. OUs can only be managed by domain admins and by users with delegated permissions to a specific OU. OUs can be nested and you can link GPO’s to them.
## Creating an Organizational Unit
OUs are created via Active Directory Administrative Center (ADAC), Active Directory Users and Computers (ADUC), command prompt and PowerShell.
### Creating OU with ADAC
Lets create an OU via ADAC:
Run the **dsac.exe**. Switch to tree view and expand your domain or OU where you want to place your new one. Right-click an OU or Domain, select **New**, and after that select Organizational Unit.
The **Create Organizational Unit** window appears:
Enter a unique name for the OU and click OK.
### Creating OU with the Command Line
To create an OU via **cmd**, run **dsadd.exe** with the following parameters:
```
dsadd.exe ou "OU=testorg,DC=office,DC=local" -desc "TestOU"
```
This will create a TestOU in the domain with description "TestOU".
### Creating OU with PowerShell
**New-ADOrganizationalUnit** cmdlet can help us to accomplish the creation task. Run PowerShell as **Administrator** and type the following:
```
Import-Module ActiveDirectory
New-ADOrganizationalUnit "TestOU" -Description "TestOU"
```
This will create a TestOU in the domain with description "TestOU".
## Deleting an Organizational Unit
OUs cannot be deleted easily; they are protected from accidental deletion by default. In order to delete an **Organizational Unit**, we need to uncheck the **Protected from Accidental Deletion** checkbox from the OU’s properties.
### Deleting OU with ADAC
Open the **Active Directory Administrative Center** (dsac.exe).
Switch to tree view, expand your domain and find the OU you want to delete. Rightclick the OU and then **Delete**.
The **Delete Confirmation** window appears:
Click Yes to confirm. If the OU contains child objects, click Yes again.
### Deleting OU with Using the Command Line
To delete an OU using a command prompt we need to use **dsrm.exe** tool in **cmd** run as an administrator with the following syntax:
```
dsrm.exe "OU=TestOU,DC=office,DC=local" -subtree
```
This will completely remove an OU with any existing sub-OUs.
### Deleting OU with Windows PowerShell
In order to delete an OU we need to use the New-ADOrganizationalUnit PowerShell cmdlet:
```
Import-Module ActiveDirectory
Remove-ADObject -Identity "OU=TestOU,DC=office,DC=local" -Recursive -Confirm:$False
```
This will completely remove the TestOU OU with any existing sub-OUs.
## Modifying an Organizational Unit
Sometimes you need to modify and OU so here is explanation to do those three different ways.
### Modifying an OU with the Active Directory Administrative Center
Open the **Active Directory Administrative Center (dsac.exe)**. Switch to tree view and find the OU that you need to modify.
Rightclick it and select "**Properties:**" in the appeared window you can change OU settings such as description or manager.
Uncheck the **Protected from Accidental Deletion** setting and click **OK**.
## Modifying OU with the Command Line
In order to modify an OU, you need to use **dsmod.exe** in cmd as administrator. But in this case, you can modify only description.
```
dsmod.exe ou "OU=TestOU,DC=office,DC=local" -desc "New description"
```
Here we assign "New description" to the TestOU.
### Modifying OU with the Windows PowerShell
The **Set-ADOrganizationalUnit** PowerShell cmdlet is what we will use to change the OU. It is very powerful unlike **dsmod.exe**. You can easily change lots of OU's parameters such as **DistinguishedName**, **LinkedGroupPolicyObjects** or** ManagedBy**. Here is the example of how to change **ManagedBy** parameter in an OU:
```
Import-Module ActiveDirectory
Set-ADOrganizationalUnit -Identity "OU=TestOU,DC=office,DC=local" -ManagedBy "CN=User,CN=Users,DC=office,DC=local"
```
## Conclusion
Managing Organizational Units (OUs) is a fundamental part of maintaining a well-structured and secure Active Directory environment. Whether you’re creating, deleting, or modifying OUs, using the right tools—such as ADAC, ADUC, the command line, or PowerShell—helps ensure consistency and control. With proper delegation and structure, OUs simplify administrative tasks, support GPO application, and improve overall domain management efficiency.
## FAQ
- **What is the purpose of an Organizational Unit in Active Directory?**
An Organizational Unit (OU) is a container used to organize and manage AD objects like users, computers, and groups. It also allows administrators to apply Group Policies and delegate permissions.
- **Can I create nested OUs in Active Directory?**
Yes. OUs can be nested within other OUs to create a hierarchical structure that reflects your organization’s departments or roles.
- **Who can manage Organizational Units?**
Only Domain Admins or users with delegated permissions can manage OUs—this includes creating, modifying, and deleting them.
- **Why can't I delete an OU in Active Directory?**
By default, OUs are protected from accidental deletion. You must first uncheck the "Protect object from accidental deletion" property before removing it.
- **How do I apply a Group Policy to an OU?**
Group Policies can be linked to an OU through the Group Policy Management Console (GPMC), allowing you to enforce specific configurations and security settings on the objects within that OU.
https://serverspace.us/support/help/how-to-manage-user-accounts-in-active-directory-part-1-creating-and-deleting-user-accounts.mdFrom this guide you will learn how to create and delete user accounts in Microsoft Active Directory domain.
Users are one of the most popular objects in AD. They are used for authentication and authorization on workstations. Also in many services which are integrated with AD. User management is the main routine for sysadmins and helpdesk specialists. This guide helps to manage such objects in multiple ways. For managing users there is a need to install **RSAT tools** or manage them from your DC. You have to be signed under **domain admin** or an **Account Operators** user or with delegation rights to create objects in the current OU.
## Creating a User Account
There are many ways to create a user account in AD, lets consider several of them.
### Creating User Account Using Active Directory Users and Computers(ADUC)
Run **ADUC (dsa.msc)**.
Go to OU where new users should be located. In the taskbar, click the “**New User**” icon, or right-click on a white space in the main window and then click on “**New -> User**“. Another way is rightclicking the needed Org Unit and select “**New -> User**“.
“**New Object — User**” appears, specify parameters for your user:
- Full name, by either typing the full name into Full Name field or typing it in the First and Last name fields.
- User logon name, this field creates the **userPrincipalName** and the **sAMAccountName** attributes.
Click **Next** and specify strong password and then retype it in the next field and check the needed parameters, usually for regular user you should check "**User must change password at next logon**".
Click **Next and Finish**. Congratulations new user was successfully created!
### Creating User Account Using Command Prompt
To make the same thing in **cmd** we need to use **dsadd.exe** utility. The following parameters will help to create a user in "Users" container in AD and set default password for it:
```
dsadd.exe user "CN=GSoul,CN=Users,DC=office,DC=local" -upn GSoul@office.local -fn "Gordon" -ln "Soul" -display "Gordon Soul" -pwd "P@&&W0rd"
```
### Creating User Account Using Windows PowerShell
Run the following PowerShell code under Administrator privileges:
```
Import-Module ActiveDirectory
New-ADUser -Name FRobinson -Path "CN=Users,DC=office,DC=local" -GivenName "Frank" -Surname "Robinson" -sAMAccountName FRobinson
```
## How to Delete a User Account
Lets delete a user from AD environment, follow these easy methods. Note that this action will not completely delete a user account with enabled **AD Recycle Bin**, it will change its token attributes and move it to deleted objects.
### Deleting User Account in Active Directory Users and Computers(ADUC)
Lets delete one user, to achieve that open **Active Directory Users and Computers** (**dsa.msc**).
Go to the OU or container where the user that you need to delete resides. Click on the **Action menu** or rightclick the OU and select **Find**.
Type in the name or last name of the user you want to delete into the name field and click "**Find Now**". The results will be displayed to you, select the object you need to delete, rightclick it and then click on **Delete** and confirm your decision.
### Deleting User Account Using Command Prompt
The following cmd string will delete a user "GSoul" from office.local domain:
```
dsrm.exe user "CN=GSoul,CN=Users,DC=office,DC=local"
```
### Deleting User Account Using PowerShell
Execute the following PowerShell code to delete a user GSoul from AD:
```
Import-Module ActiveDirectory
Remove-ADUser -Identity "CN=GSoul,CN=Users,DC=office,DC=local
```
”
https://serverspace.us/support/help/how-to-manage-user-accounts-in-active-directory-part-2-moving-and-renaming-user-accounts.mdFrom this tutorial you will learn how to move and rename user accounts in Microsoft Active Directory domain.
Users are one of the most popular objects in AD. They are used for authentication and authorization on workstations. Also, in many services which are integrated with AD. User management is the main routine for sysadmins and helpdesk specialists. This guide helps to manage such objects in multiple ways. For managing users there is a need to install **RSAT tools **or manage them from your DC. You have to be signed under domain admin or an Account Operators user or with delegation rights to create objects in the current OU.
## Moving a User Account via Active Directory Users and Computers(ADUC)
In **ADUC (dsa.msc)** go to the OU or container with needed user account. Rightclick it and select **Find**. In the **Name** field, type the name of the user account and then click **Find Now** From the list of Search results, select the needed user object.
Right-click on the user account. Select **Move** from the menu.
The Move window appears:
In the Move window, navigate to the OU or container where you want to move the user object to, select it and click OK.
### Moving a User Account via Command Prompt
In order to move user object(GSoul in our case) to "**Employees**" OU run dsmove.exe in cmd with the following parameters:
```
dsmove.exe "CN=GSoul,CN=Users,DC=office,DC=local" -newparent "OU=Employees,DC=office,DC=local"
```
### Moving a User Account via Windows PowerShell
Use the following Powershell code to move a user account (GSoul in our example) to "Employees" OU.
```
Import-Module ActiveDirectory
Move-ADObject -Identity:"CN=GSoul,CN=Users,DC=office,DC=local" -TargetPath:"OU=Employees,DC=office,DC=local"
```
## How to Rename a User Account in Active Directory
In order to rename a user account, follow these several instructions.
### Renaming a User Account via Active Directory Users and Computers
In Active Directory Users and Computers (dsa.msc) in the **View **menu, enable **Advanced Features**.
Navigate to OU or container where needed user object resides. Right-click it and select **Find**. In the **Name** field, type the name of the user and press "**Find Now**". From the search results right-click the needed user account and select **Rename**. Type the new name and press **Enter**.
In the Rename User window, enter new data for other attributes and click OK.
### Renaming a User Account via Command Prompt
Use **dsmove.exe** with the following parameters in order to rename a user:
```
dsmove.exe "CN=GSoul,CN=Users,DC=office,DC=local" -NewName "Gordon Gates"
```
### Renaming a User Account via PowerShell
In order to rename a user in AD enter this code into Windows PowerShell:
```
Import-Module ActiveDirectory
Rename-ADObject -Identity "CN=GSoul,CN=Users,DC=office,DC=local" -NewName "Gordon Gates"
```
https://serverspace.us/support/help/how-to-manage-user-accounts-in-active-directory-part-3-enabling-disabling-and-setting-expiration-period-for-accounts.mdFrom this guide you will learn how to enable, disable and set expiration period for a user account in Active Directory domain.
Users are one of the most popular objects in AD. They are used for authentication and authorization onworkstations. Also, in many services which are integrated with AD. User management is the main routine for sysadmins and helpdesk specialists. This guide helps to manage such objects in multiple ways. For managing users there is a need to install RSAT tools or manage them from your DC. You have to be signed under domain admin or an Account Operators user or with delegation rights to create objects in the current OU.
## How to Enable and Disable a User Account in Active Directory
If you want to stop a user logging into their workstation you can disable it, but you need it again for some reason, for example, an employee returned from maternity leave, you can enable it again. Here is the guide to do that in multiple ways.
### Enabling and Disabling a User Account Using Active Directory Users and Computers
To enable/disable a user in ADUC, follow these steps:
In **ADUC (dsa.msc**). Determine the OU or container storing needed accounts. Rightclick it and select **Find**. In the **Name** field, type the name of the user account and then click **Find Now** From the list of **Search** results, select the needed user object, right-click it and select **Enable account** or **Disable account** depending on what you need right now and click **OK**.
### Enabling/Disabling a User Account Using cmd.exe
These tasks are for **dsmod.exe**, use it with the following settings to enable an account.
```
dsmod.exe "CN=GSoul,CN=Users,DC=office,DC=local" -disabled no
```
And this will disable it:
```
dsmod.exe user "CN=GSoul,CN=Users,DC=office,DC=local" -disabled yes
```
### Enabling and Disabling a User Account Using Windows PowerShell
Here is the PowerShell code to enable a user account:
```
Import-Module ActiveDirectory
Enable-ADAccount -Identity "CN=GRobinson,CN=Users,DC=office,DC=local"
```
And this one is for disabling a user account:
```
Import-Module ActiveDirectory
Disable-ADAccount -Identity "CN=GRobinson,CN=Users,DC=office,DC=local"
```
## How to Set Account Expiration Period to a User Account
User accounts can be set to automatically expire after certain period of time.
### Setting Account Expiration Period in ADUC
To set account expiration in ADUC, follow these simple steps:
In ADUC (**dsa.msc**) go to the OU or container with needed user account. Rightclick it and select **Find**. In the **Name** field, type the name of the user account and then click **Find Now** From the list of **Search** results, select the needed user object. Right-click it and select **Properties**. Select the **Account tab**, at the bottom of this tab, change the **Never** option for "**Account expires:**" to **End of:**, and select needed date. Click **OK** to save the changes.
### Setting Account Expiration Period Using cmd.exe
Use the **dsmod.exe** to set the quantity of days before an account expires:
```
dsmod.exe user "CN=GSoul,CN=Users,DC=office,DC=local" -acctexpires 90
```
### Setting Account Expiration Period Using Windows PowerShell
To set user expiration period in Employees OU execute the following PowerShell script:
```
Import-Module ActiveDirectory
Set-ADAccountExpiration -Identity "CN=GSoul,OU=Employees,DC=office,DC=local" -DateTime "11/11/2021 12:00:00″
```
https://serverspace.us/support/help/how-to-manage-user-accounts-in-active-directory-part-4-finding-locked-out-accounts-and-unlocking-them.mdLearn how to find and unlock locked-out user accounts in an Active Directory domain. This step-by-step guide helps you troubleshoot account lockouts and restore user access quickly.
Users are one of the most popular objects in AD. They are used forauthentication and authorization on workstations. Also in many services which are integrated with AD. User management is the main routine for sysadmins and helpdesk specialists. This guide helps to manage such objects in multiple ways. For managing users there is a need to install RSAT tools or manage them from your DC. You have to be signed under domain admin or an Account Operators user or with delegation rights to create objects in the current OU.
## How to Find Locked-out User Accounts
User accounts may get locked-out for some reason and you need to troubleshoot the cause of account lockout, but first of all you need to get the list of them. There are several ways to get this list.
### Finding Locked User Accounts with the Active Directory Administrative Center
Run Active Directory Administrative Center (**dsac.exe**). Select the OU or container where you want to search for locked out users. Expand the top bar by clicking on an arrow button in the right top corner.
Click on **Add criteria** and select the "**Users with enabled but locked accounts**" criteria. Click Add and the locked-out accounts will be displayed.
### Finding Locked User Accounts with Windows PowerShell
In order to find locked out accounts in AD, user the following PowerShell script:
```
Import-Module ActiveDirectory
Search-ADAccount -LockedOut -UsersOnly | Format-Table Name,LockedOut -AutoSize
```
## How to Unlock a User Account
Account lockout in one of the most often cases for sysadmins in organization. Sometimes it is even hard to get its cause so it requires deep investigation. But it is not the point to disable an account lockout policy because it helps to protect your user accounts from brute force attacks. In this guide we will focus on easy techniques to unlock users.
### Unlocking User Accounts via Active Directory Administrative Center
To unlock a user object, open the Active Directory Administrative Center (**dsac.exe**), navigate to the OU or container where users exist in. Right-click the object you want to unlock and select **Properties**.
In the User window click the **Unlock account** and then **OK**.
To unlock all locked-out accounts in a certain OU or container select the OU or container where you want to search for locked out users. Expand the top bar by clicking on an arrow button in the right top corner. Click on **Add criteria** and select the "**Users with enabled but locked accounts criteria**." Click **Add** and the locked-out accounts will be displayed. Select all accounts, go to **Properties** and click on **Unlock account**.
### Unlocking User Accounts via Windows PowerShell
To unlock a user account, you need to run the following PowerShell code:
```
Import-Module ActiveDirectory
Unlock-ADAccount -Identity "CN=User,CN=Users,DC=office,DC=local"
```
And in order to unlock all locked accounts use Search-ADAccount cmdlet:
```
Import-Module ActiveDirectory
Search-ADAccount -LockedOut -UsersOnly | Unlock-ADAccount
```
## Conclusion
Managing locked-out user accounts is a routine yet critical task for any system administrator working with Active Directory. Lockouts can result from various issues, including password mismatches, cached credentials, or brute-force attempts. Instead of disabling account lockout policies—which are essential for security—admins can use built-in tools like the Active Directory Administrative Center or PowerShell to identify and unlock affected accounts efficiently. By mastering these techniques, you can restore access quickly and minimize user downtime, all while maintaining your domain’s security posture.
## FAQ
- **Q1: Why do user accounts get locked out in Active Directory?**
A1: Accounts usually get locked out due to multiple failed login attempts caused by incorrect passwords, cached credentials on other devices, or scheduled tasks running under outdated credentials.
- **Q2: Can I disable the account lockout policy to prevent user frustration?**
A2: Disabling the lockout policy is not recommended as it exposes your network to brute-force attacks. It’s better to identify the cause and resolve it while keeping the policy active.
- **Q3: What permissions do I need to unlock accounts?**
A3: You must be a member of Domain Admins, Account Operators, or have delegated permissions to manage user accounts in the target Organizational Unit (OU).
- **Q4: Is there a way to unlock all locked-out users at once?**
A4: Yes. You can use PowerShell with Search-ADAccount -LockedOut | Unlock-ADAccount to unlock all locked accounts in a single command.
- **Q5: Do I need RSAT to manage users remotely?**
A5: Yes. To manage AD users from a client workstation, you need to install the Remote Server Administration Tools (RSAT) and import the ActiveDirectory module in PowerShell.
https://serverspace.us/support/help/how-to-manage-user-accounts-in-active-directory-part-5-modifying-several-users-in-bulk.mdFrom this tutorial you will learn how to modify several user accounts in bulk in Microsoft Active Directory.
Users are one of the most popular objects in AD. They are used for authentication and authorization on workstations. Also, in many services which are integrated with AD. User management is the main routine for sysadmins and helpdesk specialists. This guide helps to manage such objects in multiple ways. For managing users there is a need to install RSAT tools or manage them from your DC. You have to be signed under domain admin or an Account Operators user or with delegation rights to create objects in the current OU.
## How to Modify Several Users in Bulk
Sometimes there is the need to modify one attribute for multiple objects. Modifying multiple objects at once is slightly different task from editing a single user, and there are several ways to achieve that.
### Modify Several Users at Once Using ADUC
**ADUC** is great when you need simple filters to group users by certain criteria. It has selection mechanism, for example you can select multiple different users with **Ctrl** button pressed or a chunk with **Shift** button pressed. You can also easily select all users in an OU or container by pressing **Ctrl + A**.
So, you need to change some settings in multiple user accounts, let's do that with AD:
In **ADUC (dsa.msc**) locate the OU that fits your needs. Select the user objects while the **Shift** button being pressed. Rightclick all these objects and select **Properties**.
Change the given attributes according to your needs and click **OK**.
### Modify Several Users at Once Using Active Directory Administrative Center
The ADAC differs from ADUC by providing additional filters.
Run ADAC and select the OU to use as the base scope for the filter.
Expand the top bar by clicking on little arrow button at top right corner. Click the **Add criteria** button:
Add the criteria you want to use such as “**Users with expired passwords**” or you can create a filter by one of the attributes. Select the filter and click **Add** to load it. You can use matches such as **starts with**, **equals**, **does not equal**, **is empty**, and **is not empty**.
After you receive the list of objects based on your filter press **Ctrl+A** to select all of them and click** Properties**.
Change attributes that you want to modify and click OK.
### Modify Several Users at Once Using Windows PowerShell
Filter customization in PowerShell is more advanced, it is best used to modify multiple user objects, repeatedly.
In our example we will filter all accounts with name starting with "**admin**" and enable "**Prevent from accidental deletion"** for all these accounts:
```
Import-Module ActiveDirectory
Get-ADUser -ldapfilter "(sAMAccountName=admin*)" | Set-ADObject – ProtectedFromAccidentalDeletion $true
```
https://serverspace.us/support/help/how-to-troubleshoot-ad-replication-using-repadmin-tool.mdLearn how to diagnose and resolve Active Directory replication problems between domain controllers using the powerful Repadmin command-line tool. Step-by-step troubleshooting guide for IT professionals.
Repadmin is a cmd application for diagnosing AD replication issues. Via Repadmin it is easy to view replication topology for every domain controller. And use this knowledge to manually change it and initiate replication communications between controllers. With Repadmin you can easily check replication metadata and relevance vectors (up-to-dateness (UTDVEC)).
Repadmin.exe is a built-in feature in Windows Server environment starting from 2008. It comes with AD Directory Services role and also can be setup in client OSes like Windows 10 with RSAT. In order to use Repadmin you need to have two domain controllers with configured replication between them.
## Command List
** **Repadmin.exe has lots of commands, lets focus on most popular ones:
- **/syncall – **used to synchronize a certain DC with others
- **/prp – **if you have a Password Replication Policy (PRP), this command helps to manage it
- **/queue – **Shows the current queue of replication
- **/replicate **– this command helps to perform replication from one DC to another
- **/replsingleobj – **This command is handy if you need to replicate only one certain object between DCs
- **/replsummary – **Shows a report of a current state of replication and health in AD
- **/showattr **– is used when you need to see object attributes
- **/showbackup **– this setting displays the last backup time
- **/showrepl **– If you need to know current replication status use this one
## How to Get General Replication Status
Let's start from overall state of replication, run elevated cmd.exe **(start->run->cmd.exe)** and type in the following command:
```
repadmin.exe /replsummary
```
The output will show you any replication failures that exist in your AD environment.
## How to Force Replication
Suppose you have replication failures and you need to force a replication after fixing networking connections failure. In elevated Command Prompt (cmd.exe) on any DC run:
```
repadmin.exe /syncall /Aped
```
In addition to **/syncall** command we have few flags that will synchronize all partitions (/A), using push notifications (/p), in enterprise mode across Active Directory sites (/e) using distinguished names instead of DNS names (/d).
## How to Manage Inbound and Outbound Replication
It is possible to disable inbound and/or outbound replication with a possibility to reenable it later. To achieve that run the following commands in cmd under admin rights:
```
repadmin.exe /options DC01 +DISABLE_INBOUND_REPL
```
Disables inbound replication on a DC01
```
repadmin.exe /options DC01 +DISABLE_OUTBOUND_REPL
```
Disables outbound replication on a DC01
** **
```
repadmin.exe /options DC01 -DISABLE_INBOUND_REPL
```
** **Enables inbound replication on a DC01
** **
```
repadmin.exe /options DC01 -DISABLE_OUTBOUND_REPL
```
** **Enables outbound replication on a DC01
** **For example, the option to disable outbound replication is a good way to perform schema updates without the need to rebuild the entire Active Directory forest.
## Conclusion
Repadmin is a powerful command-line tool that simplifies diagnosing and resolving Active Directory replication issues. It provides detailed insights into replication topology, metadata, and the health of domain controllers, allowing administrators to manually trigger replication and manage replication policies. Built into Windows Server since 2008 and available via RSAT on client OS, Repadmin is an essential utility for maintaining a healthy AD environment. By mastering its key commands, IT professionals can efficiently troubleshoot replication failures and ensure smooth synchronization across domain controllers.
## FAQ
- **Q: What is Repadmin and why is it important?**
A: Repadmin is a built-in Windows tool used to diagnose and fix Active Directory replication problems, helping maintain consistency across domain controllers.
- **Q: On which systems can I use Repadmin?**
A: Repadmin comes pre-installed on Windows Server 2008 and later versions and can be added to client systems like Windows 10 through RSAT.
- **Q: What permissions do I need to run Repadmin commands?**
A: You need administrative privileges on a domain controller to execute Repadmin commands effectively.
- **Q: How can I check the overall replication status in Active Directory?**
A: Use the command repadmin /replsummary in an elevated command prompt to view replication health and errors.
- **Q: How do I force replication between domain controllers?**
A: Run repadmin /syncall /Aped on a domain controller with administrative rights to force synchronization across all partitions.
- **Q: Can Repadmin disable replication temporarily?**
A: Yes, Repadmin allows disabling inbound and outbound replication on domain controllers, useful for maintenance tasks like schema updates.
https://serverspace.us/support/help/installing-active-directory-on-windows-server-2019.mdFrom this tutorial you will learn how to install an Active Directory domain on Microsoft Windows Server 2019.
In this tutorial, you will find installation of Active Directory in Windows Server 2019. This will be accomplished by installing the appropriate role and upgrading the server to a master domain controller (DC). We will also add the DNS role to take advantage of the zone capabilities integrated into Active Directory.
Basically, it is a two-step process, installing the ADDS role and upgrading it to a DC.
## Adding the Active Directory Domain Services Role
But at first, you should set a static IP address on your server, and find the appropriate name for your Windows Server to match your company’s naming policy. After completing this step, proceed to set up ADDS.
Run Server Manager, click **Manage -> Add Roles and Features**.
Right after that the wizard window appears. Under “**Before You Begin**” click “**Next**“.
Now we need to select an installation type, it can be based on server roles or virtual infrastructure (based on Hyper-V), chose the first setting and continue in a new window.
In the “Server selection”, we need to choose our server, usually it is allocated by default and continue to the next section.
Here we came to **Server Roles**, select **Active Directory Domain Services** and accept addition of related features. Click the **Add Features -> Next.**
The next window is named “**Features**” but here we need nothing to add so just go to the next section.
The ADDS section displays summary info about your AD, here we just click Next.
And at last, we proceed to installation, click **Install** and wait a little bit until installation completes.
## Upgrading Server to a DC
After finishing the installation, unless you close the window, there will be a link in finish summary to promote the server to a DC. This is highlighted as blue text.
However, it is possible to promote the server through notifications in server manager.
Click on “**Promote server to domain controller**“. And you will be brought to AD deployment wizard that will help you to create a forest in AD.
In “**Deployment Configuration**“, you should choose the “**Add a new forest**“, and then you need to think about your domain name (Note that it must not be like a domain name on your organization’s website, it must differ, otherwise you will have serious DNS problems) and type it in the proper field. In my case it is office.local, and click **Next** afterwards.
Now we have reached the”**Domain Controller Options**“. Here you need to specify the domain functional level. Note that it can differ from you current OS version, for 2019 Windows server, 2016 is only available. For the first AD server chose the latest version of the functional level. And if it is not the first one then you need to sync the level among other controllers.
In our example we will also choose DNS server option because we dont have standalone DNS, chose it whether you need it or not in your infrastructure.
You should also specify the password for restore mode (**DSRM**), save it in your corporate password manager and click “**Next**” to continue.
Probably you will notice a DNS warning message, but it should not bother you at this time. Ignore it and move further.
So, we arrived to the **NetBIOS name**, I recommend you to leave it as it is but you can change it as you like, don't forget to specify it in capital letters. Move **Next**.
Under “**Paths**” choose where the location of **NTDS, SYSVOL and LOG** folders. You can choose a different drive depending on your preferences and settings but default is also acceptable.
Under “**Review Options**” you will see a summary of your selections. Check it carefully for mistakes, move next if it is ok.
The “**Prerequisites Check**” section checks for your server prerequisites. Here, if it finds an error the installation process will be aborted and you will need to correct it. Otherwise, if only warning messages are displayed (which is usual), but the check was successful as shown, click **Install** to continue.
And here you need to wait a little bit for installation process to complete. Immediately after that, the server automatically restarts.
After server finishes its reboot process, your first domain controller will be ready to use and you can leverage all the features such as ADUC and ADAC.
https://serverspace.us/support/help/adding-a-volume-and-creating-partitions-in-windows.mdThis step by step guide will help you to create disk partitions and add a volume in Windows operating system.
## This instruction helps to mount new volumes and create partitions on virtual servers with a Windows operating system.
After adding a volume in the control panel, you need to make it available to the operating system.
Connect to the server with superuser privileges. Go to the Server Manager. From the top menu, select “Tools” → “Computer Management”.
**Note:** For Windows Server 2008 you need to open the Server Manager and select “Storage” → “Disk Management” from the vertical menu on the left.
In the left menu in the “Storage” directory, select “Disk Management” (1). In the bottom right pane you will see the added volume (Disk1) with an unallocated area (2) (In the example below unallocated area is 40 Gb).
Next, you need to make the added volume visible to the operating system. If the volume is in “Offline” state, right-click it beforehand and choose “Online” in the context menu.
In the Volume Management module, right-click the volume you want to initialize, and then select Initialize Disk.
Click OK in the dialog box that appears to accept the default partition style or change the partition style (GPT or MBR).
**Note:** MBR (Master Boot Record) and GPT (GUID Partition Table) are two different ways to store information about hard disc partitions. This information includes both information about how the drives work and which partition will be bootable for the system.
To create a simple volume, right-click on the unpartitioned area and select “New Simple Volume” in the appeared menu.
In the appeared Setup Wizard window, click “Next” and specify the volume size (you can accept the default and use the maximum value), then click “Next” again.
Assign a letter to the volume or accept the default, then click Next again.
Specify the file system you wish to use (usually NTFS) and then click on “Next” and “Finish”.
The added volume will show up in the device list, with a marked area in the bottom pane.
In the Windows explorer you can also see the added drive, which size is 40 GB.
https://serverspace.us/support/help/ultimate-linux-commands-cheat-sheet.mdThis ultimate linux commands cheat sheet contains more than 100 most commonly used linux terminal commands.
Sometimes you can forget terminal commands in _Linux_ and saving them on your computer or a peace of paper as a cheat sheet is a good practice. This list is not complete but it contains most commonly used commands. Feel free to add your most commonly used commands in the comments below and share the list.
## Users
- **Id** – Details about the user (uid, gid, and group)
- **last – **Lists information about last logins to the system including time, username, ip address and session length.
- **who** – View authorized users
- **groupadd** **“testgroup”** – Creates a group named "testgroup"
- **adduser** **NewUser** – Adds user named "NewUser"
- **userdel** **NewUser –** Deletes user named "NewUser"
- **usermod NewUser** Modifies "NewUser" user's information
## Navigate by Directories
- **cd** **/.** – Goes to core directory
- **cd** – Goes to the home directory ($HOME variable)
- **cd** **/root – **Goes to the /root directory
- **cd .. – **Goes to one level lower
- **cd /root/.ssh – **Goes to hidden .ssh folder
## Working with Files
- **ls** **-al –** Lists files and directories
- **pwd** – Displays the current working directory
- **mkdir** **NewFolder** – Creates new directory named "NewFolder"
- **rm** **NewFile** – Deletes file named "NewFile"
- **rm** **-f** **NewFile** – Forcibly deletes file named "NewFile"
- **rm** **-r** **NewFolder –** Deletes directory named "NewFolder" recursively
- **rm** **-rf** **NewFolder **– Force deletes a directory named "NewFolder" recursively
- **cp** **oldfile1 newfile2** – Copies contents of oldfile1 to newfile2
- **cp** **-r olddir1 newdir2** – Recursively copies directory "olddir1" to "newdir2". Dir2 will be created if it does not exist.
- **mv** **oldfile1 newfile2 –** Renames "oldfile1" to "newfile2"
- **ln** **-s /etc/log/file logfile** – Creates a shortcut to file
- **touch** **newfile –** Creates empty file named newfile
- **cat** **> newfile** – Places STDIN into newfile
- **more** **newfile** – Outputs newfile's contents in parts
- **head** **newfile** – Outputs the first 10 lines of the newfile
- **tail** **newfile** – Output the last 10 lines of the newfile
- **gpg** **-c** **newfile –** Encrypts newfile to gpg format with a passphrase and stores it in the same directory
- **gpg** **gpg** – Decrypts file
- **wc** **newfile** – Prints the number of bytes, words and lines of the newfile
## File/Directory Permissions
- **chmod** **777 /root/ssh** – Configures rwx(read, write, execute) permissions to ssh file for everyone who has access to the server (owner, group, others)
- **chmod** **755 /root/ssh – **Configures rwx permissions to the owner and r_x to the group and others
- **chmod** **766** **/root/ssh** – Configures rwx permissions for owner and rw for group and others
- **chown** **newuser** **newfile –** Changes newfile's owner to newuser
- **chown** **newuser:newgroup newfile** – Changes owner and group-owner for the newfile to newuser and newgroup
- **chown** **newuser:newgroup** **newfolder** – Changes owner and group-owner for newfolder directory to newuser and newgroup
- **stat -c “%U %G” newfile** – displays the newfile user and group owners
## Search
- **grep** **searchargument newfile –** Searches for searchargument in newfile
- **grep** **-r searchargument newfolder** – Searches recursively through all files in newfolder for searchargument
- **locate** **newfile** – Shows all locations of newfile
- **find** **/etc/ -name “searchargument”** – Finds files with a name that starts with searchargument in the /etc directory
- **find** **/etc/ -size +50000k** – Find files larger than 50000k in the /etc directory
## Archiving
- **tar** **-cf archive.tar newfile –** Create ‘archive.tar’ archive from ‘newfile’ file
- **tar** **-xf archive.tar – **Unpack ‘archive.tar’ file
- **tar** **-zcvf archive.tar.gz** **/var/log/** – Create archive from /var/log directory
- **gzip newfile** – Compress the newfile (it will have a .gz extension)
## Install from Packages
- **rpm -i pkg_program.rpm** – Installs rpm package (CentOS, RHEL)
- **rpm** **-e pkg_name** – Removes rpm package (CentOS, RHEL)
- **dnf** **install pkg_name –** Installs package with dnf from repository. Previously YUM was used, but recently YUM has been replaced by DNF. (CentOS, RHEL)
- **dpkg** **-i pkg_name** – Installs from a deb package (Debian, Ubuntu, Mint)
- **dpkg** **-r pkg_name** – Removes the deb package (Debian, Ubuntu, Mint)
- **apt** **install pkg_name – **Installs package from repository (Debian, Ubuntu, Mint)
- **apt remove pkg_name –** Removes package (Debian, Ubuntu, Mint)
- **apt** **upgrade && apt update** – Update packages in your system (Debian, Ubuntu, Mint) and updates the repositories after that
## Processes
- **ps** – Outputs the currently running processes
- **ps** **aux | grep ‘bash’ –** Find the id of the process ‘bash’
- **pmap -x 11** – Maps the process with PID = 11 in the process memory
- **top** – Shows all running processes
- **kill** **pid** – Ends process by pid
- **killall** **process** – End all processes with the name "process"
- **pkill** **process-name** – Send signal to a process
- **bg** – Send a paused process to background execution
- **fg** – Bring a running process out of the background
- **fg** **process** – Bring process named "process" out of the background
- **lsof** – Lists of files which processes use
- **renice** **19 PID** – Sets the lowest process priority
- **pgrep** **bash **– find bash process ID
- **pstree** – Shows tree view of the processes
## System
- **uname – **Shows system Information
- **uname** **-r** – Shows Linux kernel information
- **uptime** – How long the system has been running and load average
- **hostname** – Shows hostname
- **hostname** -i – Shows IP address of the host
- **last** **reboot** – Shows history of reboots
- **date** – Shows date and time
- **timedatectl** – Outputs and changes the date and time
- **cal** – Outputs calendar
- **w** – Displays the users working in the system
- **whoami** – Displays your username
- **finger** **root** – Shows root user information (needs installation with "apt-get install finger")
## Hardware
- **dmesg** – Displays the system messages at boot
- **cat /proc/cpuinfo** – Shows CPU info
- **cat** **/proc/meminfo** – Shows RAM info
- **lshw** – Shows hardware info
- **lsblk** – Shows Hard drive info
- **free** **-m** – Frees memory: RAM and swap (-m switch in MB)
- **lspci** **-tv** – Shows information about PCI devices in tree view
- **lsusb** –**tv** – Displays USB devices in a tree view.
- **dmidecode –** Shows BIOS device information
- **hdparm** **-i /dev/xda –** Shows disk info
- **hdparm** **-tT /dev/xda –** Shows read-write speed of xda
- **badblocks** **-s /dev/xda –** Shows test for badblocks
## Using the Disk
- **df** **-h** – Shows the free space on the mounted partitions (in bytes)
- **df** **-i** – Shows free inodes on the filesystem
- **fdisk** **-l** – Shows Disk, partition, and filesystem information
- **du** –**sh** – Displays unallocated space on mounted partitions in MB, GB, TB
- **findmnt** – Displays all mount points
- **mount** **/dev/sdb1 /mnt** – Mounts partition 1 of disk sdb to /mnt
## Network
- **ip** **addr show** – Shows IP addresses of all available network interfaces
- **ip** **address add 192.168.0.1/24 dev eth0** – Assigns the address 192.168.0.1 to eth0
- **ifconfig** – Shows IP addresses of all available network interfaces
- **ping** **168.0.1** – Sends an ICMP echo request to connect to the host under 192.168.0.1
- **whois** **domain** – Shows information about the domain name
- **dig** **domain** – Gets DNS information about a domain
- **dig** **-x 192.168.0.1** – Inverses name resolution
- **host** **us –** Shows host address resolution
- **hostname** **-I** – Shows local addresses
- **wget** **file_name** – Downloads a file
- **netstat** **-pnltu** – Shows all the ports being listened to on the host(needs "apt-get install net-tools")
## Remote connection
- **ssh** **root@host** – Connects to a remote host via ssh as root
- **ssh** **-p port_number user@host** – Connects to remote host if ssh port other than 22 is used
- **ssh** **host** – Uses default connection as the current user
- **telnet** **host** – Uses telnet connection (port 23)
https://serverspace.us/support/help/windows-cmd-commands-cheat-sheet.mdCMD cheat sheet with 50+ essential Windows command line tools for file management, networking, system info, and server administration tasks.
If you often find yourself forgetting Windows CMD commands, you’re not alone. The Command Prompt remains a powerful tool for managing files, processes, disks, networks, and system settings — but remembering all the right commands can be tricky. That's why having a handy cheat sheet can be a real lifesaver, whether you store it on your desktop or print it out. In this article, you’ll find a curated list of essential and frequently used CMD commands to help you get tasks done faster. It's not exhaustive, but it covers the basics — and you're welcome to expand it in the comments below with your personal favorites.
## Files and Folders Management
- **COPY** – Copies files to another location
- **DIR** – Displays files and folders in current directory
- **DEL or ERASE** – Deletes files
- **EDIT** – Starts file editor
- **CD** – Changes directory
- **EXPAND** – Decompresses compressed files
- **FC** – Compares files and shows the differences between them
- **FIND** – Finds a text string in the file
- **MD or MAKEDIR** – Creates a folder
- **MOVE** – Moves files from one folder to another
- **PRINT** – Prints out the text file contents
- **RD or RMDIR** – Deletes a folder
- **REN or RENAME** – Renames a file or folder
- **REPLACE** – Replaces files in one directory with files of the same name in another directory (overwrite)
- **ROBOCOPY** – Uses an advanced tool to copy files and directories
- **TREE** – Shows directory structure of a disk or folder
- **TYPE** – Displays the contents of text files
- **OPENFILES** – Manages opened local or network files
- **XCOPY** – Copies files and directory trees
## Applications and Processes
- **SCHTASKS** – Executes a command or start a scheduled application (Task Scheduler)
- **SHUTDOWN** – Shutdowns or reboots your computer
- **TASKLIST** – Lists the tasks being performed
- **TASKKILL** – Stops or halts a task (to stop a task you use a PID which you can find out from TASKLIST)
- **REG** – Starts registry editor
- **RUNAS** – Launches the task as another user
## Disks Management
- **CHKDISK** – Checks disk and shows statistics
- **DEFRAG** – Starts disk defragmentation
- **CHKNTFS** – Displays or changes execution of disk check at boot
- **COMPACT** – Displays and change the compression of files in NTFS partitions
- **CONVERT** – Converts FAT disk volume to NTFS
- **DISKPART** – Displays and adjusts disk partition properties
- **FORMAT** – Formats the disk
- **FSUTIL** – Displays and configures file system properties
- **LABEL** – Creates, changes, or deletes a disk volume label
- **RECOVER** – Recovers data from a bad or damaged disk
- **VOL** – Displays volume label and serial number for the disk
## System Information
- **DATE** – Outputs or sets the current date
- **TIME** – Displays or sets the system time
- **DRIVERQUERY** – Displays the current state and properties of the device driver
- **HOSTNAME** – Displays name of the computer
- **SYSTEMINFO** – Shows configuration information about your computer
- **VER **– Allows you to view the Windows version
- **GPRESULT** – Displays current applied group policies (RSoP)
- **GPUPDATE** – Updates group policies
## Network
- **IPCONFIG **– Shows information about network interfaces
- **PING** – Sends ICMP requests to the target host, checks host availability
- **TRACERT** – Finds the path for packets traveling over the network
- **NSLOOKUP** – Finds IP address by resource name
- **ROUTE** – Displays network route tables
- **ARP**– Shows a table with IP addresses converted into physical addresses
- **NETSH** – Starts is a network settings control program
- **GETMAC** – Shows the MAC address of the network adapter
- **TFTP** – Starts TFTP client in console
## Command Line Setup
- **CLS** – Clears screen
- **CMD** – Displays another command prompt
- **COLOR** – Sets the text and background color
- **PROMPT** – Changes the command line prompt
- **TITLE** – Assigns a title for the current session
- **HELP** – Launches CMD help
- **EXIT** – Exits the command line
## FAQ: Frequently Asked Questions About CMD Commands
- **Do I need to run CMD as an administrator for these commands?**
Some commands — especially those related to disk management (like DISKPART, FORMAT, CHKDSK) or system settings (GPUPDATE, REG) — require administrative privileges. If a command doesn’t work, try launching the Command Prompt as an administrator.
- **Do these commands work in all versions of Windows?**
Most of them are supported in Windows 10 and 11, as well as in older versions like Windows 7 and 8. However, some tools like ROBOCOPY or OPENFILES might be unavailable or limited in earlier versions.
- **How can I check a command’s syntax or get help?**
You can type the command followed by /h or /? in the command line — for example: xcopy /?. This will show you help information including options and usage examples.
- **Can I undo a command once it's executed?**
Most CMD commands execute without an undo option. Be especially careful with destructive commands like DEL, RD, or FORMAT, as they can lead to data loss. Always double-check paths and parameters before running them.
https://serverspace.us/about/news/oracle-linux-8-3-template-is-now-available.mdNow, you can deploy a virtual server using Oracle Linux 8.3 template. The Oracle Linux 8.3 template is already available in the Control panel.
Now, you can deploy a virtual server using Oracle Linux 8.3 template.
Oracle Linux brings the latest open source innovations and security optimizations for cloud deployment. Oracle Linux maintains user space compatibility with Red Hat Enterprise Linux (RHEL), independent of the kernel version that underlies the operating system.
Oracle Linux 8.3 includes the UEK R6 on the installation image, along with the Red Hat Compatible Kernel (RHCK). UEK R6 is enabled and installed by default and is the default kernel on the first boot. UEK R6 kernel delivers more innovation than other commercial Linux kernels.
**Oracle Linux 8.3 includes the following dynamic programming languages:**
- Ruby 2.7.1
- Nodejs:14
- python38:3.8
- php:7.4
- nginx:1.18
- perl:5.30
- squid:4 (version 4.11)
- httpd:2.4
- git packages 2.27
**Red Hat Compatible Kernel (RHCK):**
- lshw command provides additional CPU information
- /dev/random and /dev/urandom conditionally powered by the Kernel Crypto API DRBG
- Extended Berkeley Packet Filter added for kernel virtual machines (KVM)
- libbpf support now available
- Mellanox ConnectX-6 Dx network adapter included and driver automatically loaded
- TSX disabled by default on Intel CPUs that support disabling it
**Infrastructure Services:**
- Bind (version 9.11)
- Powertop (version 2.12)
- Tuned (version 2.14.0)
- tcpdump (version 4.9.3)
- iperf3
**Security:**
- gnutls (version 3.6.14)
- Libreswan (version 3.32)
- libseccomp library (version 2.4.3)
- libkcapi (version 1.2.0)
- libssh library (version 0.9.4)
- setools (version 4.3.0)
- stunnel (version 5.56)
The Oracle Linux 8.3 template is already available in the Control panel.
https://serverspace.us/about/news/patch-method-in-the-public-api.mdWe added a PATCH method to the Public API. The request changes the number of cores or/and the amount of RAM used by one server.
We added [a PATCH method](https://docs.serverspace.us/public_api.html#tag/Servers/paths/~1api~1v1~1servers~1{server_id}/patch) to the Public API.
Unlike PUT, which requires a complete representation of a resource, a PATCH request is intended to modify a resource, updating only specific attributes.
The request changes the number of cores or/and the amount of RAM used by one server. Until this moment, you could change the number of CPU cores and the RAM of a server only simultaneously.
The PATCH request returns a task ID so that you can track the process of the server's changing.
Please visit [the Public API docs](https://docs.serverspace.us/public_api.html#tag/Servers/paths/~1api~1v1~1servers~1{server_id}/patch) to learn more about the method.
https://serverspace.us/about/news/partners-section-update-new-referral-calculator.mdThe clients who sign up using the widget will automatically become your referrals. You can get up to 10% of all the payments of your referrals.
We updated the Partners section in the control panel. Now, you can find there Serverspace advertising banners and a new Referral calculator.
Advertising banners are presented in several sizes, so you can use the banners which meet your website requirements.
You can place the calculator widget and the banners on any website, regardless of the CMS. The clients who sign up using the widget will automatically become your referrals.
Just a friendly reminder: using our Referral Program, you can get up to 10% of all the payments of your referrals, and they will get plus 20% of their first payment in bonuses.
https://serverspace.us/support/help/how-to-install-lemp-stack-ubuntu-20-04.mdWe're going to take a look at the process of installing a LEMP stack (Linux, Nginx, MySQL and PHP) in Ubuntu 20.04.
The LEMP stack is one of the most popular kits as the basis for a web site. It consists of a Linux server, Nginx web server, MySQL database management systems and PHP. We’re going to take a look at the process of installing a LEMP stack in Ubuntu 20.04. All commands must be run as **root** or add **sudo** before them.
** In the Serverspace you can [create a server](https://serverspace.us/services/cloud-servers.md) with already installed app “LEMP”.**
## Installing Nginx
First, let’s update the package manager cache and install Nginx.
```bash
apt update
apt install nginx
```
If the firewall is enabled, you need to allow access to the server on port 80:
```
ufw allow in "Nginx HTTP"
```
Output:
```
Rules updated
Rules updated (v6)
```
You can now check if the Nginx web server is running by entering your server’s public IP address into your browser’s address bar. You will see the following page:
Screenshot 1. Nginx welcome page.
## Installing MySQL
To install MySQL server enter:
```bash
apt install mysql-server
```
Once installed, run the script and follow the instructions to configure the recommended MySQL security settings. The most secure setting will be achieved with affirmative answers and the strictest password complexity check.
```
mysql_secure_installation
```
## Installing PHP
Install the following packages to get PHP running on the server.
```bash
apt install php-fpm php-mysql
```
## Configuring Nginx for PHP Processing
In this tutorial, we’ll show you how to configure PHP processing using the default virtual host as an example. When configuring Nginx to work with multiple domain names, this setting will also apply. [Nginx virtual host basic configuration guide](https://serverspace.us/support/help/nginx-virtual-hosts-on-ubuntu-20-04/).
Open the default virtual host configuration file.
```
nano /etc/nginx/sites-available/default
```
Add the next code to the end of the **server** section:
```
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
```
Save and close the file and check the configuration for errors:
```
nginx -t
```
Restart Nginx:
```bash
systemctl restart nginx
```
## Testing PHP on Nginx Server
We will now create a **.php** file on our server and check if PHP is running. Create a file:
```
nano /var/www/html/info.php
```
Paste the following content here:
```
```
Now enter your server’s public IP address into your browser’s address bar with **/info.php** at the end:
```
http://server-public-ip/info.php
```
If you see the following content, PHP works fine with Nginx.
Screenshot 2. PHP testing.
https://serverspace.us/support/help/vnc-connection-ssh-tunnel-ubuntu-20-04.mdLearn how to securely set up a VNC connection over an SSH tunnel on Ubuntu 20.04. Protect your remote desktop sessions from unauthorized access with this step-by-step guide.
We recently covered the process of [installing and configuring a TightVNC server on Ubuntu 20.04](https://serverspace.us/support/help/how-to-install-vnc-on-the-server-under-ubuntu-20-04/). In addition to this, the process of setting up a secure SSH tunnel for a VNC connection will now be described. This is because VNC itself is not secure. Using an SSH tunnel corrects the situation.
While **VNC (Virtual Network Computing)** provides an easy way to access a remote desktop environment on Ubuntu 20.04, it does not offer encryption by default — making it vulnerable to eavesdropping and unauthorized access. To address this, the recommended practice is to secure your VNC connection with an SSH tunnel. This ensures that all data transmitted between the client and the server is encrypted, providing a safe and private remote desktop experience. In this guide, we'll show you how to configure your system to use a secure VNC over SSH tunnel, step by step, including both command-line and PuTTY-based instructions.
## Preparation
In the [first part](https://serverspace.us/support/help/how-to-install-vnc-on-the-server-under-ubuntu-20-04/), we opened firewall port 5901. The connection will now be directed through the SSH tunnel, so you need to close the ports open for VNC.
```
ufw deny 5901/tcp
```
You also need to close all running TightVNC sessions.
```
vncserver -kill :1
```
And start a session listening only for internal connections. After opening the SSH tunnel, this will be our connection.
```
vncserver -localhost
```
If you have configured the TightVNC service, open its configuration.
```
nano /etc/systemd/system/vncserver.service
```
Find the **ExecStart** parameter and make it look like this:
```
ExecStart=/usr/bin/vncserver -localhost
```
Reload systemd:
```bash
systemctl daemon-reload
```
And start (or restart) the service:
```bash
systemctl enable –now vncserver
```
## Creating a SSH Tunnel
The following command must be run on the client computer from which you are connecting to the VNC server. It connects port 61000 on the local machine to port 5901 on the server via an SSH tunnel.
```bash
ssh -L 61000:localhost:5901 -N -l username VNC_server_IP
```
The following options are used to create a tunnel:
- **-L** – forwarding information from local port 61000 to remote port 5901 via SSH tunnel;
****
- **-N** – specifies to only forward ports, not execute the command;
****
- **-l** – specifies the username to create the tunnel.
Replace **username** and **VNC_server_IP** with your own parameters. If you connect using an SSH key, do not forget to add the **-i** parameter, as with a usual SSH connection.
## Using Putty to create a SSH tunnel
Use normal connection parameters in Putty. Besides these, you need to add some settings. Namely, go to **Connection – SSH – Tunnels**, enter **61000** in the **Source port** and **localhost:5901** in the **Destination**.
Click Add and Apply.
## Connecting to a remote desktop
The tunnel has now been created. To connect to the remote desktop, use the same client as in the first part of the tutorial – any VNC client you like. Enter **localhost:61000** as the VNC server.
## Conclusion
By setting up a secure VNC connection over SSH on Ubuntu 20.04, you combine the flexibility of remote desktop access with the strong encryption of SSH. This method helps protect sensitive data, system credentials, and session contents from being intercepted on unsecured networks. Whether you’re managing a remote server or simply accessing your desktop from another location, tunneling VNC through SSH is an essential best practice for safe and secure remote administration. Always remember to close direct VNC ports and keep SSH access protected with strong credentials or key-based authentication.
## FAQ: Secure VNC over SSH Tunnel on Ubuntu 20.04
- **Q: Why is VNC not secure by default?**
A: VNC transmits data, including login credentials, in plain text. Without encryption, anyone on the network can potentially intercept this information.
- **Q: What does the SSH tunnel do in this setup?**
A: An SSH tunnel encrypts all VNC traffic by forwarding it through a secure SSH connection, preventing unauthorized access and data leaks.
- **Q: Do I still need to open port 5901 on the firewall?**
A: No. In a secure setup, you close port 5901 and access VNC exclusively through the SSH tunnel, typically using a local forwarded port like 61000.
- **Q: Can I use any VNC client with this setup?**
A: Yes, any standard VNC client (like TigerVNC, RealVNC, or UltraVNC) will work. Just connect to localhost:61000 instead of the server's IP.
- **Q: How do I create an SSH tunnel on Windows?**
A: Use PuTTY, go to Connection → SSH → Tunnels, enter 61000 as the source port and localhost:5901 as the destination, then click Add.
- **Q: Is this method suitable for public networks?**
A: Absolutely. Using SSH tunneling adds a layer of encryption, making remote desktop access safe even over insecure networks, like public Wi-Fi.
https://serverspace.us/support/help/vnc-connection-ssh-tunnel-in-centos-8.mdLearn how to establish a secure VNC connection over an SSH tunnel on CentOS 8. This step-by-step guide ensures encrypted remote desktop access to your server using VNC clients.
We recently covered [how to install TigerVNC server on CentOS 8](https://serverspace.us/support/help/install-tigervnc-server-on-centos-8/). VNC connections are insecure by themselves. Therefore, in this tutorial, we are going to show you how to establish a VNC connection over a SSH tunnel on CentOS 8. This will secure the connection and transmitted data. To successfully complete the steps from this manual, you must complete all the settings from the [first part](https://serverspace.us/support/help/install-tigervnc-server-on-centos-8/).
## SSH configuration
Previously, we created the user **username**. Now, we need to ensure that this user has permission to connect to the server via SSH. To verify this, attempt to establish an SSH connection to the remote server using the **username** account. If the connection is successful, the user has the necessary access; otherwise, additional configuration may be required.
```
username
```
If this works, you can proceed to the next step. If not, you need to either enable password authorization on the server, or configure a SSH key for **username**. See chapters **SSH configuration** and **SSH key configuration** in the [Initial CentOS 8 Server Setup note](https://serverspace.us/support/help/initial-server-setup-with-centos-8/).
## TigerVNC configuration
Open the TigerVNC configuration file:
```
sudo nano /etc/tigervnc/vncserver-config-defaults
```
Uncomment the following line:
```
# localhost
```
Restart the TigerVNC service:
```bash
sudo systemctl restart vncserver@:2
```
Now it will not be possible to connect via VNC to the server directly from a remote computer, only via a SSH tunnel.
Now let’s move on to the client computer.
## Creating a SSH tunnel on Linux or MacOS
On any Unix-like operating system, just open a command prompt and enter the following command:
```bash
ssh -L 62000:localhost:5902 -N username@TigerVNC_server_IP
```
Replace **username** with your login that was created in the first part of the tutorial. And **TigerVNC_server_IP** with your server address. As you can see, this is a usual **ssh** command. The **-L** and **-N** flags allow it to be used to create a tunnel.
## Creating a SSH tunnel on Windows with Putty
In Putty, the differences from regular SSH connection are also not very different. You need to go to the **Connection** section, then **SSH** and finally **Tunnels**. Enter 62000 in the **Source port** and localhost:5902 in the **Destination**.
Click Add and Apply.
## Establishing a VNC connection over a SSH tunnel
After establishing the SSH tunnel, you can securely connect to the remote VNC server. To do this, open any VNC client (such as TightVNC or RealVNC), just as you did earlier. However, instead of using the server's IP address, connect to **localhost:62000** — this forwards the connection through the encrypted SSH tunnel to the remote VNC service.
```
localhost:62000
```
https://serverspace.us/support/help/postfix-send-only-smtp-server-centos-8.mdLearn how to install and set up Postfix as a send-only SMTP server on CentOS 8. Ideal for sending system emails, notifications, and automated messages from your server.
Configuring a mail server to send outgoing messages only is a common and practical approach when administering Linux servers. This setup is especially useful for system alerts, Cron job notifications, automated scripts, and monitoring tools that need to send email reports or warnings, but do not require the ability to receive mail. In this tutorial, we'll walk you through installing and configuring Postfix as a send-only SMTP server on CentOS 8 — a lightweight, secure, and reliable way to send emails directly from your server.
Before you begin, make sure you have the following prerequisites:
- A **registered domain name** that will be used in the “From” address of outgoing emails (e.g., noreply@yourdomain.com)
- **Root access** to the CentOS 8 server or a user with sudo privileges
## Installing and configuring Postfix
Let’s install the required packages. Postfix is the mail server itself, and mailx is the environment for handling email.
```bash
dnf install -y postfix mailx
```
Activate the start together with the system and run Postfix.
```bash
systemctl enable –now postfix
```
Open the Postfix configuration file.
```
nano /etc/postfix/main.cf
```
You need to find the **inet_interfaces** parameter and assign it the **localhost** value if it is different at the moment. In my case, the parameter was listed several times, but with the correct value.
```
inet_interfaces = localhost
```
Set the **myhostname** parameter to your domain name.
```
myhostname = domain-name.com
```
Uncomment this line:
```
myorigin = $myhostname
```
Make the line look like this and replace the domain name with your own:
```
mydestination = $myhostname, domain-name.com, localhost.$mydomain, localhost
```
Save and close the file and restart the system.
```
reboot
```
Now you need to configure the hostname for the server.
```
hostname domain-name.com
echo "domain-name.com" > /etc/hostname
```
These settings are sufficient in many cases, but some mail servers have fairly strict spam filters and will reject mail. In this case, additional steps are required. One of which is setting up a PTR record for a domain. Usually, to do it, you need to contact the support service of the company that provided you with a public IP address.
## Postfix testing
To send a test message, use the command:
```
echo "Mail delivery test" | mail -s "[Server] New e-mail" mail@domain.com
```
The mail address must be replaced with a real one, and the text in quotation marks represents the body of the letter and its header.
## Configuring mail forwarding
Sometimes you need to receive the host’s internal mail to an external mailbox. For example, to receive system notifications. There are aliases for these purposes. Let’s take a look at setting up mail forwarding for **root**. Open the file with aliases.
```
nano /etc/aliases
```
To add mail forwarding for **root** to an external mailbox, add a line with your mailbox:
```
root: mail@domain.com
```
Save the file and enter the command to apply the changes:
```
newaliases
```
## Conclusion
Setting up Postfix as a send-only SMTP server on CentOS 8 is a simple yet powerful way to enable your server to send system-generated emails, such as alerts, cron job reports, and service notifications. This configuration reduces your server's exposure to incoming email threats, while ensuring reliable email delivery for administrative purposes. By following this guide, you've learned how to install Postfix, configure it to send messages only, and prepare your server to handle outbound emails effectively. For best results, don't forget to set up proper DNS records such as SPF, DKIM, and DMARC to improve deliverability and prevent your messages from being marked as spam.
## FAQ: Postfix Send-Only SMTP on CentOS 8
- **Q: Can I use Postfix to receive emails as well?**
A: This guide covers send-only configuration. If you need to receive emails, additional setup (e.g., Dovecot or another POP/IMAP service) is required.
- **Q: Why use a send-only SMTP server?**
A: A send-only SMTP server is ideal for servers that only need to send system alerts, cron job results, or monitoring notifications, without accepting incoming mail — improving security and simplicity.
- **Q: Do I need a domain name to send mail with Postfix?**
A: Yes, a valid domain name is recommended to ensure that your emails have a proper sender address (e.g., noreply@yourdomain.com) and aren't flagged as spam.
- **Q: Will my emails be marked as spam?**
A: To avoid this, configure proper SPF, DKIM, and DMARC DNS records and use a valid domain. Some email providers may still apply strict filtering if these settings are missing.
- **Q: Can I use an external SMTP relay with Postfix on CentOS 8?**
A: Yes, Postfix can be configured to relay email through providers like Gmail, Amazon SES, or SendGrid. This is useful if your server has issues with email deliverability.
https://serverspace.us/support/help/incremental-backups-rsync-centos-8.mdRsync in collaboration with Cron lets you set up periodic incremental backups on CentOS 8. In this tutorial, we'll show you how to do this.
Rsync in collaboration with Cron lets you set up periodic incremental backups on CentOS 8. In this tutorial, we’ll show you how to do this. First, you need to [install and configure Rsync, as we did in this article](https://serverspace.us/support/help/use-rsync-to-create-a-backup-on-centos-8/).
Here we will show you how to use the power of Rsync to create and store multiple copies of files so you can have a history of changes over a period of time.
## Location of backup files
The **full** folder contains all the backup files. This location is the actual copy of the content at the time of the backup.
In the **increment** folder, catalogs are created for each date. They contain the old versions of the modified files.
## Setting up regular incremental backups
Let’s first create folders for storing backups.
```
mkdir -p /opt/backup/full
mkdir -p /opt/backup/increment
```
The regularity of running the backup will be ensured by cron. For example, we will place the script in the **/etc/cron.hourly** folder, the task will run every hour. Use **/etc/cron.daily**, **/etc/cron.weekly** or **/etc/cron.monthly** folder to select a different frequency. [Learn more about setting up cron](https://serverspace.us/support/help/automate-regular-tasks-cron-centos-8/).
```
nano /etc/cron.hourly/backup-task
```
Paste the following lines here. If you used the file name (/etc/secret.passwd), username (rsync-user), data source name (data) are the same as in our first tutorial, now it remains to replace **source-server-ip** with the IP address of the data source server. Otherwise, you must additionally make the appropriate replacement of parameters in the script.
```bash
# Backup
rsync -a –delete –password-file=/etc/secret.passwd rsync-user@source-server-ip::data /opt/backup/full/ –backup –backup-dir=/opt/backup/increment/`date +%Y-%m-%d`/
# Clean up
find /opt/backup/increment -mindepth 1 -maxdepth 2 -type d -mtime +30 -exec rm -rf {} ;
```
In the **Clean up** section, you can configure how old incremental copies are deleted using the **-mtime** parameter. In this case, it is more than 30 days.
Now it remains to configure the necessary rights for our script.
```bash
chmod 0744 /etc/cron.hourly/backup-task
```
https://serverspace.us/support/help/cron-notifications-to-email-on-centos-8.mdCron has a useful option, and we'll talk about it now. In this tutorial, we will set up sending Cron notifications to email on CentOS 8.
We recently looked at [Cron configuration on CentOS 8](https://serverspace.us/support/help/automate-regular-tasks-cron-centos-8/). It has another useful option, and we’ll talk about it now. In this tutorial, we will set up sending Cron notifications to email on CentOS 8.
Before cron can send email notifications, you need to configure an SMTP server. We covered Postfix configuration in [this tutorial](https://serverspace.us/support/help/postfix-send-only-smtp-server-centos-8/).
## Cron configuration
To enable sending cron notifications to email, open the cron scheduler.
```
crontab -e
```
Paste these lines there and enter your email address to receive notification.
```
MAILTO="recipient@domain.com"
SHELL=/bin/bash
HOME=/
* * * * * echo "Test email from cron"
```
The result of all configured tasks will be sent to the specified email address.
Screenshot 1. Test email notification from cron.
If you don’t receive any notifications, look in the **Spam** folder. You can also look at the email logs to see why.
```
cat /var/log/maillog
```
Some mail servers have such strict spam checks that additional outgoing server settings are required. For example, adding a DNS PTR record for the domain name. To do this, you need to contact the support team of the company that provides you with a public IP address.
Additional measures to increase trust in correspondence from your server are to enable DKIM signature for your messages, add SPF and DMARC records for your domain.
https://serverspace.us/support/help/cron-notifications-to-email-ubuntu-20-04.mdLearn how to configure Cron to send email notifications on Ubuntu 20.04. This guide covers setting up a mail server, configuring crontab, and testing email alerts.
We have already covered [setting up automatic scheduled tasks using cron in Ubuntu 20.04](https://serverspace.us/support/help/automate-tasks-with-cron-ubuntu-20-04/).In this tutorial, we'll show you how to configure Cron to send email notifications – a useful feature for monitoring automated tasks on Ubuntu 20.04.
## Server preparation
First, you need to configure your server to be able to send emails. You can go through the steps in this tutorial – [Postfix configuration as a Send-Only SMTP Server](https://serverspace.us/support/help/postfix-as-a-send-only-smtp-on-ubuntu/).
Following the instructions in the first two steps should be sufficient for our purposes. However, some mail servers will put unencrypted emails in the Spam folder or reject altogether.
Therefore, if you will not receive notifications as a result of following the steps in this guide, try checking your junk mail folder and enabling SMTP encryption (step 4 of the Postfix configuration guide).
To check the server’s email logs, see:
```
cat /var/log/mail.log
```
## Set up sending Cron notifications to email
Open the Cron configuration file.
```
crontab -e
```
Place this config in it. Replace the email address with yours.
```
MAILTO="mail@domain-name.com"
SHELL=/bin/bash
HOME=/
* * * * * echo "Message from Ubuntu cron"
```
Screenshot 1. Cron email notification.
## Conclusion
Setting up email notifications for Cron jobs on Ubuntu 20.04 is a practical way to stay informed about the status of your scheduled tasks. By properly configuring your mail server (such as Postfix) and adjusting your crontab settings, you can receive timely alerts directly to your inbox. This helps with monitoring, troubleshooting, and ensuring your automated processes run smoothly. Remember to check your spam folder if emails don't appear and consider enabling SMTP encryption for improved reliability. With these steps, managing Cron notifications becomes straightforward and effective.
## FAQ: Cron Email Notifications on Ubuntu 20.04
- **Why am I not receiving Cron emails?**
Check your spam or junk folder first. Some mail servers may flag unencrypted emails as spam. Ensure your SMTP server is properly configured and consider enabling encryption as described in the Postfix setup guide.
- **How do I specify the recipient email for Cron notifications?**
In your crontab file (crontab -e), add the line:
```
MAILTO="your-email@example.com"
```
Replace the **email address** with the one you want to receive notifications.
- **Can I customize the content of Cron email notifications?**
Yes. The email content is usually the output of your Cron job commands. You can customize what the job echoes or logs to control what gets sent.
- **What if I want to disable email notifications for a specific Cron job?**
You can redirect the output of that specific job to /dev/null like this:
```
* * * * * /path/to/command > /dev/null 2>&1
```
- **How do I check if my mail server is sending emails correctly?**
Review the mail logs using:
```
cat /var/log/mail.log
```
This will help you diagnose any sending issues.
https://serverspace.us/support/help/install-configure-postfix-ubuntu-20-04.mdStep-by-step guide to install and configure Postfix on Ubuntu 20.04. Learn how to set up a secure and reliable mail server, configure DNS records (MX, SPF), and manage email services efficiently on your Ubuntu server.
Postfix is a fairly common mail server due to sufficient functionality for most tasks and easy setup. This tutorial will cover the installation and basic configuration of Postfix and the server for it.
## Preparation
The server must have a static public IP address. You will also need a domain name. Let’s first configure the necessary DNS records.
For the mail server, a 3rd level subdomain is usually used. As an example, we will use **mail.domain-name.com**. Replace the **domain-name.com** with your domain name. The 3rd level domain name can be arbitrary. The main thing is to use the appropriate option in further configuration. DNS records can usually be configured in the control panel of a domain name registrar or on your DNS server.
Add a DNS A record for your domain named **mail** and “target” equal to the IP address of the future mail server.
```
mail A xxx.xxx.xxx.xxx
```
Add DNS MX record for the root domain with a value equal to the domain name of the mail server:
```
@ MX mail.domain-name.com
```
If the service returns an error as a result, try not to use nothing instead of **@**.
## Server configuration
With the selected 3rd level domain name **mail.domain-name.com**, the hostname will be **mail**. Let's configure it.
```
sudo hostnamectl set-hostname mail
```
Now open the **hosts** file.
```
sudo nano /etc/hosts
```
Let’s add a line for this server with its IP address, your domain name and hostname. This entry must be placed directly below the entry for localhost.
```
xxx.xxx.xxx.xxx domain-name.com mail
```
## Postfix installation
Let's install Postfix and mail package **mailutils**.
```bash
sudo apt install postfix mailutils
```
During installation, you will be prompted for options interactively. Set **mail server configuration type** to **Internet Site**.
Screenshot 1. Set mail server configuration type.
**System mail name** must match the domain name for which we are setting up the mail server. In our case, this is **domain-name.com**.
Screenshot 2. Set system mail name.
## Postfix testing
Now the Postfix mail server is ready to work. Let's test it and send our first email. Put your mail to the following command and run it:
```
echo "Postfix test" | mail -s "Subject" mail@server.com
```
Due to the fact that encryption and things like DKIM are not yet configured, your letter will most likely end up in the Spam folder. Some mail servers like gmail.com won’t accept it at all. We’ll fix this later.
Now you can reply to this letter in your mailbox and see this answer on the mail server.
```
mail
```
Output:
```
"/var/mail/root": 1 message 1 new
>N 1 Sender Name Wed Mar 17 04:32 66/2877 RE: Subject
?
```
Enter **1** and you will see your reply.
The next step is to [set up Postfix to use virtual mailboxes](https://serverspace.us/support/help/postfix-virtual-mailboxes-ubuntu-20-04/).
## Conclusion
Postfix is a powerful and widely used mail server that offers extensive functionality with relatively straightforward setup. In this tutorial, we covered the essential steps to install Postfix on Ubuntu 20.04, configure DNS records, set the hostname, and send a test email. After this basic configuration, your mail server is ready to operate. However, for full functionality and improved reliability, it is recommended to implement additional features such as encryption, DKIM, SPF, and virtual mailboxes. These enhancements will help ensure a secure, stable, and efficient mail server environment.
## FAQ
- **Q1: What DNS records are needed for Postfix to work properly?**
A: You need to configure an A record for your mail subdomain (e.g., mail.domain.com) and an MX record for your root domain that points to this subdomain.
- **Q2: Can I use a dynamic IP address for my mail server?**
A: It is strongly recommended to use a static public IP address, as dynamic IPs often get blacklisted and cause mail delivery issues.
- **Q3: Why do my emails end up in spam or get rejected by Gmail?**
A: To improve email deliverability, you should configure SPF, DKIM, DMARC records and enable TLS encryption for your mail server.
- **Q4: How can I verify that Postfix is installed and working correctly?**
A: You can send a test email using the mail command and check for successful delivery and reception, as well as monitor the mail server logs.
- **Q5: How do I set up virtual mailboxes with Postfix?**
A: Setting up virtual mailboxes involves additional configuration of Postfix and creating virtual users, allowing mail delivery without system user accounts.
https://serverspace.us/support/help/how-to-install-node-js-on-ubuntu-20-04.mdNode.js is a JavaScript runtime. In this tutorial, we'll go over the different ways to install Node.js on Ubuntu 20.04 and their benefits.
Node.js is a JavaScript runtime. In this tutorial, we’ll go over the different ways to install Node.js on Ubuntu 20.04 and their benefits.
How to install Node.js on Ubuntu 20.04:
- [Installing Node.js](#stepone)
- [Installing Node.js with PPA](#steptwo)
- [Installing Node.js with NVM](#stepthree)
## Installing Node.js with apt
This is the easiest and most sufficient installation method for many purposes. In addition to Node.js itself, we will immediately install its package manager – **npm**. Node.js packages are libraries or tools that can be downloaded using npm.
```bash
sudo apt update && sudo apt install nodejs npm
```
You can check the success of the installation, and at the same time, you can find out the version using the command:
```
nodejs -v
```
## Installing Node.js with PPA
Installing via the PPA gives you a choice of version. Check out the available versions in the [documentation](https://github.com/nodesource/distributions/blob/master/README.md#installation-instructions). We’ll also need **curl** to continue.
```bash
sudo apt install curl
```
Now we will download and run the script of the corresponding version, which will add the PPA to the system repositories.
```bash
curl -fsSL https://deb.nodesource.com/setup_15.x | sudo -E bash -
```
And install Node.js from the added repositories.
```bash
sudo apt install nodejs
```
Let’s check the installed version.
```bash
node -v
```
In this case, npm is already installed.
## Installing Node.js with NVM
NVM is Node.js Version Manager. It allows you to install different versions of Node.js with npm packages at the same time and switch between them at runtime.
To install the latest version of the NVM installation script, go to the [Installing and Updating part of the project page on GitHub](https://github.com/nvm-sh/nvm#installing-and-updating), copy the link and run it on your Ubuntu 20.04.
```bash
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
```
Now you need to log out of your account and log back in. The second option is to execute the following commands to ensure the operation of NVM:
```
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" bash_completion
```
At this point, the NVM is ready to use. To get a list of versions available for installation:
```
nvm list-remote
```
Choose a version and install:
```
nvm install 14.16.0
```
View the list of installed versions:
```
nvm list
```
Output:
```
v12.21.0
-> v14.16.0
default -> 14.16.0 (-> v14.16.0)
```
To select a Node.js version, use the command indicating the required version. Thus, you can switch between different versions if there are several installed.
```
nvm use v14.16.0
```
If, in addition to the versions installed using nvm, the system also contains the version installed using **apt**, it will be marked as **system**. To switch to it, use:
```
nvm use system
```
In addition, the **nvm list** output shows LTS releases of Node.js. Not installed ones look like this:
```
lts/dubnium -> v10.24.0 (-> N/A)
```
To install them, specify the release alias:
```
nvm install lts/dubnium
```
To check the currently used version, use the command:
```bash
node -v
```
Output:
```
v14.16.0
```
https://serverspace.us/support/help/install-node-js-on-windows-server-2019.mdLearn how to install and manage multiple Node.js versions on Windows Server 2019 using nvm-windows. Follow this step-by-step guide for easy setup and version control.
For the purposes of training or exploring the possibilities, you can install a Node.js directly in Windows. In this tutorial, we’ll look at how to do this, using Windows Server 2019 as a basis.
It is assumed that no Node.js have been installed on the system. If this is not the case, you must first uninstall the old version by [following the guide](https://stackoverflow.com/questions/20711240/how-to-completely-remove-node-js-from-windows). This is necessary because after installing NVM, version conflicts may occur. If you are not sure, you can check with command in PowerShell:
```bash
node –version
```
If there is no Node.js in the system, you will see similar output:
Screenshot 1. Node does not exist in the system.
## Installing nvm-windows
There are different ways to set up Node.js. Using the Node Version Manager (NVM) is the most easy and universal, so we will use it. Original NVM does not work on Windows. But that is why the nvm-windows is being developed.
So go to the [nvm-windows Releases page](https://github.com/coreybutler/nvm-windows/releases).
Download the **nvm-setup.zip** file from the latest release.
Open the downloaded archive, run the **nvm-setup.exe** file and follow the instructions of the installer. By default, the optimal values are selected, which should not be changed unnecessarily.
## Node.js and npm installation
We will now install the latest LTS version of Node.js. Open PowerShell and enter the following command:
```
nvm list available
```
You can now see all versions of Node.js available for installation.
Screenshot 2. Available Node.js versions.
Choose the latest LTS version and install it using the command **nvm install **:
```
nvm install 14.16.0
```
Screenshot 3. Node.js installation.
Now activate the installed version.
```
nvm use 14.16.0
```
Now you can make sure that everything was installed correctly, and at the same time see the versions of Node.js and npm:
```bash
node –version
npm –version
```
Screenshot 4. Node.js and npm versions.
At this point, you have installed Node.js and npm on Windows Server 2019.Now let’s see how you can have different versions of Node.js at the same time and switch between them. First, let’s install a different version. For example, the latest one. It may have reliability issues, but it contains the latest features.
```
nvm install latest
```
Now let's check installed versions:
```
nvm ls
```
Screenshot 5. Installed versions of Node.js.
And switch to the new one:
```
nvm use 15.13.0
```
## Conclusion
Installing Node.js on Windows Server 2019 using nvm-windows is a flexible and efficient approach that simplifies version management. With NVM, you can install, use, and switch between multiple versions of Node.js without conflicts or the need for complex configuration. This is especially useful for developers who work with different projects requiring different Node.js versions. Whether you’re testing new features or deploying production-ready applications, using nvm-windows ensures your environment stays clean, organized, and easy to manage.
## FAQ
- **Q1: What is nvm-windows and how is it different from NVM on Linux?**
A1: nvm-windows is a Windows-specific version of Node Version Manager. Unlike the original NVM for Linux/macOS, it's designed to work natively on Windows systems and handles version switching through simple CLI commands.
- **Q2: Can I install multiple versions of Node.js with nvm-windows?**
A2: Yes, you can install as many versions as needed and switch between them using the nvm use command.
- **Q3: Do I need to uninstall Node.js before installing nvm-windows?**
A3: Yes, it’s strongly recommended to remove any previously installed versions of Node.js to avoid conflicts with NVM.
- **Q4: Does nvm-windows also install npm automatically?**
A4: Yes, npm is installed along with Node.js when using nvm-windows.
- **Q5: How do I switch between different versions of Node.js?**
A5: Use nvm use to switch, and nvm ls to view all installed versions.
https://serverspace.us/support/help/create-discord-bot-windows-server-2019.mdWe will create a Discord bot using Discord.js on Windows Server 2019 from the very beginning - receiving a token and software installation.
In this tutorial, we will create a Discord bot using Discord.js on Windows Server 2019 from the very beginning – receiving a token and software installation.
## Creating a Discord bot and getting its token
First you need to have a Discord account and create your own server. Then go to the [Application section on the Developer Portal](https://discord.com/developers/applications) and click the **New Application** button.
Screenshot 1. New Application button.
Then give your first application a name and click **Create**. You will find yourself on a page of settings for your application, which you can configure as you want. For the purposes of this tutorial, all parameters can be left at their default values.
Now go to the **Bot section** and click **Add bot**.
Screenshot 2. Create a Discord bot.
We will need the Discord bot Token later, save it.
Screenshot 3. Copy Discord Bot Token.
Now go to the **OAuth2** page, select **bot** for **Scope**, **Send Messages** for **Bot Permissions** and copy the resulting link. You can add more permissions to the bot if needed. But this is enough to create a bot.
Screenshot 4. Creating OAuth2 link for bot.
Follow the copied link and authorize the bot on your server. After that, the bot should appear among the members of your server in Discord.
Screenshot 5. Bot were added to the Discord server.
## Installing Visual Studio Code and Node.js
Go to the [Visual Studio Code site](https://code.visualstudio.com/), download and install it. All parameters can be left at their default values during installation.
Use this [tutorial to install Node.js on Windows Server 2019](https://serverspace.us/support/help/install-node-js-on-windows-server-2019/).
## Connecting discord.js and creating a bot
Start the Visual Studio Code, Open a folder to store your bot's files: **File – Open Folder**.
Open the Terminal: **View – Terminal**.
Now let’s set the data for our bot. You can leave the default values and just press **Enter** for each item.
```bash
npm init
```
Install the package.json and discord.js:
```bash
npm install
npm install discord.js
```
Screenshot 6. Package.json and discord.js installation.
Now let’s create the code for our bot. On the left side of the **VS Code** window, in the **EXPLORER** section, create a new **index.js** file and paste the following code into it:
```javascript
// include the discord.js module
const Discord = require('discord.js');
// create a Discord client with the name bot
const bot = new Discord.Client();
// print Launched! in the Terminal when the bot started
bot.once('ready', () => {
console.log('Launched!');
});
bot.on('message', message => {
if (message.content === '!Who are you?') {
message.channel.send('New Bot!');
}
});
// paste here your Discord bot Token
new-bot.login('ODIyODE0MDUxMzk3NTMz..IN3Ny34FXXKxB3f_Gy5ItCyI');
```
Save the file. Now let’s launch our new bot.
```bash
node index.js
```
Output:
```
Launched!
```
You will see that the bot went online on the server where you added it. Now let’s check its work and write the phrase specified in the code – “!Who are you?”.
Screenshot 7. Checking the work of a new bot.
Congratulations! Our first Discord bot has started its work.
https://serverspace.us/support/help/postfix-virtual-mailboxes-ubuntu-20-04.mdBy default, Postfix handles email for system users. In this tutorial, we will configure Postfix to use virtual mailboxes on Ubuntu 20.04.
After the [installation and basic configuration of Postfix](https://serverspace.us/support/help/install-configure-postfix-ubuntu-20-04/), it can send and receive mail sent to the names of users registered in the system. In this tutorial, we will set up Postfix to use virtual mailboxes on Ubuntu 20.04.
## System configuration
First of all, some preparation of the system is required for the operation of virtual mailboxes. Let’s create a folder **virtualmailboxes** for this, its name can be arbitrary, but if you change it, do not forget to substitute the appropriate option in further configuration. It will contain a folder for your domain name. Inside it, Postfix will add files corresponding to each virtual user after first receiving mail addressed to him.
```
sudo mkdir -p /home/virtualmailboxes/domain-name.com
```
Now let’s configure the user **virtualmail**, group and rights to work with these folders.
```bash
sudo groupadd -g 2000 virtualmail
sudo useradd -g virtualmail -u 2000 virtualmail -d /home/virtualmailboxes -m
chown -R virtualmail:virtualmail /home/virtualmailboxes
```
## Postfix configuration
Open the Postfix configuration file:
```
sudo nano /etc/postfix/main.cf
```
Postfix can operate in one of two modes when processing mail for a single domain:
- deliver mail to system users as configured earlier;
- work with virtual mailboxes and deliver mail for virtual users.
To configure the first option, the target domain is added to the variable **mydestination**. Therefore, now we will remove it from there and bring it to the following form:
```
mydestination = localhost.com, localhost
```
The next step is to add the following settings to the config file:
```
virtual_mailbox_domains = domain-name.com
virtual_mailbox_base = /home/virtualmailboxes
virtual_mailbox_maps = hash:/etc/postfix/virtualmaps
virtual_minimum_uid = 500
virtual_uid_maps = static:2000
virtual_gid_maps = static:2000
```
The presence of the variable **virtual_mailbox_domains** indicates that Postfix is working in virtual mailbox mode. It also contains the domain for which the mail is being processed. **virtual_mailbox_base** indicates the path for storing mail, **virtual_mailbox_maps** indicates a file with a list of virtual users. **virtual_minimum_uid, virtual_uid_maps, virtual_gid_maps** – settings of the system user who will manage the mail folder.
Now let’s create a list of virtual mailboxes, the path to which was specified in **virtual_mailbox_maps**. Each line of this file must contain a mail address in the **user@domain** format and separated by a space **domain/folder** – file path for storing mail relative to **virtual_mailbox_base**.
```
sudo nano /etc/postfix/virtualmaps
```
```
user1@domain-name.com domain-name.com/user1
user2@domain-name.com domain-name.com/user2
support@domain-name.com domain-name.com/support
```
Save the file. To apply the settings, you need to run 2 commands:
```
postmap /etc/postfix/virtualmaps
postfix reload
```
## Testing virtual mailboxes
To test the receipt of an email by a virtual user, let’s send him an email. We will do this on behalf of another user created by us, and indicate his mail as a return address (parameters -u and -r):
```
sudo echo "Postfix virtual mailboxes test" | mail -r user2@domain-name.com -u user2@domain-name.com -s "Subject" user1@domain-name.com
```
To view the messages received by user1, use the command:
```
sudo cat /home/virtualmailboxes/domain-name.com/user1
```
Output:
```
From user2@domain-name.com Wed Mar 31 12:55:19 2021
Return-Path:
X-Original-To: user1@domain-name.com
Delivered-To: user1@domain-name.com
Received: by domain-name.com (Postfix, from userid 0)
id 260A481421; Wed, 31 Mar 2021 12:55:19 +0000 (UTC)
Subject: Subject
To:
X-Mailer: mail (GNU Mailutils 3.7)
Message-Id:
Date: Wed, 31 Mar 2021 12:55:19 +0000 (UTC)
From: root
Postfix virtual mailboxes test
```
If the letter is not there, try looking at the mail sending logs using the command:
```
sudo cat /var/log/mail.log
```
In addition, if an error occurs, the letter can be returned to the sender. That is why we sent it on behalf of the previously created virtual user. After all, mail is no longer delivered to system users. To view the sender’s mailbox (user2), use the command:
```
sudo cat /home/virtualmailboxes/domain-name.com/user2
```
https://serverspace.us/support/help/monitor-network-traffic-vnstat-ubuntu.mdvnStat monitors traffic on network interfaces, records data and help to find out the statistics of bandwidth usage over a period of time.
vnStat monitors traffic on network interfaces and records data. Thus, with its help, we can find out the statistics of bandwidth usage over a certain period of time.
## Installing vnStat on Ubuntu 20.04
vnStat is available from the official Ubuntu 20.04 repositories. At the time of writing this tutorial, it contains the latest version. Let’s first update the list of repositories and then install:
```bash
sudo apt update
sudo apt install vnstat
```
You can verify the installation was successful and find out the version using the command:
```
vnstat -v
```
Output:
```
vnStat 2.6 by Teemu Toivola
```
Let’s check that the service is running and is already analyzing traffic:
```bash
systemctl status vnstat
```
Output:
```
vnstat.service – vnStat network traffic monitor
Loaded: loaded (/lib/systemd/system/vnstat.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2021-04-03 02:22:28 UTC; 9min ago
```
If you see **enabled** and **active (running)**, then everything is working.
## Viewing network statistics with vnStat
Right after installation, you need to wait a while for the statistics to accumulate.
To view data for all time and for all network interfaces, run vnstat without parameters:
```
vnstat
```
To view statistics for every 5 minutes:
```
vnstat -5
```
For every hour:
```
vnstat -h
```
And this is how the bandwidth usage diagram will be built:
```
vnstat -hg
```
Statistics for days, months or years, respectively:
```
vnstat -d
vnstat -m
vnstat -y
```
Here’s how you can see the top 10 days by overall channel usage:
```
vnstat -t
```
View summary statistics for 5 seconds in real time:
```
vnstat -tr
```
And so the utility will show what is happening at the current moment:
```
vnstat -l
```
If you have several network interfaces, you can select one of them by specifying its name as a parameter in the command:
```
vnstat -i interface-name
```
To disable monitoring of a specific interface and remove all statistics for it, use:
```
sudo vnstat –remove -i interface-name –force
```
To add it back after that:
```
sudo vnstat –add -i interface-name
```
To apply the settings after adding, you need to restart vnstat:
```bash
sudo systemctl restart vnstat
```
As you can see, vnStat is an easy-to-use yet useful tool for analyzing the use of network interfaces.
https://serverspace.us/support/help/diagnosing-winmtr-windows-server-2019.mdWinMTR - is a powerful tool with graphical interface for diagnosing network connectivity to a remote host on Windows systems.
There is a tool that combines the simplicity and convenience of a GUI application with more capabilities than the classic command line tools for diagnosing a network connection with a remote host. Its name is WinMTR, and in this tutorial we will look at its functionality. The operating system will be Windows Server 2019.
Download WinMTR first. To do this, follow the link [https://sourceforge.net/projects/winmtr/](https://sourceforge.net/projects/winmtr/) and click the "**Download**" button.
Unpack the downloaded archive to a convenient location, open the folder and run **WinMTR.exe** from the folder with the bitness corresponding to your operating system. For Windows Server 2019, this is **x64**. Accordingly, we will use a file from the **WinMTR_x64** folder.
For a simple diagnostic of the network connection to a remote host, just enter its IP address or domain name in the **Host** field, and then click **Start**. All parameters can be left at default.
After that, you will see how WinMTR sends requests every second and which hosts network packets pass along the way. For better accuracy, we recommend waiting 1-2 minutes for some statistics to accumulate. Results can be sent to a technician or support team for analysis. For the convenience of exporting, there are buttons that allow both copying data and creating a text or html document.
Screenshot 1. Diagnosing Network Connection Using WinMTR on Windows Server 2019
Explanation of column names:
- Hostname – the name of the intermediate host. If you uncheck the "Resolve names" checkbox in the settings, then only the IP addresses of the nodes will be displayed.
- Nr – the number of the host in the route.
- Loss% – the ratio of lost and sent packets as a percentage.
- Sent – the number of sent packets.
- Recv – the number of responses received.
- Best – shortest response time after sending the request.
- Avrg – average response time after sending the request.
- Worst – longest response time after sending the request.
- Last – response time after sending the last request.
https://serverspace.us/about/news/subscription-based-service-of-managed-cloud-infrastructure.mdServerspace cloud provider informs on launching the service of managed cloud infrastructure.
Claymont, USA — March 11, 2021 — Serverspace cloud provider informs on launching the service of managed cloud infrastructure. This service is aimed at those already using the provider's infrastructure.
The service allows delegation of servers maintenance to Serverspace technical experts, who will be performing setups, monitor health and security statuses, deal with emerging incidents, etc.
In the service framework three tariff plans are available. Each plan has its specific set of options:
- **Basic**
Works on infrastructure update and maintenance include: software installation and setup, update installation, backup setup, etc.
- **Advanced**
Conditions of the Basic tariff plan are enriched with the availability of your personal account manager, as well as with infrastructure modernization works.
- **Pro**
This tariff plan unites both Basic and Extended conditions, additionally providing infrastructure security works.
### Service operations and billing
- The service operates as the monthly subscription for a selected tariff plan.
- By default management of one server is included into any tariff plan. With the necessity to manage 2 or more servers the cost will rise proportionally.
- Initial activation of the service is paid. The cost is ½ of a selected tariff plan, paid once at activation (non-recurrent).
- If after 1 month of use the subscription is not cancelled, it renews automatically for the next month.
https://serverspace.us/support/help/install-openvpn-server-on-ubuntu-20-04.mdIn this tutorial, we will install the OpenVPN server on Ubuntu 20.04. This will allow you to establish a secure VPN channel.
In this tutorial, we will install the OpenVPN server on Ubuntu 20.04. To do this, you need to log in as the root user. You also must know the public IP of the server with which clients will establish a secure VPN channel.
## OpenVPN installation and configuration
We will use the script to install and configure all the necessary packages to start the OpenVPN server. All you have to do is provide it with the correct public IP address of your server. Let's download it.
```bash
wget https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
```
Make it executable.
```bash
chmod +x openvpn-install.sh
```
Now run the script.
```
./openvpn-install.sh
```
You will be asked to confirm some parameters that have optimal values by default. The only thing that is really worth checking is the public IP of the server. Other parameters should only be changed if you understand what you are doing and why.
Screen 1. OpenVPN installation settings.
In the last step, you need to set the client name and choose whether to protect the configuration with a password or not. For security reasons, it’s better to set a password.
When the process is over, you can check whether the OpenVPN server is listening for incoming connections.
```
ss -tupln | grep openvpn
```
Screen 2. OpenVPN server is listening for incoming connections.
## OpenVPN client connection
We will use another Ubuntu machine to show the client connection process. You can configure any Linux system in this way or download the Windows client from the OpenVPN web site: [https://openvpn.net/community-downloads/](https://openvpn.net/community-downloads/)
At the end of the OpenVPN server configuration process, you will see a message stating that the client configuration has been created and the path to it is specified. Download it to the client.
```bash
scp user@vpn-server:/path/to/configuration.ovpn /home/user
```
Install the OpenVPN client.
```bash
sudo apt install openvpn
```
Now start the client and specify the path to the configuration downloaded from the server.
```
openvpn –config /path/to/configuration.ovpn
```
The next line shows that the connection was established successfully.
```
Wed Dec 9 19:59:58 2020 Initialization Sequence Completed
```
## Add more OpenVPN clients or delete one
To add or remove clients on the server or delete OpenVPN, run the script again and select the appropriate option.
```
./openvpn-install.sh
```
Output:
```sql
What do you want to do?
1) Add a new user
2) Revoke existing user
3) Remove OpenVPN
4) Exit
Select an option [1-4]:
```
https://serverspace.us/support/help/configure-http-2-in-nginx-ubuntu-20-04.mdIn this tutorial we will look at how to configure HTTP/2 in the Nginx web server on the Ubuntu 20.04 system.
HTTP/2 is an improved version of the HTTP protocol that allows you to increase the speed of the site and reduce the load on the web server. All this is possible by making multiple simultaneous requests in a single TCP connection. Increasing the speed not only improves the user experience with the site, but potentially even elevates its position in the search engine results. In this tutorial we will look at how to configure HTTP/2 in the Nginx web server on the Ubuntu 20.04 system.
Necessary conditions:
- The [Nginx web server is installed and its basic configuration is performed](https://serverspace.us/support/help/nginx-virtual-hosts-on-ubuntu-20-04/);
- [Your site uses the HTTPS protocol](https://serverspace.us/support/help/ssl-certificate-on-nginx-ubuntu-20-04/). Most web browsers require an encrypted connection to enable HTTP/2.
## Preparing the system for HTTP/2
First, you need a fresh version of the Nginx web server to be able to enable HTTP/2. Update the packages in the system.
```bash
apt update && apt upgrade
```
## Configuring the HTTP/2 in Nginx
Open the configuration file of your virtual host.
```
nano /etc/nginx/sites-available/domain-name.com
```
Find this line in it:
```
listen 443 ssl;
```
Add **http2** here:
```
listen 443 ssl http2;
```
If you see the line, starting with:
```
listen [::]:443 ssl
```
Then add **http2** in it too.
```
listen [::]:443 ssl http2
```
Save and close the file, and check the configuration for errors.
```
nginx -t
```
Restart Nginx.
```bash
systemctl restart nginx
```
That’s it, the HTTP/2 protocol is enabled on your website.
## Check if the HTTP/2 is enabled
You can check whether HTTP / 2 is enabled directly in the command line of any Linux machine. To do this, you need to install curl. For example, for Ubuntu:
```bash
apt install curl
```
Now enter this command with your FQDN in it:
```bash
curl -I https://domain-name.com
```
Output:
```
HTTP/2 200
```
This means that your site is currently using HTTP/2.
Another way to check it is to use this service: [https://tools.keycdn.com/http2-test](https://tools.keycdn.com/http2-test).
https://serverspace.us/support/help/how-to-install-docker-on-ubuntu-20-04.mdDocker is widely used in the process of continuous development, testing, and deployment of software, i.e. DevOps.
Docker is an open source software for creating and managing containers that contain the runtime environment for a single application and include everything it needs to run. Docker is widely used in the process of continuous development, testing, and deployment of software, i.e. DevOps.
** In the Serverspace you can [create a server](https://serverspace.us/services/cloud-servers.md) with already installed app “Docker”.**
## Docker installation
To install and always get updated to the latest version, you should connect the repository from the Docker developers. First, update the repositories and install the necessary packages.
```bash
sudo apt update
sudo apt install software-properties-common ca-certificates curl gnupg-agent apt-transport-https
```
Prepare the system for adding a repository by adding this key.
```bash
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
```
Add the repository itself.
```
sudo add-apt-repository
"deb [arch=amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable"
```
After executing this command, the system will be ready for installation. Let’s do it.
```bash
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
```
At this point, the installation is complete. Now let’s consider some settings and run a test container.
## Privileges for Docker
To manage Docker and run commands in it, the user must have sudo privileges. If you want to grant sudo rights in Docker to another user, add him to the docker group. But be careful! Users of this group can get root access on the Docker host. Enter this command and replace **user** with the required username.
```
sudo usermod -aG docker user
```
## Running a Docker Test Container
You can check whether docker is capable of running containers with a test container.
```bash
docker container run hello-world
```
After loading the image, you will see a message that the container was launched successfully.
https://serverspace.us/support/help/use-rsync-to-create-a-backup-on-centos-8.mdLearn how to use Rsync to create efficient backups on CentOS 8 by transferring data to a remote server. This tutorial covers setting up Rsync for secure and reliable backup storage on a second server.
In this tutorial, we will use Rsync to create a backup on CentOS 8. Backups will be sent to the second server and stored there. So we need 2 working and [configured CentOS 8 servers](https://serverspace.us/support/help/initial-server-setup-with-centos-8/).
## Installing Rsync packages
Let’s check if the necessary Rsync packages are installed and install them if not.
```bash
dnf install rsync rsync-daemon
```
Start the Rsync daemon and enable its automatic starting.
```bash
systemctl enable –now rsyncd
```
Check if auto start is enabled and working.
```bash
systemctl status rsyncd
● rsyncd.service – fast remote file copy program daemon
Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2020-12-19 13:18:16 UTC; 6s ago
```
Check if the Rsync service is listening on the network port.
```
netstat -tulpn | grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 55746/rsync
tcp6 0 0 :::873 :::* LISTEN 55746/rsync
```
## Configuring the backup source server
Open the configuration file:
```
nano /etc/rsyncd.conf
```
Insert following lines in it:
```
# Rsync daemon global config
pid file = /var/run/rsyncd.pid
# User name and group for reading source files
uid = rsync-user
gid = rsync-user
# Do not allow to modify the source files
read only = yes
# Data Source Configuration
path = /home/user
list = yes
auth users = rsync-user
secrets file = /etc/secret.passwd
```
Create a file with credentials for authorization on this machine.
```
nano /etc/secret.passwd
```
Enter username and password in it.
```bash
rsync-user:rsync-pass
```
Change the file permissions to read-only by the root user.
```bash
chmod 0600 /etc/secret.passwd
```
Restart the Rsync daemon.
```bash
systemctl restart rsyncd
```
You also need to create the user that was specified in the configuration and file with credentials.
```
useradd rsync-user
```
## Сonfiguring the receiving Rsync backup server
Create a file for the password.
```
nano /etc/secret.passwd
```
Enter the password for the Rsync user on the source server.
```bash
rsync-pass
```
Change its permissions here as well.
```bash
chmod 0600 /etc/secret.passwd
```
## Running a backup
Create a folder for backup.
```
mkdir /opt/backup
```
The following command will start the backup. Replace **source-server-ip** with the source server’s IP address.
```bash
rsync -a –password-file=/etc/secret.passwd rsync-user@source-server-ip::data /opt/backup/$(date +%Y-%m-%d)/
```
To set up periodic backups, you can add a cron task with the last command in it.
https://serverspace.us/support/help/how-to-install-docker-on-centos-8.mdLearn how to install Docker and Docker Compose on CentOS 8 with this step-by-step tutorial. Set up containerized environments quickly and efficiently.
Docker is a powerful platform for managing and running containers — lightweight, portable environments that package together everything needed to run an application, including the operating system, libraries, and dependencies. Within a Docker container, a minimal Linux distribution and all required software components are bundled into a self-contained unit. Once built, this container can be easily moved and executed on any system where Docker is installed, regardless of the underlying host OS. This ensures consistent behavior across development, testing, and production environments — one of the key reasons why Docker has become an essential tool for developers, system administrators, and DevOps engineers alike. Its portability, scalability, and efficiency have made it the go-to solution for modern software delivery workflows.
** In the Serverspace you can [create a server](https://serverspace.us/services/cloud-servers.md) with already installed app “Docker”.**
In this step-by-step tutorial, we will walk through the process of installing Docker and Docker Compose on a CentOS 8 system. After the installation, we'll also verify that everything is working correctly by running a test container to ensure your environment is ready for containerized applications.
## Docker installation on CentOS 8
To install and always update Docker to the latest version, add the developer repository to the system.
```bash
dnf config-manager –add-repo=https://download.docker.com/linux/centos/docker-ce.repo
```
Install the Docker package.
```bash
dnf install docker-ce docker-ce-cli containerd.io
```
Start the Docker service and add it to autorun.
```bash
systemctl enable –now docker
```
CentOS 8 uses a firewall other than Docker. Hence, if you have firewalld enabled, you need to add a masquerade rule to it.
```
firewall-cmd –zone=public –add-masquerade –permanent
firewall-cmd –reload
```
## Docker compose installation
Docker is often installed along with Docker compose. It is this utility that allows you to deploy your project to another machine using one command. To download it, run the following command:
```bash
curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
```
Make it executable.
```bash
chmod +x /usr/local/bin/docker-compose
```
## Using Docker as a non-root user
To be able to use Docker as a non-root user, you must add that user to the docker group.
```
usermod -aG docker username
```
Replace the **username** with the desired user name. After executing this command, he will need to log out from the system and log in again.
Be careful! Users of this group can take control of the Docker host.
## Docker test container running
You can verify that Docker is working properly by running a test container.
```bash
docker run hello-world
```
As a result of executing the command, you should see a message that everything is working well.
## FAQ: Installing Docker and Docker Compose on CentOS 8
- **Q: What's the difference between Docker and Docker Compose?**
A: Docker allows you to run individual containers, while Docker Compose lets you define and run multi-container applications using a single YAML file. It's especially useful for managing complex setups with databases, backends, and frontends.
- **Q: Do I always need root access to use Docker?**
A: No, you can configure Docker to work without root by adding your user to the docker group. However, be cautious: users in this group effectively have root-level access to the system.
- **Q: Why do I need to enable masquerading in the firewall?**
A: On CentOS 8, Docker's networking may not work correctly with firewalld unless IP masquerading is enabled. This allows Docker containers to access external networks.
- **Q: How do I check the Docker and Docker Compose versions?**
A: Run docker –version and docker-compose –version to verify installed versions and ensure everything was installed correctly.
- **Q: Is it safe to use the latest version of Docker from the developer repository?**
A: Yes, adding Docker's official repository ensures you’re installing the most stable and secure release directly from Docker Inc., with regular updates.
- **Q: Can I install Docker automatically on my virtual server?**
A: Yes! If you’re using Serverspace, you can deploy a virtual server with Docker preinstalled via the control panel.
https://serverspace.us/support/help/install-bacula-with-postgresql-centos-8.mdIn this tutorial, we will install the main components of Bacula together with the PostgreSQL database on the CentOS 8 server.
We have already considered [installing the Bacula client on the CentOS 8 and saving backups on a remote machine using it](https://serverspace.us/support/help/configure-remote-backups-bacula-centos-8/), did a general [overview of Bacula and installed the Director on the Ubuntu 20.04 server](https://serverspace.us/support/help/backup-ubuntu-server-20-04-with-bacula/). In this tutorial, we will install the main components of Bacula together with the PostgreSQL database on the CentOS 8 server.
## Installing and configuring PostgreSQL
Bacula can work with the PostgreSQL database management system. Let’s install it, init and start.
```
# dnf install postgresql-server
# postgresql-setup initdb
# systemctl enable –now postgresql
```
Create a user for Bacula.
```bash
# sudo su – postgres
$ createuser bacula
$ psql
psql (10.14)
Type "help" for help.
postgres=# ALTER USER bacula PASSWORD 'bacula';
ALTER ROLE
postgres=# ALTER USER bacula LOGIN SUPERUSER CREATEDB CREATEROLE;
ALTER ROLE
postgres=# q
$ exit
logout
```
Uncomment the following setting in the **/var/lib/pgsql/data/postgresql.conf** file:
```
listen_addresses = 'localhost'
```
Change the connection configuration to the following format in the file **/var/lib/pgsql/data/pg_hba.conf**:
```
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
local bacula bacula md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
...
```
Restart the service.
```bash
systemctl restart postgresql.service
```
## Installing and configuring Bacula
First, install Bacula components.
```bash
dnf install bacula-director bacula-storage bacula-console bacula-client
```
The following scripts automate the process of preparing the database, tables, and privileges. You need to execute them on behalf of the newly created user Bacula.
```
cd /usr/libexec/bacula/
sudo -u bacula ./create_postgresql_database
sudo -u bacula ./make_postgresql_tables
sudo -u bacula ./grant_postgresql_privileges
```
Create any folder for storing backups and set bacula as its owner.
```bash
mkdir /opt/bacula
chown bacula:bacula /opt/bacula
```
Open the **/etc/bacula/bacula-dir.conf** file and find the **FileSet** section with the **Full Set** name. Here, in the **Include** section you can set required folders to be backuped. Add **/opt/bacula** in the **Exclude** section.
```
FileSet {
Name = "Full Set"
Include {
File = /home/user
File = /folder/to/backup
}
Exclude {
File = /opt/bacula
}}
```
After that open the **/etc/bacula/bacula-sd.conf** file and set **Archive Device = /opt/bacula** for both **Devices**.
```
Device {
Archive Device = /opt/bacula
}
```
Start the services.
```bash
systemctl enable –now bacula-dir.service
systemctl enable –now bacula-fd.service
systemctl enable –now bacula-sd.service
```
Now the folders specified in section **Include** of the FileSet will be backed up daily. To start the backup task now, go to the Bacula Management Console.
```
# bconsole
```
Enter the **run** command and follow the instructions. To restore files, use **restore** command. To view scheduled Jobs, enter **status** and then **1**. To see all available commands, type **help**.
https://serverspace.us/support/help/zimbra-collaboration-suite-on-centos-8.mdIn this tutorial, we will walk through installing Zimbra Collaboration Suite 9 Open-Source Edition on CentOS 8.
Zimbra Collaboration Suite is a powerful tool for collective work that combines the power of a premium mail server. In terms of capabilities, it can confidently be compared with Microsoft Exchange. In this tutorial, we will walk through installing Zimbra Collaboration Suite 9 Open-Source Edition on CentOS 8.
## Preparation for installation Zimbra Collaboration Suite 9 OSE
First you need to make sure of the capabilities of your server. For correct operation, the developer specifies the requirements for at least 4 processor cores, 16 GB of RAM and 10 GB of hard disk space.
You also need to have a domain name and correctly configure the DNS. To do this, you need to add an **A** record for your mail server (change domain-name.com with your FQDN) **mail.domain-name.com** with the IP address of the server on which you will install Zimbra. The second record is the **MX** record for your domain with the value **mail.domain-name.com** and any priority, such as 10.
The next thing to check is the NTP client. CentOS 8 has Chrony for this, which is installed and configured by default. To check its status, run:
```bash
systemctl status chronyd.service
```
If it is not installed:
```bash
dnf install chrony
```
To check the time in the system:
```
date
```
To set the correct time zone:
```
timedatectl set-timezone Europe/Madrid
```
Now you need to download the distribution. To do this, go to the [official website of the developer](https://www.zextras.com/ru/zextras-build-based-on-zimbra-official-repository/), fill out the form and you will receive links to download Zimbra Collaboration Suite 9 OSE to your email. Select one for CentOS 8 and use wget to download it.
```bash
wget https://download.zextras.com/tgz
```
## Zimbra Collaboration Suite 9 OSE installation
Install Perl to the system.
```bash
dnf install perl
```
Unzip the downloaded file.
```bash
tar xvf zcs-9.0.0_OSE_RHEL8_latest-zextras.tgz
```
Go to the installation folder.
```
cd zimbra-installer
```
Run the installation script.
```
./install.sh
```
During the installation process, read the information and follow the instructions. The necessary Zimbra components are Core, LDAP, MTA, Proxy, Store. The Rest can be omitted.
Upon request, you also need to check that the hostname matches the domain name of your mail server, which we wrote in DNS at the beginning of the tutorial – mail.domain-name.com.
In one moment, you will see a check of the list of basic parameters. If you see lines with asterisks there, you need to configure them. In my case, the administrator password was not configured.
```
******* +Admin Password UNSET
```
To set it press 5 and then 4. When everything is done you will see:
```
*** CONFIGURATION COMPLETE – press 'a' to apply
```
Press 'a'. After that, you can confirm the proposed default parameters, except for the request for configuration changes, where you need to enter a positive response:
```
The system will be modified – continue? [No] y
```
After that, the installation process will start, and all you have to do is wait for it to finish.
When it’s over you’ll be able to access the Zimbra web client in your browser at mail.domain-name.com, and to the administration console at mail.domain-name.com:7071. Enter the username ‘admin' and the password you set earlier to access it.
https://serverspace.us/support/help/test-internet-connection-speed-ubuntu.mdIn this tutorial, we are going to take a look at how to test Internet connection speed on Ubuntu 20.04 using Speedtest-CLI
A situation often arises when you need to determine the bandwidth of the Internet channel. In the desktop version of the operating system, it is enough to enter the corresponding request into a search engine and measure the speed on any of the search results sites. But if it needs to be done in the server version, the method will be different. In this tutorial, we are going to take a look at how to test Internet connection speed on Ubuntu 20.04. All commands must be run as root.
## Install Speedtest
To install Speedtest you need to add its repository. Install the required packages first.
```bash
apt install gnupg1 apt-transport-https dirmngr
```
Add a key for the repository.
```bash
apt-key adv –keyserver keyserver.ubuntu.com –recv-keys 379CE192D401AB61
```
Add the repository itself.
```
echo "deb https://ookla.bintray.com/debian generic main" | sudo tee /etc/apt/sources.list.d/speedtest.list
```
Uninstall another version of Speedtest, if installed.
```bash
apt remove speedtest-cli
```
Update the packages list.
```bash
apt update
```
Finally, install a tool to test Internet connection speed.
```bash
apt install speedtest
```
## Internet connection speed test
To run a simple Internet speed test, run:
```
speedtest
```
Read the license and accept it.
```
Do you accept the license? [type YES to accept]:
```
You will see the results when the test is complete:
```
Speedtest by Ookla
Server: Some Server
ISP: Your ISP
Latency: 1.22 ms (0.04 ms jitter)
Download: 82.59 Mbps (data used: 41.5 MB)
Upload: 91.69 Mbps (data used: 41.3 MB)
Packet Loss: 0.0%
Result URL: https://www.speedtest.net/result/c/4f200375-d643-
```
You can share the result using the Result URL.
You can choose another server to test the speed. Enter this command to see the nearest servers:
```
speedtest -L
```
To select one of them, enter the following command with the server ID instead of “1111”:
```
speedtest -s 1111
```
To see all available options, enter:
```
speedtest –help
```
https://serverspace.us/support/help/how-to-install-postgresql-13-on-centos-8.mdIn this tutorial, we'll walk you through the installation and initial configuration of PostgreSQL 13 on CentOS 8.
In this tutorial, we’ll walk you through the installation and initial configuration of PostgreSQL 13 on CentOS 8. Updates for PostgreSQL 13 will be released for five years through November 2025. You must run all commands as root.
** In the Serverspace you can [create a server](https://serverspace.us/services/cloud-servers.md) with already installed app “Postgres”.**
## Installing PostgreSQL 13 packages
Add PostgreSQL repository to the system.
```bash
dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
```
Turn off the PostgreSQL modules with an older version present in the system.
```bash
dnf -qy module disable postgresql
```
Let's install PostgreSQL 13 server.
```bash
dnf install -y postgresql13-server
```
## Initial configuration
Initialize the database.
```
/usr/pgsql-13/bin/postgresql-13-setup initdb
Initializing database OK
```
Start and enable autostart of the PostgreSQL service.
```bash
systemctl enable –now postgresql-13
```
Set a password for the **postgres** user.
```bash
su – postgres
psql -c "alter user postgres with password 'psql-user-pass'"
ALTER ROLE
exit
logout
```
## Creating a new PostgreSQL user
To create a new user in PostgreSQL, you first need to create it in the system itself.
```
adduser username
passwd username
```
Log in as postgres.
```
su – postgres
```
Create a database user.
```
createuser username
```
Create a database for this user.
```
createdb username
```
The new user can now work with PostgreSQL. Let's log in. Enter username's password when prompted.
```
su – username
Password:
```
Enter the PostgreSQL command line.
```bash
psql
psql (13.1)
Type "help" for help.
username=>
```
https://serverspace.us/support/help/test-internet-connection-speed-centos-8.mdIn this tutorial, we will install the Speedtest CLI and test the speed of the Internet connection in CentOS 8 using it.
The way to test the speed of the Internet connection in CentOS 8 is different from that in desktop systems, where it can be done simply in a browser. In this tutorial, we will install the Speedtest CLI and test the speed of the Internet connection using it.
## Installing Speedtest CLI in CentOS 8
First download the Speedtest CLI repository.
```bash
wget https://bintray.com/ookla/rhel/rpm -O speedtest.repo
```
Now move it to the system repository list.
```
sudo mv speedtest.repo /etc/yum.repos.d/
```
Check if other versions are installed on the system.
```
rpm -qa | grep speedtest
```
Remove them if found.
```bash
sudo dnf remove speedtest-cli
```
Now install the official version of Speedtest CLI.
```bash
sudo dnf install speedtest
```
## Internet connection speed test
To run the test, enter the following command and accept the license:
```
speedtest
```
Result:
```
Do you accept the license? [type YES to accept]: yes
License acceptance recorded. Continuing.
```
```
Speedtest by Ookla
Server: Server's name and ID
ISP: Itglobalcom Bel LLC
Latency: 1.32 ms (0.07 ms jitter)
Download: 90.73 Mbps (data used: 109.7 MB)
Upload: 92.45 Mbps (data used: 41.7 MB)
Packet Loss: 0.0%
Result URL: https://www.speedtest.net/result/c/605ca0ec-
```
To see all available Speedtest CLI options, enter:
```
speedtest -h
```
https://serverspace.us/support/help/google-pagespeed-module-apache-centos-8.mdIn this tutorial, we will configure the Google PageSpeed module in Apache on CentOS 8. It is designed to make the web server respond faster.
The PageSpeed module is designed to optimize the web server and speed up its response. In this tutorial, we will set up the Google PageSpeed module in Apache on CentOS 8. First, you need to have a CentOS 8 server with the [Apache web server installed](https://serverspace.us/support/help/how-to-install-lamp-stack-on-centos-8/).
** In the Serverspace you can [create a server](https://serverspace.us/services/cloud-servers.md) with already installed app “Apache”.**
## Downloading and installing the Google PageSpeed module
To install the Google PageSpeed module, you need the **at** and **wget** packages.
```bash
dnf install at wget
```
Download Google PageSpeed package for Apache.
```bash
wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_x86_64.rpm
```
Install the PageSpeed module itself.
```
rpm -U mod-pagespeed-*.rpm
```
Restart Apache.
```bash
systemctl restart httpd
```
## Set up the Google PageSpeed module
At this point, the PageSpeed module is already working together on the Apache web server. You can change the optimization settings. To do this, open the file:
```
nano /etc/httpd/conf.d/pagespeed.conf
```
It is worth changing the settings only if you understand well what you are doing. The module is set to optimal values by default. Here are some examples of settings. To disable the PageSpeed module, find **ModPagespeed** and change its value to off.
```
ModPagespeed off
```
You can change the cache storage path. It is specified in the following parameter:
```
ModPagespeedFileCachePath
```
And the path for storing logs:
```
ModPagespeedLogDir
```
If you have made any changes to the settings, restart Apache.
```bash
systemctl restart httpd
```
## Accessing the PageSpeed web interface
The PageSpeed module has its own web interface that displays statistics and information on settings. By default, access to the web interface is allowed only from the local server. To change this setting, open the file again:
```
nano /etc/httpd/conf.d/pagespeed.conf
```
Find the following section almost at the very end of the file:
```
```
Add a new **Allow from** directive with the IP address or subnet from which you want to access the web interface:
```xml
Allow from 10.5.5.0/24
```
Restart Apache.
```bash
systemctl restart httpd
```
Now enter the following address in your browser, replacing "Server-IP" with your server’s address.
```
http://Server-IP/pagespeed_admin
```
https://serverspace.us/support/help/automate-regular-tasks-cron-centos-8.mdCron launches configured scripts on a schedule. In this tutorial, we'll take a look at how to automate common tasks using сron on CentOS 8.
Cron is a service that runs in the background and launches configured tasks on a schedule. This makes it very useful for server maintenance. In this tutorial, we’ll take a look at how to automate common tasks using cron on CentOS 8.
## Installing cron on CentOS 8
Cron is present on CentOS 8 by default. If for some reason it is not there, then you can install it with the command:
```bash
dnf install crontabs
```
Now let’s run it and add it to startup:
```bash
systemctl enable –now crond.service
```
## Basic cron settings
To fine-tune the time and frequency of tasks execution, there is the **crontab** command. We’ll talk about it later. In addition, the following folders exist for easier adding tasks:
- /etc/cron.hourly
- /etc/cron.daily
- /etc/cron.weekly
- /etc/cron.monthly
The scripts located in them are executed with the specified frequency. To work successfully, scripts must have execution rights and must not contain dots in their names.
By default, any user can create tasks. To enable creation of tasks for certain users, add them to the **/etc/cron.allow** file. For all others, access will be denied.
To restrict this ability to a specific user, just add his login to the **/etc/cron.deny** file.
Cron writes logs to the following file: **/var/log/cron**.
## Fine-tuning cron tasks
To manage tasks with the ability to specify the exact time and frequency of execution, use the command:
```
crontab -e
```
The scheduler configuration will open in your default text editor (usually vi). To configure another default text editor use the command (insert your favorite text editor instead of “nano”):
```
export EDITOR=nano
```
To display the current cron settings, run:
```
crontab -l
```
To view another user’s cron settings, enter:
```
crontab -u user -l
```
For editing:
```
crontab -u user -e
```
Using the **crontab** command provides a syntax check on save to avoid errors. This is why it is a better idea to use this command to configure cron. For information, the scheduler file can be edited directly. It is located at **/var/spool/cron/**.
It is also worth noting that the assigned tasks will be performed on behalf of the user who added them to his cron.
The cron files use the following syntax:
```
# Example of job definition:
# .—————- minute (0 – 59)
# | .————- hour (0 – 23)
# | | .———- day of month (1 – 31)
# | | | .——- month (1 – 12) OR jan,feb,mar,apr
# | | | | .—- day of week (0 – 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed
```
The * sign means all valid values. Cron job example:
```
30 22 15 * * /opt/script.sh
```
The script **/opt/script.sh** will be run on the 15th of every month at 22:30.
## Special characters and cron expressions
**Comma (,)**. In the schedule, you can specify several values separated by commas to perform the same task at different times:
```
30 22 10,20,30 * *
```
With such a record, the task will be launched on the 10th, 20th and 30th of each month.
**Slash (/)**. Slash is used to indicate a step. For example, executing a task every 10 days will look like this:
```
30 22 */10 * *
```
**Hyphen (-)**. To specify a range of values there is a hyphen. For example, daily execution from the 10th to the 20th of the month:
```
30 22 10-20 * *
```
Special cron variables:
- @reboot – run at system boot
- @yearly or @annually – once a year
- @monthly – once a month
- @weekly – once a week
- @daily – once a day
- @hourly – every hour
- @midnight – at midnight
Example:
```
@daily /opt/script.sh
```
https://serverspace.us/support/help/google-pagespeed-module-nginx-ubuntu.mdIn this tutorial, we will set up the Google PageSpeed Module in Nginx on Ubuntu 20.04. This will speed up the loading of the website pages.
The loading speed of web site pages affects the user experience and the position of the site in search engines results. To analyze and speed up the loading of content, there is a Google PageSpeed module. In this tutorial, we will set up the Google PageSpeed Module in Nginx on Ubuntu 20.04.
## Preparing to install the Google PageSpeed module
First, you must have the Nginx web server installed. If you don’t have it for some reason, you can install it using the following command:
```bash
apt install nginx
```
You also need the curl package to download the installation script and SSL libraries.
```bash
apt install curl libssl-dev
```
Check which version of Nginx and modules are installed.
```
nginx -V
```
Output:
```
nginx version: nginx/1.18.0 (Ubuntu)
built with OpenSSL 1.1.1f 31 Mar 2020
TLS SNI support enabled
configure arguments:
```
The same version is best specified in the following command to minimize the risk when rebuilding Nginx. Here you can see which modules are installed now and add the necessary ones during the installation process.
## Installing the Google PageSpeed module
In the case of Nginx, the PageSpeed module must be built from source. In addition, all dependencies must be installed. To simplify all these processes, the developers suggest using an installation script that will do all this. Nevertheless, it is better to test the operation of sites with this module after rebuilding Nginx on a test server and only then install it on a production server. Use the following command to rebuild Nginx with the Google PageSpeed module. Specify the Nginx version installed on the system in the **–nginx-version** parameter.
```
bash
https://serverspace.us/support/help/install-tigervnc-server-on-centos-8.mdStep-by-step guide to install and configure TigerVNC Server on CentOS 8. Enable remote desktop access, manage multiple users, and set up a GUI securely.
**Virtual Network Computing (VNC)** is a remote desktop technology that allows users to access and control a CentOS server through a graphical user interface (GUI). This is especially useful for system administrators who prefer GUI-based management instead of working exclusively from the command line.
In this tutorial, we'll walk through the installation and configuration of TigerVNC Server on CentOS 8, a fast and lightweight VNC implementation. You'll learn how to configure secure remote desktop access, manage multiple VNC users, and run graphical sessions for efficient server administration.
## Installing a graphical desktop environment
At this stage, it is assumed to work under the root user.
By default, CentOS 8 does not have a graphical user interface, and it is required to connect to the server via VNC. So let’s install Gnome.
```bash
dnf groupinstall "Server with GUI"
```
## Installing TigerVNC
Now let’s install the TigerVNC server.
```bash
dnf install tigervnc-server
```
To connect to the server via VNC, it is better not to use the root user, because it is not safe. In addition, some functions may not work correctly. Therefore, we will create a regular user for connection, set a password for it and add it to the wheel group. This will give grant sudo privileges.
```
adduser username
passwd username
usermod -aG wheel username
```
## Configuring TigerVNC Server
Now we need to assign each user an individual port for connection. To do this, open the file:
```
nano /etc/tigervnc/vncserver.users
```
Add the following line to the end. You can put as many users with ports there as you need. The last digit of the port is shown here. The first part will always be 590x. In this case, we will set port 5902 for the user **username**. The port for each user must be unique.
```
:2=username
```
Now open the default config file.
```
nano /etc/tigervnc/vncserver-config-defaults
```
Add the default configuration here:
```
session=gnome
```
Now you need to log in with the newly created user.
```
su – username
```
Set a password for this TigerVNC server user. If you choose a view-only password, you won’t be able to control your computer, only watch.
```
vncpasswd
```
Now start the TigerVNC service and add it to autostart.
```bash
sudo systemctl enable –now vncserver@:2
```
## Remote Desktop Connection via VNC
Any VNC client application can be used to connect. Enter your server’s public IP address and port 5902 as the VNC server.
Screenshot 1. Connect to VNC server.
Enter your VNC password and you will see your server’s remote desktop.
Screenshot 2. Remote desktop.
To secure the connection – see [How to Establish VNC Connection Over SSH tunnel in CentOS 8
https://serverspace.us/support/help/automate-tasks-with-cron-ubuntu-20-04.mdIn this tutorial, we will set up regular tasks at specific intervals using Cron in Ubuntu 20.04 and walk through its syntax.
Сron allows you to automatically run tasks and scripts at specific intervals. Therefore, it is a very popular server administration tool. Cron is present in all Linux distributions. In this tutorial, we will set up regular tasks using Cron in Ubuntu 20.04 and walk through its syntax.
## Installing cron
Most likely cron is installed on your system. But if suddenly this is not the case, you can fix it with the command:
```bash
apt install cron
```
Add it to autostart and run:
```bash
systemctl enable –now cron
```
## Simple cron configuration
The easiest way to create a regular task using cron is to put the script in one of the following folders:
- /etc/cron.hourly
- /etc/cron.daily
- /etc/cron.weekly
- /etc/cron.monthly
The frequency of execution is indicated in the folder name. It is important to set execution rights and exclude dots from script names.
The cron logs are located here: **/var/log/syslog**. Here are the logs of other applications. Therefore, to see the cron logs, use:
```
grep CRON /var/log/syslog
```
## Advanced cron configuration
To set up cron jobs, enter:
```
crontab -e
```
On the first launch, you will be prompted to select your preferred text editor. Specify your choice and you will see an explanation of the cron setting from the developers, after which you can enter your tasks.
Recording format – the following values are entered through a space:
- minute – from 0 to 59
- hour – from 0 to 23
- day of month – from 1 to 31
- month – from 1 to 12 OR jan, feb, mar, apr, etc.
- day of week – from 0 to 6 (Sunday = 0 or 7) OR sun, mon, tue, wed, thu, fri, sat
- command
Asterisk – for all values. Example:
```
10 20 * * * /var/script
```
For this entry, cron will run the script every day at 20:10.
## Additional cron configuration options
**Hyphen (-)** allows you to specify a range of values. For example, execution on weekdays:
```
10 20 * * 1-5
```
**Comma (,)** allows you to specify multiple values. For example, the launch at 10 and 20 o’clock can be written as follows:
```
10 10,20 * * *
```
**Slash (/)** allows you to specify a value step. For example, run every 10 minutes:
```
*/10 * * * *
```
In addition, there are special expressions for simple creation of tasks: @reboot, @yearly or @annually, @monthly, @weekly, @daily, @hourly, @midnight. When applied, the frequency will correspond to their name. For example:
```
@midnight /var/script
```
To see all configured cron jobs, use the command:
```
crontab -l
```
## Managing cron jobs of other users
You can view cron jobs created by other users if you have administrator rights (**sudo**) or after logging in with the root account:
```
crontab -u username -l
```
And even edit them:
```
crontab -u username -e
```
## Managing the rights to create cron jobs
Initially, each user has permission to create cron jobs.
To prohibit this action for certain users, add their logins to the **/etc/cron.deny** file. Other users will have the right.
To prevent cron jobs from being created for all but some users, add those users to the **/etc/cron.allow** file.
https://serverspace.us/support/help/incremental-backups-rsync-ubuntu-20-04.mdIn this tutorial, we will take a look at how to set up an incremental periodic backup using Rsync on Ubuntu 20.04.
Earlier we looked at [installing Rsync on Ubuntu 20.04 and creating a one-time backup](https://serverspace.us/support/help/use-rsync-to-create-a-backup-on-ubuntu/). To complete the setup from the current guide, follow the steps in the first article.
For many tasks, it is enough to add the execution of such a backup to cron, but these tools allow you to make and store multiple copies of files and have a history of changes over a certain period of time. In this tutorial, we will take a look at how to set up an incremental periodic backup using Rsync on Ubuntu 20.04.
## Backup logic
When backing up for the first time, all target files are placed in the **full** folder. On subsequent launches, the script updates all the files in this folder, and places the old versions of the changed files in the **increment** folder with the corresponding date. Thus, an up-to-date full backup is constantly maintained, as well as a list of changed files for each date. The retention period is configured, as well as the frequency of the task launch.
We performed the basic configuration for the interaction of servers using Rsync in the [first part of the manual](https://serverspace.us/support/help/use-rsync-to-create-a-backup-on-ubuntu/). We are now going to create a script for regular incremental backups.
## Creating a backup script
Create folders to store your backups:
```
sudo mkdir -p /opt/destination/full
sudo mkdir -p /opt/destination/increment
```
When creating a script file, you can select a location folder. If you put it in the **/etc/cron.hourly** folder, synchronization will happen hourly, and if in the **/etc/cron.daily**, then daily, etc. Let’s create a script file:
```
sudo nano /etc/cron.hourly/backup
```
Avoid dots in the script file name in cron scheduler folders. [Learn more about Cron](https://serverspace.us/support/help/automate-tasks-with-cron-ubuntu-20-04/).
In the following script, you must at least specify the correct IP address of the source server. The rest of the values can be left as is. Paste the following lines into the open file:
```bash
#!/bin/bash
# Path to folder for backups
dest=/opt/destination
# Source server IP address
ip=10.5.5.10
# Rsync user on source server
user=backup-user
# The resource we configured in the /etc/rsyncd.conf file on the source server
src=data
# Set the retention period for incremental backups in days
retention=30
# Start the backup process
rsync -a –delete –password-file=/etc/rsyncd.passwd ${user}@${ip}::${src} ${dest}/full/ –backup –backup-dir=${dest}/increment/`date +%Y-%m-%d`/
# Clean up incremental archives older than the specified retention period
find ${dest}/increment/ -mindepth 1 -maxdepth 2 -type d -mtime +${retention} -exec rm -rf {} ;
```
Save the script file and add launch rights:
```bash
sudo chmod 0744 /etc/cron.hourly/backup
```
Now the script will synchronize data in the source and destination every hour, adding old versions of deleted files to the corresponding folder in **/opt/destination/increment/**.
https://serverspace.us/about/blog/7-top-cloud-computing-trends-2021.mdSometime in the future, Covid-19 will be referred to in history as one of the greatest disruptions to ever occur in business models across industries, in the 20th century. This is the year when every business had to learn how…
Sometime in the future, Covid-19 will be referred to in history as one of the greatest disruptions to ever occur in business models across industries, in the 20th century. This is the year when every business had to learn how to operate virtually. The gym lovers had to take sessions through online streaming services, corporate meetings went virtual, and so much more! In the tech world, especially the cloud computing industry, the cloud service providers had to increase their level of innovation to help businesses handle the chaos.
Despite the rise of trends in cloud computing such as the integration of the Internet of Things (IoT) and, big data, Artificial Intelligence (AI), the most important innovations leaned towards helping businesses face the challenges created by the pandemic. This led to a spike in cloud market revenue for [Q12020 $29 billion](https://www.srgresearch.com/articles/covid-19-fails-dent-aggressive-growth-cloud-spending-half-q1-market-belongs-amazon-microsoft).
With [94% of workloads](https://www.analyticsinsight.net/top-10-cloud-computing-trends-for-2021/) expected to run on the cloud, it's critical to underpin the cloud computing trends to expect in 2021. To help your business prepare for any changes in cloud computing models, we have created a list of the 7 top cloud computing trends in 2021, and how they can affect your business and the tech industry at large:
## 1. Moving Cloud Towards The Edge
The 'Edge' simply refers to a computing model that optimizes web applications and internet devices by reducing the data source distance. According to Forrester, components such as the rapid 5G rollout, fast AI & ML integration into cloud computing, and other relevant factors will push the cloud towards the edge. Some of the advantages of edge computing include easy deployment for services in the case of developers, and the ability of the cloud to solve the gap existing between the cloud and end-users. However, this may create a problem when it comes to providing high levels of [data security](https://serverspace.us/about/blog/the-main-ways-to-ensure-data-security-in-the-clouds.md).
## 2. AI and ML Will Revolutionize Cloud Computing
AI will be an integral ingredient in driving the cloud towards its full potential in 2021. Think about what the cloud, in collaboration with AI could do to anticipated inventions such as smart cities, self-driving cars, automated health checks, among other inventions.
Through cloud computing services such as [Infrastructure as a Service (IaaS)](https://serverspace.us/index.md), or Platform as a Service (PaaS), developers working with low budgets will be able to utilize the full power of Artificial Intelligence(AI) to drive the world to a more advanced civilization.
Machine learning will continue playing a critical role to keep data centers running efficiently.
## 3. Increased Demand For Private, Hybrid Cloud, and Multicloud
The argument to choose between private, public, or hybrid may never end. All cloud solutions have their portions of charm and poison in terms of performance, ease of use, data control, and security. Many organizations have learned the hard way that there is no one cloud solution that could work for all enterprises, thus turning into cloud deployment models that give them the freedom to do what they want.
Public cloud is perfect for storage, private cloud is perfect for organizations dealing with sensitive data, and hybrid is for those that want a taste of both worlds.
Due to the difference in services offered by cloud service providers, many organizations will be turning into multicloud in the near future.
In fact, according to [Gartner](https://www.gartner.com/smarterwithgartner/5-approaches-cloud-applications-integration/), 80% of customers will be adopting multicloud into their cloud strategy.
## 4. Rise of The Cloud Native
As mentioned earlier, the rise of the multi-cloud is imminent. To activate the experience to be brought about by this change, cloud native technologies will need to be added to the equation. Here are some components that make up the cloud native technology stack:
1. Containerization
With projected revenue growth of 24 million by 2024, container management repositories hold the most power when it comes to cloud-native capabilities. This is because they can perform tasks such as workload transportation between multiple channels (on-premise, the cloud, and on the edge.)
2. Serverless computing
Being among the 5 best fastest-growing Platform as a Service(PaaS) cloud services in 2020, serverless computing depicts a cloud paradigm that enables developers to build applications across different clouds with different viewpoints.
3. Orchestration Platforms
These platforms, like [Kubernetes](https://serverspace.us/support/glossary/kubernetes.md), reduce the complexity of container management across different cloud service providers.
## 5. Increased need for, Data security, privacy, and Regulations
All the trends we have discussed earlier bring with them a whole new level of innovation, and opportunities, but also a high level of data security risk. According to LogicMonitor, IDC, 33.3% of organizations struggle with cloud adoption because of data security. There are many questions on how the integration of new technologies such as [5G](https://serverspace.us/about/blog/5g-a-threat-to-cloud-computing.md), serverless computing, edge computing, and many others will affect the cloud in relation to cloud security.
Cloud service providers are therefore expected to come up with sophisticated mechanisms that will ensure cloud data security.
## 6. Virtual Desktops May Be The Workplace of The Future
Am writing this blog post on my Chromebook. Why do I tell you this you ask? Because this is a perfect example of what a virtual desktop means. Unlike Amazon and Microsoft who offer Desktop as a Service through workspaces and [windows virtual desktop](https://serverspace.us/services/vps-server/windows.md) respectively, Google offers this through Chromebook devices.
The idea behind this model is to have the entire workstation delivered to our devices. Not only does it improve productivity, but also cuts off operation costs. These, along with more advantages make it likely for this functionality to be adopted in 2021.
## 7. Public Cloud Revenue Will Skyrocket
The pandemic reshaped and re-defined the cloud to enable businesses to be able to operate remotely. Many businesses found themselves desperate enough to sacrifice their customer experience and quality for cost-efficiency.
This led to the accelerated growth of public cloud adoption, along with revenue. Forester predicts that this trend will continue to spike, mainly because the aftermath of the pandemic will likely be forwarded to 2021. The public cloud infrastructure revenue is expected to hit $120 billion in 2021 (35% increase).
## Embracing The Future Cloud
With computer processing speeds doubling almost [every 18 months](https://bigthink.com/think-tank/big-idea-technology-grows-exponentially), it is difficult to underpin the direction which leading technology components such as cloud computing will take in years to come. Despite the uncertainty, we still believe that cloud [computing is the future](https://serverspace.us/about/blog/is-cloud-computing-the-future.md) and that it will shape society for the better in years to come.
https://serverspace.us/about/blog/public-cloud-vs-private-cloud-which-one-is-perfect-for-my-business.mdThe private cloud vs public cloud debate should not exist in the cloud computing ecosystem, mainly because it has no relevance. Both models have advantages and disadvantages and work differently in different contexts.
Cloud computing in a nutshell:
Over the years, cloud computing has gained popularity in the IT and business community. Now, more than ever before, businesses understand that [cloud computing is the future](https://serverspace.us/about/blog/is-cloud-computing-the-future.md) and would like to integrate it into their operations.
For those venturing into the cloud computing universe, the private cloud vs public cloud conversation has been going on for years now.
Before deciding which cloud works for your business, or which side of the debate to be on, it's important you understand the difference between the private cloud and the public cloud, along with the basics of cloud computing.
What is **Cloud computing**? In simple terms, the cloud is a collection of servers hosting databases and software, which are accessible over the internet. These servers are located in data centers all over the globe. Through cloud computing, businesses are able to eliminate the need to perform tasks such as server maintenance and administration.
Now that you have a basic understanding of cloud computing, let's discuss the two major cloud deployment models (Private cloud and Public cloud). There are other types of clouds (hybrid cloud and multicloud) but we are going to focus on the two.
## What is a Private Cloud?
A [private cloud](https://serverspace.us/services/virtual-private-cloud.md), also referred to as enterprise cloud or internal cloud, is a deployment model where resources are exclusively available to one dedicated organization. With this type of model, the [infrastructure](https://serverspace.us/about/blog/what-is-cloud-infrastructure.md) is hosted on the organization's intranet or the cloud service providers' data centers.
This gives the underlying organizations freedom to customize components such as networks, hardware, and storage as they see fit.
It is popular in organizations that handle sensitive data, and prefer the **adaptability** and **scalability** that comes along with it.
## Advantages of Private Cloud
One of the main advantages that the private cloud offers is its amazing [data security and compliance](https://serverspace.us/about/blog/the-main-ways-to-ensure-data-security-in-the-clouds.md) capabilities. Here are some other vital advantages that are offered by the private cloud:
- Private clouds give businesses the freedom to **control** their data and customize their core architecture as they want. It also makes monitoring easy and effective.
- **Customization and reliability**: The private cloud gives businesses the ability to customize the components of their infrastructure in a way that increases their performance. Private clouds are also reliable.
- Private cloud users tend to enjoy **more features** such as monitoring and automation tools compared to public cloud users.
- **Performance**: Public clouds suit companies with powerful computing needs since they offer space for upgrading the infrastructure.
## Disadvantages of Private Cloud
Despite having a plethora of advantages, the private cloud has its own dark side. Here are some disadvantages of private clouds:
- Private clouds are **expensive compared to public clouds**. Components such as software licenses, hardware, network infrastructure, and labor costs contribute to the increased costs. This element limits public clouds to well-established companies.
- **Maintaining and deploying** private clouds is no doubt a daunting task. The business needs to hire a qualified team to maintain the infrastructure which increases the cost of operation. However, you can overcome this challenge by [hiring a managed cloud service provider](https://serverspace.us/services/managed.md) to do the heavy lifting.
- **Limited remote access-due** to its security-first approach, remotes access is limited, which tends to reduce performance in some cases.
## What is Public cloud?
Unlike the private cloud where resources are used by one organization, in the public cloud model, resources are shared between several unrelated tenants. In this model, cloud computing services are available for anyone over the internet and are provided by third-party vendors. This model gives businesses and developers a chance to get access to powerful computing power, storage, infrastructure, and software at [pocket-friendly](https://serverspace.us/services/cloud-servers.md) rates.
## Advantages of Public cloud
There are many advantages that come with using the public cloud deployment model, but the most popular one is its cost-friendliness.
- **Budget-friendly** (Cuts maintenance and hardware costs), which makes it popular among startups and SME.
- Most providers offer **disaster recovery** functionality, which can be expensive to perform traditionally.
- Offers high levels of **scalability and reliability **— Public cloud services provide you with the ability to scale up anytime you want.
- Public clouds are **user-friendly** when it comes to setting up and managing.
## Disadvantages of public cloud
Here are some of the disadvantages and challenges you may face when using the public cloud:
**Data compliance and security issues** — This is the main concern for businesses that want to integrate cloud computing into their workflow. With this model, businesses have to walk the extra mile with their security strategies.
**It can be expensive when not properly managed** — Most public cloud vendors use the pay-as-you-go model, which may sound convenient, but needs extra caution.
**Limited customization capabilities and poor technical support**: The multi-tenancy nature of the public cloud hinders its users from customizing some components. Most public cloud providers also offer poor or no technical support at all, which can limit performance.
Elevated risk of **vendor-lock-in**, which may be disastrous in case of future migration.
## Private cloud Vs Public cloud: The difference
Now that you have a good understanding of the ins and outs of both deployment models, let's spot the major differences between private cloud and public cloud.
| Private Cloud | Public Cloud |
| --- | --- |
| Both on-premise and off-premise infrastructure | Off-premise infrastructure |
| Require capital investment and maintenance costs to get running | No initial capital required to run |
| Single-tenant | Multi-tenant |
| Highly-customizable/td> | Limited customization capabilities |
| Guaranteed high-performance | Reduced performance due to its multi-tenant nature |
| Enhanced data security and compliance capabilities | Basic compliance and data security |
| Possible underutilization of resources | Scalability on demand |
## Which one should I choose?
For the pro-cloud enthusiasts, the pay-as-you-go model, quick resources access, and flexibility are enough to win the battle between the two. The pro-public on the other hand drive clients and the cloud community to believe that security, control, physical data proximity, and elevated levels of management visibility make this the best model for your business.
But, shouldn't the more reasonable debate be about which is perfect for you, as opposed to what is the best?
There is no blueprint to help you choose between the two, but companies with powerful computing needs are better off using the private cloud. You wouldn't imagine a hospital, government organization, or educational facility using the public cloud, would you?
Exactly! The nature of your business and its size are some key elements to choosing between the two.
For startups and small businesses with a limited budget, the public cloud may work perfectly for you.
A combination of both maybe your best option, if you believe you can handle the responsibilities. Of late, there has been increased adoption of the hybrid cloud, which lets your business adopt the good sides of both the public and private cloud.
## Ending the Private cloud Vs Public Cloud Debate
The private cloud vs public cloud debate should not exist in the cloud computing ecosystem, mainly because it has no relevance. Both models have advantages and disadvantages and work differently in different contexts.
Businesses should choose between the two models based on relevant factors such as cost, scalability, business needs, performance, and flexibility.
I hope this article helps you decide which model works for you.
Are you having trouble deciding which deployment model works for you? Reach out to our [experienced team](https://serverspace.us/services/managed.md) and get a consultation on which model will work perfectly for your business.
https://serverspace.us/support/help/apache-virtual-hosts-on-centos-8.mdApache allows you to host multiple domains and websites on a single IP address. In this tutorial, we will configure Apache virtual hosts.
Apache allows you to host multiple domains and websites on a single IP address. This is provided by the virtual host mechanism. Each of them has an individual configuration.
In this tutorial, we will configure Apache virtual hosts. We recently [installed the lamp stack on CentOS 8](https://serverspace.us/support/help/how-to-install-lamp-stack-on-centos-8/). Start by installing Apache and continue with this guide.
## Create folders
Create a folder for each website in the **/var/www/**.
```
mkdir /var/www/domain-name.com
```
Make **apache** user the owner of this folder.
```bash
chown apache:apache /var/www/domain-name.com/
```
## Configuration files for virtual hosts
Apache works with all files with the **.conf** extension from the **/etc/httpd/conf.d/** folder. Create a configuration file for your site.
```
nano /etc/httpd/conf.d/domain-name.com.conf
```
Insert the following lines there. Replace domain-name.com with your domain name.
```xml
ServerName domain-name.com
ServerAlias www.domain-name.com
DocumentRoot /var/www/domain-name.com
ErrorLog /var/log/httpd/domain-name.com-error.log
CustomLog /var/log/httpd/domain-name.com-access.log combined
```
If you want multiple domain names to work with the same content, just list them separated by a space in the **ServerAlias** line.
```
ServerAlias www.domain-name.com domain-name2.com domain-name3.com
```
Save and close the file, restart the service.
```bash
systemctl restart httpd
```
## Apache virtual host testing
To check the operation of the virtual host, place an **index.html** file with some content in the site’s home directory.
```
echo "" > /var/www/domain-name.com/index.html
```
Open the server’s domain name or IP address in the browser. You will see the contents of the **index.html** file.
https://serverspace.us/support/help/install-xrdp-server-on-ubuntu-20-04.mdxRDP allows you to work with a remote computer using a desktop session. In this tutorial, we will install an xRDP server on Ubuntu 20.04.
xRDP is an open source software that allows you to work with a remote computer using a desktop session, just like on a local computer. In this tutorial, we will install an xRDP server on Ubuntu 20.04.
## Installing desktop environment
First, we need to provide our Ubuntu server system with a desktop environment. Let's install Gnome in this example.
```bash
apt install ubuntu-desktop
```
## Installing and configuring xRDP
To install xRDP package, run:
```bash
apt install xrdp
```
You also need to grant access to the **/etc/ssl/private/ssl-cert-snakeoil.key** file for **xrdp** user. It is available to members of the **ssl-cert** group by default.
```
adduser xrdp ssl-cert
```
Restart the service.
```bash
systemctl restart xrdp
```
## Firewall configuration
You need to open access on port 3389.
```
ufw allow 3389
```
It is more secure to open it only for your IP address or network. For example:
```
ufw allow from 10.5.5.0/24 to any port 3389
```
The best practice is to use an SSH tunnel to connect to the remote desktop and make xRDP listen only for local connections.
## xRDP connection to Ubuntu server 20.04
Please note that the user who will connect to xRDP must log out before doing so!
It's time to establish an xRDP connection to your Ubuntu server.
Connect to your server using any RDP client.
Screenshot 1. xRDP log in screen.
Enter the user credentials of your Ubuntu server.
Now you can see the remote desktop initial screen.
Screenshot 2. Remote desktop initial screen.
https://serverspace.us/support/help/install-configure-zabbix-agent-centos-8.mdIn this tutorial, we will walk through the necessary steps to install and configure the Zabbix agent on CentOS 8.
The Zabbix agent runs on client machines, collects and sends data to the Zabbix server. Therefore, all remote machines must be provided with a client for the server to work. We recently [installed Zabbix server](https://serverspace.us/support/help/install-and-configure-zabbix-on-centos-8/). In this tutorial, we will walk through the necessary steps to install and configure the Zabbix agent on CentOS 8.
## Turning SELinux off
It is better to disable SELinux for Zabbix to work correctly. So, open the configuration file.
```
nano /etc/selinux/config
```
Set **SELINUX** to **disabled**.
```
SELINUX=disabled
```
Save and close the file, and then restart the system.
## Installing Zabbix agent
Now add the Zabbix repository to be able to install the agent.
```bash
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
dnf clean all
```
Let’s install the Zabbix agent package.
```bash
dnf install zabbix-agent
```
Now start the service and make it start with system boot.
```bash
systemctl enable –now zabbix-agent
```
## Zabbix agent configuration
Open the Zabbix configuration file.
```
nano /etc/zabbix/zabbix_agentd.conf
```
Find and set the correct values for the next parameters:
```
Server=10.5.5.1
ServerActive=10.5.5.1
Hostname=client
```
The first two of them must contain the IP address of the Zabbix server, and the **Hostname** is the name of this client that will be displayed in statistics on the server.
Now restart the service.
```bash
systemctl restart zabbix-agent
```
## Firewall configuration
Open the 10050, 10051, http,https ports for Zabbix to work.
```
firewall-cmd –add-service={http,https} –permanent
firewall-cmd –add-port={10051/tcp,10050/tcp} –permanent
firewall-cmd –reload
```
https://serverspace.us/support/help/initial-server-setup-with-centos-8.mdServerspace servers have configured network and SSH. In this tutorial, we will walk through the steps for further server setup with CentOS 8.
When you create a new CentOS [Serverspace Cloud server](https://serverspace.us/services/cloud-servers.md) you get a configured server with working network and SSH access to it. In this tutorial, we will walk through the steps for further server setup with CentOS 8.
## Server connection
Connect to your new server via SSH using the instructions from your personal account for Windows or the following command for Linux:
```bash
ssh root@server_ip
```
Enter the IP address of your server instead of **server_ip**. If you selected an SSH key for authentication, the command will look like this:
```bash
ssh root@server_ip -i path/to/ssh/key
```
## Package upgrade
To update packages on the system, use the following command:
```bash
dnf update
```
After the process is complete, you can clear the cache to free up disk space.
```bash
dnf clean all
```
## Creating new users
To use the server with other people, it’s a good idea to create an individual account for each of them. To do this, use the following command (replace **username** with the name of new account):
```
useradd username
```
To set a password for it:
```
passwd username
```
And allow the new user to execute sudo commands:
```
usermod -aG wheel username
```
Note that this will give the user big authority to manage the system, remove and install packages, and so on.
## SSH configuration
If you have selected an SSH key for authentication, you can add a password method for other users. To do this, open the SSH daemon configuration file.
```
nano /etc/ssh/sshd_config
```
Find the **PasswordAuthentication** line and change it to yes.
```
PasswordAuthentication yes
```
To enable SSH key authentication (if it is disabled):
```
PubkeyAuthentication yes
```
Now restart SSH service.
```bash
systemctl restart sshd
```
## SSH key configuration
Another way to increase server security is to use SSH keys and disable the password for user authentication. To do this, each user must create a pair of public and private SSH keys on their local machine (It is a good idea to set a passphrase during key creation):
```bash
ssh-keygen
```
And copy them to the server.
```bash
ssh-copy-id username@server_ip
```
When all users have configured authentication using SSH keys, you can set **no** for **PasswordAuthentication** in the **/etc/ssh/sshd_config** file.
## Firewall configuration
To start the firewall and enable its autorun, use the following command:
```bash
systemctl enable –now firewalld
```
You must add a permission rule for each service that you plan to use. For example, let’s open the HTTPS port.
```
firewall-cmd –permanent –add-service=https
```
After adding the rules, reload firewalld.
```
firewall-cmd –reload
```
It’s a good idea to change the standard SSH port to reduce the risk of automatic password guessing. Open the **/etc/ssh/sshd_config** file. Uncomment the following line and change the value to 2266 for example:
```
Port 2266
```
Save and close the file. Add this port to the firewall and remove the default one.
```
firewall-cmd –add-port=2266/tcp –permanent
firewall-cmd –permanent –zone=public –remove-service=ssh
firewall-cmd –reload
```
Then restart the service.
```bash
systemctl restart sshd
```
Add the port number to connect via SSH now:
```bash
ssh root@server_ip -p 2266
```
Now the initial server setup with CentOS 8 is completed.
https://serverspace.us/support/help/ssl-certificate-on-nginx-ubuntu-20-04.mdLearn how to install and configure an SSL certificate on Nginx for Ubuntu 20.04. Secure your website with HTTPS using this easy, step-by-step TLS/SSL setup tutorial.
In order to use the HTTPS protocol on a website, you must obtain the TLS/SSL certificate and configure Nginx. You can get a certificate from a trusted certificate authority for money in a large number of services. The free version is possible thanks to the [Let's Encrypt service and is described here in step 3](https://serverspace.us/support/help/how-to-get-lets-encrypt-ssl-on-ubuntu/).You also need to perform [basic Nginx configuration](https://serverspace.us/support/help/nginx-virtual-hosts-on-ubuntu-20-04/). If you use self-signed certificates, the browser will display an error when checking security.
## Basic SSL configuration
If you have acquired an SSL certificate, it's important to build the full certificate chain by combining your public key with the intermediate certificates from the certification authorities. This is done by appending the contents of the chain file to the end of your public key file. These files typically use the .pem or .crt formats.
```
cat cert.pem chain.pem > fullchain.pem
```
Now copy files to your server. A good choice is to put the private key (.key or .pem) to the **/etc/ssl/private/** folder, and the **fullchain.pem** to the **/etc/ssl/certs/**.
Now open the configuration file of your virtual host (/etc/nginx/sites-available/domain-name.com) and add the following lines:
```
server {
listen 443 ssl;
server_name domain-name.com; # Your website's domain name
ssl_certificate /etc/ssl/certs/fullchain.pem; # Path to the full chain of your SSL certificate
ssl_certificate_key /etc/ssl/private/privkey.pem; # Path to the private key of your SSL certificate
}
```
Don’t forget to set the **root** and **index** parameters in this section, just like in the HTTP section.
Restart Nginx.
```bash
systemctl restart nginx
```
Now you can check your SSL certificate and configuration using [https://www.ssllabs.com/ssltest/](https://www.ssllabs.com/ssltest/) and proceed with settings that do not correspond to class A.
## Disabling outdated protocols and enabling priority for server ciphers
Specify the use of TLS versions 1.2 and 1.3 and the priority for server ciphers. Open the **/etc/nginx/nginx.conf** file and correct or add the following lines in the **http** section.
```
http {
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
}
```
Restart Nginx.
```bash
systemctl restart nginx
```
## Redirecting from HTTP to HTTPS
To configure the site to work only over HTTPS you need to add a redirect with HTTP. Open the configuration file of your virtual host (/etc/nginx/sites-available/domain-name.com), delete the HTTP section:
```
server {
listen 80;
}
```
Now add a new one with the following parameters:
```css
server {
listen 80;
server_name domain-name.com; # Your website's domain name
return 301 https://$host$request_uri; # Redirect
}
```
Now restart Nginx.
```bash
systemctl restart nginx
```
## FAQ: SSL Certificate Installation and Configuration on Nginx for Ubuntu 20.04
- **Q: Do I need to buy an SSL certificate to enable HTTPS?**
No, you can get a free SSL certificate from Let's Encrypt, which is widely supported and described in this guide. Paid certificates from trusted authorities are also an option for additional features or warranties.
- **Q: What is the difference between a self-signed certificate and one from a certificate authority?**
Self-signed certificates encrypt traffic but browsers will show security warnings because they aren't trusted by default. Certificates from recognized authorities prevent these warnings and ensure visitor trust.
- **Q: Where should I place my SSL certificate and key files on the server?**
Typically, private keys go to /etc/ssl/private/ and certificate chains to /etc/ssl/certs/. Make sure file permissions restrict access to the private key for security.
- **Q: How do I force my website to use HTTPS only?**
Configure Nginx to redirect all HTTP traffic to HTTPS by adding a server block that listens on port 80 and issues a 301 redirect to the HTTPS URL.
- **Q: Which TLS versions should I enable for security?**
Enable TLS 1.2 and TLS 1.3 only, as older versions are considered insecure and vulnerable to attacks.
- **Q: How can I verify if my SSL configuration is correct?**
Use online tools like SSL Labs SSL Test to check your certificate's validity and overall security rating.
https://serverspace.us/support/help/configure-repositories-on-ubuntu-20-04.mdLearn how to configure additional software repositories on Ubuntu Server 20.04 to access missing or updated packages for seamless installation and system upgrade
Installing software on Linux systems typically relies on repositories, which by default offer a wide selection of packages. However, there are cases when a required application is missing or only an outdated version is available. In such situations, you can add an additional repository and install the desired software from there.
How to configure repositories on Ubuntu 20.04:
- [How to list all repositories in Ubuntu](#stepone)
- [How to add a new repository](#steptwo)
- [How to remove a repository](#stepthree)
- [Working with PPA repositories](#stepfour)
In this guide, we'll walk through configuring repositories on Ubuntu Server 20.04.
## Viewing repositories in Ubuntu
To see all currently active repositories on your system:
```
nano /etc/apt/sources.list
```
Repositories may also be listed in individual files located within the **/etc/apt/sources.list.d/** directory.
To disable a specific repository, simply comment out its line.
```
# deb [http://archive.ubuntu.com/ubuntu](http://archive.ubuntu.com/ubuntu) focal multiverse
```
## Adding a repository in Ubuntu
To add a new repository, obtain the address from the software provider and use the **apt-add-repository** command with this syntax:
```bash
apt-add-repository 'deb http://repository_address version branch'
```
Some repositories require a GPG key to be installed first. Let's take MariaDB as an example.
```bash
apt-key adv –fetch-keys '[https://mariadb.org/mariadb_release_signing_key.asc'
```
(https://mariadb.org/mariadb_release_signing_key.asc'[/code)]
Now add the repository:
```
add-apt-repository 'deb [arch=amd64,arm64,ppc64el] [http://mirror.mephi.us/mariadb/repo/10.5/ubuntu](http://mirror.mephi.us/mariadb/repo/10.5/ubuntu) focal main'
```
## Removing repositories
To remove a previously added repository, run the following command:
```
add-apt-repository –remove 'deb [arch=amd64,arm64,ppc64el] [http://mirror.mephi.us/mariadb/repo/10.5/ubuntu](http://mirror.mephi.us/mariadb/repo/10.5/ubuntu) focal main'
```
## Working with PPA repositories
When adding a PPA repository, the system automatically detects it and fetches the necessary security keys.
```bash
apt-add-repository ppa:repository/ppa
```
To remove a PPA repository:
```bash
apt-add-repository –remove ppa:repository/ppa
```
After modifying the list of repositories, don't forget to update the package index:
```bash
apt update
```
## Conclusion
Properly managing repositories in Ubuntu 20.04 is essential for maintaining a secure and up-to-date system. Whether you're adding official sources, third-party repositories, or PPAs, understanding how to list, add, and remove them gives you full control over your software environment. Always verify the trustworthiness of external repositories to avoid introducing unstable packages. By following the steps outlined in this guide, you can ensure reliable software installation and smooth system performance.
https://serverspace.us/support/help/ssl-certificate-on-apache-for-centos-8.mdIn this tutorial, we will install an SSL certificate on the Apache web server for CentOS 8 and enable the HTTPS protocol for the website.
In this tutorial, we will install an SSL certificate on the Apache web server for CentOS 8. This will ensure that website traffic is encrypted and HTTPS is used. First, you need a web server. [How to install Apache on CentOS 8](https://serverspace.us/support/help/how-to-install-lamp-stack-on-centos-8/) was discussed earlier. An SSL certificate is required too. We recently looked at [how to set up Apache virtual hosts on CentOS 8](https://serverspace.us/support/help/apache-virtual-hosts-on-centos-8/). It may be useful to learn it before proceeding to installing an SSL certificate.
** In the Serverspace you can [create a server](https://serverspace.us/services/cloud-servers.md) with already installed app “Apache”.**
## Checking mod_ssl
First, you need to make sure that **mod_ssl** is installed in the system. To check this use this command:
```
rpm -qa | grep mod_ssl
```
If you see no output, install **mod_ssl**:
```bash
dnf install mod_ssl
```
## Place the SSL certificate on the server
You need to create a complete chain of your SSL certificate from its public key and the chain of certificate authorities.
```
cat pub-key.pem ca-chain.pem > full-chain.pem
```
Now place it in the **/etc/pki/tls/certs/** folder.
Place the private key to the **/etc/pki/tls/private/** folder and make it inaccessible to other users.
```bash
chmod -R 600 /etc/pki/tls/private/
```
## Apache configuration
Create a configuration file for your domain name if you don’t have one. Put it in the **/etc/httpd/conf.d/** folder and give it a name with the **.conf** extension. Here and further replace **domain-name.com** with your own.
```
nano /etc/httpd/conf.d/domain-name.com.conf
```
Insert the following configuration there:
```xml
SSLEngine on
# The path to the complete chain of your SSL certificate
SSLCertificateFile /etc/pki/tls/certs/full-chain.pem
# The path to the private key
SSLCertificateKeyFile /etc/pki/tls/private/privkey.pem
# The path to the content of your website.
AllowOverride All
# The path to the content of your website
DocumentRoot /var/www/domain-name.com
# Domain name of your website
ServerName domain-name.com
ServerAlias www.domain-name.com
```
Create the **/var/www/domain-name.com** directory and put the content of your site there, if you haven’t already done so.
## Redirect from HTTP to HTTPS
To redirect requests from unprotected port 80 (HTTP) to encrypted port 443 (HTTPS), add the following lines to the **/etc/httpd/conf.d/domain-name.com.conf** file.
```xml
ServerName domain-name.com
ServerAlias www.domain-name.com
Redirect "/" "https://domain-name.com/"
```
Save and close the file and restart Apache.
```bash
systemctl restart httpd
```
Now you have a configured SSL certificate on Apache with a working HTTPS protocol on your site.
https://serverspace.us/support/help/how-to-get-lets-encrypt-ssl-on-centos-8.mdWhen the server is configured correctly, you can get Let's Encrypt SSL certificate in a few minutes, and then renew it automatically.
Let’s Encrypt is a certificate authority that allows anyone to get a free SSL/TLS certificate and provide encryption for their services (web server, email, etc.). In addition, the Certbot client allows you to automate many processes. After the server is configured correctly, you can get a certificate in a few minutes, and then renew it automatically. To do this, you must ensure that the following points are met:
- Your server has a public IP address;
- You have a domain name. In this tutorial **domain-name.com** used as an example, replace it with yours FQDN;
- The DNS A record of your domain name contains the IP address of your server.
## Installing snapd
Certbot developers recommend using **snapd** to automatically manage and maintain your package. Let's install it.
```bash
dnf install epel-release; dnf install snapd
```
Now, start and enable it.
```bash
systemctl enable –now snapd.socket
```
You also need to create the following symbolic link to enable classic snap support.
```
ln -s /var/lib/snapd/snap /snap
```
After that reboot your system.
```
reboot
```
Make sure that the latest version is installed.
```
snap install core; snap refresh core
```
## Installing Certbot
Make sure that there is no Certbot on your system.
```bash
dnf remove certbot
```
Install Cerbot.
```
snap install –classic certbot
```
Add the following symbolic link to ensure successful launch of Certbot.
```
ln -s /snap/bin/certbot /usr/bin/certbot
```
## Ways to get an SSL certificate Let’s Encrypt
When running Certbot challenge you can enter multiple domain names of your site as aliases when prompted. For example, domain-name.com, www.domain-name.com.
If you don’t have any web server running, use this command and follow the instructions:
```
certbot certonly –standalone
```
It uses the HTTP port to check the response when accessing the domain name. If your web server is already running and you don’t want to stop it, use the following one. You will be asked to enter the domain name and its webroot to confirm your rights to it.
```
certbot certonly –webroot
```
## Wildcard SSL certificate and DNS challenge
Another way to verify your rights to a domain name and its server is DNS challenge. And this is the only way to get a wildcard SSL certificate. You must have access to manage your site’s DNS records. Use this command and follow the instructions:
```
certbot certonly –manual –preferred-challenges dns -d domain-name.com -d *.domain-name.com
```
## Automatic certificate renewal
During the installation of Certobot, automatic certificate updates are configured. This is a timer that will check for certificates which will expire soon in the system and update them. To see if it is configured, look here:
```bash
systemctl list-timers | grep certbot
```
If you see no output, you can check here:
```
cat /etc/crontab
cat /etc/cron.*/*
```
To test the automatic renewal process, run:
```
certbot renew –dry-run
```
https://serverspace.us/support/help/lets-encrypt-ssl-with-apache-on-centos-8.mdThe Certbot package allows you to obtain Let’s Encrypt SSL certificate, install it on the Apache web server, and automatically renew it.
The Certbot package allows you to obtain Let's Encrypt SSL certificate, install it on the Apache web server, and automatically renew it. First, you will need a domain name and a CentOS server with a public IP address. In addition, your domain’s DNS A record must contain the IP address of your server.
Before you begin, [configure Apache virtual host](https://serverspace.us/support/help/apache-virtual-hosts-on-centos-8/).
## Packages installation
We recently watched the process of [installing Certbot using snapd](https://serverspace.us/support/help/how-to-get-lets-encrypt-ssl-on-centos-8/). You can use this method and skip this step in the tutorial, except for the installation of **mod_ssl**. Here we will use an alternative way to install Certbot.
Install an additional package repository.
```bash
dnf install epel-release
```
Now install Certbot, the Apache plugin for it, and mod_ssl.
```bash
dnf install certbot python3-certbot-apache mod_ssl
```
Restart Apache.
```bash
systemctl restart httpd
```
## Obtaining an SSL certificate
To obtain and automatically setup Let's Encrypt SSL certificate on Apache, run:
```
certbot –apache
```
Follow the instructions, they have sufficient explanations. At the stage of choosing a domain name, you can specify 2 options at once: with and without www, separated by commas.
When the process is complete, Apache will be automatically configured to use the newly received certificates. You can verify this by entering your domain name in the browser’s address bar. Additionally, you can test the SSL settings and certificate on the https://www.ssllabs.com/analyze.html page.
## Automatic renewal of the SSL certificate
To enable automatic start of the renewal process, run:
```
echo "0 0,12 * * * root python -c 'import random;
import time; time.sleep(random.random() * 3600)' &&
/usr/local/bin/certbot-auto renew -q" | sudo tee -a /etc/crontab
```
This will add a cron task running twice a day at random times for an hour to reduce the workload on Let’s Encrypt servers. To make sure that the task is present, run:
```
cat /etc/crontab
```
To run the certificate update script test, run:
```
certbot renew –dry-run
```
https://serverspace.us/support/help/setup-lets-encrypt-ssl-nginx-on-centos-8.mdIn this tutorial we will provide an encrypted HTTPS connection for our site on the Nginx using a free Let’s Encrypt SSL certificate.
In this tutorial we will show you how to provide an encrypted HTTPS connection for our site on the Nginx web server using a free Let's Encrypt SSL certificate. Necessary conditions:
- Domain name;
- CentOS 8 server with public IP that appears in the DNS A record of your domain name;
- Installed Nginx web server.
## Installing and configuring snapd
It is better to use **snapd** to install and maintain **Certbot**. This way, it will always be updated, and automatic certificate renewal will be pre-configured. To install **snapd**, use the following commands:
```bash
dnf install epel-release; dnf install snapd
```
Enable and start **snapd**.
```bash
systemctl enable –now snapd.socket
```
Enable classic snap support.
```
ln -s /var/lib/snapd/snap /snap
```
Now reboot the system.
```
reboot
```
Check if the latest version of snapd is installed.
```
snap install core; snap refresh core
```
## Installing the Certbot package
Before installing the Certbot package from snap, you must be sure that there is no other Certbot installed on the system.
```bash
dnf remove certbot
```
Now, install Certbot from snap.
```
snap install –classic certbot
```
Run the following command to make sure that Certbot will start.
```
ln -s /snap/bin/certbot /usr/bin/certbot
```
## Automatic obtaining and installation of Let's Encrypt SSL certificate on Nginx
We recommend configuring the Nginx virtual host by adding its configuration to the **/etc/nginx/conf.d/** folder with the **.conf** extension. If this is not done, the HTTPS configuration for the domain will be added to the **nginx.conf** file. Execute the next command to begin the certificate acquisition process and follow the instructions.
```
certbot –nginx
```
After the process completes successfully, restart Nginx.
```bash
systemctl restart nginx
```
Redirect from HTTP to HTTPS is configured automatically. Now you can check the result by accessing the domain name in the address bar of your browser.
## Automatic SSL certificate renewal
Automatic renewal of the SSL certificate is configured during the installation of Certbot from snap. You can check if the timer is running using this command:
```bash
systemctl list-timers | grep certbot
```
If there is no output, try these locations:
```
cat /etc/crontab
cat /etc/cron.*/*
```
You can also run a test run of auto-renewing your certificates:
```
certbot renew –dry-run
```
https://serverspace.us/support/help/configure-http-2-in-apache-on-centos-8.mdThe HTTP/2 protocol was created as a more advanced version of HTTP that makes the website faster and reduces the load on the web server.
The HTTP/2 protocol was created as a more advanced version of HTTP. It allows you to speed up the site and reduce the load on the web server and communication channel. All this leads to a reduction in costs and even an increase in the site’s position in search engines. In this tutorial, we will configure HTTP/2 protocol in Apache web server on CentOS 8. To get started, you will need an
[SSL certificate installed on Apache](https://serverspace.us/support/help/ssl-certificate-on-apache-for-centos-8/). You can use this tutorial – [How to Setup Let's Encrypt SSL on Apache](https://serverspace.us/support/help/lets-encrypt-ssl-with-apache-on-centos-8/). Most browsers only work with HTTP/2 over HTTPS.
## Preparing the system
First, you need the latest version of Apache. Therefore, you need to update the packages in the system.
```bash
dnf upgrade
```
On CentOS/RHEL 8 systems **mod_http2** is installed with Apache. To make sure that it is in the system, or install it if not:
```bash
dnf install mod_http2
```
## Apache configuration for HTTP/2
Make sure that the HTTP/2 module is enabled in Apache.
```
cat /etc/httpd/conf.modules.d/10-h2.conf
```
Output:
```
LoadModule http2_module modules/mod_http2.so
```
Open the configuration file for your virtual host and find the section **VirtualHost *:443**
```
nano /etc/httpd/conf.d/domain-name.com.conf
```
It may also be in the **domain-name.com-le-ssl.conf** file. Add the **Protocols** parameter there.
```xml
Protocols h2 http/1.1
```
Save and close the file, and then restart Apache.
```bash
systemctl restart httpd
```
## Check if HTTP/2 works
You can check it this way:
```bash
curl -I https://domain-name.com
```
Output:
```
HTTP/2 200
```
Your Apache web server now uses the HTTP/2 Protocol.
https://serverspace.us/support/help/bacula-administration-tool-ubuntu-20-04.mdBacula Administration Tool provides the ability to view statistics of Jobs and manage them through a graphical interface.
Bacula Administration Tool provides the ability to view statistics of Jobs and manage them through a graphical interface. Therefore it requires a desktop version of Ubuntu or [installation of a desktop environment and xRDP](https://serverspace.us/support/help/install-xrdp-server-on-ubuntu-20-04/) for remote connection to the VPS server. You also need to [install and perform the initial configuration of Bacula](https://serverspace.us/support/help/backup-ubuntu-server-20-04-with-bacula/). In this tutorial, we will install and configure Bacula Administration Tool in Ubuntu 20.04.
## Bacula Administration Tool installation and configuration
To install Bacula Administration Tool use this command:
```bash
apt install bacula-console-qt
```
You can install it on a remote machine from the one where Bacula Director is running. In this case, you need to change the configuration for connecting to the Director. Open the **/etc/bacula/bat.conf** file and set the right **Name**, **Address** and **Password** for your Bacula Director.
```
Director {
Name = Bacula-Director
DIRport = 9101
address = 10.5.5.5
Password = "password"
}
```
If you installed it on the same computer where Bacula Director is running, you don’t need to do this. All you need to do is check whether the parameters in the **/etc/bacula/bat.conf** file match the parameters in the **/etc/bacula/bacula-dir.conf** file.
## Launching the Bacula Administration Tool
It is not a good idea to run the Bacula Administration Tool from the root user. In some cases, the app may not start. To run it as a regular user, you must add it to the **bacula** group.
```
sudo usermod -a -G bacula user
```
Log out and log in again as this user using SSH. If you log in as it only via xRDP, then you need to do it via SSH. For example, after logging in via SSH as the root user:
```
su – user
exit
```
Now log in as this regular user via xRDP and launch the app.
```
bat
```
Or you can find Bacula Administration Tool in the list of installed applications and launch it.
Now you can see the Bacula Administration Tool window. Here you can see all created entities, start and disable Jobs, restore, and much more.
Screen 1. Bacula Administration Tool window.
https://serverspace.us/support/help/configure-remote-backups-bacula-centos-8.mdIn this tutorial, we will install the Bacula client on a CentOS 8 server and use it to back up files to a remote server.
In this tutorial, we will install the Bacula client on a CentOS 8 server and use it to back up files. Backups will be stored on a remote server. For this purpose, we will use the [Ubuntu machine where we installed and configured Bacula Director](https://serverspace.us/support/help/backup-ubuntu-server-20-04-with-bacula/). You can use any other operating system for this: CentOS, RHEL, Debian, etc. Bacula configuration will be the same.
## Installing and configuring the Bacula client
Install the client.
```bash
dnf install bacula-client
```
If your firewall is enabled, add a Bacula rule to it.
```
firewall-cmd –add-service=bacula-client –permanent
firewall-cmd –reload
```
Now open the Bacula client configuration file.
```
nano /etc/bacula/bacula-fd.conf
```
Specify the password for the Client and the name of the Bacula director from the **/etc/bacula/bacula-dir.conf** file on the server:
```
Director {
Name = bacula-dir
Password = "password"
}
```
You will also need to enter the client’s name and the IP address that Bacula Director will use to access the client.
```
FileDaemon {
Name = CentOS-client-fd
FDAddress = 10.0.0.5
}
```
Save the file and enable Bacula client.
```bash
systemctl enable –now bacula-fd
```
To ensure the ability to restore files on this machine, create a folder and assign Bakula as its owner.
```bash
mkdir /var/bacula
chown bacula:bacula /var/bacula
```
## Bacula Director configuration
You need to make some changes on the server machine to enable remote backup. First, enter the IP address that Bacula client will use to access this machine in the **SDAddress** parameter of the **Storage** section in the **/etc/bacula/bacula-sd.conf** file.
```
Storage {
SDAddress = 10.0.0.10
}
```
Do the same thing for the **DirAddress** in the **/etc/bacula/bacula-dir.conf** file.
```
Director {
DirAddress = 10.0.0.10
}
```
And in the **Address** parameter of the **Storage** section.
```
Storage {
Address = 10.0.0.10
}
```
And the last one is in the **/etc/bacula/bconsole.conf** file, enter the same IP in the **address** parameter.
```
Director {
address = 10.0.0.10
}
```
You need to add information about the client and its backup parameters to the **/etc/bacula/bacula-dir.conf** file. **Name**, **Address** and **Password** must be the same as we specified on the client in the **/etc/bacula/bacula-fd.conf** file.
```
Client {
Name = CentOS-client-fd
Address = 10.0.0.5
FDPort = 9102
Catalog = MyCatalog
Password = "password"
}
```
Add the backup path information to the **File** parameters in a new **FileSet** section with a unique name.
```
FileSet {
Name = CentOS-FS
Include {
Options {
signature = MD5
}
File = /path/to/be/backuped1
File = /path/to/be/backuped2
}
}
```
Then insert a new schedule with a new name and the required backup frequency.
```
Schedule {
Name = CentOS-Daily
Run = Full daily at 01:00
}
```
The new pool allows you to separate backup files from existing ones.
```
Pool {
Name = CentOS-Pool
Pool Type = Backup
Label Format = CentOS-
}
```
Finally, insert a Job section and enter the **Name** parameters from newly created **Client**, **FileSet**, **Schedule**, **Pool** sections in corresponding fields.
```
Job {
Client = CentOS-client-fd
Name = CentOS-Backup
JobDefs = DefaultJob
Enabled = yes
Level = Full
FileSet = CentOS-FS
Schedule = CentOS-Daily
Pool = CentOS-Pool
Storage = LocalSD
Write Bootstrap = "/var/lib/bacula/RemoteBackup.bsr"
}
```
You can insert another **Job** section to restore files.
```
Job {
Client = CentOS-client-fd
Name = CentOS-Restore
Messages = Standard
FileSet = CentOS-FS
Pool = CentOS-Pool
Storage = LocalSD
Type = Restore
Bootstrap = "/var/lib/bacula/RemoteBackup.bsr"
Where = /var/bacula # Path on the client to restore the backup
}
```
The backup task will now run according to the configured schedule.
## Starting backup and restore
Tasks can be started manually. There is a management console for this purpose. It also provides information about scheduled tasks and many others. To enter it enter:
```
bconsole
```
Output:
```
Connecting to Director 10.0.0.10:9101
1000 OK: 103 Ubuntu-Server.local-dir Version: 9.4.2 (04 February 2019)
Enter a period to cancel a command.
*
```
You can see all the commands by typing **help** command. To run a Job enter **run** or to start a restore Job enter **restore** and follow the instructions.
https://serverspace.us/support/help/backup-mysql-on-centos-8-with-bacula.mdIn this tutorial, we will set up a regular MySQL database backup process using open source backup tool Bacula on CentOS 8.
We have already briefly [examined what the Bakula consists of](https://serverspace.us/support/help/backup-ubuntu-server-20-04-with-bacula/). In this tutorial, we will set up a regular MySQL database backup process using Bacula on CentOS. If you want to set up [backups of a remote CentOS 8 server, read this article](https://serverspace.us/support/help/configure-remote-backups-bacula-centos-8/). After completing these settings, you can simply add the settings from this tutorial and get a backup of the MySQL database from a remote server.
## Packages installation
Let’s install all the necessary packages.
```bash
dnf install bacula-director bacula-storage bacula-console bacula-client
```
## MySQL configuration
Change the default database management system to MySQL if it is not already set.
```
alternatives –config libbaccats.so
There are 3 programs which provide 'libbaccats.so'.
Selection Command
———————————————–
1 /usr/lib64/libbaccats-mysql.so
```
Select **1**.
Connect to MySQL.
```bash
mysql -u root -p
```
Create a database and user for Bacula.
```sql
create database bacula;
create user bacula@localhost identified by 'password';
grant all privileges on bacula.* to bacula@'localhost';
flush privileges;
exit
```
Run this script to create the table structure.
```
/usr/libexec/bacula/make_mysql_tables -p
```
For the backup task, create a new user and assign it only the necessary access rights.
```bash
mysql -u root -p
create user dump@localhost identified by 'password';
grant select, lock tables on *.* to dump@localhost;
grant process on *.* to dump@localhost;
flush privileges;
exit
```
## Preparing scripts
To make Bacula capable of creating backups of a MySQL database, you must first dump it. We will use Bakula’s ability to run custom scripts before and after the backup Job. Let’s create a script to create a database dump.
```
nano /etc/bacula/pre-mysql.sh
```
Insert these commands into it. Note that the **dump** user password must be entered after the **-p** parameter without a space and change **database_name** to the name of the target DB.
```bash
#!/bin/bash
# Preparation of the folder
rm -rf /opt/mysql-backup/
mkdir -p /opt/mysql-backup/
# Backup
mysqldump -u dump -ppassword database_name > /opt/mysql-backup/dump$(date +%Y-%m-%d_%H:%M).sql
```
And a script to clear disk space after backup.
```
nano /etc/bacula/post-mysql.sh
```
Insert the following lines here.
```bash
#!/bin/bash
# Clearing the folder
rm -rf /opt/mysql-backup/
```
Make the scripts executable.
```bash
chmod +x /etc/bacula/pre-mysql.sh
chmod +x /etc/bacula/post-mysql.sh
```
## Bacula configuration
Open the /etc/bacula/bacula-dir.conf file and set the password for MySQL **bacula** user in the **dbpassword** parameter of the **Catalog** section.
```
Catalog {
Name = MyCatalog
dbname = "bacula"; dbuser = "bacula"; dbpassword = "password"
}
```
Insert the sections with MySQL backup settings here.
```
FileSet {
Name = MySQLFileSet
Include {
Options {
signature = MD5
}
File = /opt/mysql-backup
}}
Schedule {
Name = MySQL
Run = Full daily at 03:00
}
Job {
Name = "MySQLBackup"
JobDefs = "DefaultJob"
Enabled = yes
Level = Full
FileSet = MySQLFileSet
Schedule = MySQL
Storage = File1
ClientRunBeforeJob = "/etc/bacula/pre-mysql.sh"
ClientRunAfterJob = "/etc/bacula/post-mysql.sh"
Write Bootstrap = "/var/spool/bacula/%c.bsr"
}
```
Start and enable Bacula services.
```bash
systemctl enable –now bacula-dir.service
systemctl enable –now bacula-fd.service
systemctl enable –now bacula-sd.service
```
Now backups of the selected database will be made at the specified time.
https://serverspace.us/support/help/restoring-a-root-password-via-recovery-boot.mdLearn to restore your root password via recovery boot. Follow the straightforward instructions to regain control swiftly and securely
This instruction describes how to use a recovery image to restore a password for a root user.
## Password recovery
First, open the server that you want to restore the root password for, from the server list.
Open a **Recovery tab** and select **"Boot from the recovery image"**.
Confirm a connection to the recovery image.
The boot type will be changed.
**Important**: after booting from the recovery image, the server will be accessible via a Web console!
To boot from the recovery image, you must restart the server from the control panel or using OS tools. Next, let’s look at an example of a reboot from the control panel.
Go to the **Actions** —> **Power** tab and restart the server.
Confirm the server reboot.
After restarting the server, open the **Web console**.
Select the first option ***Boot SystemRescueCd using the default options**.
If a command line has been already displayed in the console, the boot option was selected by default.
Next, you need to find out which disk partition has got the system:
fdisk -l
In this case, it is /dev/vda2/.
Create a temporary directory for a new system:mkdir /tmp/reset
Mount the system partition to the created folder:mount /dev/vda2 /tmp/reset
Change the root directory to a new one: chroot /tmp/reset
To change the root password, run the following command:passwd
Enter and confirm your new password.
PAY ATTENTION: When entering a password, the password characters are not displayed, but they are still entered!
Change the recovery image boot to the system boot in the **Recovery** tab in the control panel.
Restart the server from the control panel.
After restarting the server, connect to the server with a new password as usual.
https://serverspace.us/services/vps-server/windows.mdScalable Windows VPS hosting with free traffic, a pay-as-you-go system, 24/7 human support and 99,9% SLA. Sign up to get a free trial.
Superior cloud based VPS on Windows. Licenses are included.
https://serverspace.us/about/blog/8-cloud-computing-mistakes.mdThose are just but a tip of the iceberg of how a slight trip in your cloud computing strategy may end up costing you, in terms of finances and scalability. Those are well-established companies yet they can lose so much…
Whilst the cloud continues to act as a pivotal component in the operation of more than 90% of the businesses in 2020, the pill is bitter to swallow for tech-centric startups and SMEs. According to [research](https://review42.com/what-percentage-of-startups-fail/#:~:text=90%25%20of%20new%20startups%20fail,to%20the%2010%2Dyear%20mark.), 90% of startups fail(75% being venture-backed up), and only 40% of startups generate profit. Many startups in this decade are born in the cloud. This is mainly because they need to save as much money as possible thus opting to use cloud [IT infrastructure services](https://serverspace.us/index.md) as opposed to on-premise IT resources. Not only is it cost-effective, but also provides them with flexibility, flexibility, and scalability.
But, most startups and SMEs make mistakes when adopting cloud computing into their operation. Most of them don't even know they are making them. Back in 2018, the tech giant [Adobe](https://www.theinformation.com/articles/as-aws-use-soars-companies-surprised-by-cloud-bills) lost $80,000 in cloud costs in Azure due to a mistake by the development team. Pinterest also faced the same predicament after their spending in AWS exceeded their projected budget by $20 million. This happened because of unpredicted traffic spikes.
Those are just but a tip of the iceberg of how a slight trip in your cloud computing strategy may end up costing you, in terms of finances and scalability. Those are well-established companies yet they can lose so much from cloud computing mistakes. What are the chances that your startup will make the same mistakes? Very high.
To help you achieve your end goals in your startups and business, here are common mistakes startups make, and some solution ideas.
## Lack of a Concrete Cloud Strategy
Having a well-established cloud strategy is the key to success when perforating the cloud. Many startups get caught entangled in the web of the excitement of deploying their applications or solutions, that they forget to evaluate the role the cloud will play in their startup. According to [Gartner](https://www.gartner.com/en/information-technology/glossary/cloud-strategy#:~:text=A%2520cloud%2520strategy%2520is%2520a,cloud%2520adoption%2520or%2520migration%2520plan.), a cloud strategy is a central role that the cloud plays in an organization. Many startups fail to involve other departments such as business, and they end up making the wrong decisions. They may therefore adopt the cloud, without even knowing the role it will play in the organization. This may reduce the benefits they get from adopting the cloud.
### Solution Ideas and Tips
- Always try to involve all the departments in your firm when coming up with cloud strategies.
- Don't forget to have an exit plan in your strategy, sometimes things never work as expected.
- It's never too late to come up with a cloud strategy.
- It will be good if your team works on the strategy, and not outsourced professionals.
## Choosing the Wrong Cloud Service Provider
Cloud service providers have different business models, hence different services. Most startups don't do enough research to know what could work for them, and what won't. For instance, when they are looking for a cloud infrastructure provider, they don't follow the necessary steps to find a provider that is suitable to help them achieve their end goals.
This can be a problem, especially when the vendor has a complicated payment model, or does not offer a platform powerful enough for you to scale.
### Solution Ideas and Tips
- Perform an evaluation before selecting a cloud service provider. You can outsource a professional if none in your team can do that.
- Chose a service provider based on your needs and not a popularity.
- Try different cloud vendors before coming to a decision.
For startups looking for IT infrastructure services, you can go through this [resource](https://serverspace.us/about/blog/choosing-cloud-infrastructure-service-provider.md) to help you in the decision-making process.
## Lack of Security-first approach
Data security is one of the main concerns when businesses adopt cloud computing. Despite the cloud having a sophisticated security architecture, it is important that you have a strategy on how you handle your [data security](https://serverspace.us/about/blog/the-main-ways-to-ensure-data-security-in-the-clouds.md) in the cloud. Many startups lack a security-first approach when integrating the cloud into their workflow. In 2020, [49%](https://www.darkreading.com/perimeter/49--of-cloud-databases-left-unencrypted/d/d-id/1333462) of businesses have not encrypted their databases, while [33.3%](https://hostingtribunal.com/blog/cloud-computing-statistics/#gref) of businesses report that cloud security is the greatest hindrance to cloud adoption. Data breaches are costly and may kill your scalability. In 2020, $1.52 was lost in data breaches, a slight increase from $1.42 million in 2019.
It is therefore important that you lay a foundation that keeps your cloud security at the forefront.
### Solution Ideas and tips
- The best solution for making sure that your startups and businesses are customized data security is taking all the cloud [security safety practices](https://serverspace.us/about/blog/the-main-ways-to-ensure-data-security-in-the-clouds.md) into consideration.
- Investigate how your cloud service provider is handling compliance laws, along with security measures they have in place.
## Not Conducting a business analysis
Many startups and SMEs fail to understand the need of asking the question; what benefits would I get from adopting the cloud? It doesn't matter whether you are adopting cloud computing to increase performance in an app while reducing operation costs, or adopting it into a business to increase productivity. You should try to answer this question. Not only should you answer it, but also document it as a guide in making decisions.
For instance, jumping right in and choosing a cloud service provider without doing an analysis based on your business objectives is likely to end up in an expensive mess.
### Solution Ideas and tips
Make data-driven decisions while using your business objectives as a guide.
## Jumping Head-first Into The Cloud
Jumping head-first into the cloud is a trap that many businesses fall for when moving their resources to the cloud. Some startups and businesses have solutions or applications that are very complex, running tens of millions of code.
Moving all the components of applications at once to the clouds is likely to cause maintenance problems or lead to poor performance.
### Solution Ideas and tips
Move your applications to the cloud in stages.
## Neglecting basic requirements (I.E Bandwidth)
This is a basic requirement, yet many startups and businesses tend to underestimate its important. A good internet connection is required to get the best out of the cloud. Also, businesses that depend on the cloud for collaboration will have a hard time being productive.
### Solution Ideas and tips
Get a reliable internet service provider, and a backup plan in times of downtimes.
## Optimistic enough not to design for failure
Pessimism is a key ingredient in scaling your startup, but in other cases, it will be the downfall of you. Just like traditional IT infrastructure, the cloud sometimes goes down.
It is therefore key to implement the common saying in the cloud community, "Design for failure and nothing will fail".
### Solution Ideas and tips
- Implement a cloud-optimized failure-tolerant cloud architecture.
- Choose a [cloud service provider](https://serverspace.us/index.md) with reliable data recovery mechanisms.
## Not Projecting For Growth
This is yet another mistake that not only startups and SMEs make, but also well-established companies. Let's use Pinterest as an example. As stated earlier, they lost $20 million on cloud infrastructure for not making a good forecast of their growth.
### Solution Ideas and tips
- Keep tabs on your numbers and look for trends that can change your cloud needs.
- Find a cloud service provider that can [scale up](https://serverspace.us/index.md) with you.
## Wrapping it Up
Most of the mistakes discussed can easily be avoided, and can save you a lot of operational costs. We hope the article will help you reap the benefits that come with cloud computing without putting your scalability at risk.
With high-performance, reliability, scalability, and security in mind, Serverspace is the missing piece that your startup has been looking for all along. Do you want to scale your business by having all components needed to compete in the competitive world of business in one place? If yes, be sure to check out our irresistible IT infrastructure offers [here](https://serverspace.us/index.md).
https://serverspace.us/about/news/public-api-for-service-management.mdServerspace launched the Public API service. Thanks to it, the actions available in the control panel can now be performed using the public API.
Serverspace launched the Public API service. Thanks to it, the actions available in the control panel can now be performed using the public API.
The procedure for working with the Serverspace API is traditional: first, you need to authenticate using the API key. It can be generated by the project owner in the control panel settings. When you create a key, you can assign attributes to it – name, value, issue date, and expiration date. The key value must be passed with each request in the X-API-KEY header.
Among the functions:
- viewing available operating systems, configurations and locations for creating servers and networks;
- creating snapshots of servers. They can be structured, view details and return the server to them;
- providing full or partial access to the infrastructure to other people to work together with networks, balance, servers and others;
- creation and removal of cloud servers, disks, isolated networks and network interfaces;
- viewing properties of elements of the cloud network infrastructure. It is possible to control their power supply and change the configuration.
You can find more information about working with the API in the [official documentation](https://serverspace.us/services/api.md).
https://serverspace.us/support/help/configure-repositories-on-centos-8.mdOften, the standard package repositories on CentOS are not enough. The process of managing them will be described in this guide.
Only a small number of packages are available in pre-installed CentOS repositories. Moreover, these are not always the latest versions. This is why you often need to connect additional repositories. This process will be described in this tutorial.
To see installed repositories in CentOS use the command:
```bash
yum repolist
```
To list all packages with their versions in the repository (change BaseOS to any repository name):
```bash
yum repo-pkgs BaseOS list
```
## Installing popular additional repositories on CentOS 8
EPEL (Extra Packages for Enterprise Linux) contains a huge number of packages. This is the most popular additional repository. Let's install it.
```bash
yum install epel-release
```
Remi is another popular additional repository for CentOS 8. To use it, Epel must be installed on the system. Please note that packages from this repository have the same names as in the official ones, so this may lead to unwanted updates. To install it, use the command:
```
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-8.rpm
```
## Installing a repository for a single package
Let’s consider installing an individual repository using Mysql as an example. This method allows you to get the latest updates much earlier than they appear in other package repositories, such as BaseOS or EPEL.
Download the package:
```bash
wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
```
And install it.
```
rpm -Uvh mysql80-community-release-el8-1.noarch.rpm
```
## Disabling and deleting repositories
To avoid using the repository during the current system update, use the command:
```bash
yum update –disablerepo=remi-modular
```
To disable a repository in the system without deleting it, use:
```bash
yum-config-manager –disable epel
```
After that you can enable it again:
```bash
yum-config-manager –enable epel
```
To completely delete a repository, use the following command with the appropriate name:
```bash
yum remove epel-release
```
https://serverspace.us/support/help/remote-backups-using-bacula-on-ubuntu.mdBacula is powerful and complex backup tool. In this tutorial, we will add settings for backing up a remote client using Bacula on Ubuntu 20.04
We recently set up file [backup on a local Ubuntu Server 20.04 with Bacula](https://serverspace.us/support/help/backup-ubuntu-server-20-04-with-bacula/), we will use this server as Bacula Director and Storage. In this tutorial, we will add settings for backing up a remote client.
## Installing and configuring the client
The client is a remote machine running Ubuntu Server 20.04 whose data will be backed up. Let's install the Bacula package for it.
```bash
sudo apt install bacula-client
```
Open the configuration file.
```
sudo nano /etc/bacula/bacula-fd.conf
```
Copy the password from the first Director's section to an available location for future use on the Bacula server.
```
Director {
Name = Ubuntu-Server # Enter the name of the server's Bacula Director here
Password = "6L8hAXhC3BES4OlbkI2F-v6Xq66Dem05v" #Copy this value
}
```
Also set the “Name” and “FDAddress” values in the FileDaemon section. The same name that we will set on the Bacula server for this file daemon client, and “FDAddress” must contain the IP address at which this client is available.
```
FileDaemon {
Name = Ubuntu-Client-fd
FDport = 9102
WorkingDirectory = /var/lib/bacula
Pid Directory = /run/bacula
Maximum Concurrent Jobs = 20
Plugin Directory = /usr/lib/bacula
FDAddress = 10.5.5.5
}
```
Save the file and restart the service.
```bash
sudo systemctl restart bacula-fd
```
To be able to restore files on this machine, create a folder and make bacula its owner.
```bash
mkdir /opt/restore
chown bacula:bacula /opt/restore
```
## Configuring Bacula server
The Bacula server is already configured. We will use the existing storage and add a configuration to back up the client.
Set the server IP address in the "SDAddress" parameter of the "Storage" section in the **/etc/bacula/bacula-sd.conf** file.
```
Storage {
SDAddress = 10.5.5.1
}
```
Open the Bacula Director configuration file **/etc/bacula/bacula-dir.conf**.
Enter the server IP address in the "DirAddress" field of the Director section.
```
Director {
Name = Ubuntu-Server
DirAddress = 10.5.5.1
}
```
Enter the same address in the "Address" parameter of the "Storage" section.
```
Storage {
Address = 10.5.5.1
}
```
You also need to enter it in the "Address" parameter in the **/etc/bacula/bconsole.conf** file.
Now go to the **/etc/bacula/bacula-dir.conf** file again and add a new "Client" section.
```
Client {
Name = Ubuntu-Client-fd # Value of the "Name" field in the "FileDaemon" section on the client
Address = 10.5.5.5 # IP address of the client
FDPort = 9102
Catalog = MyCatalog
Password = "6L8hAXhC3BES4OlbkI2F-v6Xq66Dem05v" # Paste here the value of the "Password" parameter in the "Director" section on the client
}
```
Add a new "FileSet" section with a unique name. The "File" parameters set the paths to be backed up. You can add any number of them.
```
FileSet {
Name = "RemoteFS"
Include {
Options {
signature = MD5
}
File = /home/user1
File = /home/user2
}
}
```
Add a new "Schedule" section, set any unique name for it and select a time for backup.
```
Schedule {
Name = "RemoteDaily"
Run = Full daily at 05:00
}
```
Add a new Pool section.
```
Pool {
Name = RemotePool
Pool Type = Backup
Label Format = "RM-" # New label for separating files in the backup storage from local backups
}
```
Add a new Job section.
```
Job {
Client = "Ubuntu-Client-fd" # The "Name" value of the recently created "Client"
Name = "RemoteBackup"
JobDefs = "DefaultJob"
Enabled = yes
Level = Full
FileSet = "RemoteFS" # The name of recently added "FileSet' section
Schedule = "RemoteDaily" # The name of the schedule for this Job
Pool = "RemotePool" # Must be equal to the recently created "Pool" name
Storage = LocalSD
Write Bootstrap = "/var/lib/bacula/RemoteBackup.bsr"
}
```
Also add the "Job" section to be able to restore data.
```
Job {
Name = "RemoteRestore"
Type = Restore
Client= "Ubuntu-Client-fd"
FileSet="Full Set"
Storage = LocalSD
Pool = "RemotePool"
Messages = Standard
Where = /opt/restore # Path to the folder that we created on the client for data restore
Bootstrap = "/var/lib/bacula/RemoteBackup.bsr"
}
```
Save and close the file and restart the Bacula service.
```bash
sudo systemctl restart bacula-dir
```
## Running the remote server backup using Bacula
The backup Job will now start at the scheduled time. To start it immediately, go to the “bconsole”.
```
bconsole
```
Output:
```
Connecting to Director 10.5.5.1:9101
1000 OK: 103 Ubuntu-Server Version: 9.4.2 (04 February 2019)
Enter a period to cancel a command.
*
```
Enter "run" and select the “RemoteBackup” job. Now you can check, modify or confirm the listed parameters. You can also change the destination for file recovery in this step, for example. It may be useful in the case of client loss.
```
Run Backup job
JobName: RemoteBackup
Level: Full
Client: Ubuntu-Client-fd
FileSet: RemoteFS
Pool: RemotePool (From Job resource)
Storage: LocalSD (From Job resource)
```
To view information about scheduled, running and terminated Jobs, type "status" and "1" then.
To restore data enter the "restore" command in the bconsole and follow the instructions.
https://serverspace.us/support/help/install-configure-fail2ban-ubuntu-20-04.mdIn this tutorial we will install and configure Fail2ban on Ubuntu 20.04. It is designed to protect open ports and services on the server.
Fail2ban is designed to protect open ports and running services on the server. It monitors unsuccessful authorization attempts and blocks the source IP address for a certain time. This significantly reduces the likelihood of server hacking due to automatic means, for example, brute force login and password.
In this tutorial we will install and configure Fail2ban on Ubuntu 20.04.
## Fail2ban installation
To install Fail2ban use this command:
```bash
apt install fail2ban
```
It starts automatically after installation. To check the service status use this command:
```bash
systemctl status fail2ban
```
## Fail2ban configuration
To change the default ban settings for all services, make a copy of the **jail.conf** file.
```
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
```
Open the **jail.local** file and go to the **[DEFAULT]** section. For example, let’s set the ban time to 3600 minutes.
```
bantime = 3600m
```
To see all the available rules, go to the **JAILS** section. For example:
```
```
After changing the file, restart the service.
```bash
systemctl restart fail2ban
```
## Adding and configuring rules
There is a **/etc/fail2ban/jail.d/** folder for managing active rules. You can create a separate file for each of them. For example, **nginx-http-auth.conf**. The second way is to insert configuration into the existing **defaults-debian.conf** file. Simply add these lines there:
```
enabled = true
```
You can add individual parameters for each rule here.
Let’s set the IP address to ignore in the **ignoreip** parameter, the time for the ban is 2400 minutes, and the number of failed authorization attempts is 10.
```
ignoreip = 10.10.10.5
bantime = 2400m
maxretry = 10
```
Save and close the file and restart the service.
```bash
systemctl restart fail2ban
```
## Using fail2ban-client
There is a Fail2ban client for managing its rules. Keep in mind that all changes made here will be reset after the system reboot or service restart. To view active rules use this command:
```
fail2ban-client status
```
To see jail statistics use this command with the name you need instead of **sshd**:
```
fail2ban-client status sshd
```
To activate a rule, use its name from the configuration file and the command:
```
fail2ban-client add nginx-http-auth
```
Then start it.
```
fail2ban-client start nginx-http-auth
```
To view all available commands:
```
fail2ban-client -h
```
https://serverspace.us/support/help/install-and-configure-zabbix-on-centos-8.mdIn this tutorial, we will set up the Zabbix 5 server monitoring system on CentOS 8, using Postgresql-12 and the Nginx web server.
In this tutorial, we will set up the Zabbix 5 server monitoring system on CentOS 8. The database management system will be Postgresql-12 and the Nginx web server.
## Installing the necessary packages for Zabbix
Let’s install the Zabbix repository and clear the package manager cache.
```bash
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
dnf clean all
```
After adding the repository, we can now install the necessary packages.
```bash
dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-nginx-conf zabbix-agent
```
## Postgresql-12 installation
Install the Postgresql-12 repository and clear the cache.
```bash
rpm -Uvh https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
dnf clean all
```
Disable the pre-installed DBMS module.
```bash
dnf -qy module disable postgresql
```
After that set up the Postgresql-12 packages.
```bash
dnf -y install postgresql12 postgresql12-server
```
Now let's initialize the database.
```
/usr/pgsql-12/bin/postgresql-12-setup initdb
```
Now we can activate the service and make it start at system startup.
```bash
systemctl enable –now postgresql-12
```
## Database configuration
Create a new Postgresql user for Zabbix. Enter the password for it when prompted.
```
sudo -u postgres createuser –pwprompt zabbix
```
Then create a new database to work with the server monitoring system.
```
sudo -u postgres createdb -O zabbix zabbix
```
Let's import the starting schema and information into the database for Zabbix. When prompted, type the password for the zabbix user that we recently created.
```
zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz | sudo -u zabbix psql zabbix
```
In the **/etc/zabbix/zabbix_server.conf** file uncomment the **DBPassword** line and enter the password for accessing the database here.
```
DBPassword=zabbix
```
To be able to establish connection from Zabbix with the database, open the **/var/lib/pgsql/12/data/pg_hba.conf** file and find the lines:
```
# IPv4 local connections:
host all all 127.0.0.1/32 ident
```
Change the method to **password**.
```
host all all 127.0.0.1/32 password
```
And restart the DBMS.
```bash
systemctl restart postgresql-12
```
## Nginx configuration
Open the **/etc/nginx/conf.d/zabbix.conf** file and uncomment the **listen** and **server_name** parameters. In the last one enter the domain mane of your server or **_** if you only want to access it using an IP address.
```
server {
listen 80;
server_name _;
```
In the last case, you also need to comment out the entire **server** section in the **/etc/nginx/nginx.conf** file.
```
# server {
# listen 80 default_server;
# listen [::]:80 default_server;
# server_name _;
# root /usr/share/nginx/html;
```
In the **/etc/php-fpm.d/zabbix.conf** file uncomment the **php_value[date.timezone]** parameter and set your timezone.
```
php_value[date.timezone] = Europe/Prague
```
Now restart the configured applications and make them to launch with the system boot.
```bash
systemctl restart zabbix-server zabbix-agent nginx php-fpm
systemctl enable zabbix-server zabbix-agent nginx php-fpm
```
## Zabbix frontend configuring
Open the IP address of your server in the browser.
Screenshot 1. Zabbix welcome page.
Check if all the prerequisites are OK on the second step.
In the third step, enter **127.0.0.1** in the **Database Host** field and the password for the database in the corresponding field.
Screenshot 2. Database settings.
Now follow to the end of configuration and leave the default parameters.
Login **Admin** and password **zabbix** are used to log in to the administration panel.
Screenshot 3. Zabbix login page
https://serverspace.us/support/help/how-to-configure-ftp-access-on-centos-8.mdAn FTP server is useful for managing websites and sharing files. In this tutorial, we will configure FTP access on CentOS 8 using vsftpd.
An FTP server is useful for managing websites and sharing files. In this tutorial, we will configure FTP access on CentOS 8 using vsftpd.
## Installing and configuring the FTP server
Let's install the vsftpd package.
```bash
dnf install vsftpd
```
Now start the service.
```bash
systemctl start vsftpd
```
And add it to autorun.
```bash
systemctl enable vsftpd
```
Open the **/etc/vsftpd/vsftpd.conf** file.
Check these parameters to make sure they have the correct values. We currently prohibit anonymous login and allow it for local users. FTP recording is also allowed.
```
anonymous_enable=NO
local_enable=YES
write_enable=YES
```
Find and uncomment this line to restrict access to everything except the home directory.
```
chroot_local_user=YES
```
And add this line to the end of the file to grant access to change and write files via FTP.
```
allow_writeable_chroot=YES
```
Now save and close the file and open **/etc/pam.d/vsftpd**. Comment this line in it:
```
#auth required pam_shells.so
```
If you use **firewalld** add the FTP service to it.
```
firewall-cmd –permanent –add-service=ftp
firewall-cmd –reload
```
Restart the FTP service.
```bash
systemctl restart vsftpd
```
## Creating a user for FTP access
Create a new user and set the password for it.
```
useradd newftpuser
passwd newftpuser
```
To prevent it from logging in via ssh, change its shell.
```
usermod –shell /sbin/nologin newftpuser
```
## Using SSL/TLS for secure FTP
You can use SSL/TLS to encrypt your connection. For this purpose, you can use Let’s Encrypt or a self-signed SSL certificate.
In the the **/etc/vsftpd/vsftpd.conf** file add the paths to the keys and enable **ssl_enable** option.
```
rsa_cert_file=/etc/letsencrypt/live/domain_name/fullchain.pem
rsa_private_key_file=/etc/letsencrypt/live/domain_name/privkey.pem
ssl_enable=YES
```
And restart the service.
```bash
systemctl restart vsftpd
```
https://serverspace.us/support/help/dns-server-unavailable.mdWhile surfing the Internet, users often encounter the DNS server unavailable error when opening sites. What to do in such situations and how to fix this.
While surfing the Internet, users often encounter the “The DNS server not responding” error when opening sites. What to do in such situations and how to fix the problem – we will tell in this article.
Every website on the Internet has a unique address. For the user, it is presented in a letters meaningful set form, for example, google.com, but in the global network, a numerical value is used to denote web resources. It is called an IP address and it may look like this: 176.108.10.5.
Of course, it is more convenient for users to memorize letters than numbers, so there is a DNS server that is responsible for translating the IP address into characters and vice versa. And if the text “DNS server is not responding” appears when accessing the page, then the user’s request was not correctly translated.
## Reasons for the appearance
The reasons for this error can be two types:
- The problem is on the provider’s side: perhaps the DNS server is unavailable, the electricity is cut off, technical work is underway, etc.
- The problem is on the user’s side: the Internet is disconnected, the router parameters have been reset, problems with drivers, etc.
## How to solve the problem?
Before proceeding with the solution, we will determine at what stage the error occurs due to the DNS server addresses unavailability.
Let’s connect other devices to the router. If they also show an error, then the problem is with the network device. If DNS is not available only when working with a computer, and it works correctly on a tablet, we begin to deal with a PC.
## Router problem
Let’s start checking the network equipment, as this is the easiest and fastest way. We turn off the router from the power supply network and wait 2-3 minutes. Then we turn it on again and check the resources’ availability.
Next, we check if the router settings are not lost: we go to the router control panel and enter the data provided by the Internet provider into it. And finally, if the router’s firmware is outdated, go to the tab that is responsible for updating the software and perform the update.
If the router model does not provide for automatic updating, go to the manufacturer’s official website, find the router used model, download the latest software version and install it.
**Important!** After the update, the router needs to be rebooted.
We check the work done: open a browser and check the sites’ availability.
## Changing DNS address
DNS errors can also occur due to problems on the work computer. Let’s talk about one of the methods that allow fixing the error.
**Important!** Since the DNS server manual configuration on Windows 7, 8 and 10 is similar, we will tell about it using these operating systems versions one example.
On the computer, press the Win + R key combination and enter the ncpa.cpl command. The “Network Connections” window will open. We select the current connection, open the context menu by clicking the right mouse button and select “Properties”.
In the window that opens, select the line marked on the image, then click “Properties”.
Screenshot No. 1. Setting up the protocol.
The screen will display information about the current value of IP and DNS addresses.
Screenshot No. 2. DNS server change.
Select the item as shown in the screenshot above. We fill in the lines as follows: specify 8.8.8.8 as the preferred DNS server, and 8.8.4.4 in the line below. These parameters were obtained from the official Google website, but there are other public addresses of large companies: Comodo, OpenDNS (Cisco), etc. They also come in pairs: primary and alternate DNS server.
**Important!** Be sure to include an alternate address. If the preferred address is not available, the call will go to an alternative.
For reliability, you can specify an address, for example, from Google, as the primary DNS server, and Comodo as a backup. This arrangement ensures that the user always has access to available DNS servers.
## Checking the DNS service
If the DNS server was configured according to the instructions, but the error persists, check the Domane Name System service. Simultaneously press Win + R on the keyboard, enter services.msc and press “Enter”.
Screenshot No. 3. Services list.
A workspace will open that contains Windows services. Select the line highlighted in blue. Open the context menu and select the “Restart” item – the service will restart. You can check the sites’ availability.
## Clearing the cache
Another solution to the problem is to clear the DNS cache. Run the command line with local administrator rights:
Screenshot No. 4. Utility selection.
The terminal window will open. We write the following commands in turn:
```
ipconfig /flushdns
ipconfig /registerdns
ipconfig /renew
ipconfig /release
```
At the end, we restart the computer and try to re-enter the previously inaccessible site.
## Configuring antivirus
If the computer settings are configured correctly, but the error still appears, check the antivirus software settings. Let’s make a reservation right away – there is no bad antivirus, just many of them block connections to some sites or DNS servers.
For example, Avast antivirus blocks access based on its knowledge base. In such cases, it is necessary to disable the firewall module and refresh the page in the browser. If this does not help, completely disable the antivirus protection for 15 minutes and try again.
To avoid such problems, set up a “white list” in the firewall options and add only checked resources to it. Alternatively, try a different antivirus product, after removing the old one.
## Communication with your internet provider
Also, the problem may arise on the side of the Internet provider. When the "DNS Server Not Responding" message appears, the first step is to contact your ISP and describe the problem you encountered. If the provider carries out technical work or there are problems at your residence site, you will be informed about this and, if necessary, the time interval will be announced, during which the Internet connection will be restored.
https://serverspace.us/support/help/how-to-install-lamp-stack-on-centos-8.mdIn this tutorial, we will install the LAMP stack on CentOS 8. LAMP is an acronym for Linux, Apache, MariaDB, PHP.
In this tutorial, we will install the LAMP stack on CentOS 8. LAMP is an acronym for Linux with an Apache web server, MariaDB database management system, and PHP for working with dynamic content. All actions must be performed by the **root** account.
** In the Serverspace you can [create a server](https://serverspace.us/services/cloud-servers.md) with already installed app “LAMP”.**
## Installing Apache on CentOS 8
Let's install Apache web server.
```bash
dnf install httpd
```
Start the Apache daemon and make it start automatically during system boot.
```bash
systemctl start httpd
systemctl enable httpd
```
If you have a firewalld enabled, you must open the http or https ports, or both of them.
```bash
firewall-cmd –permanent –zone=public –add-service=http
firewall-cmd –permanent –zone=public –add-service=https
systemctl reload firewalld
```
To test the web server symply enter the IP address of your server in the browser.
Screenshot 1. Apache test page.
## MariaDB installation
MariaDB is an alternative for MySQL database management system. It is developed by former members of the MySQL team, since the last one can become a proprietary Oracle product.
Let's install MariaDB DBMS.
```bash
dnf install mariadb-server
```
Now start the service and make it run automatically during system boot.
```bash
systemctl start mariadb
systemctl enable mariadb
```
To complete the basic DBMS security configuration, run the script and follow the instructions:
```
mysql_secure_installation
```
You can now enter the MariaDB command line.
```bash
mysql
Welcome to the MariaDB monitor. Commands end with ; or g.
Your MariaDB connection id is 15
Server version: 10.3.17-MariaDB MariaDB Server
```
If you see this text, MariaDB is working now.
## PHP installing
The first package is PHP, and the second one allows PHP to interact with the DBMS. Let’s install them.
```bash
dnf install php php-mysqlnd
```
Now restart Apache to enable PHP modules.
```bash
systemctl restart httpd
```
To test how PHP works, let's create a file **php.php** in the **/var/www/html/** folder.
```
nano /var/www/html/php.php
```
And insert the following lines there:
```
```
Save and close this file. Now enter the IP address of your server in the browser and add **/php.php** to it. You will see PHP service information.
Screenshot 2. PHP information page.
Attention! Do not leave this file on the server, it is a security risk.
https://serverspace.us/support/help/nginx-virtual-hosts-on-ubuntu-20-04.mdIn this tutorial, we will set up Nginx virtual hosts. This will allow multiple sites to work on the same server.
Nginx is designed to handle multiple domains on a single server and IP address. Virtual hosts provide this feature. In this tutorial, we will set up Nginx virtual hosts.
## Nginx configuration files
First, you need to install the Nginx package.
```bash
apt install nginx
```
All configuration files for Nginx virtual hosts are stored in the **/etc/nginx/sites-available/** folder. The best way is to create a separate file for each web site on the server. Let's create the first configuration for **domain-name.com**.
```
nano /etc/nginx/sites-available/domain-name.com
```
Now insert this configuration there.
```css
server {
listen 80; # Specify the listening port
listen [::]:80; # The same thing for IPv6
root /var/www/domain-name.com/html; # The path to the website files
index index.html index.htm; # Files to display if only the domain name is specified in the address
server_name domain-name.com; # Domain name of this site
location / {
try_files $uri $uri/ =404;
}
}
```
Save and close this file.
Create a folder for the website and place its files there.
```
mkdir -p /var/www/domain-name.com/html
```
And set permissions for the folder.
```bash
chmod -R 755 /var/www
```
## Enabling the Nginx virtual host
You need to create a symbolic link to the configuration in the **sites-enabled** directory to enable the virtual host.
```
ln -s /etc/nginx/sites-available/domain-name.com /etc/nginx/sites-enabled/
```
Now check the configuration for errors.
```
nginx -t
```
And restart the service.
```bash
systemctl restart nginx
```
Now you have a working virtual host for a single domain. You can access it by domain name if the DNS server is configured correctly. Any number of domains can be added to the server in this way.
## Disabling Nginx virtual hosts
To disable a virtual host, remove the symbolic link from the **sites-enabled** folder. To disable returning a standard web page when accessing the server’s IP address, you can simply delete the link to the default configuration.
```
rm /etc/nginx/sites-enabled/default
```
Restart the service after that.
```bash
systemctl restart nginx
```
This way you can disable any configuration you need. And enable it by adding a symbolic link again, as we did earlier.
https://serverspace.us/support/help/initial-server-setup-with-ubuntu-20-04.mdIn this tutorial, we will do the initial server setup with Ubuntu 20.04: system update, user and SSH configuration, UFW and time settings.
In this tutorial, we will do the initial server setup with Ubuntu 20.04. [Cloud server Serverspace.io](https://serverspace.us/services/cloud-servers.md) used as a base. The network is configured for them automatically during creation, so you don’t need to worry about it.
## System update
The system must be updated after it is installed.
```bash
apt update
apt upgrade
```
Restart the system when the process is complete.
```
reboot
```
## Creating users and SSH configuration
By default, only the root user is created in the system. To use a server with multiple people, it’s best to give each person a separate account. To create a new user, use the following command. Replace the **username** with the login. Enter your account password and other information.
```
adduser username
```
If you selected SSH key authorization while creating the server, you can enable password authorization. To do this, open the SSH configuration file:
```
nano /etc/ssh/sshd_config
```
Uncomment the line:
```
PasswordAuthentication yes
```
Or if you need to add the ability to authorize using an SSH key, then uncomment this line:
```
PubkeyAuthentication yes
```
It’s a good idea to change the default SSH port if you enable password authentication. This reduces the likelihood of server hacking by automatically cracking the password using the brute force method.
To do this, uncomment the **Port** string and set it to a different value. 3355, for example.
```
Port 3355
```
Save and close this file. Restart the service for the port settings to take effect.
```bash
systemctl restart sshd
```
Now, to connect to the server, add the port number to the command:
```bash
ssh user@host -p 3355
```
Another good thing to improve server security is to use [Fail2Ban](https://serverspace.us/support/help/install-configure-fail2ban-ubuntu-20-04/).
If you want to create an SSH key, use the following command on a local Linux machine. Enter the path to place the key and the password for it, which may be empty. However, for security reasons, it is highly discouraged to use keys without a password.
```bash
ssh-keygen
```
To install this key on the server use the following command on a local Linux computer. Enter the correct key path, user name, and host.
```bash
ssh-copy-id -i /path/to/key user@host
```
>
Use this command to access the server:
```bash
ssh user@host
```
## UFW configuration
UFW is a firewall. By default, it is disabled on the server. Before enabling it, you need to configure it to allow SSH connections.
```
ufw allow OpenSSH
```
If the standard SSH port has been changed, then you need to open this port.
```
ufw allow 3355/tcp
```
Now, enable UFW.
```
ufw enable
```
All ports are now closed to incoming connections, except those that were allowed. To see the UFW status:
```
ufw status
```
## Time settings
Another thing that needs to be configured is the time in the system. To see the current time, enter the command:
```
date
```
The default time in the system is UTC. To change this, you must specify the correct time zone. To view all of them, use the command:
```
timedatectl list-timezones
```
To set one of them:
```
timedatectl set-timezone Europe/Prague
```
To enable automatic time synchronization, install this package.
```bash
apt install ntp
```
It will be launched immediately after installation and your server will have the correct time.
https://serverspace.us/support/glossary/cluster.mdA cluster is a computers group connected by high-speed communication channels. Such a group is a combined hardware resource with specific functionality.
A cluster is a computers group connected by high-speed communication channels. Such a group is a combined hardware resource with specific functionality:
- Providing computing power;
- Load balancing;
- Autoscaling
- High availability.
Computing clusters
Here, the defining characteristics are considered to be the cluster processors high performance when working with numeric floating-point values. Also, the determining factor – is the backing network low latency. I/o operations are less important for character determination since these processes fast execution rate is more typical for databases.
Computing clusters can split calculations into many parallel branches and analyse data in all directions at once. Data exchange with such a structure is possible through a connecting network between branches.
Load balancing clusters
This cluster type is also called distributive. Their work principle consists of the input nodes work, which selects requests for computational nodes. However, there may be more than one node as input points for queries.
Requests arrive at one or more nodes that act as entry points. Further, the nodes distribute the requests among the computational nodes, which carry out their direct processing.
High availability clusters
This kind clusters are created to provide services high availability. Such a cluster contains nodes an excessive number (at least two), which act as a fuses chain. If one or more servers fail, the cluster will still be able to provide the service.
This kind clusters are built according to three main archetypes:
- **Modular redundancy**. It is included in cases when system downtime is unacceptable: when triggered, each node processes one request or its separate fragments. The individual nodes work results will be identical to the other nodes results, or they will not change the subsequent work nature, so there should be no difference which one will be selected.
- **Active reserve**. Each node in the cluster processes requests, but if one or a whole group of nodes fails, the load is redistributed between the working nodes.
- **Passive reserve**. Some nodes are sleeping, do not fulfil requests and wait for an incident when active nodes fail, and only in this case will they start processing requests.
https://serverspace.us/support/glossary/devops.mdDevOps (short for DEVelopment OPeration) refers to agile practices set for improving the software development efficiency and use processes through the various specialists' constant integration and collaboration through automation tools.
DevOps (short for DEVelopment OPeration) refers to agile practices set for improving the software development efficiency and use processes through the various specialists’ constant integration and collaboration through automation tools. The DevOps concept is characterized, first, by the organizational barriers’ removal between development groups to create a better product. DevOps also focuses on the CI/CD methodology implementation.
Unlike other similar concepts, DevOps proposes to extend agile practices throughout an IT product entire life cycle: from creation and testing to operation and support.
Another aspect that distinguishes DevOps is its support for microservices architecture. In practice, this means building a segmented modules’ weakly interconnected system and are under one specialist responsibility. This opens up the permanent refactoring and updates constant release possibility without having to stop the IT product work.
## DevOps tasks
- Product entry acceleration to the market.
- The new releases failure rate reducing;
- Reduced debugging time;
- Improved crash recovery.
## DevOps principles
The DevOps concept is based on five core principles aimed at increasing developer responsibility for a product at its production all stages and accelerating products release.
- **Communication culture**. DevOps is in many ways related to the teams work in a single information field in different profiles specialists trusted communication environment.
- **Automation**. The new code must pass tests automated series before it reaches the working server.
- **Thrift**. The principle works to eliminate actions and tools with insufficient usefulness in continuous improvement and optimized problem fixing favour.
- **Dimension**. The principle is related to the processes’ effectiveness of data and evaluations’ continuous analysis.
**Exchange**. Collective responsibility and sharing success with the entire team. The principle is aimed at unification and interaction between all participants in an IT product creation.
https://serverspace.us/about/blog/is-cloud-computing-the-future.mdCloud computing is the computing resources provision on-demand over the Internet. Resources can be servers, storage systems, data networks, software, platform services.
_Explaining the benefits, economics and cloud computing prospects_
Over the past 10 years, cloud computing has significantly changed the business processes in companies. The most obvious example is document and file collaboration, which has moved entirely online. Cloud has accelerated digital transformation, with companies actively using web applications to automate processes and manage teams.
Analytics migrated to the clouds. Now the tasks associated with processing data large amounts and machine learning cannot be solved without virtual servers and high-capacity cloud storage systems.
The cloud infrastructure has become a staple for entertainment content providers. For example, [Netflix migrated to the cloud](https://media.netflix.com/en/company-blog/completing-the-netflix-cloud-migration) back in 2015. The service is constantly evolving, many new resource-intensive functions appear, data volumes are increasing. With the cloud elasticity, Netflix adds virtual servers and storage petabytes thousands in minutes.
The whole world is switching to consumption by subscription – from content to email newsletters. Computing resources are no exception: a cloud service consumer, such as virtual infrastructure, can always unsubscribe or change the tariff.
## How the cloud market works
The demand for cloud computing is growing every year. According to analytical agency Gartner, the global market for public cloud services [will reach $ 308.5 billion in 2021](https://www.gartner.com/en/newsroom/press-releases/2019-11-13-gartner-forecasts-worldwide-public-cloud-revenue-to-grow-17-percent-in-2020). This is $ 40 billion more than in 2020 and 90 billion more than in 2019.
Gartner also notes that cloud computing has become a necessary catalyst for innovation for businesses. Analysts recommend that IT leaders continually adapt their IT strategy to suit the cloud.
[According to the agency forecasts](https://www.gartner.com/smarterwithgartner/cloud-computing-enters-its-second-decade/), in 2021, more than international companies half will apply an integrated cloud strategy, when the local infrastructure in their own data centres will expand and develop using cloud resources.
## Where cloud computing is used
In the corporate sphere, cloud computing covers a services wide range – from virtual infrastructure (Infrastructure as a Service, IaaS) to enterprise applications (Software as a Service, SaaS). Thanks to the clouds, service services that employees previously only got in the office using a work PC are now accessible from anywhere with an Internet connection.
Clouds are used in almost all high-tech industries: in software development, in projects based on IoT, for big data analysis, etc. There are also more highly specialized tasks that are solved in the cloud, for example, real-time speech processing using artificial intelligence.
## What are the clouds’ advantages
There are seven main advantages:
- You don’t need to buy and maintain your own IT infrastructure: equipment, services, OS and other software.
- You don’t have to think about upgrading and upgrading your hardware and OS – the cloud provider does it.
- The burden on full-time IT specialists is reduced because the provider takes on most of the infrastructure support tasks.
- With cloud computing help, you can test projects without large start-up costs, increasing or decreasing leased resources when the need arises.
- Infrastructure and services in the cloud are deployed quickly, as opposed to a traditional approach that involves purchasing hardware and software.
- The previous point consequence: a company can bring new products to the market faster than competitors who use their infrastructure.
- Resources scale quickly — for example when an application gains popularity and the user base grows.
## What the experts think
Lee James, hosting provider Rackspace CTO, believes that [the cloud computing future is multi-cloud](https://techerati.com/features-hub/opinions/cloud-computing-2020-predictions-2019-kubernetes-multicloud/) (or hybrid cloud), a model that involves using multiple clouds from different providers at the same time. James, firstly, connects this with the general growth in popularity of public clouds: 81% of companies use them in one way or another. Secondly, with the Kubernetes containerized application system growing popularity, which is convenient to use in a multi-cloud.
At the same time, Lee James notes, many companies are still investing in private cloud solutions, preferring them to public ones. Private clouds have more options for customizing and securing infrastructure.
Stephan Fabel, Chief Product Officer at Canonical, believes that the cloud is the best choice for IT infrastructure for startups. Companies that start businesses on a tight budget, Fabel says, require an environment to experiment with the latest technology. A public cloud is best suited for this.
Patrick O’Keeffe, Development at Quest VP, is cautious about predicting a move to the cloud. O’Keefe believes that for many companies, the full transition to cloud infrastructure has been a frustration, primarily due to the high operating costs and public clouds flexibility lack. Therefore, the expert says, such companies may move to hybrid clouds.
## What’s new in cloud computing
We note three new areas that are expanding the cloud computing scope. These directions are more correctly considered trends, because they are not yet used as widely as, for example, cloud storage systems.
**Things Internet (IoT).** The devices (things) number connected to the Internet is growing: smartphones, TVs, smartwatches, household appliances, systems such as smart home sensors, smart city and more. All these devices exchange information with each other or with the control software, and often without human intervention. The further, the more IoT turns into an autonomous system – the Internet within the Internet – that accumulates data huge amounts in real-time.
[Gartner predicts](https://www.gartner.com/en/newsroom/press-releases/2018-11-07-gartner-identifies-top-10-strategic-iot-technologies-and-trends) 25 billion IoT devices will be connected to the Internet in 2021. The cloud is an ideal infrastructure for IoT because it provides unlimited storage space for the information it collects, as well as high availability, performance, and scalability.
**Serverless Computing.** This type of Platform as a Service (PaaS) is becoming increasingly popular in software development. The customer does not have to worry about the server hardware and OS administration: computing resources are scaled automatically as the load grows or decreases.
An example of such services is AWS Lambda, a platform that works on the event-driven computing principle: the resources required pool is allocated in milliseconds in response to an event – for example, when a new code module is added.
**Quantum computing.** Quantum computers are the next step in the traditional supercomputers’ evolution. Such computers are planned to be used primarily for working with large amounts of data. At the same time, both data and computing resources themselves (qubits) can be placed in the cloud.
In 2019, IBM made it’s a quantum computer available as a cloud service. Anyone can connect to the machine and run their experimental programs.
## What professions are relevant for the cloud industry
TechRepublic [marks](https://www.techrepublic.com/article/15-most-in-demand-cloud-computing-jobs/) 15 most in-demand cloud computing careers based on [job market](https://jooble.org/jobs-cloud-computing) analysis. The first three places in demand decreasing order are occupied: software engineer, software architect and DevOps engineer. Last on the list is a backend developer.
**Why cloud computing is the future**
- **Speed and flexibility. **Traditional infrastructure is not good at coping with the market change speed. It usually takes weeks or months to allocate the right resources. Cloud resources can be obtained in less than an hour and the required amount.
- **Innovation.** To stay competitive, a company needs to quickly develop new products and services, assess their market potential, and implement them. Cloud computing is in this sense more efficient than on-premises IT infrastructure.
- **Savings. **The company that leases cloud resources only bears the operating costs. Predictable pricing helps you plan your IT budget.
- **Fault tolerance. **For cloud providers, client services resiliency high level is a must because many clients pay attention to SLA first. Competition between suppliers forces them to improve infrastructure quality and reliability.
https://serverspace.us/about/blog/what-is-cloud-infrastructure.mdWhat is Cloud Infrastructure? This refers to the underlying components, (Computing, networking, and storage) which makes it possible for various applications such as IoT, operating systems, support systems, and others to share infrastructure needs to achieve their end goals.
With the global cloud computing revenue forecasted to exceed [$342B](https://www.researchandmarkets.com/reports/5118343/cloud-computing-services-platforms?utm_source=BW&utm_medium=PressRelease&utm_code=mzq2m5&utm_campaign=1424935+-+2020+Insights+on+the+Global+Cloud+Computing+Services%2c+Platforms+Infrastructure+and+Everything+as+a+Service+Market+to+2025&utm_exec=jamu273prd) by 2025 at 24.8% CAGR, cloud computing is expected to transform the models that run tech and business enterprises in ways beyond our imagination. However, due to the expensive implementation and management of data centers, enterprises find it easy, and cheaper to turn to cloud providers for scalable, modernized, and reliable [cloud infrastructure services](https://serverspace.us/services/cloud-servers.md).
## What is Cloud Infrastructure
This refers to the underlying components, (Computing, networking, and storage) which makes it possible for various applications such as IoT, operating systems, support systems, and others to share infrastructure needs to achieve their end goals.
There are many advantages to using cloud infrastructure in your businesses, but the main advantage is the ability to get access to high computing power and functionality for a much lower price, at the required time. There are three categories of cloud deployment models, [private](https://www.vmware.com/topics/glossary/content/private-cloud), [public](https://www.vmware.com/topics/glossary/content/public-cloud), and [hybrid](https://www.vmware.com/topics/glossary/content/public-cloud).
### What is the main difference between private, public, and hybrid deployment models
There are several differences between the three infrastructure deployment models including the data center locations, cloud service management, hardware components, but the main difference is tenancy. Tenancy simply refers to the number of users who have access to software or hardware at a given instance. Private architecture tends to be single tenancy, public multi-tenancy, and hybrid multi-tenant.
## How Cloud Infrastructure Works
Cloud infrastructure depends on [virtualization](https://www.vmware.com/solutions/virtualization.html) and other abstract technologies. You may consider this to be the pivotal concept in cloud infrastructure. They separate the basic components of cloud infrastructure (hardware, networks, and storage), from applications, whose resulting resources are pooled into clouds. Virtualization programs are then used to generate the required resources.
The resulting resources are then allocated using automation software and management tools, for the users to have access to when they are required.
### Benefits Of integrating Cloud Infrastructure in your business model
Earlier on, I mentioned one of the benefits of cloud infrastructure. Here are some other benefits developers and enterprises can acquire:
- Lower cost of resources as they are shared
- Shorter time to deploy applications
- Implementing Applications Programming Interfaces (APIs) to cloud infrastructure speeds up the time which applications get to the end-user
- Efficiency in operation and management of infrastructure
## Virtual Infrastructure, and How it Works
According to [VMware](https://www.vmware.com/products/beta/esx-vc/intro_virtual_infrastructure.pdf), Virtual Infrastructure refers to an approach to IT management that enables administrators to allocate virtual resources to businesses that need them most by using virtual servers created out of physical IT infrastructure.
### Why use virtual Infrastructure
Here are some reasons you may need to adopt virtual infrastructure to your enterprise:
- Increase revenue by saving hosting, test machines, power consumption costs to be used on data centers and test machines.
- Scalability at an affordable price.
- Accelerated software testing and development
- Improved customer service
- Optimized server management
- Increased resilience to disasters and problems, as they are easy to troubleshoot and restore
- Improved security
Unlike physical infrastructure, which includes hardware components such as physical servers, storage resources, network cards, etc, along with software installed on them, virtual infrastructure uses a hypervisor to give you access to physical infrastructure. A [hypervisor](https://www.dnsstuff.com/what-is-hypervisor) is a type of software, firmware, or hardware that can create virtual machines, manage, and allocate resources to them.
Apart from the hypervisor, virtual infrastructures are made up of services for resource management and consolidated backup, and automation solutions to facilitate functionalities such as disaster recovery.
## Cloud Infrastructure Security
While cloud computing can offer a goldmine of opportunities, it is vulnerable to massive data breaches. According to an [IDC survey](https://www.helpnetsecurity.com/tag/idc/) that involved 300 CISOs, 80% of the companies had experienced a cloud data breach in the past 18 months, as of June. 43% of the participants went on to say that they had more than 10 attacks. The report highlighted that the three top threats were security misconfiguration, lack of visibility, and incorrect IAM and permission configurations on the production environment. This shows how the cloud is vulnerable.
### So, what is cloud infrastructure security
It may be defined as a set of policies, technologies, applications, and hardware that aim to protect cloud environments, data, and hardware. Some of the threats that face cloud computing infrastructure include unauthorized user access, malware, rootkits, Distributed denial of Services (DDoS), and other related attacks.
There are many ways to counter cyber threats in cloud infrastructure. Here are some:
- Encryption
- Strategy and policy design and implementation
- Password control
- Network segmentation
- Check the Security precautions taken by you cloud service provider
- Ensure management and security of keys
## Everything you need to know about cloud IT Infrastructure Providers
The internet is currently overflowing with cloud infrastructure providers. You have to note that not all cloud providers offer cloud IT infrastructure rental services. According to a report, the global revenue for cloud infrastructure, Q2 2020, has just passed the [$30 billion mark](https://www.statista.com/chart/18819/worldwide-market-share-of-leading-cloud-infrastructure-service-providers/), with Amazon Web Services having the largest infrastructure. Other cloud infrastructure service providers include [Serverspace](https://serverspace.us/services.md), Azure, digital ocean, google cloud, and many others. Choosing a cloud infrastructure service provider that suits your needs can be a daunting task. When choosing cloud providers, it is important to consider factors such as infrastructure design, (data center setup, High-Performance Computing, and security), support, pricing, and other factors.
Many enterprises and developers choose cloud infrastructure service providers without knowing what their needs are. However, if you are looking for fast, secure, and affordable cloud servers, you can try out [Serverspace cloud services](https://serverspace.us/services/cloud-servers.md). Apart from being the BHYVE geekbench champion, we offer easy-to-use platforms with 24/7 support.
https://serverspace.us/about/blog/choosing-cloud-infrastructure-service-provider.mdTo help you select a provider that will fit your needs, here are 8 factors you should consider before choosing a cloud infrastructure provider in 2021.
There is not an ounce of doubt in the fact that [cloud computing is the future](https://serverspace.us/about/blog/is-cloud-computing-the-future.md) of human civilization. Ask random business owners or engineers anywhere in the world on the importance of cloud computing and you will get a euphony of replies that will blow your mind. Generally, cloud computing is a gamechanger, but one computing component owns immense transformative power. [Cloud infrastructure](https://serverspace.us/about/blog/what-is-cloud-infrastructure.md). It enables business owners and developers to change the world by giving them edge-cut computing power without having to invest hundreds of thousands of dollars. According to [IDC](https://www.idc.com/getdoc.jsp?containerId=prUS46639820#:~:text=Long%20term%2C%20IDC%20expects%20spending,growing%20at%20a%209.5%25%20CAGR.), the cloud infrastructure market grew earlier in 2020 due to the Covid-19 pandemic. In fact, the long-term projection of IT infrastructure is expected to hit a $105.6 billion (9.6%) CAGR (compound annual growth rate ) in 5 years.
Blake Murray, a business analyst with [Canalys](https://www.canalys.com/newsroom/worldwide-cloud-infrastructure-services-Q2-2020), states that the demand for cloud services will accelerate in 2020 as many businesses fight to capitalize on new opportunities while adapting to emerging business models. This will create massive competition in cloud service providers. It will also increase indecision among business owners and developers, on which cloud infrastructure providers would give them the best solutions to achieve their goals. To help you select a provider that will fit your needs, here are 8 factors you should consider before choosing a cloud infrastructure provider in 2021.
## The Technical
This is the most important factor to consider when laying a strategy to help you integrate cloud infrastructure into your business. Before deciding to use Cloud infrastructure, make sure to study your IT environment, and understand what you are trying to accomplish in your business. You can then research on cloud infrastructure providers by looking at these components:
### Computing
This is a vital component of cloud infrastructure and is made up of the CPU and the memory. When looking at computing, you should ask yourself these questions:
- Are there physical servers or is it Virtual Machines? And Are they single-tenant or multi-tenant
- What is the memory speed, type, and are there options to choose from
- How many CPUs can be dedicated to a server? Single-core or Multi-core.
### Networking
This is the pillar of cloud infrastructure as it provides the gateway for access to the infrastructure. Thus, you should choose a provider that has the networking capabilities to help you achieve your goals. You should thus consider:
- What bandwidth best suits your workload
- The type of access needed and its purpose
- How is the integration of the on-premise network with the provider's data centers?
- Possible Processing speed between storage and VMS
This is a critical part of the process, and you may be better of seeking technical support before making a decision.
### Storage
This component is an important variable to consider before choosing a cloud infrastructure service provider. You can consider the following before making a choice:
- Shared storage type ( CIFS, iSCSI, SAN, NASx AoE, FC, FCoE)
- Storage billing
- Scalability
- Types of storage classes
- Failover-concept (Failover cluster, Active-Active, Active-passive)
This component relates to the scalability of your business and should be chosen with deep consideration.
### Data recovery
Data is critical to the operation of any business, and it's important to choose a provider that offers the best data recovery functionality. Some of the questions you should be asking include:
- Local fail-over mechanism (manual or automatic)?
- The providers mean-time-to-repair (MTTR), and what do other providers have to offer?
- What are the Terms and conditions revolving around penalties associated with business-critical workloads?
- Does the provider offer replication services? And what is the cost?
### Compliance and Security
The nature of cloud computing makes it vulnerable to all sorts of [cyber threats](https://www.csoonline.com/article/3043030/top-cloud-security-threats.html), and it is important to consider what precautions service providers put in place to counter these threats. Here are some questions you need to ask:
- What is the data center classification model and how are they customized to meet your needs?
- Is your provider certified?
- What security clearance is offered to the technical team managing your servers and VMs?
- Where are the datacenter locations, and what laws govern them?
- Do the service providers meet all regulatory laws or policies? ([GDPR](https://gdpr-info.eu/), PCCI, and HIPAA) If yes, is there proof?
This part is crucial and must have the most time dedicated to it. It will be wise to seek help if you don't have access to on-premise professionals.
## The Non-Technical
While the technical important should be your main guide, this part should help you cut out the list. The non-technical is all about the business and management side of the process. Here are some things you should consider before making the decision:
### Technical Support
As we all know, the cloud is eternal, and the downtown of a minute may cost you thousands of dollars. It is therefore important to research and ask about the providers' support system.
- What kind of support system is available? (Email, chat, phone)
- How long does it take to get a reply?
- Is the support 24/7?
- What reporting tools does the provider offer, and what is their reliability? What is their ease of use?
### Pricing Structure
While this shouldn't be a major concern, it is important to understand how you get charged, and the services you get in return. You should rank functionality over cost. Research about the fees charged, the ability to change subscriptions, refunds e.t.c. This will help you decide on a pricing structure for your business.
### Provider Reputation
As the saying goes "no one knows a business better than the customer". Most service providers let rating platforms (Trustpilot, Geekbench, etc) and customers rate their services. It will be a great idea to go through these reviews before making a decision.
Compare Geekbench score of Serverspace VMs with the others cloud providers. Implementation of real tasks on servers with 1 vCPU and 1 GB memory
## Food For Thought
The integration of cloud IT infrastructure into your business mechanism is a big step in your business transformation journey and may bring you closer to your goals. But, with many providers available, choosing the wrong provider may impact your business negatively. It is therefore important to put serious thought before choosing a cloud infrastructure provider.
https://serverspace.us/about/news/serverspace-is-launching-a-new-flexible-plan-for-everyone.mdUnlimited data transfer. Custom CPU, RAM, SSD, and bandwidth up to 200 Mbps. Welcome to the reimagined cloud!
New Jersey, US — October 21, 2020 — Serverspace is launching the option to create flexible cloud servers configurations. Now customers can choose the number of processor cores, the size of RAM, disk storage, as well as bandwidth for each cloud server, on their own. It is possible to change the server configuration at any time. There are no limits on it, even if the server has already been created.
### More Features, Less Costs
- Now the channel bandwidth can be extended up to 200 Mbps. And reduce it at any time.
- When the flexible server is shut down, only ordered licenses, snapshots, IP addresses, and disk space are billed.
- Internet traffic is provided free of charge and with no restrictions. Both flexible and fixed plans provide it.
And yes, fixed plans continue to exist and become compatible with flexible ones. Customers can switch from fixed to flexible plan even on existing cloud server.
Welcome to the reimagined cloud!
https://serverspace.us/about/blog/5g-a-threat-to-cloud-computing.mdCloud computing and 5G will be among the technologies that play a major role in future technological advancements. The rollout of the 5G network started in 2019 and has accelerated in 2020
The dynamic nature of technology makes it impossible to define the pivotal components that drive technology towards its full potential. But, it's logical to state that cloud computing and 5G will be among the technologies that play a major role in future technological advancements. The rollout of the 5G network started in 2019 and has accelerated in 2020, with [GSMA](https://www.gsma.com/futurenetworks/ip_services/understanding-5g/5g-innovation/) projecting that the new technology will account for 1.2 billion connections by 2025.
Despite the infinite benefits that 5G may have on the existing technologies and business models, including faster speeds, network efficiency, and low latency the "Dark side" of the 5G network has taken over the internet by storm. There have been baseless [theories and hoxes](https://www.theguardian.com/technology/2020/apr/07/how-false-claims-about-5g-health-risks-spread-into-the-mainstream) based on information security and health concerns. This has been destruction to the questions we should be asking. How will 5G change the cloud? How will enterprises be affected by the technology? And what can the major players in the tech industry do to usher in the new era?
Let's find out how cloud computing will blend in the age of 5G.
## A Sneak Peek Into 5G
5G denotes the 5th generation of wireless network technology that is expected to spark innovation and revolutionize civilization. It will achieve this by providing increased bandwidth and providing lower latency. This will open up more opportunities for innovation in sectors such as IoT and AI, which depend on high-speed data processing. The speed of 5G will be much faster ([1.8Gbits/Sec](https://en.wikipedia.org/wiki/5G#cite_note-auto-17)) compared to 4G due to the use of higher-frequency radio waves. This is no doubt the dawn of a new world.
It is yet difficult to predict how 5G will coexist with other concepts of computing such as cloud computing, IT security, IoT, and Machine learning.
## How 5G Could Revolutionize the Cloud
As you know already, [cloud computing](https://serverspace.us/about/blog/is-cloud-computing-the-future.md) has become a very important part of our lives, and it’s here to stay. Apart from connecting us to our loved ones, cost savings in personal and enterprise environments, flexibility, security, and many other advantages, it has opened a lot of other possibilities that were considered impossible about three decades ago. The integration of 5G into cloud infrastructure will help tap into the unexplored territories of computing hence making our lives better. Here are some of the ways that 5G may take cloud computing to a whole new level:
### Increase of Hybrid Popularity
Information security is always the major concern that makes businesses doubt the public cloud. Latency also plays a major role in firms preferring an on-premise cloud, as opposed to the public cloud. But, the future of the hybrid cloud is bright with 5G. The most logical decision for businesses is to store data on-premise, and operate on the public cloud. Not only does this increase cost-effectiveness, but also scalability and innovation. If your firm intends to capitalize on this rare opportunity, you can check [Serverspaces](https://serverspace.us/index.md)' Cloud Infrastructure solutions before the competition for cloud infrastructure bumps up the quality and prices
### Cloud Computing For Everyone
This is the obvious transformation of cloud computing in the 5G era. By utilizing the high-speed and low latency of 5G, cloud computing will be accessible to many people and businesses on the planet. One of the major problems that face the cloud is low latency, hence inaccessibility from poorly connected areas. 5G will eradicate all that and make cloud computing available to every business and person that was locked out due to unreliable connections.
### The Rise of Edge Computing
[The edge](https://www.gartner.com/en/webinars/3846163/what-is-edge-computing-and-why-should-you-care-) is the new black in computing and its future is unpredictably amazing. Edge computing is an emerging topology-based model that facilitates decentralization by placing nodes close to data sources. Traditionally, the flow of data increased security threats, which is very challenging to industries where data privacy is critical. "Every time you move a piece of data, you increase the risk of it being stolen" states IBM edge computing CTO, Rob High. The edge, thus, eliminates this risk by increasing agility in business. [Gartner](https://www.gartner.com/en/newsroom/press-releases/2018-12-03-gartner-says-the-future-of-it-infrastructure-is-always-on-always-available-everywhere) projects that by 2022, 50% of enterprise-data will lean towards the edge.
### Real-time analytics and Increased Streaming Activities
Cloud computing is the pivot of big data. 5G will not only revolutionize the data processing speeds but also catalyze the expansion of storage capacity for big data. This will drop every problem faced by streaming and real-time analytics service providers.
### Transformation of IoT
One of the main ways 5G will improve IoT is by providing reliable access to [cloud infrastructure](https://serverspace.us/about/blog/what-is-cloud-infrastructure.md). Since many companies are already embracing the power of Artificial intelligence (AI) and natural language processing (NLP) in their operation, 5G will help them increase effectiveness by giving them access to edge-cut computing power. This will improve communication between connected devices such as laptops, sensors, smartphones, etc. Thus IoT is one of the many industries which will benefit heavily from the 5G evolution. Concepts such as Virtual Reality and Augmented (VA/AV) which depend heavily on data to be effective will also rip many benefits. With the 5G breakneck speeds and low latency, the sky is the limit to IoT.
## Cloud Security In The Age of 5G
Many enterprises prefer to take a 'Security First' approach when implementing new [technologies](https://www.gsma.com/security/securing-the-5g-era/) or business models into their operation mechanism. As expected, 5G has the most sophisticated security protocols and security precautions embedded in its architecture. By using technologies (cloud services, network slicing, eSIMs, Virtualization, and AI), secure by design approach, secure deployment models, and other security precautions, 5G is prepared to counter any threats that await. However, despite all these security precautions, chances of threats penetrating through the 5G core are very high. First, switching the network infrastructure between 4G,3G and 5G increases threat risks. Furthermore, running 5G on 4G infrastructure risks carrying existing threats forward to the new network. Despite standard bodies such as [IETF, ETSI, and 3GPP](https://www.raconteur.net/technology/5g/5g-security/#:~:text=5G%20poses%20an%20elevated%20security,internet%20of%20things%20(IoT).) working on the standards, there are no dependable standards to govern 5G security. The need for 5G security is real, and it's a shared responsibility. Everyone has a role to play from mobile providers, cloud service providers, and enterprises. It is also important to [prepare your firm for the 5G cyber wave](https://www.forest-interactive.com/newsroom/iot-and-5g-security-threats/). Serverspace is aware of this, and is at the forefront of this revolution, making that your cloud infrastructure is safe.
### Embracing The Change
The evolution of technology is something that will last for eternity, and it's up to enterprises and major tech players to help their customers to embrace the changes that come. As said earlier, it is almost impossible to predict how 5G will affect other computing concepts once the rollout is complete. Some even believe that 5G may [annihilate the cloud](https://picante.today/technology/2020/04/10/141905/how-the-5g-network-will-impact-cloud-computing/), which seems far stretched but possible. It is thus upon cloud service providers to face the challenge head-on thus ushering an innovative world.
https://serverspace.us/about/news/serverspace-added-function-to-restore-os-from-image.mdIn the server settings in the Serverspace control panel there is now a special "Recovery" tab of the operating system.
In the server settings in the Serverspace control panel there is now a special “Recovery” tab of the operating system. You can choose two options – boot either from the image or from the system partition. The new feature simplifies the process – it is similar to the usual standard Windows recovery tool.
To start working in the interface, you need to select the required server. After that, you need to go to the “Recovery” tab and select the “Boot from the recovery image” item, and then you need to restart the server.
https://serverspace.us/support/help/linux-machine-into-windows-ad-domain.mdFollow these simple step-by-step instructions to integrate a Linux machine (Ubuntu 20.04) into a Windows Active Directory Domain
This article will describe the process of adding a Linux machine (Ubuntu 20.04) into a Windows Active Directory Domain.
## Step 1. Install packages and preparation.
Let's update packages first.
```bash
sudo apt update
sudo apt upgrade
```
After that, install the required packages.
```bash
sudo apt -y install realmd sssd sssd-tools libnss-sss libpam-sss adcli samba-common-bin oddjob oddjob-mkhomedir packagekit
```
Next, we will configure all of these tools to work with the domain. All we need to know is:
- Domain name: office.local
- DNS server IP: 192.168.0.1
- Second DNS server IP: 192.168.0.2
## Step 2. Configure DNS.
Look in netplan config file.
```
sudo nano /etc/netplan/*.yaml
```
If you see there 'dhcp4: true' and your DHCP server is configured in a right way, go to the next step.
If you configure the network connection parameters manually, here is an example for setting up static addresses:
```
network:
ethernets:
enp0s3:
addresses:
– 192.168.0.15/24
gateway4: 192.168.0.10
nameservers:
addresses: [192.168.0.1, 192.168.0.2]
search:
– office.local
optional: true
version: 2
```
- addresses — this ip address will be assigned to your network card;
- gateway4 — ip address of your router;
- nameservers — DNS servers;
- search — target domain.
Apply changes.
```
sudo netplan apply
```
## Step 3. Discover the domain, join it, and check the result.
First, discover the domain.
```
realm discover office.local
```
We'll see something like this. This means that the network settings are correct and our machine received an answer from the domain. If not, you need to check your network settings, domain, and DNS health.
```
office.local
type: kerberos
realm-name: OFFICE.LOCAL
domain-name: office.local
configured: no
```
Next, join the AD domain. Replace 'admin' with the domain administrator's username and enter the password for it if prompt.
```
realm join -U admin office.local
Password for admin:
```
Now let’s check if we can get information about the AD user. Replace 'user' with the name of the domain user account.
```
id user@office.local
uid=687821651(user@office.local) gid=687800512(user@office.local) groups=687800512(domain users@office.local)
```
## Step 4. Last settings and logging in.
To avoid adding the domain name to the username every time, let's configure this.
```
sudo nano /etc/sssd/sssd.conf
```
Change the 'use_fully_qualified_names' value to False. Restart and check:
```bash
sudo systemctl restart sssd
id user
uid=687821651(user@office.local) gid=687800512(user@office.local) groups=687800512(domain users@office.local)
```
Now we need to to set up a creation of Home Dirs for AD users when they log in.
```
sudo nano /etc/pam.d/common-session
#add this line in the end of file
session optional pam_mkhomedir.so skel=/etc/skel umask=077
```
Let's try to log in as an AD user.
```
su – user
Password:
Creating directory '/home/user@office.local'.
user@ubuntu-server:~$
```
This means that you have successfully logged in as an AD user.
Additionally, you can allow authorization for some AD users or groups and restrict others. The example below is set to deny everyone and allow for user, user2, Domain Admins group.
```
sudo realm deny –all
sudo realm permit user@office.local user2@office.local
sudo realm permit -g 'Domain Admins'
```
Configuring AD users to get root privileges is the same as for local users, but in another file.
```
sudo nano /etc/sudoers.d/admins
```
Add the necessary lines to it. For example:
```
user ALL=(ALL) ALL
%Domain Admins ALL=(ALL) ALL
```
https://serverspace.us/support/help/how-to-install-mysql-on-debian-10.mdIn this article, you will learn how to install the MySQL Server on Debian 10.x. It also works on another Linux-based distribution (like Ubuntu).
In this article, you will learn how to install the MySQL Server on Debian 10.x. It also works on another Linux-based distribution (like Ubuntu).
** In the Serverspace you can [create a server](https://serverspace.us/services/cloud-servers.md) with already installed app “MySQL”.**
How to install MySQL on Debian 10:
- [Add the MySQL Repository](#stepone)
- [Install the MySQL server](#steptwo)
### Step 1. Add the MySQL Repository
At first, let’s update the packages:
```bash
apt update
apt install gnupg
```
Next, download MySQL from the [offical page](https://dev.mysql.com/downloads/repo/apt) or use wget command:
```bash
wget https://dev.mysql.com/get/mysql-apt-config_x.x.x-x_all.deb
```
where **x.x.x-x** is the MySQL version (for example, 0.8.15-1):
Screenshot 1. Download MySQL.
Install the .deb:
```
sudo dpkg -i mysql-apt-config_x.x.x-x_all.deb
```
where **x.x.x-x** is the MySQL version.
When you attempt to install the package, it will ask you what product and version you want to install. Here you can select The MySQL version, Tools, Connectors (like MySQL Workbench), and preview packages. To select the version, hit the first option:
Screenshot 2. Choose MySQL Server & Cluster.
Select the version you will use. Once selected, it will bring you to the previous menu — press Ok button:
Screenshot 3. Select the version you will use.
Update the apt repository:
```bash
apt-get update
```
The package for installing the server is "mysql-community-server" and its version is the same you have selected before in the package installer.
### Step 2. Install the MySQL Server
Install the MySQL Server using the command:
```bash
sudo apt-get install mysql-community-server
```
Screenshot 4. Installation process.
When apt finishes downloading, the installer will ask for a root password:
Screenshot 5. Enter the root password.
You have two options:
- Leave the password blank: the server will use unix sockets authentication. It means you can only access the server as a root user or as a user with sudo;
- Set a password: the authentication method will be the same for other users.
If you set a password, the installer will ask which authentication plugin to use, strongly encrypted password (MySQL 8.x), or legacy method (MySQL 7.x and earlier). To select options use arrows or the Tab button. You must select a method that is compatible with your client/program. WOnce you have selected all options, the installation process will be finished and the service will start automatically:
Screenshot 6. Select the default authentication plugin.
Now, check the service status with systemctl:
```bash
systemctl status mysql.service
```
Screenshot 7. Checking service status.
If you see “active”, it means that the server is running without errors. Press Q or Ctrl + C to exit.
Next, run the command as a root user to safely configure the SQL service:
```
mysql_secure_installation
```
The program will ask you questions. You will need to answer Yes (Y/y button) or No (any other key):
Screenshot 8. Running mysql_secure_installation.
If you want to allow remote access, edit the file "mysqld.conf" in etc/:
```
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
```
At the end of the file, add the option “bind_address” with the value of localhost:
```
bind-address=127.0.0.1
```
Save the file and restart the service with systemctl:
```bash
systemctl restart mysql
```
**Note:** remember to open the MySQL port (it will be good to specify the standard MySQL port). If you use ufw:
```
ufw allow $yoursqlport
```
where instead of **yoursqlport** write your MySQL port.
If you use iptables:
```
iptables –A INPUT –p tcp –dport $yoursqlport –j ACCEPT
```
where instead of **yoursqlport** write your MySQL port.
https://serverspace.us/support/help/backup-ubuntu-server-20-04-with-bacula.mdIn this tutorial, we will walk through the steps to configure Bacula to perform file backup on a local Ubuntu Server 20.04 server
Bacula is a powerful backup tool. It is highly scalable, works over the network, allows you to check and encrypt data, and has many other advantages.
In this tutorial, we will walk through the steps to configure a file backup on a local computer.
First, let’s take a look at the Bacula components:
- Bacula Director manages backup and restore tasks and coordinates file verification;
- Bacula Console allows you to manage the Director component, run jobs, view statistics, and so on;
- Bacula File works in every system that needs backup, interacts with the Director and sends files on its request;
- Bacula Storage manages the physical storages and writes the backups to them;
- Bacula Catalog is a service database for organizing backup, recovery, and file verification. Thanks to the catalog, the utility has retrospective information about all files and storage devices.
## Step 1 – Installing Bacula and database
Bacula uses the Postfix server to send email notifications when a task is completed. You need to install and configure it if you want to receive emails. The setup process is described here: [How to install and configure Postfix as a send-only SMTP server](https://serverspace.us/support/help/postfix-as-a-send-only-smtp-on-ubuntu/)
Let's install Bacula
```bash
apt install bacula
```
Enter the Postfix configuration data when prompted, or select “no connection” if you don’t need emails.
In the next step, select “Yes "to configure the PostgreSQL database server and" localhost” for its hostname. You can leave the password field empty.
Screenshot 1. PostgreSQL database configuration
## Step 2 – Configuring Bacula
First, set up a backup storage device. Create a folder for recording backups and make bacula its owner.
```bash
mkdir /opt/backup
chown bacula:bacula /opt/backup
```
Add the following configuration to the file /etc/bacula/bacula-sd.conf:
```
Device {
Name = LocalSD
Media Type = File
Archive Device = /opt/backup
LabelMedia = yes; # lets Bacula label unlabeled media
Random Access = Yes;
AutomaticMount = yes; # when device opened, read it
RemovableMedia = no;
AlwaysOpen = no;
Maximum Concurrent Jobs = 5
}
```
To apply the changes, restart the service.
```bash
sudo systemctl restart bacula-sd.service
```
Now you need to add storage information to /etc/bacula/bacula-dir.conf. Note that the password must match the password string in bacula-sd.conf
```
Storage {
Name = LocalSD # Must be equal to the "Name" parameter of the "Storage" section in the /etc/bacula/bacula-sd.conf file
Address = 127.0.0.1
Password = "Password"
Device = LocalSD
Media Type = File
}
```
Also, add information about the new FileSet that specifies the directories to back up.
```
FileSet {
Name = "LocalFS"
Include {
Options {
signature = MD5
}
File = /home
}
}
```
In this example, the /home folder is selected for backup. You can also add other goals in the same way. Keep in mind that the folder where backups located should not be backed up.
Also, add a Schedule:
```
Schedule {
Name = "LocalDaily"
Run = Full daily at 03:00
}
```
The last one is the Job configuration:
```
Job {
Name = "LocalBackup"
JobDefs = "DefaultJob"
Enabled = yes
Level = Full
FileSet = "LocalFS"
Schedule = "LocalDaily"
Storage = LocalSD
Write Bootstrap = "/var/lib/bacula/LocalhostBackup.bsr"
}
```
Save the file and close it, restart the service.
```bash
systemctl restart bacula-dir
```
Bacula will now run a full backup of the specified folders daily at 03:00. If you want to do this immediately, log in to the bconsole, type "run" select “LocalBackup”, and confirm it. To check the job status, enter “status” and select “1”.
To restore files, use the "restore" command in the bconsole and follow the instructions.
https://serverspace.us/support/help/postfix-as-a-send-only-smtp-on-ubuntu.mdIn this tutorial we will install and configure Postfix as a Send-Only SMTP Server on Ubuntu 20.04 with encryption and aliases
Postfix is used for sending and receiving emails. There are often situations when the server only needs to send mail. For example, to send notifications from apps. In such cases, the Postfix option for sending messages only is useful.
## Initial conditions
- Ubuntu 20.04;
- Domain name;
- DNS A record, containing the public IP address of your domain;
- TLS certificate for e-mail encryption;
## Step 1 – Installing Postfix
The easiest way is to install mailutils package, which contains Postfix and some other packages.
```bash
sudo apt install mailutils
```
During installation, a window for configuring Postfix will appear.
Screenshot 1. Postfix Configuration.
An Internet site is the most suitable option in our case. After selecting it, set the System mail name. It must be equal to the hostname and your domain name.
Screenshot 2. Postfix System mail name configuration.
## Step 2 – Configuring Postfix
To send emails only from the current server, we only need to listen to the loopback interface. Therefore, in the main.cf file change the "inet_interfaces" parameter to loopback-only.
```
sudo nano /etc/postfix/main.cf
inet_interfaces = loopback-only
```
Also adjust the mydestination parameter as follows.
```
mydestination = localhost.$mydomain, localhost, $myhostname
```
Restart Postfix.
```bash
sudo systemctl restart postfix
```
The current settings are sufficient for sending emails from the server. Let’s test it.
## Step 3 – Postfix testing
We will use the mail command to check whether Postfix will send an email.
```
echo "Fill in some text of the email here" | mail -s "Message subject" recipient's-email-address
```
Fill in the message text and title. The email will be sent to the specified address instead of the recipient’s-email-address.
If the email doesn’t arrive, check the Spam folder. If it is not there, then you need to check the configuration. Another cause of problems may be a mismatch between the host name, server name, and your domain name.
## Step 4 – Enabling SMTP encryption
Email encryption is very important for security reasons. In addition, some servers consider unencrypted emails to be spam.
To encrypt email, you must specify a valid certificate in the Postfix configuration.
```
sudo nano /etc/postfix/main.cf
```
Specify the path to the TLS domain certificate in the smtpd_tls_cert_file field, the private key in the smtpd_tls_key_file, and enter yes in the smtp_use_tls.
```
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/domain-name.pem
smtpd_tls_key_file=/etc/ssl/private/domain-private-key.pem
smtp_use_tls=yes
```
Restart Posfix.
```bash
sudo systemctl restart postfix
```
## Step 5 – Setting up aliases
Sometimes you need to redirect internal messages for users to the mailbox. For example, to redirect system messages. Aliases are used for this purpose. To configure them, edit the file:
```
sudo nano /etc/aliases
```
Add a line to the end of the file. In this example, we will configure sending system messages to mail@domain.com
```
root: mail.@domain.com
```
Save the file and close it. To apply the changes, enter the command:
```
sudo newaliases
```
https://serverspace.us/support/help/how-to-install-postgresql-on-ubuntu-20-04.mdIn this tutorial, we will walk through the process of installing PostgreSQL and the main operations with it.
PostgreSQL is a dynamically developing relational database management system. In this tutorial, we will walk through the process of installing it and the main operations with it.
** In the Serverspace you can [create a server](https://serverspace.us/services/cloud-servers.md) with already installed app “Postgres”.**
## Step 1 – Installing PostgreSQL packages
The postgresql package is the main one. You also need to install a package with additional functionality and utilities postgresql-contrib.
```bash
sudo apt install postgresql postgresql-contrib
```
## Step 2 – Authorization and roles in PostgreSQL
The concept of roles in the PostgreSQL DBMS is used for authentication and authorization. Without going into details, roles are very similar to users and groups in Linux.
After adding a role to the DBMS corresponding to the Linux username, this user will be able to log in to the PostgreSQL system as this role. During installation, the postgres user was add to the system. Let's log in using it.
```
sudo -i -u postgres
```
To access the PostgreSQL command line, use the command:
```bash
psql
```
You can combine these two commands and run the PostgreSQL command line immediately.
```
sudo -u postgres psql
```
You can use this command line to manage the DBMS.
## Step 3 – Creating a new role
After logging in with your postgres account, you can create a new role:
```
createuser –interactive
```
Enter the user name and specify whether the user needs to be a super user.
## Step 4 – Creating a new database
The DBMS assumes that there is a database with the same name for each role. And after authorization, PostgreSQL will try to connect to it. Therefore, you will not be able to log in to the DBMS command line immediately after creating the user.
```bash
psql: error: could not connect to server: FATAL: database "username" does not exist
```
Let’s fix this and create a new database with the name of the new role.
```
createdb username
```
## Step 5 – Authorization in the PostgreSQL command line under the new role
To access the PostgreSQL command line, you need a Linux account with the same name as the role and database name. If there is no such user, you can create one using the command:
```
sudo adduser username
```
Then, in interactive mode, you need to fill in the username, password, and several additional fields.
Log in with your new account and access the PostgreSQL command line
```bash
sudo -i -u username
psql
```
Use this command to connect to another database. Here, postgres is the name of the target database.
```bash
psql -d postgres
```
To display information about an established connection, use the command:
```
conninfo
You are connected to database "username" as user "username" via socket in "/var/run/postgresql" at port "5432".
```
https://serverspace.us/support/help/install-lamp-stack-on-ubuntu-20.04.mdIn this tutorial, we will install the LAMP kit on the Ubuntu 20.04 server. LAMP consists of Linux, Apache web server, MySQL database, and PHP
LAMP is an acronym, it is a set of open source software that is usually installed together to host dynamic websites and web applications written in PHP. The Linux operating system works with the Apache web server. Site data is stored in a MySQL database, and PHP is responsible for processing dynamic content.
** In the Serverspace you can [create a server](https://serverspace.us/services/cloud-servers.md) with already installed app “LAMP”.**
In this tutorial, we will install the LAMP kit on the Ubuntu 20.04 server.
## Step 1 – Installing Apache
First, let’s update the packages in our system and install Apache.
```bash
sudo apt update
sudo apt upgrade
sudo apt install apache2
```
If you have a firewall enabled, you need to allow HTTP and HTTPS traffic. To display the available application profiles, enter the command.
```
sudo ufw app list
```
To allow unencrypted connections on port 80, there is an Apache profile. Apache Secure will only open encrypted (TLS/SSL) traffic on port 443. To allow both types of traffic, select Apache Full profile.
```
sudo ufw allow "Apache"
```
Now let’s check if the web server is working. Open the IP address of your server in a browser.
```
http://your_server_ip
```
If everything is well, you will see the Apache2 Default Page with basic information about the web server.
Screenshot 1. Apache2 Default Page.
## Step 2 – Installing MySQL
MySQL is the most commonly used database management system for dynamic websites. Let's install it.
```bash
sudo apt install mysql-server
```
To improve the DBMS security right after installation, there is a special script that changes some MySQL settings.
Enter this command and follow the instructions.
```
sudo mysql_secure_installation
```
After completing the configuration, let’s log in to the MySQL console.
```bash
sudo mysql
```
Message "Welcome to the MySQL monitor" means that the MySQL server is running.
## Step 3 — Installing PHP
The PHP package processes the code and generates the final content for users. You will also need the php-mysql package for interacting with MySQL databases and libapache2-mod-php for interacting with Apache. Let’s install them.
```bash
sudo apt install php php-mysql libapache2-mod-php
```
To make sure that PHP works and find out its version, use the command:
```bash
php -v
PHP 7.4.3 (cli) (built: May 26 2020 12:24:22) ( NTS )
```
We have installed all the elements of the LAMP kit. In the next steps, we will create a virtual host and test the functionality of the entire bundle.
## Step 4 – Creating a virtual host
On the Apache web server, you can use virtual hosts to serve multiple sites on the single server. We will use the domain my-site.io as an example. You need to replace this address with your domain name.
By default, Apache processes the contents of the /var/www/html directory. If you do not have a domain name yet, you can use the default folder for testing. The site will be accessible via the server’s public IP address over the HTTP Protocol.
If you already have a domain name, let's create a new directory for it – var/www/my-site.io. In addition, let's set the current system user as the owner of this directory.
```bash
sudo mkdir /var/www/my-site.io
sudo chown -R $USER:$USER /var/www/my-site.io
```
After that, you need to create a configuration file for this domain in the directory /etc/apache2/sites-available/ and add the main settings to it.
```xml
sudo nano /etc/apache2/sites-available/my-site.io.conf
#Basic virtual host configuration
ServerName my-site.io
ServerAlias www.my-site.io
ServerAdmin admin-mail@localhost
DocumentRoot /var/www/my-site.io
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
```
To activate the newly created virtual host, enter:
```bash
sudo a2ensite my-site.io
sudo apache2ctl configtest
systemctl reload apache2
```
Now you have configured Apache to process files from /var/www/html by default or from /var/www/my-site.io, if you already have a domain name. This is the root folder of the website. Create index.html file there and put some content in it.
```
#default directory
nano /var/www/html/index.html
#or my-site.io directory
nano /var/www/my-site.io/index.html
# My first web site!
Some text here.
```
Than enter your domain name or server IP address in the browser’s address bar:
```
http://my-site.io
or http://web-server-ip-address
```
Screenshot 2. Test HTML page.
If you see your content there, everything works fine.
## Step 5 – PHP testing
To test PHP processing, create a file test.php in the site’s root folder.
```
nano /var/www/html/test.php
```
Put this PHP code in it:
```
```
Now just add "/test.php" to your site address from the previous step:
```
http://my-site.io/test.php
or http://web-server-ip-address/test.php
```
You will see something like this:
Screenshot 3. PHP service page
This is a PHP service page that contains information about various settings. If you can see this, everything works well.
After testing, you should delete this page, since it contains confidential information about your server:
```
sudo rm /var/www/html/test.php
```
We now have a working LAMP server.
https://serverspace.us/support/help/backup-postgresql-on-ubuntu-with-bacula.mdYou need to back up the database using the built-in DBMS engine, and then copy the resulting file. Bacula will manage all the entire process.
The installation and initial configuration of Bacula is described here: [How to Backup Ubuntu Server 20.04 with Bacula](https://serverspace.us/support/help/backup-ubuntu-server-20-04-with-bacula/). In this tutorial, we will add settings for creating a PostgreSQL database backup.
First, you need to back up the database using the built-in DBMS tool, and then copy the result-ing file. Bacula allows you to run scripts before and after the backup process.
## Step 1 – Preparing and creating scripts
First, let’s create a pre-psql-backup.sh script in the /etc/bacula/ folder that will make the dump.
```
sudo nano /etc/bacula/pre-psql-backup.sh
```
Write the following commands to it.
```bash
#!/bin/bash
# Clearing, creating, and configuring a folder for the dump
rm -rf /opt/psql-backup/
mkdir -p /opt/psql-backup/
chown -R postgres:postgres /opt/psql-backup/
# Backup all PostgreSQL databases in SQL format
sudo -u postgres pg_dumpall –clean –inserts –verbose –file=/opt/psql-backup/$(date +%Y-%m-%d_%H:%M).sql 2>/var/log/bacula-pg_dump.log
```
Let’s create a script for cleaning the temporary folder.
```
sudo nano /etc/bacula/post-psql-backup.sh
```
Copy the following lines there.
```bash
#!/bin/bash
rm -f /opt/psql-backup/*
```
Now let’s make the scripts executable.
```bash
chmod 750 /etc/bacula/pre-psql-backup.sh
chmod 750 /etc/bacula/post-psql-backup.sh
```
## Step 2 – Configuring Bacula
The next section will describe our Job. Paste it into the /etc/bacula/bacula-dir.conf file.
```
Job {
Name = "PSQL-backup"
JobDefs = "DefaultJob"
Enabled = yes
Level = Full
FileSet = "PSQL"
Schedule = "LocalDaily"
Storage = LocalSD
Write Bootstrap = "/var/lib/bacula/PSQLBackup.bsr"
# Executing scripts
ClientRunBeforeJob = "/etc/bacula/pre-psql-backup.sh"
ClientRunAfterJob = "/etc/bacula/post-psql-backup.sh"
}
```
Now the section describing the target folder for backup.
```
FileSet {
Name = "PSQL"
Include {
Options {
signature = MD5
}
File = /opt/psql-backup/
}
}
```
Save and close the file, then restart Bacula to apply the changes.
```bash
systemctl reload bacula-dir
```
Now the script will make dumps, and Baсula will write them to the 'LocalSD' storage according to the 'LocalDaily' schedule.
https://serverspace.us/support/help/use-rsync-to-create-a-backup-on-ubuntu.mdLearn how to back up your Ubuntu 20.04 system using Rsync. This guide covers simple, effective steps for creating secure and automated backups.
There are many ways to create a backup on Ubuntu, each with its own advantages. [In a previous tutorial, we explored Bacula](https://serverspace.us/support/help/backup-ubuntu-server-20-04-with-bacula/) — a powerful yet complex tool suited for enterprise-level backup management. However, not every situation requires such complexity.
Creating regular backups is a critical part of any system maintenance strategy. Whether you’re a casual user, a developer, or a system administrator, unexpected data loss can occur due to hardware failure, accidental deletion, malware, or even system upgrades gone wrong. Backups ensure that you can recover quickly without losing valuable files, configurations, or work.
In this tutorial, we’ll focus on **rsync** — a simple yet highly effective command-line tool for creating backups. It’s fast, efficient, and offers a wide range of options to suit different backup needs. You'll learn how to use rsync to back up your data on **Ubuntu 20.04**, step by step.
## Step 1 – Installing rsync
Ubuntu 20.04 already contains the rsync package installed. To check this and find out the version, use the command:
```bash
sudo rsync –version
```
If the package is not installed for some reason, use the command:
```bash
sudo apt install rsync
```
To launch rsync as a service in Ubuntu 20.04, create the /etc/rsyncd.conf file and copy /lib/systemd/system/rsync.service to /etc/systemd/system/rsync.service.
```
sudo nano /etc/rsyncd.conf # save and close it
sudo cp /lib/systemd/system/rsync.service /etc/systemd/system/rsync.service
```
Now restart the service.
```bash
sudo systemctl restart rsync
```
## Step 2 – Configuring the data source server
First, add these lines to the rsync configuration file /etc/rsyncd.conf. Change the ‘path’ parameter to the path to the source files to back up. For 'uid' and 'gid', use the existing username and group with read permissions in the backup source folders.
```
sudo nano /etc/rsyncd.conf
# Global configuration of the rsync service
pid file = /var/run/rsyncd.pid
# Username and group for working with backups
uid = backup-user
gid = backup-user
# Don't allow to modify the source files
read only = yes
# Data source information
path = /path/to/backup
list = yes
auth users = backup-user
secrets file = /etc/rsyncd.passwd
```
The data in the 'auth users' parameter and the /etc/rsyncd.passwd file is used for authorization between rsync on different computers. Add a line there, like this:
```
sudo nano /etc/rsyncd.passwd
backup-user:test-pass
```
Change the permissions for the rsyncd.passwd file.
```bash
sudo chmod 0600 /etc/rsyncd.passwd
```
Restart the service to apply the changes.
```bash
sudo systemctl restart rsync
```
## Step 3 – Running the backup
Create the /etc/rsyncd.passwd file on the receiving server where the backups will be stored. Enter the same password as on the source computer, but without the user name, set 600 permissions for it.
```bash
sudo nano /etc/rsyncd.passwd
test-pass # Save and close file
sudo chmod 0600 /etc/rsyncd.passwd
```
To perform a backup run the command:
```bash
rsync -a –password-file=/etc/rsyncd.passwd backup-user@source-server-ip::data /destination/path/$(date +%Y-%m-%d)/
```
For regular backups, just add the task to the end of the /etc/crontab file.
## Conclusion
Rsync offers a flexible, reliable, and lightweight solution for backing up data on Ubuntu 20.04. Whether you’re protecting personal files or managing server environments, rsync gives you control over what to back up, where to store it, and how often it runs — all with simple command-line tools. Unlike more complex systems like Bacula, rsync can be set up quickly and customized to fit both simple and advanced needs.
By following the steps in this tutorial, you’ve learned how to install and configure rsync, set up secure authentication between systems, and automate regular backups. Taking the time to implement a solid backup strategy now can save you hours — or even days — of recovery efforts later.
**Don't wait for data loss to remind you of the importance of backups**. Set up rsync today and give yourself peace of mind knowing your critical files are safe.
https://serverspace.us/support/help/configure-bind9-dns-server-on-ubuntu.mdIn this tutorial, we will walk through the installation and basic configuration of the BIND9 DNS server on Ubuntu 20.04
In this tutorial, we will walk through the installation and basic configuration of the BIND9 DNS server.
How to configure BIND9 DNS Server on Ubuntu 20.04:
- [Install BIND9](#stepone)
- [Configurate BIND9](#steptwo)
- [Test BIND9](#stepthree)
## Install BIND9
The first thing you need to do is to update the package list and to install BIND9.
```bash
sudo apt update
sudo apt install bind9
```
After the installation process is complete, you can check if BIND9 is working.
```
nslookup google.com 127.0.0.1
```
The answer will be something like this:
```
Server: 127.0.0.1
Address: 127.0.0.1#53
```
```
Non-authoritative answer:
Name: google.com
Address: 64.233.164.138
```
## BIND9 configuration
The DNS server works right after installation. You need to configure it according to your usage purposes. First, allow BIND9 to work through the firewall.
```
sudo ufw allow Bind9
```
The main configuration file is **named.conf.options**, let’s open it.
```
sudo nano /etc/bind/named.conf.options
```
Some of the available options are listed below. Add the necessary to the “options” directive.
The “listen-on” directive allows you to specify the networks that the DNS server will serve. Don’t write this or write “any;” to work for all addresses.
```
listen-on {
10.10.10.0/24;
10.1.0.0/16;
};
```
BIND9 only allows local queries by default. Add the necessary IP addresses to the “allow-query” directive or “any;” to allow all requests.
```
allow-query { any; };
```
Forwarders contain the IP addresses of DNS servers to which the request is redirected if our server does not contain the required data.
```
forwarders {
8.8.8.8;
8.8.4.4;
};
```
Save and close the file. Check the configuration:
```
sudo named-checkconf
```
If no errors appear, then everything is in order. Restart the service for the changes to take effect.
```bash
sudo systemctl restart bind9
```
## BIND9 test
To check if the DNS server is working properly, enter the following command on any other remote computer. Replace dns-server-ip-address with the IP address of the DNS server.
```
nslookup ubuntu.com dns-server-ip-address
```
Output:
```
Server: dns-server-ip-address
Address: dns-server-ip-address#53
```
```
Non-authoritative answer:
Name: ubuntu.com
Address: 91.189.88.181
```
Now you have a working caching name server BIND9.
**Next steps:**
- [BIND9 as a Primary DNS Server;](https://serverspace.us/support/help/bind9-as-a-primary-dns-server-on-ubuntu/)
- [BIND9 as a Secondary DNS Server.](https://serverspace.us/support/help/bind9-as-a-secondary-dns-server-on-ubuntu/)
https://serverspace.us/support/help/bind9-as-a-primary-dns-server-on-ubuntu.mdIn this tutorial, we will walk through the steps to configure BIND9 as the primary DNS server for a domain name on Ubuntu 20.04.
You can use the DNS server in different ways. In this tutorial, we will configure BIND9 as the primary DNS server for a domain name. After that, you can specify the IP addresses of various domain services, for example, the mail server, as well as third-level domains.
Before you start, [perform the installation and basic configuration of BIND9](https://serverspace.us/support/help/configure-bind9-dns-server-on-ubuntu/).
## DNS zone creating
In this tutorial, we will use “domain-name.com” as an example. Symply change it to your domain name. Also, you need to use your real IP addresses instead of 10.1.1.xxx in the example.
Let's add zone information to the configuration.
```
sudo nano /etc/bind/named.conf.local
```
Add these lines to it.
```
zone "domain-name.com" {
type master;
file "/etc/bind/db.domain-name.com";
allow-transfer { 10.1.1.10; };
also-notify { 10.1.1.10; };
};
```
- type may be master, slave, forward, hint;
- file – indicates the path to the new zone file;
- allow-transfer – list of DNS servers that are allowed to transfer the zone;
- also-notify – the primary DNS server will notify these servers of zone changes.
Restart the service.
```bash
systemctl reload bind9
```
## Zone file configuration
Create a zone file from the template and open it.
```
sudo cp /etc/bind/db.local /etc/bind/db.domain-name.com
sudo nano /etc/bind/db.domain-name.com
```
Replace localhost in the SOA record with the FQDN of your server with the “.” character at the end. In the example, this is “ns.domain-name.com.”. Replace “root.localhost” with your valid admin email address with “.” instead of “@” in it and “.” at the end.
Serial – serial number of the change. You have to manually increment it every time you change the zone file. The secondary server monitors changes in the zone using this parameter.
```
;
;
;
$TTL 604800
@ IN SOA ns.domain-name.com. admin.domain-name.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.domain-name.com.
@ IN A 10.1.1.1
ns IN A 10.1.1.9
ns2 IN A 10.1.1.10
mx IN A 10.1.1.15
```
The bottom of the file contains DNS records. The format of the record: hostnameclassDNS record typevalue. Where:
- hostname – most often this value is a third-level domain name, and "domain-name.com" is filled in automatically. @ or none means an entry for the zone name (in this case, domain-name.com). You can also specify the FQDN with a dot at the end (for example, ns.domain-name.com.);
- class is IN (Internet), indicates the type of network;
- The most common types of DNS records: A, NS, MX, CNAME, TXT. “A” contains the IP address of the domain name, “NS” is the IP address of the zone’s DNS server, “MX” – the mail server, “CNAME” – alias referring to the value of the specified record, “TXT” – custom entry;
- value – IP address, host name, text information.
Restart the rndc.
```
sudo rndc reload
```
You can check the DNS server. Enter this command from any remote computer.
```
nslookup domain-name.com 10.1.1.9
```
Replace domain-name.com with your FQDN and 10.1.1.9 with the address of the newly configured name server. Your domain’s DNS A-record will be used as the response. In the given example, this is 10.1.1.1.
**Next step** – [BIND9 as a Secondary DNS Server.](https://serverspace.us/support/help/bind9-as-a-secondary-dns-server-on-ubuntu/)
https://serverspace.us/support/help/bind9-as-a-secondary-dns-server-on-ubuntu.mdLearn how to configure BIND9 as a secondary DNS server on Ubuntu 20.04. This step-by-step guide covers zone transfers, redundancy setup, and DNS failover configuration.
The secondary DNS server works for fault tolerance. If the primary one stops working for some reason, the secondary one will ensure the functionality of the website and other resources specified in it.
First, you need to [install and make a basic configuration of the BIND9 DNS server](https://serverspace.us/support/help/configure-bind9-dns-server-on-ubuntu/).
### Initial settings
- Primary DNS server IP – 10.1.1.9
- Secondary DNS server IP – 10.1.1.10
- Example domain name – domain-name.com
## Additional settings for the primary DNS server BIND9
If you [configured the primary DNS server according to our instructions](https://serverspace.us/support/help/bind9-as-a-primary-dns-server-on-ubuntu/), you can skip this step.
We must allow the primary DNS server to transmit DNS zone data to the secondary server. Open the BIND9 configuration file.
```
sudo nano /etc/bind/db.domain-name.com
```
Add the following 2 parameters to the zone settings: **allow-transfer** and **also-notify**, substituting the IP address of the secondary server in them. The result will be something like this.
```
zone "domain-name.com" {
type master;
file "/etc/bind/db.domain-name.com";
allow-transfer { 10.1.1.10; };
also-notify { 10.1.1.10; };
};
```
Save this file and reload BIND9.
```bash
sudo systemctl reload bind9
```
## Configuring BIND9 as a secondary DNS Server
Open the BIND9 configuration file.
```
sudo nano /etc/bind/named.conf.local
```
Add the following directive to it.
```
zone "domain-name.com" {
type slave;
file "db.domain-name.com";
masters { 10.1.1.9; };
};
```
The **masters** parameter must contain the IP address of the primary DNS server. Save the file and reload BIND9.
```bash
sudo systemctl reload bind9
```
To check if the secondary DNS server is working correctly, use the command on any remote computer:
```
nslookup domain-name.com 10.1.1.10
```
Use your FQDN instead of domain-name.com and the IP address of your secondary DNS server instead of 10.1.1.10.
Output
```
Server: 10.1.1.10
Address: 10.1.1.10#53
```
```
Name: domain-name.com
Address: 10.1.1.10
```
## Conclusion
By setting up a secondary DNS server with BIND9, you significantly improve the resilience and availability of your domain's name resolution. If the primary DNS server goes down, the secondary server will seamlessly take over, ensuring that your website and other critical resources remain accessible. Following this step-by-step guide helps you build a fault-tolerant DNS infrastructure and avoid costly downtime.
## FAQ
- **Q: Is a secondary DNS server mandatory?**
A: Technically, no, but it is highly recommended to avoid single points of failure in DNS resolution.
- **Q: How often does the secondary server update its data from the primary?**
A: It updates whenever changes occur and the primary sends notifications (thanks to the also-notify parameter), plus it performs periodic zone refreshes based on its configuration.
- **Q: Can I use a different DNS server instead of BIND9?**
A: Yes, other DNS servers like PowerDNS or Microsoft DNS can also be configured for secondary functionality, but the configuration steps will differ.
- A: If both the primary and secondary DNS servers are offline, name resolution for your domain will fail, so it's wise to monitor both servers and consider geographic redundancy for maximum reliability.
https://serverspace.us/support/help/how-to-get-lets-encrypt-ssl-on-ubuntu.mdLearn how to get a free Let’s Encrypt SSL certificate on Ubuntu 20.04. Step-by-step guide for automatic installation and HTTPS configuration using Certbot.
**SSL/TLS encryption** is a critical component of modern network security, ensuring that data transmitted between servers and clients remains private and protected. Whether you’re running a web or mail server, enabling SSL is essential for building trust and preventing data breaches. In this article, we'll guide you through the process of obtaining and installing a free Let's Encrypt SSL certificate on your server — a simple and reliable way to secure your services with HTTPS.
How to get Let’s Encrypt SSL on Ubuntu 20.04:
- [Install the "Let's Encrypt" package](#stepone)
- [Standalone server for getting the "Let's Encrypt" SSL certificate](#steptwo)
- [Automatically install SSL certificate on Ngix and Apache web servers](#stepthree)
- [Create "Let's Encrypt Wildcard SSL certificate](#stepfour)
As initial conditions, you must have a domain name. Its DNS A-record must contain the public address of your server. If the firewall is enabled, open access for HTTP and HTTPS traffic.
```
sudo ufw allow 80
sudo ufw allow 443
```
## Step 1 – Installing the “Let’s Encrypt” package
The process of installing the “Let’s Encrypt” package with all its dependencies is extremely simple. To do this, enter the command:
```bash
sudo apt install letsencrypt
```
Along with the “Let’s Encrypt” package, this command also installs the “certbot.timer” utility for automatic certificate renewal. It checks the validity of SSL certificates in the system twice a day and extends those that expire in the next 30 days. To make sure that it is running, enter:
```bash
sudo systemctl status certbot.timer
```
There are different configurations and conditions for obtaining a certificate. Let’s look at some of them.
## Step 2 – Standalone server for getting the “Let’s Encrypt” SSL certificate
The easiest way to get an ssl certificate is to use a standalone option in Certbot. Replace **domain-name.com** with your domain name, run the command, and follow the instructions:
```
sudo certbot certonly –standalone –agree-tos –preferred-challenges http -d domain-name.com
```
The **certonly** option means that the certificate will only be obtained without installation on any web server, **standalone** allows you to start your own web server for authentication, **agree-tos** means acceptance of the ACME server subscription agreement, which is a prerequisite, and **preferred-challenges http** means performing authorization using HTTP.
## Step 3 – Automatic installation of the SSL certificate on nginx and Apache web servers
Certbot can automatically install the certificate on nginx and Apache web servers. To do this, you need to install an additional package and choose the appropriate one for your web server.
```bash
apt install python3-certbot-nginx
apt install python3-certbot-apache
```
Run this command for nginx:
```
sudo certbot –nginx –agree-tos –preferred-challenges http -d domain-name.com
```
Or this for Apache:
```
sudo certbot –apache –agree-tos –preferred-challenges http -d domain-name.com
```
Follow the instructions and Certbot will install an SSL certificate for you.
## Step 4 – “Let’s Encrypt” Wildcard SSL certificate
To create a wildcard certificate, the only possible challenge method is DNS. In the **d** parameter, you must specify both the bare domain and wildcard.
```
sudo certbot certonly –manual –agree-tos –preferred-challenges dns -d domain-name.com -d *.domain-name.com
```
After that, place the specified TXT record on your DNS server and click continue.
If everything is well, you will see the path where your new wildcard certificate is stored and some other information.
## FAQ: Let's Encrypt SSL on Ubuntu 20.04
- **Q: What is Let's Encrypt and why should I use it?**
Let's Encrypt is a free, automated, and open certificate authority that provides SSL/TLS certificates to enable HTTPS on websites. It helps secure your web traffic, improve SEO rankings, and build trust with users — all without any cost.
- **Q: Do I need a domain to use Let's Encrypt?**
Yes, a valid domain name is required. You also need to ensure that your domain points to the public IP address of your server and that ports 80 (HTTP) and 443 (HTTPS) are open in your firewall.
- **Q: Will my SSL certificate renew automatically?**
If you install Let's Encrypt using Certbot, the certbot.timer utility handles automatic renewal. It checks certificate validity twice daily and renews certificates that expire within 30 days.
- **Q: Can Certbot install the certificate automatically on my web server?**
Yes. Certbot supports automatic SSL installation for both Nginx and Apache. You simply need to install the corresponding plugin and follow the guided steps during execution.
- **Q: How do I get a wildcard SSL certificate?**
To issue a wildcard certificate with Let's Encrypt, you must use DNS verification. This involves adding a TXT record to your domain's DNS settings before Certbot can validate and generate the certificate.
https://serverspace.us/support/help/how-to-add-swap-space-on-ubuntu-20-04.mdSwap is an additional space to the amount of RAM allocated from the hard disk space. In this tutorial, we will create a 4 GB swap file.
Swap is an additional space to the amount of RAM allocated from the hard disk space. If there is not enough RAM, the system moves the oldest data to the swap, thereby freeing up space for active applications.
## Recommendations for the swap file
Hard drives, even solid-state drives, are slower than RAM. Thus, while designing and using the system, it is necessary to allocate the amount of RAM with a certain margin, leaving for the swap file the role of a backup space. The optimal swap size is equal to the amount of RAM, but in some cases it can be doubled.
Virtual servers are usually devoid of a swap space. On physical servers, it is usually set automatically, but can be changed for some purposes. In this tutorial, we will create a 4 GB swap file.
## Swap file creation
First, let’s create a file and preallocate space for the swap.
```
sudo fallocate -l 4G /swap
```
Close the file access rights for everyone except root.
```bash
sudo chmod 600 /swap
```
Configure the swap area in the **/swap** file.
```
sudo mkswap /swap
```
Output:
```
Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
no label, UUID=3c2ac0c0-3cc2-4571-b072-5f7d556acc88
```
Activate the swap file.
```
sudo swapon /swap
```
To activate it after a reboot, open the file:
```
sudo nano /etc/fstab
```
Paste this line at the end of it.
```
/swap swap swap defaults 0 0
```
## Checking the swap file
To see the size and used space of the swap file use the command:
```
sudo swapon –show
```
Output:
```
NAME TYPE SIZE USED PRIO
/swap file 4G 0B -2
```
The second option is to view the state of RAM and the swap file.
```
sudo free -h
```
Output:
```
total used free shared buff/cache available
Mem: 1.9Gi 74Mi 1.8Gi 0.0Ki 115Mi 1.7Gi
Swap: 4.0Gi 0B 4.0Gi
```
## Swappiness set up
Swappiness is a parameter that allows you to adjust the level of swap usage by the system. A high value will result in active use of the swap file, while a low value will result in minimal use.
To see the current value, enter:
```
cat /proc/sys/vm/swappiness
```
Output:
```
60
```
To set it to 20 use the following command or enter a value from 0 to 100:
```
sudo sysctl vm.swappiness=20
```
To save this setting after a reboot, open the **/etc/sysctl.conf** file and insert it there:
```
vm.swappiness=20
```
Save it and close.
## Removing the swap file
First, deactivate the swap file.
```
sudo swapoff /swap
```
Then remove this line from the **/etc/fstab** file.
```
/swap swap swap defaults 0 0
```
Finally, delete the file from the file system.
```
sudo rm /swap
```
https://serverspace.us/support/help/set-up-wireguard-vpn-server-on-ubuntu.mdIn this tutorial, we will look at the steps to set up and configure the WireGuard VPN server and client on Ubuntu 20.04
In this tutorial, we will look at the steps to set up and configure the WireGuard VPN server and client.
## WireGuard installation
Install the WireGuard package on both server and client machines using this command:
```bash
sudo apt install wireguard
```
## System configuration
First, you need to allow incoming UDP traffic on some port for the VPN connection.
```
sudo ufw allow 61951/udp
```
Allow kernel-level network packet redirection.
```
sudo nano /etc/sysctl.conf
```
Uncomment the following line.
```
net.ipv4.ip_forward=1
```
Apply the changes.
```
sudo sysctl -p
```
## Private and public key pairs creation
Use this command to generate keys and make private one accessible only to the root user for security reasons.
```bash
wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key
sudo chmod 600 /etc/wireguard/server_private.key
```
Perform the same action on the client machine for the client_private.key and client_public.key.
To see the keys values, use the 'cat' command, for example:
```
sudo cat /etc/wireguard/server_private.key
cat /etc/wireguard/server_public.key
```
## WireGuard server configuration
Create the WireGuard configuration file.
```
sudo nano /etc/wireguard/wg0.conf
```
Fill it in with the following lines:
```
# Server configuration
PrivateKey = oCH7Z0g+ieQ99KkkR1E5EO22Evs5q75F+ES4O4Oc93E= # The server_private.key value.
Address = 10.5.5.1/24 # Internal IP address of the VPN server.
ListenPort = 61951 # Previously, we opened this port to listen for incoming connections in the firewall.
# Change "enp0s5″ to the name of your network interface in the following two settings. This commands configures iptables for WireGuard.
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp0s5 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp0s5 -j MASQUERADE
```
```
# Configurations for the clients. You need to add a [Peer] section for each VPN client.
PublicKey = gsgfB29uYjpuFTCjC1+vHr9M7++MHJcG6Eg4rtuTu34= # client_public.key value.
AllowedIPs = 10.5.5.2/32 # Internal IP address of the VPN client.
```
Save and close this file. To start the WireGuard VPN server enter the command:
```bash
sudo systemctl start wg-quick@wg0
```
Configure the interface autorun after a system reboot.
```bash
sudo systemctl enable wg-quick@wg0
```
## WireGuard client configuration
You also need to install "resolvconf" on the client.
```bash
sudo apt install resolvconf
```
Now, create the WireGuard configuration file on the client machine.
```
sudo nano /etc/wireguard/wg0.conf
```
Fill it in with the following lines:
```
# Client configuration
PrivateKey = eLI6PoQf3xhLHu+wlIIME5ullpxxp8U+sYMKHGcv2VI= # The client_private.key value.
Address = 10.5.5.2/24 # IP address of the client's wg0 interface.
DNS = 8.8.8.8
```
```
# Server connection configuration
PublicKey = tsGQ8spwOQhpJb4BbhZtunLZEJCcPxUBIaQUpniQ+z4= # The server_public.key value.
AllowedIPs = 0.0.0.0/0 # Traffic for these addresses will be routed through the VPN tunnel. In this example, all addresses are selected.
Endpoint = 82.213.236.27:61951 # Public IP address of our VPN server and port number (ListenPort in the server configuration).
PersistentKeepalive = 25
```
Save and close it.
Use this command to establish the VPN connection:
```
sudo wg-quick up wg0
```
To view connection information use this command:
```
wg
```
Output:
```
interface: wg0
public key: gsgfB29uYjpuFTCjC1+vHr9M7++MHJcG6Eg4rtuTu34=
private key: (hidden)
listening port: 58208
```
```
peer: tsGQ8spwOQhpJb4BbhZtunLZEJCcPxUBIaQUpniQ+z4=
endpoint: 82.213.236.27:61951
allowed ips: 0.0.0.0/0
```
https://serverspace.us/support/glossary.mdFind out about different technical terms, IT jargon and information technology definitions in our Glossary. Click to expand your technical knowledge.
Find out about different technical terms, IT jargon and information technology definitions in our Glossary. Click to expand your technical knowledge.
https://serverspace.us/support/glossary/application-programming-interface.mdApplication Programming Interface, or API for short, refers to an application interaction interface that allows services and other applications to communicate with each other.
Application Programming Interface, or API for short, refers to an application interaction interface that allows services and other applications to communicate with each other.
The API defines the functionality that the program (module, library) provides, but at the same time, the API makes it possible to abstract the way this functionality is implemented.
Typically, a hierarchy is established between components, with the highest-level components using the low-level API, and so on in a downward spiral.
The key aspect of working with the API is the ready-made code use or a permanent function that will be used in the final product. The implementation way here departs to another plan, and developers get the opportunity to third-party programmers easily use the developments.
The API definition itself highlights two components:
- A software piece with a specific function,
- An application separate part of a complete application.
The individual parts fragmentation can be determined by how independent the application component is. Most often, according to this scenario, the APIs of individual libraries are arranged, which, with its help, interact with other applications or the site parts.
The API does not include the application hidden logic – developers have the right to leave certain areas open only for their use.
In one application, there can be many such objects interacting with each other. Each of them has its API – a set of characteristics and methods for interacting with other objects in the application.
API usage is ubiquitous at the moment. Most resources on the Internet use several APIs at once since this solution is also distinguished by its reliability and extensive integration practice. Using the API has become an industry-standard kind when building modern websites or applications.
https://serverspace.us/support/glossary/docker.mdDocker is an open-source platform or software (which is also true) that is used to develop, test, deliver and run applications in containerized environments.
Docker is an open-source platform or software (which is also true) that is used to develop, test, deliver and run applications in containerized environments. The platform’s usefulness is found in more efficient use of resources, live applications faster migration to other environments, and deployment automation.
The platform wraps the software in standardized containers along with all the codependency logic. A container assembled in this way contains all the key components: system tools, code and runtime, as well as the necessary libraries.
Docker works by using an executing code standardized way that speeds up development, eliminates certain risks, and in most cases is more cost-effective. For example, you no longer need to install Redis or Elasticsearch as they can be run directly from the container.
The ability to quickly deploy gives Docker the ability to quickly describe the entire environment, which significantly reduces the cost and speeds up development processes.
In practical use of Docker, an advantages number stand out:
- Docker makes it possible to deliver services a magnitude order more often;
- By using pre-defined containers (with all dependencies), deployment mechanics are facilitated as a repeatable environment is achieved. Also, the errors’ severity is reduced, since it is much easier to start an earlier version backup;
- Docker containerized packaging allows running more code on each server you use, which optimizes resource consumption;
- A lightweight system for transferring an application from a development and testing environment to a production environment with subsequent deployment.
Docker works not only with the native Linux OS, but also with Windows as well as macOS. Despite the obvious advantages of using an OS, Docker can still have some limitations, depending on a particular system configuration.
https://serverspace.us/support/glossary/container.mdContainers are a virtualization alternative type that uses an isolated environment to run applications.
Containers are a virtualization alternative type that uses an isolated environment to run applications. The containers’ implementation is achieved by using an isolated space that contains all the necessary components, from system tools to libraries. These resources are usually called virtualized names. Interaction is supported with the container all components, but going beyond them is limited. In other words, the operating system allows only labelled components to be used.
Within containers, applications function without restrictions, since they are defined as the only one. To make changes to an existing file, or to create a new one, the container receives only new areas from the main host OS. This provides a key advantage in deploying multiple containers speed on a single host.
There is an important difference between a virtual machine (VM) technology and containers. Containers do not work with third-party system files and tools, while VMs use a separate resource pool from their OS. To work with the container, only resources are required, otherwise, the process is more similar to the components sharing by the operating system. This gives the container an advantage over VMs not only in startup speed but also in the system load degree, especially during startup.
Containers can be API or OS-specific. For example, Linux containers will not work without the Linux API, so they will be of little use for Windows.
To manage containers, you can use PowerShell (only allows you to work with a local repository), which is gradually losing popularity, or Docker. There is an agreement between Microsoft and Docker that all management commands are relevant for both Win containers and Linux.
https://serverspace.us/support/glossary/kubernetes.mdKubernetes is an open-source platform (Google opened it in 2014) that is a container management tool.
Kubernetes is an open-source platform (Google opened it in 2014) that is a container management tool. The platform serves as a tool for monitoring workloads and services associated with the containers’ operation.
Platform settings facilitate declarative customization and process automation. Now the platform is the centre of an entire ecosystem with its tools set and services.
Kubernetes allows to deploy and run applications in a microservice architecture. This brings several benefits to development teams:
- Resource Consumption Control: Automatically restart applications that consume unnecessary resources.
- Equal load sharing according to local infrastructure
- Flexible resource system when updating a cluster, for example, is inviting a new host cases
- Autorequests for load rebalancing between application versions
- It is easy for an application to migrate from one host to another in a resource shortage or failure event.
- Easily rollback and launch canary releases aimed at testing synergies between new patches and old code.
The platform has a self-service system and provides the ability to create hardware abstractions for platform users. For development teams, there is also a quick request-response option in supplying resources terms for levelling loads.
Kubernetes is also considered a more optimized solution since the containers use consumes resources (CPU, memory) a magnitude order more efficiently relative to VMs or hypervisors.
How Kubernetes works
The kubernetes building block is a cluster that is created from a physical or virtual machines array. The machines, in this case, play the nodes’ or connecting nodes’ role – Control Plane Node. The node stores a containers group, which in turn contain applications. Control Plane in this scheme determines the containers parameters and new traffic routes when containers change location.
The container runtime (for example, Docker) launches containers and monitors their work when, using Kubernetes tools, a specialist deploys them to the cluster nodes.
https://serverspace.us/about/news/serverspace-has-cut-down-deployment-time-of-the-cloud-servers.mdAt this moment, an average time to create new virtual machines running Windows and Linux is 40 seconds.
At this moment, an average time to create new virtual machines running Windows and Linux is 40 seconds. It lets you start working with cloud servers almost immediately after a deployment request.
A large-scale optimization has become available by implementing a technology, which issues servers from a specific pool. Once you have ordered a service, Serverspace automatically selects a new server with an appropriate configuration from the pool where the server was pre-hosted. It is almost ready to go, and the user just needs to wait for its setup to be completed.
Cutting down the average index to 40 seconds is a record-breaking result: before optimization the creation speed of Windows servers was 300 seconds, as for Linux servers — 60 seconds. However, the new technology has additional potential and Serverspace is planning to continue its development in order to improve the quality of service offered to the customers.
https://serverspace.us/support/help/installing-mariadb.mdLet's look at the installation and configuration of one of the most popular DBMS (database management systems) - MariaDB on Ubuntu and CentOS.
A large number of services use to access to the database – web applications, company websites, as well as mail services and various accounting systems. Today we will consider installing one of the most popular DBMSs – MariaDB.
In this article we will not consider how to install and configure a LAMP server. It should be noted that the MySQL server in the repositories has been replaced by MariaDB due to the openness of the code and the active development of the project itself.
We add the repository since the system will install the version of MariaDB 5.5. For each OS, we consider this moment separately. If this suits you, then you can skip this step. If you still decide to do this, then open the page [on the official website](https://downloads.mariadb.org/mariadb/repositories/#mirror=timeweb) with information about repositories and their settings.
## Ubuntu
Before installing, we update the data on repositories and package indices:
```bash
sudo apt-get update
```
We update packages and system components:
```bash
sudo apt-get upgrade
```
We reboot the system, sometimes it is required:
```
sudo reboot
```
Check the version of the MariaDB-server package in the repository:
```bash
apt-cache show mariadb-server
```
For Ubuntu 16.04 the answer is as follows:
For Ubuntu 18.04:
Add information about the repository with version 10.3. **Important:** each version of Ubuntu has its repositories.
For Ubuntu 16.04, we execute the following commands in turn:
```bash
sudo apt-get install software-properties-common
```
```bash
sudo apt-key adv –recv-keys –keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
```
```
sudo add-apt-repository 'deb [arch=amd64,arm64,i386,ppc64el] http://mirror.timeweb.us/mariadb/repo/10.3/ubuntu xenial main'
```
For Ubuntu 18.04:
```bash
sudo apt-get install software-properties-common
```
```bash
sudo apt-key adv –recv-keys –keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
```
```
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirror.timeweb.us/mariadb/repo/10.3/ubuntu bionic main'
```
Update the contents of the repositories and complete the installation:
```bash
sudo apt-get update
```
```bash
sudo apt-get install mariadb-server
```
Regardless of the version of Ubuntu, the installer will require you to enter the root password and confirm it:
## CentOS
We update system components, and at the same time data on repositories
```bash
sudo yum update
```
Add repository for stable version 10.3. To do this, go to the directory with the repository files and create a file:
```
cd /etc/yum.repos.d/
```
```
sudo touch MariaDB.repo
```
Data from the official site is added to the file by any editor:
```
# MariaDB 10.3 CentOS repository list – created 2019-05-07 06:43 UTC
# http://downloads.mariadb.org/mariadb/repositories/
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
```
Install the package:
```bash
sudo yum install MariaDB-server MariaDB-client
```
The yum program will collect all the necessary data for the installation and will wait for the user:
We answer the question "y" and press Enter. The number of packages you can install may be different.
КThe command should be re-run if the following error occurs:
```
Error downloading packages:
MariaDB-compat-10.3.14-1.el7.centos.x86_64: [Errno 256] No more mirrors to try.
MariaDB-client-10.3.14-1.el7.centos.x86_64: [Errno 256] No more mirrors to try.
MariaDB-common-10.3.14-1.el7.centos.x86_64: [Errno 256] No more mirrors to try.
```
After installation, you should start the server:
```bash
sudo service mysql start
```
## Setup
Most programs are installed with default settings. Regardless of the distribution, we recommend that you optimize your security settings.
```
sudo mysql_secure_installation
```
Yes, it's "mysql" because the MariaDB project has “leaked” from MySQL.
At the very beginning, the program will ask for the password for the root user. If the password has not been set, then press Enter. Most questions can be answered with "y". Questions and translation are listed below:
- Change the root password? [Y/n]
- Remove anonymous users? [Y/n]
- Disallow root login remotely? [Y/n]
- Remove test database and access to it? [Y/n]
- Reload privilege tables now? [Y/n]
##
## Check server status
Sometimes it may be necessary to check the status of the server. This operation can be performed with the command:
```bash
sudo service mysql status
```
It should be noted that if the server is not running, then it must be started in manual mode with the command:
```bash
sudo service mysql start
```
## Testing the connection to the DBMS
Connection to the DBMS is performed by the following command:
```bash
mysql -u -p
```
If this is the first connection and no other users have been added, you should connect from the root user:
```bash
mysql -u root -p
```
Then enter the root password; if no password has been set, press Enter.
Exiting the shell by the command:
```
exit
```
https://serverspace.us/support/help/how-to-forward-the-printer-through-rdp.mdInstructions for configuring the printer to start printing using Remote Desktop (RDP). You can configure yourself, for this you should.
## Introduction
There are several reasons why using local resources from RDP is beneficial for a user and/or administrator. To begin, utilizing locally available printers can provide an enhanced user experience by reducing the time it takes to print documents remotely. This is achieved because the files do not have to be transferred over the network before they can be printed, which would otherwise increase processing latency. Secondly, copy-pasting of text and other file types between the remote and local systems facilitates a more seamless workflow, saving valuable time when working across multiple machines or applications.
However, while local resources offer many benefits to administrators and end users alike some security risks could arise if not managed properly so it’s worth ensuring appropriate network restrictions are put into place where necessary to mitigate these threats as much as possible.
## How do we connect?
You have to launch application remote desktop on the client machine by searching in the search bar. And click on it by the right button mouse:
Screenshot №1 — Search bar
On the server side you need to allow remote connection click **Ctrl + E **search in the left menu **This PC **or similar name and open **Properties**. Search **Remote Desktop** point and allow connection from another PC. Alright preparation on the server-side done! Now comeback to the client machine and look at recently opened window:
Screenshot №2 — Local resources
Go to the tab Local Resources and add **Printers **below, comeback to the General and enter hostname, username as you can see in the picture below:
Screenshot №3 — Connection
You may click point at the Allow me and etc, optionally. Next we need to connect by click button below, wait untill process will end. After login search in the bar **Manage Server** and in the right corner click Manage than follow the point **Add Roles**:
Screenshot №4 — Manage Server
Skip initial step and search in the Roles Print and Document Services, Click Add Features:
Screenshot №5 — Add Role
Wait till the end of the check accordance process and indicate point with Restart function, click Install:
Screenshot №6 — Finish installation
In the main menu we can see upped Print services, now we need to make sure, that our printer allow on the system:
Screenshot №7 — Up service
Look for devices in the search bar by typing Device Manager and after open window search needed printer!
Screenshot №8 — Result
As we can see in the picture was connect redirected devices from our first machine!
## Conclusion
The strategic use of local resources in RDP enhances efficiency and user satisfaction. Balancing these advantages with a proactive approach to security measures ensures a robust and secure remote desktop environment for both end-users and administrators.
https://serverspace.us/support/help/installing-seafile-cloud-storage.mdSeafile allows to sync information between different operating systems: Windows, Linux/Unix, Android, and iOS. Consider installing and configuring disk storage to meet the administrator's requirements.
The article will talk about the “cloud”, which was created using the software solution Seafile. The product allows synchronizing information between different operating systems: Windows, Linux/Unix, Android and iOS. Consider how to install and configure disk storage for administrator requirements.
## Requirements
To install Seafile, you must have preinstalled MySQL. On how to do this, there is a separate publication on our website.
Ubuntu Server 16.04 is used as the server platform (Seafile Server).
## Installation
Check for the latest software versions.
```bash
sudo apt-get update
sudo apt-get upgrade
```
Install components for working with python.
```bash
sudo apt-get install python-imaging python-mysqldb python-setuptools
```
Using the download manager, download the latest release of Seafile from the official website.
```bash
wget https://download.seadrive.org/seafile-server_7.0.4_x86-64.tar.gz
```
**Important!** At the time of writing (August 22, 2019), the current version of the server part is 7.0.4.
So, let’s extract the archive’s contents. Let’s go to the directory.
```bash
tar xzvf seafile-server*
cd seafile-server_7.0.4_x86-64
```
Inside we find the template, run it. It will check the necessary components.
```
./setup-seafile-mysql.sh
```
If everything is present, then the following message will appear on the monitor:
Screenshot No. 1. Successful validation.
Following the prompts on the screen, press Enter and proceed to configuration.
### Seafile Setup
We come up with an arbitrary name for the server-side. The name must not contain more than 15 characters:
Screenshot No. 2. We register the server name.
The next step is to specify the IP address or name. In our example, we use the first option:
Screenshot No. 3. Enter the IP address.
Choose the home directory for the storage:
Screenshot No. 4. Folder Selection
By default, it is proposed to create the Seafile-data directory under the root account.
Next, the setup wizard will ask about the port:
Screenshot No. 5. Port.
The factory setting is port 8082. If you do not need to change, then leave it as is and move on to the next step.
At the fifth step, the wizard will be asked to come up with a name for the database that will be used for work, or indicate a path to existing ones:
Screenshot No. 6. DB selection.
Since the story is about the initial installation and configuration, then select the first item.
The following two items are the MySQL server name and port number:
Screenshot No. 7. The name of the host.
Screenshot No. 8. Port Number
If changes are not required, then skip and move on.
Set the password for the MySQL administrator account name:
Screenshot No. 9. We come up with a password.
The following rules are recommended: a minimum of 9 characters, special characters, numbers, and capital letters.
By default, the installation wizard creates users who will work with the file storage:
Screenshot No. 10. Users of the database and “cloud”.
If desired, the administrator changes the values to their own.
At the last stage, the configuration utility displays the final configuration on the screen:
Screenshot No. 11. Settings Results.
If the values are correct, then press Enter.
## The initial launch of Seafile
1. Run the service with the template created in the previous section. Add the connection through the browser to carry out further configuration.
```
./seafile.sh start
./seahub.sh start
```
2. During the first launch, you need to specify an account name for the system administrator and an email account:
Screenshot No. 12. Setting for the account.
For example, let’s take the name admin, and specify the e-mail address on the serverspace.by domain.
3. The next step is to enter the password for the administrator:
Screenshot No. 13. Password protection.
The system will ask you to specify the key twice to avoid an error. If indicated correctly, the service will start with the specified parameters.
4. The last step is to write exceptions in the firewall.
```
iptables -A INPUT -p tcp –dport 8000 -j ACCEPT
iptables-save
```
By default, the web interface runs on port 8000.
## Browser Connection
We open the browser and prescribe the IP address that is specified above during setup. In the example, 111.111.111.111. Be sure to write the port number through a colon:
Screenshot No. 14. Server name.
If the address is correct, an authorization window will open. We use the electronic mailbox and password for the administrator to enter. In our example, the e-mail is admin@serverspace.by.
The file storage control panel opens.
## Create New User
Go to the “Users” tab, click on the “Add ” button.
In the window that opens, enter the email account and come up with a password. If necessary, indicate the person's name and department.
Click “OK”. A newly created user appears in the workspace.
https://serverspace.us/support/help/how-to-restart-network-in-ubuntu.mdLearn how to restart network services in Ubuntu using Netplan. Step-by-step guide for NetworkManager and systemd-networkd configuration.
Before restarting network services on Ubuntu, it's important to first identify which network manager is active on your system. Different versions of Ubuntu may use different tools for managing network configurations, so knowing the active manager ensures you apply the correct commands.
In this guide, we'll use Ubuntu 18.04 as an example, which relies on Netplan to define and manage network settings. Netplan works in conjunction with either NetworkManager or systemd-networkd (called renderers) to control network interfaces, and understanding this setup is essential before restarting your network services.
## What is Netplan used for?
Netplan is a modern command-line utility designed to simplify network configuration on Ubuntu systems. Introduced in Ubuntu 17.10, it provides an easy way to define and manage network interfaces using a clear YAML-based syntax. Netplan doesn't work alone—it relies on underlying network daemons, called renderers, such as NetworkManager or systemd-networkd, which handle the actual communication between the operating system and the network hardware. You can choose which renderer to use depending on your environment and requirements.
All network settings are stored in YAML files located in the /etc/netplan/ directory. These files contain the configuration for each network interface, allowing you to centralize and manage your network setup efficiently.
The first step in managing your network with Netplan is to review the available configuration files. You can list them using the following command:
This will display all YAML configuration files present in the directory, such as 50-cloud-init.yaml, which you can then open and inspect to see your current network settings.
```
ls /etc/netplan/
```
Here we can see configuration file called "50-cloud-init.yaml".
Now we need to read it to see configuration:
```
cat /etc/netplan/50-cloud-init.yaml
```
In the _Renderer _we can see the "NetworkManager" – that's our active network manager.
To restart it simply run:
```bash
sudo service network-manager restart
```
And then to see it's status run:
```bash
sudo service network-manager status
```
As we can see it's active and running.
If you see "networkd" in the _Renderer _in the netplan configuration file you need to restart it with the command:
```bash
sudo systemctl restart systemd-networkd
```
And then to see it's status run:
```bash
sudo systemctl status systemd-networkd
```
That's all, network is restarted.
## Conclusion
Restarting network services in Ubuntu is a straightforward process once you understand which network manager is active on your system. For systems using NetworkManager, a simple sudo service network-manager restart will refresh network settings, while for systems using systemd-networkd, sudo systemctl restart systemd-networkd is required. By checking your Netplan configuration in /etc/netplan/*.yaml, you can quickly identify the active renderer and ensure your network is properly restarted and functioning. This knowledge is essential for system administrators and users who need to troubleshoot connectivity issues or apply network configuration changes.
## FAQ – Frequently Asked Questions
- **Q1: How do I check which network manager is active on Ubuntu?**
A1: Open the Netplan configuration file in /etc/netplan/ and look for the renderer field. It will show either NetworkManager or networkd.
- **Q2: What command restarts NetworkManager?**
A2: Use sudo service network-manager restart to restart the NetworkManager service on your Ubuntu system.
- **Q3: How do I restart systemd-networkd?**
A3: Run sudo systemctl restart systemd-networkd to restart the network daemon if your Netplan configuration uses networkd as the renderer.
- **Q4: How can I check the status of the network service after restarting?**
A4: For NetworkManager, use sudo service network-manager status. For systemd-networkd, use sudo systemctl status systemd-networkd.
- **Q5: Will restarting the network disconnect my SSH session?**
A5: Restarting NetworkManager or systemd-networkd may temporarily interrupt network connections, including SSH. Ensure you have alternative access if restarting remotely.
https://serverspace.us/support/help/how-to-install-java-with-apt-on-ubuntu-18-04.mdThis guide will help you learn how to install different versions of the Java Runtime Environment (JRE) and Java Developer Kit (JDK) with apt.
Java and JVM (Java Virtual Machine) are required for many types of software, including Tomcat, Jetty, Glassfish, Cassandra and Jenkins.
This guide will help you learn how to install different versions of the Java Runtime Environment (JRE) and Java Developer Kit (JDK) with apt.
How to install Java with apt on Ubuntu 18.04:
- [Installing Java with Runtime Environment](#stepone)
- [Installing Java Developer Kit](#steptwo)
## Java Runtime Environment
The easiest way to install Java is to use the version included in the Ubuntu package. By default, Ubuntu 18.04 includes Open JDK (open source JRE and JDK version).
This package installs OpenJDK version 10 or 11.
- Until September 2018, OpenJDK 10 was installed.
- After September 2018, OpenJDK 11 is installed.
First, update the package lists:
```bash
sudo apt update
```
Then you need to check if Java is already installed:
```
java -version
```
If Java was newer installed, yo'll see the following results:
Run the following command to install OpenJDK:
```bash
sudo apt install default-jre
```
Type y (yes) and press Enter to resume installation.
This command installs the Java Runtime Environment (JRE). It allows you to run almost any Java software.
Now check the Java version:
```
java -version
```
JRE is installed!
## Java Development Kit
To compile and run some specific Java programs in addition to the JRE, you may need the Java Development Kit (JDK). To install the JDK, run the following command, which also installs the JRE:
```bash
sudo apt install default-jdk
```
Type y (yes) and press Enter to resume installation.
This command installs the Java Development Kit (JDK).
Now check JDK version with command:
```
javac -version
```
JDK is installed!
https://serverspace.us/support/help/installing-ubuntu-debian-programs-using-the-batch-manager.mdVarious methods of installing programs on Linux Ubuntu/Debian through the package manager APT (advanced packaging tool), Dpkg (debian package), install.sh.
One of the most difficult tasks that arise during the installation of Unix programs is dependency tracking.
Any more or less complex program in its work uses the capabilities provided by other modules, system libraries, etc. Thus, a dependency appears – if we want to install program “A”, which uses the libraries of program “B” when working, we must first install program “B” (which, in turn, may have its dependencies). Thus, the more programs and dependencies appear on the server, the more difficult it is to track and manage them. The good news is that you can do this with the APT package manager (**A**dvanced **P**ackaging **T**ool).
## Installation using the package manager
The evolution of methods for installing and managing software packages over time has come to the use of package managers that are tightly integrated with repositories. The repositories contain packaged program files with data on their dependencies. After installation, system repositories are already connected to the operating system: with their help, you can update the OS and install software packages that have been adapted and optimized to work with this version of the operating system.
Before starting the installation of packages, it is recommended to update the version and dependency data in the repository with the following command:
```bash
sudo apt-get update
```
Screenshot №1. Updating version and dependency information in the repository
If you need to clarify the name of the package that you want to install, look for a keyword manager in the local cache, for example,** web server**:
```bash
sudo apt-cache search web server
```
As a result, we get a large list of packages where this keyword is present in the description:
Screenshot №2. Keyword search
We select the package we need – in this case, it is **apache2**, and install it:
```bash
sudo apt-get install apache2
```
The package manager checks the dependencies and versions, compares them with the packages already installed through** apt-get**, after which it displays a list of components necessary for installation and requests permission to continue the operation:
Screenshot №3. Installing the package
Press **y** and wait for the installation to complete.
Commonly used package manager commands:
- **apt-get update **– update information about packages and dependencies in connected repositories;
- **apt-get upgrade **– update all installed packages to the latest version available in the repository;
- **apt-get install package_name **– package installation;
- **apt-get remove package_name **– remove the package;
- **apt-get download package_name **– download the deb package to a local folder;
- **apt-cache search keywords **– search for a package by keywords;
- **apt-cache show package_name **– show package information;
- **apt-cache depends on package_name **– show which components the package depends on;
- **apt-cache rdepends package_name **– show which components depend on the package;
- **apt-mark hold package_name **– fix the current version of the package, stop updating the package;
- **apt-mark unhold package_name **– allow updating the package.
## Installation through the Debian package
Software packages may not be distributed through repositories. For example, they may be available on developer sites. In this case, you can download the package and use **dpkg** (debian package) utility for installation. Using **dpkg **does not automatically track dependencies and download additional packages. If there are not enough programs or libraries, the installation will fail with a list of missing packages. They will have to be installed separately, for example, **— get**, if they are present in the connected repositories, or download from the developer's sites and install in the necessary order through** dpkg**.
For example, download the installation package of the web server **Nginx **from the system repository with the command:
```bash
sudo apt-get download nginx
```
and try to install through** dpkg–i filename.deb**:
```
sudo dpkg –i ./nginx_1.14.0-0ubuntu1.6_all.deb
```
As a result, the system generates an error with a list of missing packages:
Screenshot №4. Error with a list of missing packages
Main options of** dpkg**:
- **dpkg –i file_name.deb**– install the package; the parameter is the full file name;
- **dpkg –r package_name**– removal of a previously installed package;
- **dpkg –l**– lists the packages installed in the system.
## Installation through script files
Installing a program involves unpacking an archive, copying program files to system directories, and, if necessary, making changes to system configuration files. All these actions can be entered into the script executable file and executed when it is run. Nowadays, such a method of installing a program is quite rare, but some developers use it. If you need to install such a package, you need to download the archive (usually a file with the extension .tgz or .tar.gz), unzip it into a separate directory on the server, examine the unpacked files, and also read the readme file, if any. The installation of the program is usually started by the script** install.sh**, so you need to include the attribute of the executable file with the command:
```bash
sudo chmod +x ./install.sh
```
then run the script directly:
```
sudo ./install.sh
```
https://serverspace.us/support/help/debian-superuser-rights-sudo-visudo.mdThe sudo command allows you to run individual commands with elevated privileges (superuser rights in Debian). Let's see what is required for this utility to work.
## General information
Linux operating systems implement the principle of differentiating user privileges, meaning that different accounts have different amounts of access rights to directories, files, and programs. The maximum rights are granted to the built-in root account. Newly created user accounts are usually significantly restricted in accessing system configuration files, managing services, and installing and deleting software packages. However, working in the operating system under the root account is strongly not recommended, primarily for security reasons. In this case, the** sudo** command line utility comes to the rescue.
The sudo command allows running individual commands with increased privileges (by default, with root rights) using an unprivileged account. Let’s see what is required for this utility to work.
## Installation and configuration
In Ubuntu OS, sudo is enabled by default, and in Debian, if the corresponding package was not selected during the installation process, the following picture will most likely be:
```
sudo
```
```
#Output
-bash: sudo: command not found
```
So, you need to install the missing package. Update repository information and install sudo:
```bash
apt-get update
apt-get install sudo
```
We are waiting for the end of the process:
After a successful installation, you will need to configure sudo to determine which users or groups will be able to use privilege escalation and to what extent. All these settings are stored in the configuration file **/etc/sudoers**, however, it is strongly discouraged to directly make changes to it. For these purposes, a special command is used:
```
visudo
```
which launches a text editor with a configuration file:
Two lines are responsible for granting rights:
```
root ALL=(ALL:ALL) ALL
%sudo ALL=(ALL:ALL) ALL
```
The first line sets the rights for the root account, the second sets the rights for members of the sudo group that was created when the package was installed (the **% **sign in front of the name means that the name belongs to a user group).
Accordingly, we have two main ways to grant the user account the right to use** sudo**:
Add a user account (e.g. user) to the sudo group on the server:
```
usermod –a –G sudo user
```
After changing the group membership, you will need to re-log into this account to apply the new configuration. This method is recommended in cases where the user must be granted full rights.
Create a new entry in the file, for example, for the user account. We add a line similar to root:
```
user ALL=(ALL:ALL) ALL
```
Adding a new entry is recommended in cases where the list of privileges will be adjusted (more on that later). If we made changes to the file, we need to save them by pressing the keyboard shortcut Ctrl-O and exit the editor — Ctrl-X.
Now you can check the correct operation:
```
sudo cat /etc/sudoers
```
The sudo command asks for the password of the current user (in this case, user) – enter it, and if everything is done correctly, we will see the contents of the system configuration file.
## Fine-tuning
Thus, an ordinary user can run commands with the rights of the root account without knowing her password. This is very convenient, but it can be unsafe – is it possible to limit the range of commands that can be executed using sudo? Yes, and the same configuration file will help us with this. We start visudo again and we understand further. We are interested in the parameters specified after the username:
We will analyze them in more detail:
- **ALL**= (ALL: ALL) ALL — the first parameter determines which host the configuration is applied to. When using a dedicated server, the parameter can be left unchanged;
- ALL=**(ALL: ALL)**ALL — the parameters in brackets determine the authority of which user (first parameter) and/ or group (second parameter) the command will be executed. By default, sudo executes the command as root, but when starting with the –u switch, you can specify a different account, and with the –g switch you can specify another group whose privileges will be used at startup;
- ALL=(ALL: ALL)**ALL** — the third parameter determines which files and commands these settings belong to.
Based on the foregoing, if necessary, determine the list of allowed commands, replace the last parameter **ALL **with what we need, listing the commands separated by commas. For example, the line:
```
user ALL=(ALL:ALL) /sbin/shutdown -r, /bin/cat
```
gives the user the right to use sudo to reboot the server with sudo /sbin/shutdown –r and view files using sudo /bin/cat. Other commands through sudo will not be executed. For example, when trying to shut down a server with a command:
```
sudo /sbin/shutdown -h
```
Get the answer:
```
Sorry, user user is not allowed to execute '/sbin/shutdown -h' as root on debian10.
```
## Useful
You can see the list of privileges by running sudo -l (the list for the current user will be displayed), or sudo -l -U user (the list of user privileges will be displayed):
The composition of sudo includes the sudoedit command, which launches a text editor with the specified file immediately with elevated privileges, that is, instead of the command:
```
sudo nano /etc/network/interfaces
```
Can run:
```
sudoedit /etc/network/interfaces
```
If you need to work in elevated privilege mode for a long time and it is inconvenient to enter sudo for each command, you can run an instance of the command interpreter through sudo:
```
sudo bash
```
If you continue to work in it, all commands will run with elevated rights. When finished, exit the interpreter with the command:
```
exit
```
https://serverspace.us/support/help/how-to-configure-static-ip-address-on-ubuntu-18-04.mdLearn how to configure a static IP address on Ubuntu 18.04 using Netplan. This step-by-step guide covers setting up a static IP for the ens33 ethernet interface.
How to configure static IP address in Ubuntu 18.04:
- [List all attached network interfaces on your system](#stepone)
- [Set static IP Address in Ubuntu 18.04](#stepone)
When setting up a server or working in a network-restricted environment, assigning a static IP address is often a crucial step. Unlike dynamic IP addresses assigned by DHCP, a static IP ensures that your system’s address stays fixed across reboots — which is essential for remote access, port forwarding, and other network-related services. In this guide, we'll walk you through the process of configuring a static IP address on Ubuntu 18.04 using Netplan, the default network configuration tool. Whether you’re new to Ubuntu networking or need a quick refresher, this step-by-step tutorial will help you get your system properly configured.
## List All Active Network Interfaces on Ubuntu
First, you need to identify the network interface you are going to configure. You can list all attached network interfaces on your system using the command as shown below:
```
Ip a
```
From the output of the above command, we have 3 interfaces attached to the Ubuntu system: 2 ethernet interfaces (one of them is docker) and the loopback interface. The ens33 ethernet interface has been configured to obtain IP address from DHCP. And we need to change it to static IP.
## Set Static IP Address in Ubuntu 18.04
In this example, we will set up a static IP address for the ens33 network interface using the Netplan utility.
_Netplan is a modern command-line tool for managing network settings, introduced in Ubuntu starting from version 17.10. It simplifies the configuration of network interfaces through a declarative YAML syntax. Netplan works in conjunction with system components like NetworkManager and systemd-networkd, which act as “renderers” — you can choose the one that best suits your environment._
Network settings are defined in YAML files located in the /etc/netplan/ directory. These configuration files allow you to specify parameters for all available network interfaces.
So the first thing to do is to check what configuration files do we have in /etc/netplan/
We can check this out by using the command:
```
ls /etc/netplan/
```
As we can see there is a configuration file called 50-cloud-init.yaml. We need to edit it to change configuration.
_If there's no configuration files in /etc/netplan/ you can use command as shown below to generate it:_
```
sudo netplan generate
```
_In addition, auto generated files may have different filenames on desktop, servers, cloud instantiations etc (for example _**_01-network-manager-all.yaml_**_ or _**_01-netcfg.yaml, 50-cloud-init.yaml, etc._**_), but all files under _**_/etc/netplan/*.yaml_**_ will be read by netplan._
Open the netplan configuration file using your text editor as shown:
sudo nano /etc/netplan/50-cloud-init.yaml
Find your network interface name in there. It's **ens33** in this example.
As you can see there's dhcp4: true = dchp for ipv4 is enabled.
To change that simply change the config like that:
Where:
- **ens33** – the name of the network interface being configured.
- **dhcp4** and **dhcp6** – define whether the interface should use DHCP to obtain IPv4 or IPv6 addresses, respectively.
- **addresses** – a list of static IP addresses assigned to the interface, including the subnet mask (e.g., /24).
- **gateway4** – the default gateway address for IPv4 traffic.
- **nameservers** – a list of DNS server IP addresses used for domain name resolution.
The addresses property of an interface expects a sequence entry for example **[192.168.14.2/24, "2001:1::1/64"]** or **[192.168.56.110/24, ]** (see **netplan man page** for more information).
Important: don't use tabs in this configuration file.
Save the file and exit. (to save file press Ctrl+O and then choose the filename and press Enter. To exit nano press Ctrl+X)
Then apply the recent network changes using the following command:
```
sudo netplan apply
```
If everything is ok you'll not get any error messages.
Just check your ip configuration again with the command:
```
ip a
```
As you can see now the ens33 have an IP addresses as we configured before in yaml file.
Congratulations! You've successfully configured a network static IP addresses to your Ubuntu server.
## FAQ: Configuring Static IP on Ubuntu 18.04
- **Q: What is the benefit of using a static IP instead of DHCP?**
A: A static IP ensures that your system always has the same network address, which is critical for services like SSH access, port forwarding, hosting web applications, or managing servers remotely.
- **Q: Can I use Netplan on older Ubuntu versions like 16.04?**
A: No, Netplan was introduced starting with Ubuntu 17.10. If you’re using Ubuntu 16.04 or earlier, you should configure your static IP using the /etc/network/interfaces file instead.
- **Q: I don't see any files in /etc/netplan/. What should I do?**
A: If the /etc/netplan/ directory is empty, you can generate the configuration files using the command:
```
sudo netplan generate
```
If that doesn’t work, it's possible your system is using another method for network management (e.g., NetworkManager or legacy tools).
- **Q: Why shouldn’t I use tabs in the YAML file?**
A: YAML strictly requires spaces for indentation. Using tabs can break the configuration and cause netplan apply to fail.
- **Q: How can I check if my static IP configuration was applied successfully?**
A: After running sudo netplan apply, you can verify the current IP configuration by executing:
```
ip a
```
Your configured static IP should now be listed for the specified interface.
https://serverspace.us/support/help/windows-server-adding-a-new-user.mdLet's see how to add a new user in operating systems of the Microsoft Windows Server family. This method is universal for most existing versions of this OS.
The responsibilities of the system administrator include, among other things, adding a new user, as well as assigning him certain rights. Let’s see how to do this in operating systems of the Microsoft Windows Server family. This method is universal for most existing versions of this OS. Some phraseological differences are possible.
From the Start menu, select "**Administration Tools"** in Windows Server 2016).
In a new window, double-click opens “**Computer Management**“.
In the left part of the window that opens, open the "Local users and groups" branch and open the Users folder. In the main part of the window, right-click on space and select “**New user".**
In the new window, enter the user login, password and password confirmation. For completeness of understanding to which user the account belongs, and also so that colleagues do not have questions, it is recommended to fill in the fields "Full name" and "Description".
To increase security, it is recommended to set the checkbox "Require password change at the next login" only if you use the same password for all created accounts.
You can disable any account, for example, if the user is just taking up a position.
Click on the button **“Create”**.
An account has been created. Let’s move on to setting it up. To do this, in the same window "Computer Management", right-click on the account. In the context menu, select **“Properties”**.
User account settings, for convenience, are presented on several tabs.
General – controls the basic parameters of the account.
Group Membership – allows setting the user to group membership.
Profile – this tab defines the location of the user's home directory, the path to the user's profile, as well as the script for logging in.
Environment – makes it possible to schedule the launch of a certain program at the entrance to the system, and also allows the connection of hard drives, printers and the choice of the default printer at login.
Sessions – allows imposing restrictions on the total duration of the session, the time of inactivity and much more.
Remote Desktop Services Profile — Specifies the user profile that will be loaded when you log in to the server using Remote Desktop.
Incoming calls – defines the parameters of network connections, as well as their rights.
Consider delegating user rights to remote desktop access.
Select the tab**“Membership in groups”** and click on the button **“Add”**.
In the window that opens, click on the “Advanced” button. Then in a new window, click on the “Search” button. At the bottom of the window, all available groups are displayed. We select “Remote Desktop Users” by double-clicking or single-clicking with the subsequent click on the “OK” button.
The "Group Selection" window will change the look. Click “OK”.
Now you can connect to the server under this user’s credentials.
https://serverspace.us/support/help/configuring-an-ftp-server-in-windows-server-2012.mdStep-by-step instructions for setting up an FTP server in Windows Server 2012 R2, setting up secure file transfers, creating a self-signed certificate.
FTP – file transfer protocol. It is used for transferring files by local network clients, as well as for uploading data to local and remote storage.
Consider configuring an FTP server from the Microsoft IIS Suite, creating a self-signed certificate, and configuring secure file transfer.
Operating System – Windows Server 2012 R2.
## Install the IIS Web Server
We start the Server Manager from the Start menu or by clicking on the icon on the taskbar.
Select Add roles and components.
In the new window, select, on the left, the Installation Type, then Install roles or components, click the “Next” button.
From the proposed server pool, select the necessary one. In our case, he is alone, click “Next”.
In the list of roles, we find the Web server (IIS) and put a tick in front of this item.
In the new window, the Add Roles and Features Wizard simply click on “Add components”. This window usually appears when you first install Web Server (IIS). Click “Next”.
On the left, click on the Role Service (sub-item Web Server Role (IIS)). We put a daw in front of the FTP server. If necessary, check the box next to FTP Extensibility. Click “Next”.
We check the components for installation. At the first installation, we recommend that you check the box in the Automatically restarts the destination server, if necessary. Click “Install”. Important! The first time you install Web Server (IIS), additional service components will be installed.
We are waiting for the installation process to complete. In the end, click “Close”.
## We proceed to configure the server
- Open Administration. You can from the Start menu, but if this item is not there, then Start -> Control Panel -> System and Security -> Administration
- Launch IIS Manager
- In the window that opens, on the left side, expand the branch under the necessary server. Right-click on the “Sites” element and select “Add FTP Site”
- In the new window Add FTP Site, specify the name and path to the directory where the files will be located. Click “Next”.
- In the updated window, specify on which IP addresses the FTP server will be launched (it is important when the server has several network interfaces or aliases), and also indicate the port that the service will listen on (by default, 21 TCP ports). Check for the presence of the Start FTP site automatically. In the SSL settings, specify Without SSL. If encryption is required, then select the appropriate item and specify the certificate. Click “Next”.
- The next step is to configure authentication. In the Authentication section, select Normal (if anonymous access is required, select “Anonymous”). In the Authorization section, you can flexibly specify access for users. In our example, we will allow access to all users except anonymous. Allow reading and writing. Click " Done "
- If successful, a line with the name of the added FTP server (site) will be added to the IIS Manager window. Roll up or close this window. We will no longer need it.
## Configuring the firewall
- In the Administration window, open Windows Firewall in Advanced Security mode.
- In the window that opens, in the left part, select the “Rules” for incoming connections. In the right part, click on “Create rule”
- In the new window, select “Predefined”. From the drop-down list, select the FTP server. Click “Next”.
- We tick off all the items, click “Next”.
- The next step is to select Allow connection, click “Done”.
The selected rules will be added to the General list of incoming connection rules. To apply the firewall settings, you must restart the server.
You can connect to the server with any FTP client by specifying the server IP address, username and password, for example, FileZilla. However, server availability can also be checked using Internet Explorer. In the address bar, specify ftp: //IP.address.our.server/ (or domain name). Specify the user name and password.
## Configure Secure FTP
To protect traffic, it is recommended to use SSL certificates. You can use self-signed certificates or issued by a certification authority. Please note that when connecting to a server with a self-signed certificate, the user will be notified about this.
### Create a self-signed certificate
- We start the IIS Manager (see Server setup above).
- In the window that opens, on the left side, expand the branch under the necessary server. Select “Server Certificates”.
- In the new window, on the right side, select “Create a self-signed certificate”.
- In the window that opens, specify the name of the certificate and its type – “Personal”. Click “OK”.
The certificate has been generated. Now let’s move on to setting up secure FTP.
- In the IIS Manager window, on the left side, expand the branch under the necessary server, select the created server. In the main part of the window, select “FTP SSL Settings”.
- In the updated window, in the drop-down list, select the created certificate, or issued by a certification authority, if any. Select “Require SSL Connection”. In the right part of the window, select “Apply”. Close the window, if necessary.
To connect to a secure FTP server, we recommend using WinSCP.
File Protocol – FTP
Encryption – TLS/SSL Explicit encryption
Host name — IP address or domain name.
Port – 21, or which was specified.
Name and password of the system user.
Click “Login”.
https://serverspace.us/support/help/installing-and-configuring-dfs.mdDFS-Distributed File System-distributed file system. Install. Create a DFS namespace. Add a new directory to the existing namespace Configure DFS replication.
Sooner or later, system administrators wonder about decentralized storage of information or at least combine several existing file servers into one. In parallel, the question of the security of stored information is raised. Relatively simple, less expensive and popular among AD administrators (Active Directory) is the use of DFS. Consider what it is and how to set it up.
DFS –**D**istributed **F**ile **S**ystem is a distributed file system. It is a Microsoft product designed to simplify user access to files. What is noteworthy, files can be distributed territorially.
There are two types of DFS:
1. DFS Namespace. This type implements a virtual tree that combines common network directories into a single namespace. It is possible to configure multiple namespaces.
2. DFS Replication – replication of an existing directory with the tracking of content and changes.
## DFS Installation
We'll immediately emphasize that the installation, as part of this example, will be performed on an already configured domain controller.
Open the server manager. In the main part of the window, click on “**Add Roles and Components**“.
In the new window, go to the item “**Installation Type**“, select the parameter “**Install Roles and Components**“, click the button “**Next**“.
In the updated window, select the current server and click on the button “**Next**“.
The next step, in the list of available roles we find "**File Services and Storage Services**" and open the list in which you need to find "**File Services and iSCSI** Services”. We also expand the list of parameters. We tick off "**DFS**Namespaces" and "**DFS**Replication". In the window that appears, click “**Add Components**“. Press the button "**Next**" several times and wait for the installation to complete.
## Creating a DFS Namespace
Before you start creating a DFS namespace, you must create at least one network directory on any of the servers in the domain. In our case, we will use the directory created on the same domain controller.
To make the folder accessible from the network, right-click on it, select “**Share**” in the context menu, then “**Separate people**“.
In the input field, specify “**Users of the domain**“, click the button “**Add**“, then “**Share**“.
Sharing the folder is ready. Click on the button “**Done**“.
Now the server is available along the path:
```
WINSERVER2019net_share
```
Create a DFS namespace.
To do this, select “**Windows Administration Tools**” in the menu “**Start**“. It is also possible through** the control Panel****System and Security****Administration**.
In the window that opens, select “**DFS Management**“.
In the new window “**DFS Management**“, on the right side click on “**New namespace**”.
In the wizard window, specify the server name. It can be found both in the window that opens when you click the “**Browse**” button and in the system properties on the “**Computer Name**” tab. Click "Next".
The next step is the namespace name. In our case, let it be “**MyDFS**.” Press the button “**Change settings**".
In a new window, pay attention to the line “**Local path of the Local path of the shared folder**“, if necessary, change it. In the same window, set the switch to the value “**Use user permissions**” and click the button “**Configure**“.
In the window that opens, allow full access for everyone and click the button “**OK**“.
Close the window for changing settings by clicking on the button "**OK**", in the wizard window, click the button "**Next**".
At the new stage of choosing the type of namespace, set the switch to the value “**Domain Namespace**“, click the button “**Next**“.
We carefully review the settings. Everything suits – click “**Create**“.
Click the button “**Close**“.
## Add a new directory to the existing namespace
There is no sense in the above if you do not add directories to an existing namespace. In the example, the process will be executed on the same server, however, the method is applicable to all servers in the domain.
In the DFS control window, in its left part, expand the DFS control tree to an existing one, click on the necessary one. In the right part of the window, in the action section, select “**Create folder**”.
In the opened window "**Create Folder**" specify the name, in our case "**Test**" and click the button "**Add**".
In the new window, add the path to the existing network folder. The list of available directories can be viewed by clicking on the button “**Overview**”. In the end, press the button ” OK “.
The result will be
Click "**OK**".
Access to DFS can be obtained from any address bar (Start-> Run, or from the address bar of any folder) using the template:
```
```
For example:
```
laa.testMyDFS
```
## Configure DFS Replication
To perform data replication, you need to add a second server to the same domain and install the server role “**DFS Replication**” using the server manager.
On the same server, create a folder and allow shared access to it. Data from the directory located on the domain controller server will be replicated to this folder.
When you open access later, in the folder properties menu you can see the network path to the directory.
We return to the domain controller and the DFS namespace deployed on it. Open the window “**DFS Management**“, already familiar from the examples above. In the left part of the window, expand the tree to the created namespace. In the right part of the window, select “**Add destination folder object**”. In the new window, enter the address to the shared directory on another server (which was created earlier). Press the button "** OK** ".
The system will ask if you want to create a replication group. Press the button " **OK** ".
We are waiting for the completion of the progress. The result will be an open window “**Folder Replication Wizard**“. You must verify the name of the replication group, as well as the name of the directory that will be replicated. Go to the next step by clicking on the button “**Next**“.
At this stage, we check the paths to network directories and click “**Next**“.
The next step is to select the main node from the drop-down list. This is the node from which data will be replicated. In the case of the example, the primary member of the server replication named WINSERV2016 is the server on which the domain controller is raised. A specific example once again reminds us of the need to determine friendly names for servers and other network nodes. Click "** Next** ".
Now you have to choose the connection topology between replication members. We select the available one – "**Full grid**“, however, if you want to create your replication topology later, then choose “**No****topology**". Click "** Next** ".
The configuration is coming to an end and at this step, you should decide on the frequency of data replication. Choose the option with continuous replication. The advantages of this method are that the data will be duplicated immediately. The disadvantage is that it loads the local network with large amounts of information, as well as the load on the hard drive.
The second option offers to configure replication on a schedule. The disadvantage of this method is that the data will be synchronized "later". Select the desired option and click “**Next**“.
The program offers a view of the selected parameters. If everything suits you, click the “**Create**” button.
Click the button “**Close**“.
The system will remind you of replication delays. In order not to receive this message again, if desired, check the box in the appropriate place. Press the button " **OK **".
Distributed file system configuration, as well as data replication, can be considered complete.
https://serverspace.us/support/help/setting-timeouts-for-rdp-sessions.mdLearn how to configure timeouts for RDP sessions in Windows Server to avoid unexpected termination of programs, scripts, and macros after disconnection. Step-by-step guide.
When working remotely over Remote Desktop Protocol (RDP), it's crucial to ensure that background processes — such as programs, scripts, or macros — continue running even if the RDP session is interrupted. By default, Windows Server may terminate these processes when a session disconnects, which can lead to data loss or halted automation.
To prevent this, you need to configure RDP session timeouts via Remote Desktop Services (RDS) and Group Policy settings. This guide will walk you through the process step by step.
## Install Remote Desktop Services Role
To manage session limits and enable related policies, you must first install the Remote Desktop Services role.
- Open Server Manager.
- Click Add Roles and Features.
- In the wizard, on the Before You Begin screen, check "Skip this page by default" (optional), then click Next.
- Choose Remote Desktop Services Installation and proceed.
- Select Multipoint Services as the deployment type (default).
- Choose the local server for installation.
- Check the box Restart the destination server automatically if required, then click Next or Install.
- Wait for the installation to complete.
Once the setup completes and shows “**Success**“, close the wizard.
## 2. Configure Group Policy for RDP Session Timeouts
You now need to adjust Group Policy settings to control how sessions behave when disconnected or idle.
- Open Group Policy Editor
- Press **Win + R**, type **gpedit.msc**, and press Enter.
```
gpedit.msc
```
Navigate to the following path:
Computer Configuration → Administrative Templates → Windows Components → Remote Desktop Services → Remote Desktop Session Host → Session Time Limits
**Enable the Following Policies:**
- Policy Name Description
- End session when time limits are reached Ensures the session is properly closed after timeout. No time value is required — just set it to “Enabled”.
- Set time limit for active but idle Remote Desktop Services sessions Specifies how long an idle session stays connected before being ended.
- Set time limit for disconnected sessions Defines how long a disconnected session remains active in the background.
**How to Edit a Policy**
- Double-click a policy or right-click → **Edit**.
- In the new window, choose **Enabled**.
- Set the appropriate time frame (e.g., 15 minutes, 1 hour).
- Click **OK**.
- The actual timeout values depend on your organization’s policies. A common setup is:
- Idle sessions: 30 minutes
- Disconnected sessions: 1 hour
## 3. Finish and Apply the Policy
After configuring the policies:
- Close the Group Policy Editor.
- Apply the new settings with the command:
gpupdate /force
- You may also reboot the server to ensure changes take effect.
**That's it — your RDP session timeouts are now configured to preserve background processes even after disconnection.**
## FAQ: RDP Session Timeouts
- **Q: Will my programs keep running after I disconnect from RDP?**
A: Yes — if you’ve set session timeouts correctly, background processes will remain active for the defined period.
- **Q: What happens if I don't configure timeouts?**
A: Windows Server may terminate all running apps when a session is lost, potentially causing data loss or halted scripts.
- **Q: Can I apply these settings via domain Group Policy?**
A: Yes. In a domain environment, use the Group Policy Management Console (GPMC) to apply settings to user groups or OUs.
- **Q: What's a safe value for disconnected session timeout?**
A: Typically 1–2 hours. Longer periods may consume server resources unnecessarily.
- **Q: Does this work on all versions of Windows Server?**
A: Yes, the procedure applies to Windows Server 2008 R2, 2012 R2, 2016, 2019, and 2022, with minor UI differences.
https://serverspace.us/support/help/install-sql-server-management-studio.mdThis article will help you install SQL Server Management Studio and perform a simple query to the database to verify the installation is correct.
SQL Server Management Studio is a graphical user interface program that allows you to manage databases quickly and easily, create users, set database permissions, create backups, and more. This article will help you install the program and perform a simple query to the database to verify the installation is correct.
SQL Server Management Studio is available separately from Microsoft SQL Server. To install it, visit the [Microsoft download page](https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15) and download the latest binary from the installation wizard. At the time of this writing, the latest version of SQL Server Management Studio is version 18.3.1:
The next step is to select the installation location of the management studio and click **Install:**
After clicking the Install button, the installation procedure will start automatically:
When the installation is complete, a screen appears prompting you to restart. Reboot by clicking on** “Restart**“:
SQL Server Management Studio is ready to run. To connect to SQL Server using Microsoft SQL Server Management Studio, follow these steps:
1. Launch Microsoft SQL Server Management Studio from the Start menu:
2. The authentication window will open. You can select the option based on which you configured authentication when installing MS SQL server. Next, click** “Connect**“:
3. If the connection is successful, you will see the Object Explorer – object browser panel:
4. To execute a query to the database, right-click on the server node (in our example it is **WIN2019STDSQLEXPRESS**), and select the menu item** “New Query**“:
5. Enter the following query in the editor:
```sql
select @@version;
```
This query returns the version of SQL Server. Then click** Execute**:
6. The **Results **window displays the version of SQL Server, as shown in the screenshot below. A quick way to execute the request is to press the **F5 **key:
Congratulations! Now you know how to connect to the SQL server and execute queries from the database server management studio.
https://serverspace.us/about/news/virtual-private-cloud.mdServerspace is launching a service for creating isolated networks. It lets you combine Cloud servers in a private cloud within a single data center.
Serverspace is launching a service for creating isolated networks. It lets you combine Cloud servers in a private cloud within a single data center.
Resources are stored in a private cloud, in a separate isolated network segment, which has no connection to the Internet. Thus it reaches a high level of security and privacy.
- There are no restrictions on incoming and outgoing traffic volume within the network.
- Network addressing can be configured both manually and automatically.
- Local port is 1 Gbit/s.
This service is free of charge. You can create up to 10 networks within 1 project.
## How to create an isolated network
1. Go to “Networks”, click on the “Add network” button and select Isolated network out of the network types:
2. Select the data center which stores all of your Cloud servers. Then set addressing parameters by specifying a prefix and network capacity manually or automatically. Enter the name of the network you are creating, add a description if necessary, and click “Create network”:
3. After creating the network, click on its name and click “Connect server” in the “Connection” tab:
4. Select Cloud servers that you need to connect to the isolated network and click “Connect”.
https://serverspace.us/about/blog/cloud-benefits-for-developers.mdWe suggest considering the advantages of clouds over traditional development tools in more detail. Cloud services help to solve difficult programmers tasks.
Tools and technologies continue to evolve, allowing programmers to create even more modern and convenient software.
However, the standards of their work are changing at the same time: it is necessary to reduce the time for products to enter the market, as well as very quickly eliminate errors in the code. And cloud services help them solve these difficult tasks.
We suggest considering the advantages of clouds over traditional development tools in more detail.
## 1. Scalability
One of the biggest advantages of cloud systems is the ability to scale. If you compare with traditional hosting, you must choose, buy, install and configure equipment on which every node of your system will work – web servers, application servers, database servers, switches and routers for accessing the Internet. High availability applications will also require load balancers and server clusters that require expensive SANs (storage area networks). All this requires careful planning and huge costs that can slow down the software development process.
With the advent of cloud systems, it has become possible to quickly and easily scale any part of the infrastructure. For web and application servers, you can increase hardware power by adding processor cores or even new servers. Databases can also be easily scaled by increasing the amount of RAM or by adding new servers. Finally, with the advent of microservices, you can develop a module-based web application. These modules can be located on different servers, and if you need to increase the performance of a module, it is enough to increase the power of the server on which this module is located.
## 2. Cost
The next key benefit of the cloud is cost savings, as well as the ability to start with a small and inexpensive infrastructure, and then increase it as the load grows. These economic benefits include the following:
No upfront investment
Own data centres (DPCs) require large upfront investments. It will also take a lot of time and effort to analyze current and future equipment requirements. As the number of clients and server load increase, additional changes will be required in the infrastructure, which will require new software and hardware.
Payments only for resources used
Most cloud account providers only bill for the resources you use. If necessary, you can increase or decrease the number of servers, the amount of memory, processor cores and other parameters, all this allows you to very flexible control costs.
## 3. Backup and Disaster Recovery
Rapid resource allocation is an advantage that all development teams benefit from. Programmers often need various infrastructure elements, from development and testing environments to new application servers to operating systems that you can experiment with.
Without cloud technology, such work is assigned to the technical support service and can take several days or even weeks.
Using the cloud, developers can quickly create new environments, from websites to virtual servers and databases. Besides, cloud technologies offer an almost endless list of services that are constantly expanding. This approach allows development teams to try and use the most advanced technologies. Also, when developers no longer need some resources, they can quickly decommission them and no longer pay for them.
## 4. Different models of cloud technology
The use of clouds cannot be reduced to traditional methods. These technologies present their customers with many different options to meet their unique needs.
The two main models of services in the cloud are infrastructure as a service (IaaS) and platform as a service (PaaS). Both of these models have their advantages, and the advantages of each model can be combined if necessary.
### IaaS
IaaS model means providing infrastructure for rent, with access to it through dedicated communication channels or via the Internet. Infrastructure elements include virtual servers and their networking, storage, and security systems. IaaS customers are self-administering this infrastructure, purchasing and installing the necessary software. Operating systems for virtual servers can be provided by an IaaS service provider.
### PaaS
The PaaS model complements the IaaS model with several services. These services include ensuring the health of operating systems, web servers, application servers, mail servers and database servers and development environments. The customer, in this case, is only involved in the development and deployment of applications.
All necessary components can be easily scaled depending on the needs of the customer's application.
## 5. Geographical coverage
Another advantage of cloud technology is the fact that clouds cover several regions, countries or even the entire planet at once. Instead of relying on one site to host your application or spending resources on building additional sites, using the cloud allows you to place your application where it will be geographically closer to your customers. With traffic management and replication, cloud applications will provide customers with better performance, no matter where they are located.
Content Delivery Networks (CDNs) can also be used to increase geographic reach, even if the application is located in one place. CDN is a large number of servers located in various cities or countries. These servers respond to requests from web content users. CDN is used for quick access to web applications, audio, video content, images and other files. Besides, CDN allows you to reduce the number of requests directed directly to the web application, allowing you to better scale this application.
## 6. Ease of Deployment
Clouds offer unique features for managing application deployment. By integrating the application into a version control system, developers can customize automated application builds, which will include code, database deployment, automatic server configuration, and automatic application testing.
Deployment slots (or intermediate slots) also make it possible to not deploy when idle in a production environment. A deployment slot is a standalone web application hosted at a specific URL. You can deploy to such a slot and test the application. If the application passes the test successfully, you simply change the working and intermediate slot to make the application available to your customers. Another interesting feature is that you can send a small percentage of production traffic to an intermediate slot. This will allow you to test the new features of the application, not yet available to customers, on real data.
## 7. Development, Operation, and Monitoring (devops)
DevOps (an acronym for development and operations) is a methodology aimed at the active interaction of application developers and technical support.
In today’s world of agile development, you need to quickly create applications, deploy them, and make sure that users do not have problems with applications. When users encounter a problem, you must first receive a notification about the problem, have tools to quickly find the cause of the problem, and publish a fix to fix the problem as soon as possible.
DevOps technologies offer application performance metrics, error logs and monitoring in one tool. This allows developers to have an idea of all aspects of the application and allows them to identify problems before users encounter them. For example, performance problems can be identified down to each SQL statement.
## Conclusion
Cloud technologies have matured over the past few years, and the number of deployments continues to grow. RightScale’s study showed that 82% of respondents in 2018 used cloud technology, and these numbers are constantly growing.
In 2017, there were 80% of such companies.
https://serverspace.us/about/blog/the-main-ways-to-ensure-data-security-in-the-clouds.mdIn this article, we will take a closer look at the five most popular ways to protect data in the cloud: encryption, infrastructure monitoring, data access restrictions, backups, and disaster recovery plans.
According to the report of the American research company Gartner, by 2020 due to incorrect configurations and not optimized business processes, cases of information leakage from public clouds will increase to 80%. Therefore, companies using cloud services need to think about enhancing security now.
In this article, we will take a closer look at the five most popular ways to protect data in the cloud: encryption, infrastructure monitoring, data access restrictions, backups, and disaster recovery plans.
But before that, interesting statistics:
- 64% of companies consider cloud systems more secure than on-premises systems;
- 75% take additional measures to ensure safety;
- 61% encrypt their data;
- 52% have introduced a policy of access control to information systems;
- 48% conduct regular checks of information systems for compliance with security requirements.
## Encryption
To ensure security, you must implement a specific encryption policy. But encrypting all the data does not make sense – in this case, the disadvantages associated with the encryption processes will outweigh all the possible advantages. Therefore, you need to find out what data is in the cloud and where the traffic is going, and then decide which of these needs to be encrypted. For the effective use of encryption, it is necessary to compare the cost of introducing such measures and possible losses from information leakage. Besides, you should analyse how encryption will affect the performance of information systems.
Data protection can be performed at different levels. For example, all the data that users send to the cloud can be encrypted using block encryption algorithms. The next level is data encryption in a cloud system, which has three ways:
The first one is to independently encrypt data on the computer, and then send them to the cloud. So you can make backup copies of any projects. In parallel, it is worth downloading encrypted files or crypto containers to an external hard drive, since there are examples where data from unreliable cloud storage is permanently deleted without the consent of the owner.
If there are many files, you can use services that encrypt data before sending it to the cloud. Some of them even encrypt file headers. Thus, if attackers gain access to the cloud, not only the contents of the file, but also its name will not be available to them.
One such service is [Boxcryptor](https://www.boxcryptor.com/en/). The main advantage of Boxcryptor is its support for popular cloud storage services such as Dropbox, Google Drive, OneDrive, Box, Amazon, iCloud Drive. The service also supports all popular platforms, including iOS and Android mobile operating systems. The product has a free version, but it has some limitations. For example, you can work with only one cloud. The paid version allows encrypting file names and works with an unlimited number of cloud providers.
## Infrastructure Monitoring
Attackers can almost always find a way to hack a system. Therefore, to prevent threats, it is necessary to ensure that attacks do not spread to other vulnerable systems. This is possible if you block unauthorized connections between workflows and prevent dangerous connection requests.
There are many products on the market for monitoring infrastructure that allows to get a complete picture of network activity: see everyone who connects to the network and set rules for users (what specific users can do and what access rights they should have).
Monitoring systems also allow getting statistics for each user and related events and threats. Services such as Zscaler allow sending logs to a customer’s SIEM system to receive reports that include data from various sources. Zscaler provides users with a collection of predefined and custom logs. It includes the following types of reports:
- Executive Reports (a brief security report for managers, including the number of detected threats or violations of rules for a certain time);
- Interactive Reports ;
- Scheduled Reports (regular distribution of standard and custom reports);
- Company Risk Score Report (calculation of a risk assessment for a company included in the Business and Transformation package, and available for a fee for the Professional package);
- Industry Peer Comparison (compare the performance of using Zscaler in your organization and in other organizations in your industry);
- System Audit Report (system report on the status of GRE tunnels, PAC files, etc. If there are problems, the report will give recommendations on how to fix them);
- Security Policy Audit Report.
## Restrict access to data
Many are already accustomed to the fact that each user logs into the information system with their username and password. Usually, password data is stored as a hash in a database in a closed-form. To avoid theft of a session of authorized users, the login and password hash is checked at the loading of the system’s each page. In case of an authentication error, the user will automatically log out. But in addition to the traditional system of protection using login and password, cloud services offer several more information protection methods.
Recently, a role-based security model (also called role-based access control) has become widespread. This model is based on user identification using a login. When a user is identified, roles and decisions are automatically assigned to him.
A role-based access control model complies with security policies adopted by various organizations. It allows organizing features such as a hierarchy of roles and operational separation of duties.
Role Based Access Control (RBAC) considers all information as belonging to this organization. In such a system, users cannot transfer access rights to information to other users. This system is based on a decision on access based on information about a function that a user performs within a given organization based on his role.
The definition of membership and the distribution of authority to a role in a role-based access control system does not depend on the system administrator but the security policies adopted in the system. A role can be understood as the actions set that a user or users’ group can use. The role concept includes a description of responsibilities, responsibilities and qualifications. Functions are assigned to roles by the system administrator. Access to the role is also determined by the system administrator.
The role policy allows to distribute the authority between the roles under their official duties, and the administrator’s role is supplemented by special powers that allow the administrator to control the operation of the system and manage the configuration. Ordinary users’ rights are limited to the minimum necessary to run specific programs.
The roles number in the system may not correspond to the number of real users – one user, if it has different responsibilities that require different privileges, can fulfil several roles, and several users can use one role if they perform the same work.
Cloud systems such as Amazon EC2 make extensive use of RBAC to fine-tune end-user access to resources. Microsoft Azure also uses RBAC for [access control](https://docs.microsoft.com/en-us/azure/role-based-access-control/overview) to cloud resources. Therefore, as an example, we give some actions that can be performed using RBAC:
- granting one user permission to manage virtual machines in a subscription, and another – to manage virtual networks;
- granting the DBA group permission to manage SQL databases in a subscription;
- granting the user permission to manage all resources in the resource group, including virtual machines, websites and subnets.
## Data backup
Applications that run in the cloud are only protected to a certain extent. Stories periodically appear as one or another unreliable cloud provider erased virtual machines or files in storage. To fully protect the data generated by cloud applications, you will need to back up to the customer’s data centre (DPC) or another cloud.
In small-scale scenarios, users can copy files, for example, from Office 365 to a local volume or an external drive. But this is a manual process that can be unreliable and difficult to scale.
For large files and larger applications, such scenarios are very rare. Enterprises using the IaaS-based cloud can use the application system interfaces (APIs) provided by cloud providers to develop their backup software, or third-party backup software to local servers, network-attached storage (NAS), or own data centre.
Cloud-to-cloud backups promise the business several advantages over local backups, including lower infrastructure costs, faster backup and recovery, and greater flexibility.
As part of the cloud backup service, users can back up important data (files, databases, operating system configurations) to the cloud. To do this, they install special agents to back up the data of the required applications. The presence of agents allows to guarantee the integrity of the data in the backup, and the transfer of the reserved data itself is carried out via the Internet via VPN channels.
## Disaster Recovery Plan
Disaster Recovery Plan helps protect your business from disruptions in IT infrastructure and potential data loss.
A traditional restoration plan involves creating a backup site, preferably in another area or even city. For its organization, it is required to purchase the same set of equipment as on the main site, provide the site infrastructure and purchase backup software. In this case, the cost of creating and maintaining a backup site may be the same as the cost of the main site. This means that up to 50% of the entire IT budget can go to ensure business continuity. While the cloud backup service provides the ability to quickly increase or decrease the volume of consumption and does not require initial capital expenditures.
https://serverspace.us/about/blog/test-environments-on-virtual-hosting.mdMany companies use virtual hosting as the most convenient platform for deploying test environments. What is the test environment for?
For the end-user to appreciate the benefits of the software, the developers do a lot of work before submitting the final release. And one of the important steps is testing, so you can identify flaws at different stages of development. For this purpose, many companies use virtual hosting as the most convenient platform for deploying test environments.
As you know, new services are created in the development environment and after they are ready, they are transferred to a productive environment. But before a solution is available for general use, it needs to be tested for functionality. For these purposes, test environments are created, which act as a kind of testing ground where all kinds of checks are carried out. It is important to understand that the testing process requires a systematic approach and it is not enough to use best practices for this. To get positive results, it is necessary to organize the process correctly from the very beginning. First, you need to decide on the goals, area, testing methodology and take care of preparing the test environment.
## What is the test environment for
Today, many organizations, including development teams, are moving away from traditional approaches to organizing test environments. If earlier for these tasks they deployed their infrastructure, which required separate support and additional financial investments, now more economical options are more often preferred. One of them is virtual hosting, which is one of the convenient options for organizing the testing process, which has some competitive advantages. It is noteworthy that test environments deployed based on virtual hosting eliminate the downtime of their servers since there is no need to use them. Instead, you get the virtual resources you need without losing quality.
Recently, most applications are built to be accessed through a standard internet browser, and they also need code-level health checks. It is very important that the application accurately replicates the user experience. It is also important to get feedback on the performance and reliability of the service. Using virtual hosting for these tasks, you can get an almost instant response and feedback regarding the functionality and consistency of a particular solution.
## Example of using a test environment
Let’s say you need to set up an environment for testing a new application. To solve this problem, it is enough to contact a cloud provider and request resources to organize a test environment. After the client is granted access to the management console, the required resources are allocated and used to deploy the solution under test. And after the completion of the processes of checking and identifying bugs, the capacities used can be returned and used for other tasks. This approach facilitates resource sharing and prevents underutilized equipment downtime.
## Conclusion
Test environments based on virtual hosting reduce costs to a minimum and significantly speed up testing cycles. Such an environment can be deployed as soon as possible, choosing the optimal configuration for yourself. As a result, the client receives a more efficient and relatively inexpensive solution, thanks to which testing and development projects are implemented with minimal costs.
https://serverspace.us/support/help/configuring-openvpn-on-ubuntu.mdOpenVPN is an open implementation of one of the VPN technologies designed for organizing secure virtual private networks. Consider setting it up on Ubuntu Linux.
OpenVPN is an open implementation of one of the VPN technologies, designed to organize secure virtual private networks between geographically remote local networks, as well as individual clients. Tunnel security is provided by encryption using OpenSSL.
## How does OpenVPN work?
Upon completion of the server setup and its launch, it will enter the standby mode of receiving and redirecting external secure SSL connections to the virtual network adapter (tun/tap).
Optionally, server routing can be configured so that client Internet traffic passes through the server and becomes server traffic. In this case, OpenVPN will perform proxy traffic.
## What is required from the operating system?
Before installing OpenVPN, you need to make sure that the basic parameters are correct.
- The server has at least one "white" static IP address. Those. The server must be accessible from the Internet. If the address is dynamic, but the server remains accessible from the global network, use the DynDNS services.
- Allowed to download and install packages from official repositories. To check, run cat /tc/apt/sources.list. Lines with instructions from the repositories should be uncommented (there should be no "#” sign at the beginning of the line).
- The network parameters must be correctly specified – hostname, parameters of DNS servers.
Getting to the installation.
All installation steps will be performed by the root user.
- Updating repository information:
```bash
apt-get update
```
- Install the current system updates and installed programs:
```bash
apt-get upgrade
```
- Install OpenVPN:
```bash
apt-get install openvpn
```
Important. In basic repositories, the latest version of a package is often missing. OpenVPN developers maintain their repository, how to configure it can be found on the [official website of the](https://community.openvpn.net/openvpn/wiki/OpenvpnSoftwareRepos).
- Install the easy-rsa package in the same way:
```bash
apt-get install easy-rsa
```
## Post-installation steps
We place easy-rsa scripts:
```
cd /etc/openvpn/ && make-cadir easy-rsa
```
We prepare public keys (PKI – Public Key Infrastructure):
- Go to the / etc / openvpn / easy-rsa directory:
```
cd /etc/openvpn/easy-rsa
```
- Creating a symbolic link to the openssl configuration file:
```
ln -s openssl-1.0.0.cnf openssl.cnf
```
- We initialize the vars script:
```
source ./vars
```
The system will report: NOTE: If you run ./clean-all, I will be doing a rm -rf on / etc / openvpn / easy-rsa / keys
- We carry out ./clean-all
- To create a certification authority, run the script:
```
./build-ca
```
In the course of its work, the program will ask several questions. They should be answered in Latin letters. If you do not fill in any field, the program will substitute default values, usually indicated in parentheses.
## Create the server key
To create the server key, execute the command:
```
./build-key-server server
```
It should be noted that the process is similar to generating a certificate of a certification authority, however, before signing the certificate, the program will ask 2 clarifying questions. If everything is correct, answer "y".
## Generation of client keys
Similarly to generating server keys, client keys are also created:
```
./build-key client1
```
It should be noted that the created client1.key does not have a password or cryptographic protection. This can lead to the fact that any user who has taken possession of the file can try to connect to the server. If such a threat exists, it is better to generate keys with another script:
```
./build-key-pass client2
```
The script will ask for a passphrase at the very beginning. Further, the process is no different from generating server keys and a simple client.
Keep in mind that key names must be unique. One user – one key with a unique name.
It happens that in the course of the server's operation, after some time, it is necessary to create one or more certificates. To do this, you will need to reinitialize the vars script and only then start the key generation process:
```
cd /etc/openvpn/easy-rsa
```
```
source ./vars
```
```
./build-key client3
```
## Diffie-Hellman key generation
Thanks to the Diffie-Hellman protocol, two or more parties can receive one secret key, which will allow building a secure communication channel. The keys are generated by the command:
```
./build-dh
```
The result will be something like this.
When the program is finished, the dh2048.pem file will appear in the /etc/openvpn/easy-rsa/keys/ directory
## Moving certificates and keys
### Server
Keys and certificates created. It is time to distribute them to users, and copy server keys to the appropriate directories on the server.
- Go to the directory with the keys:
```
cd /etc/openvpn/easy-rsa/keys
```
- We copy only the files necessary for the server:
```
cp ca.crt ca.key dh2048.pem server.crt server.key /etc/openvpn
```
It is important to understand that the above files are the basis of the operation and security of the VPN server. Loss or substitution of these files can have extremely negative consequences. It is important to store them in a safe place and not transmit them over open communication channels.
### Clients
The client will need only 3 files ca.crt, client1.crt, client1.key. Each client needs to give only his keys. These files can be placed in the / etc / openvpn directory on the client machine if it is running a Linux-like OS.
On Windows, they should be placed in the user directory.
## Server and client setup
### Server
Most installed programs on Linux have so-called sample files. These files contain configuration examples and explanations of them. OpenVPN was no exception. Unpack the server configuration file into the / etc / openvpn directory:
```
gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf
```
The server is ready to work with the received file. It is configured with the possibility of tunneling, but cannot proxy, i.e. sending client traffic on its behalf. Fix this.
First, check which files are in the / etc / openvpn directory:
```
ls /etc/openvpn
```
Open the configuration file:
```
nano /etc/openvpn/server.conf
```
And we check the compliance of the files prescribed in the configuration with the files in the directory. Interesting lines after ” SSL/TLS root certificate (ca), certificate (cert), and private key (key)."
If the names differ from the existing ones, the necessary corrections should be made. Exit the editor by pressing Ctrl + X.
We start the server:
```
/etc/init.d/openvpn start
```
Check the launch result:
```
/etc/init.d/openvpn status
```
Client settings.
It is assumed that the OpenVPN package is already installed on the client side.
- Copy the client settings file to the user’s home directory:
```
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /root
```
- Copy the generated keys – client1.key, client1.crt, ca.crt:
```
cd /etc/openvpn/easy-rsa/keys
```
```
cp client1.key client1.crt ca.crt /root
```
- Editing the client configuration file:
```
nano /root/client.conf
```
- We find the commented out lines "# The hostname / IP and port of the server". For the remote parameter, change my-server-1 to the IP address of the server or its domain name.
- In the same file, below, we find the block "# SSL / TLS parms.". Editing key names.
- We exit editing with the combination Ctrl + X. We answer "Y" to the question of saving changes. The file name is left unchanged.
- Transfer the files client1.key, client1.crt, ca.crt and client.conf to the client computer from which the connection to the OpenVPN server will take place.
Important! Some client implementations of OpenVPN only work with * .ovpn files. In such cases, it is enough to change the file extension (rename) from client.conf to client.ovpn.
- We connect to the server with the command:
```
openvpn openvpn.conf
```
It should be noted that proxying is still not configured. At the same time, when the client machine is connected to the OpenVPN server, Internet access is terminated. This is because the created TUN adapter, and in the place with it the server itself, is the default gateway.
Configuring routing.
- On the server, edit the server.conf file:
```
nano /etc/openvpn/server.conf
```
- We find the following line in the file and delete the ";" symbol in front of it, thus uncommenting it:
```
push "redirect-gateway def1 bypass-dhcp"
```
- Save and close the editor.
- Editing the file /etc/sysctl:
```
nano /etc/sysctl.conf
```
- At the end of the file, add the following line:
```
net.ipv4.ip_forward=1
```
This will allow the system to forward traffic between interfaces, but the changes will only take effect after a reboot. Save the file and close the editor.
- Allow forwarding packages without rebooting the server:
```
echo 1 > /proc/sys/net/ipv4/ip_forward
```
- Configure NAT in iptables. We enter the commands one by one:
```
iptables -A FORWARD -m state –state RELATED,ESTABLISHED -j ACCEPT
```
```
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
```
```
iptables -A FORWARD -j REJECT
```
```
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
```
```
iptables -A INPUT -i tun+ -j ACCEPT
```
```
iptables -A FORWARD -i tun+ -j ACCEPT
```
```
iptables -A INPUT -i tap+ -j ACCEPT
```
```
iptables -A FORWARD -i tap+ -j ACCEPT
```
You can also simply enter them into the /etc/rc.local file up to the line "exit 0" or configure the firewall.
The server is ready to use. However, the task is to proxy all traffic, and therefore it is necessary to configure forwarding of DNS queries. Customize.
- Install dnsmasq
If the installation is performed on an Ubuntu OS:
```bash
apt-get install dnsmasq
```
Even though in most modern versions of the Ubuntu OS, dnsmasq is already preinstalled, in older versions you must do this:
```bash
apt-get install dnsmasq && dpkg-reconfigure resolvconf
```
The installation wizard dialogue box may start. There will be 2 questions in it. In the first case, the question "prepare /etc/resolv.conf for dynamic updates" is answered with "Yes", and in the next, "Append original file to dynamic file?" answer "No".
For Debian 7 OS:
```bash
apt-get install dnsmasq resolvconf
```
- Edit the dnsmasq settings file:
```
nano /etc/dnsmasq.conf
```
Add the following parameters:
```
listen-address=10.8.0.1
```
```
bind-interfaces
```
Save the file and close the editor.
- Editing the network settings file:
```
nano /etc/network/interfaces
```
It is required to specify the address of DNS servers in the corresponding sections of the adapter settings:
```
dns-nameservers 8.8.8.8 8.8.4.4
```
Perhaps this action has already been performed. You do not need to perform it again.
- Considering the peculiarity of dnsmasq startup and subsequent operation – the possibility of crashing before initializing the virtual tun adapter, add the following line to the rc.local file, before "exit 0":
```
/etc/init.d/dnsmasq restart
```
- Now let the OpenVPN server clients use DNS. Using the nano editor, uncomment the line:
```
push "dhcp-option DNS 10.8.0.1″
```
We fix the changes in the file.
- Reboot the server:
```
reboot
```
https://serverspace.us/support/help/installing-and-configuring-the-wamp-server.mdThe WAMP server is an implementation of the classic LAMP server, but for the Windows family of OS. Before setting up the WAMP server, install the missing libraries.
The WAMP server is an implementation of the classic LAMP server, but for the Windows family of OS. This distribution includes Apache, PHP, MySQL and an automatic extension installer.
Before installing the WAMP server, install the missing libraries – Visual C ++ Redistributable for Visual Studio 2015. To do this, go to the [link](https://www.wampserver.com/en/). For convenience, select the page display language, click on the Download button.
The page will refresh, select the bit size of the distribution kit and click on the Next button.
We are waiting for the complete download of the package. Install it on a "Next-Done" principle.
Similarly, install:
- [Microsoft Visual C++ 2008 SP1 Redistributable Package (x64)](https://www.microsoft.com/en-us/download/confirmation.aspx?id=2092)
- [Microsoft Visual C++ 2010 SP1 Redistributable Package (x64)](https://www.microsoft.com/en-us/download/details.aspx?id=13523)
- [Visual C++ Redistributable for Visual Studio 2012 Update 4](https://www.microsoft.com/en-us/download/details.aspx?id=30679)
- [Update for visual C++ 2013 Redistributable Package](https://support.microsoft.com/en-us/help/4032938/update-for-visual-c-2013-redistributable-package)
We go to the WAMP project website at [the link](https://www.wampserver.com/ru/). We open the section “Download”
We are waiting for the full download of the file and run it.
At the very beginning, the program suggests choosing a language for the entire installation process. We choose according to convenience. In our case, it will be English. Click on the "OK" button.
We carefully read the license agreement. If everything suits you, we accept the conditions and continue the installation.
At the next stage, the program will offer you to get acquainted with the installation information.
This information reminds you of the need to disable the IIS server and update Visual C ++ packages.
Choose the installation path. The default is "C: wamp". The disk must have more than 2.5 GB of free space. If everything suits, click "Next".
In the next step, the program will offer to create a shortcut in the Start menu. Click "Next".
We check the installation parameters and click "Install".
Waiting for the installation process to finish.
During the installation process, you may be asked to use Internet Explorer as a browser for a WAMP server. If you want to select another browser, click the "Yes" button. In this case, it will be necessary to specify the exe file of the new browser.
If all of the above updates are installed, the WAMP server will start in the system tray.
Check the operation of the server. To do this, click on the link http://127.0.0.1.
## Let’s сonfigure Apache
Let the connection be for everyone, not just local users. Edit the file C: wamp64binapacheapache2.4.39confhttpd.conf.
In this configuration file, you need to find the section . Replace the value "Require local" with "Require all granted".
Save and close the file.
Now edit the file C: wamp64binapacheapache2.4.39confextrahttpd-vhosts.conf. Replace the parameters and values of the Directory section with:
```
Options FollowSymLinks
```
```
AllowOverride All
```
```
Order deny,allow
```
```
allow from all
```
Save and close the file.
We restart the WAMP server. To do this, click on the tray icon with the right mouse button and select Refresh.
To check the operation of the www-server, create an html-file in the root of the site. To do this, open Notepad and fill it with html-code. Then save the file along the path C:wamp64wwwindex.html
Now from another computer, open the file. This can be done by domain name, if purchased and configured, or by IP address. As an example:
```
http:///index.html
```
```
http:///index.html
```
To find out your IP address, just open a command prompt or PowerShell window and run the command:
```
ipconfig
```
Open.
Important! Windows Firewall rules must allow connections to 80 and 443 TCP ports.
## Configuring phpMyAdmin
On the server's main page, at the very bottom, on the left, in the Tools section, click on phpmyadmin.
The page will open at http://127.0.0.1/phpmyadmin/.
The web application will request a username and password. By default, the login is root, the password should be left blank. You should also select the used DBMS and click on the "Forward" button.
After successful authorization, you can add users, if necessary, and also change the password of the root user. Go to the "User Accounts" tab. In the root user line, click on edit privileges.
The page will refresh, click on "Change Password". We enter the password and its confirmation. Click on the "Forward" button.
It is important to understand that root is the user with the highest privileges. Password must be complicated.
At the end of the settings, restart the server in the same way as shown above.
https://serverspace.us/support/help/mounting-a-disk-and-creating-partitions-in-linux.mdStep-by-step guide on how to mount disks and create partitions in Linux on VPS, VDS, and dedicated servers. Learn Linux disk management basics, including mounting, formatting, and partitioning for efficient server storage setup.
The hard disk installed in the system may not be enough and sometimes the question arises of adding additional media. Let’s look at how to mount a disk on a Virtual Private Server (VPS), Virtual Dedicated Server (VDS), and Standalone Server.
## Preparation
Before you start working, make sure that the disk exists in the system. Sometimes the presence of a device in the BIOS may not be sufficient. Check the available drives with the command:
```
sudo fdisk -l
```
In our case, there are 2 disks in the system – sda and sdb, both 10 GB each, the first system disk. We will work with the second disk (sda).
It is important to remember that Linux systems can be damaged by incorrectly specifying a drive, such as a system one. Carefully check and double-check media selection. The fact that the new disk (out of the box) does not have a file system or partitions helps.
## Disk marking
To mark the disk, run the fdisk utility with the path to the disk:
```
fdisk /dev/sdb
```
When you press "m" and confirm the entry with Enter, the program will provide a page of available commands:
**Reference:**
DOS (MBR)
a toggle a bootable flag
b edit nested BSD disklabel
c switch the DOS compatibility flag
**General**
d delete a section
F list free unpartitioned space
l list of known partition types
n add a new section
p show partition table
t change partition type
v check the partition table
i print information about the partition
**Miscellaneous**
m show this menu
u change display/input units
x additional features (only for experts)
**Script**
I load disk layout from sfdisk script file
O dump disk layout to sfdisk script file
**Save and exit**
w save the table to disk and exit
q exit without saving changes
**Create a new tag**
g create a new empty GPT partition table
G create a new empty SGI partition table (IRIX)
o create a new empty DOS partition table
s create a new empty Sun partition table
Since we will create a simple partition (not bootable), we will use the entire disk space, press the "n" key and Enter.
The system will ask about the type of partition – select p – primary.
The partition number — 1
We answer the question about the first and last sector by pressing the Enter key.
Important! If you want to create several logical drives, then in response to the last sector you should specify the size in kilo-, mega-, giga-, tera-, petabytes. Accordingly, if the partition needs a size of 2 gigabytes, then specify 2G.
Save the changes by pressing "w" and confirm the selection with the Enter key.
## Formatting a disk
After the operation described above, the device /dev/sdb1 will be created in the system – in essence, this is a partition on the disk. Now formatting.
Modern Linux offers a choice of several file system options. The file system is created by executing the mkfs command with the keys specified, or by running one of the programs:
```
mkfs.bfs
```
```
mkfs.btrfs
```
```
mkfs.cramfs
```
```
mkfs.ext2
```
```
mkfs.ext3
```
```
mkfs.ext4
```
```
mkfs.ext4dev
```
```
mkfs.fat
```
```
mkfs.minix
```
```
mkfs.msdos
```
```
mkfs.ntfs
```
```
mkfs.vfat
```
```
mkfs.xfs
```
Formatting is performed by the command:
```
sudo mkfs.ext4 /dev/sdb1
```
The disk is ready to work. It remains only to mount it.
## Mounting a disk
The peculiarity of the Linux OS is that it is possible to mount a disk (or another block device) in any of the directories, the main thing is that the directory is empty.
Create a directory in the /mnt directory:
```
sudo mkdir /mnt/1
```
We change the access rights to the directory. Only root and only read and write.
```bash
sudo chmod -R 660 /mnt/1
```
We mount:
```
sudo mount /dev/sdb1 /mnt/1
```
To mount the disk automatically when the system boots, edit the /etc/fstab file. Open with any text editor, for example, nano:
```
sudo nano /etc/fstab
```
At the very end of the file, insert the line:
```
/dev/sdb1 /mnt/1 ext4 defaults 0 0
```
Save the file.
## Conclusion
Mounting a disk and creating partitions in Linux is a fundamental skill for managing server storage on VPS, VDS, or dedicated environments. This guide walked you through checking available disks, partitioning with fdisk, formatting with mkfs, and mounting the disk both manually and automatically at boot using /etc/fstab. By following these steps carefully, you can safely extend your server's storage and ensure it's ready for stable operation. Always double-check device names to avoid overwriting critical system data.
## FAQ
- **Q1: How can I check which disks are available on my Linux server?**
A: Use the command sudo fdisk -l to list all connected disks and partitions.
- **Q2: What is the difference between /dev/sda and /dev/sdb?**
A: These represent physical disks. /dev/sda is usually the first (and often system) disk, while /dev/sdb is typically the second disk or an added volume.
- **Q3: What file system should I use when formatting a new partition?**
A: ext4 is the most common and stable file system for Linux. However, you can choose others like xfs, btrfs, or ntfs depending on your use case.
- **Q4: Why do I need to add the disk to /etc/fstab?**
A: Editing /etc/fstab ensures that your new partition is mounted automatically each time the system reboots.
- **Q5: Can I mount a disk to any directory?**
A: Yes, in Linux you can mount a disk to any empty directory, but it's common to use locations like /mnt or /media for organization.
- **Q6: Is it safe to perform these actions on a running production server?**
A: It's safe if you are careful to not modify the system disk or partitions currently in use. Always verify the disk name (e.g., /dev/sdb) before proceeding.
https://serverspace.us/support/help/installing-the-gnome-gui-on-centos-7.mdLearn how to install the GNOME desktop environment on a minimal CentOS 7 system using terminal commands. This guide walks you through the complete setup of the GNOME GUI step-by-step.
GNOME is part of the GNU project and is a desktop graphical interface (GUI). It uses the KISS (Keep it simple, stupid) principle and is the standard GUI for many distributions such as Debian, Fedora, Red Hat Enterprise Linux, Kali Linux, etc.
In this article, we will explain how to install the GNOME GUI on the base version of the CentOS 7 operating system. Since this system works in command line mode (CLI), as an example we will use a set of commands for the terminal.
## Installation
We assume that you have already installed CentOS (if not already, you can [rent](https://serverspace.us/services/vps-server/linux.md) VPS with this operating system), and you have root or superuser rights. In this case, we will write commands as the root user. If you are not a root user, just put sudo before all commands.
### Step 1 – Upgrade your system
First, we update the system. This is not always required, but doing so is good practice:
```bash
yum update
```
We are waiting for the installation of updates to complete and move on to the next step.
### Step 2 – Install GNOME packages
Now we install the GNOME packages. To install them, we will use a command that installs all packages related to the GNOME GUI:
```bash
sudo yum -y groups install "GNOME Desktop"
```
### Step 3 – Configure the X Window System
The program that runs the graphical environment on most Linux systems is called the X Window System. So, firstly, you must tell the X Window System that GNOME is the default GUI. To enter this command:
```
echo "exec gnome-session" >> ~/.xinitrc
```
Now we have finished installing GNOME and configuring the X Window System. Let’s verify this by entering the command:
```
startx
```
After running this command, you will see the GNOME GUI, similar to the image below, which means that it works:
### Step 4
Now the GNOME GUI is installed and tested. However, to start it, you must enter the command_ startx_ every time you start the operating system, which is not very convenient. Let’s make it start automatically. To do this, use the following command:
```bash
systemctl set-default graphical.target
```
https://serverspace.us/support/help/installing-and-configuring-openvpn-on-centos.mdGuide for installing and configuring OpenVPN on a server running CentOS7. A distinctive feature of OpenVPN is the ability to create encrypted tunnels.
OpenVPN is an open software implementation of the VPN protocol. A distinctive feature of this product is the ability to create encrypted tunnels, while there are implementations for most popular OS, including for mobile platforms.
The CentOS repository feature is that OpenVPN is not included in it. But this package can be obtained using the EPEL repository (Enterprise Linux), which is managed by Fedora Project. From this repository, by the way, you can get other packages that are not included in the standard CentOS repository. Install with the command:
```bash
yum install epel-release
```
Proceed to install OpenVPN. Install the package:
```bash
yum install openvpn easy-rsa -y
```
Proceed to configure the server. Copy server.conf:
```
cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn/
```
It is important to pay attention to the "*". If only one attempt was made to install, then the program version can be replaced with an asterisk symbol. If there were several installation attempts, you may have to specify the path to the file completely.
## Before generating the keys, make a few changes to the server configuration file
Open server.conf with any editor.
```
nano /etc/openvpn/server.conf
```
Find the line "Diffie hellman parameters." and look for:
```
dh dh2048.pem
```
If it is indicated exactly, then no changes need to be made. The nuance of the new version of the package is that the parameter already has values. In older versions there is simply "dh". We make it look like our own.
Next, look for the line "# Certain Windows-specific network settings". uncomment one of the parameters below (delete the symbol "semicolon" (;) at the beginning of the line). It should look something like this:
```
push "dhcp-option DNS 8.8.8.8″
```
You can specify your DNS server if desired. Also, you can uncomment the second line to pass an alternative DNS server to clients as well.
For server security, we will start with the user nobody and the nogroup group. Uncomment the lines:
```
user nobody
```
```
group nobody
```
## We begin to create certificates
Using the previously installed easy-rsa package, create the server and client keys.
Create a directory in which the keys will lie:
```
mkdir -p /etc/openvpn/easy-rsa/keys
```
In the newly created easy-rsa directory, copy the scripts:
```
cp -r /usr/share/easy-rsa/3.0/* /etc/openvpn/easy-rsa
```
Go to the /etc /openvpn/easy-rsa/3/ directory and create a vars script
cd /etc/openvpn/easy-rsa/
```
nano vars
```
Important! The easy-rsa version may be different, and therefore the path will need to be adjusted.
Add the following lines to the open file:
```
set_var EASYRSA "$PWD"
```
```
set_var EASYRSA_PKI "$EASYRSA/pki"
```
```
set_var EASYRSA_DN "cn_only"
```
```
set_var EASYRSA_REQ_ORG "MyOrg"
```
```
set_var EASYRSA_REQ_EMAIL "openvpn@mydomain.net"
```
```
set_var EASYRSA_REQ_OU "CA"
```
```
set_var EASYRSA_KEY_SIZE 2048
```
```
set_var EASYRSA_ALGO rsa
```
```
set_var EASYRSA_CA_EXPIRE 7500
```
```
set_var EASYRSA_CERT_EXPIRE 365
```
```
set_var EASYRSA_NS_SUPPORT "no"
```
```
set_var EASYRSA_NS_COMMENT "CERTIFICATE AUTHORITY"
```
```
set_var EASYRSA_EXT_DIR "$EASYRSA/x509-types"
```
```
set_var EASYRSA_SSL_CONF "$EASYRSA/openssl-1.0.cnf"
```
```
set_var EASYRSA_DIGEST "sha256″
```
Allow file execution:
```bash
chmod +x vars
```
We initialize the PKI directory and create a CA certificate:
```
./easyrsa init-pki
```
```
./easyrsa build-ca
```
Important! When creating a CA certificate, the script will ask for a password of at least 4 characters. The entered password should be remembered.
Create the server key.
```
./easyrsa gen-req server nopass
```
If you do not specify the "nopass" attribute, then when creating the key, the script will ask for a password.
We sign the server certificate:
```
./easyrsa sign-req server server
```
The script will take an interest in our confidence with the first action, answer "Yes". Then it will ask for the password that was specified when creating the CA certificate.
Check if the certificate is signed:
```
openssl verify -CAfile pki/ca.crt pki/issued/ server.crt
```
We generate an additional server key ta.key:
```
openvpn –genkey –secret /etc/openvpn/easy-rsa/keys/ta.key
```
## User certificates
The process of creating a user certificate is identical to creating a server certificate.
1. We create without password protection:
```
./easyrsa gen-req client01 nopass
```
2. Signing the certificate:
```
./easyrsa sign-req client client01
```
3. Verify the signature:
```
openssl verify -CAfile pki/ca.crt pki/issued/client01.crt
```
Diffie Hellman.
## Creating a certificate
```
./easyrsa gen-dh
```
As a result, the dh.pem file will be created, and in the dh2048.pem config. Rename it later when copying keys.
### We transfer certificates
Copy the server key files. To do this, we sequentially perform:
```
cp pki/ca.crt /etc/openvpn/
```
```
cp pki/issued/server.crt /etc/openvpn/
```
```
cp pki/private/server.key /etc/openvpn/
```
```
cp /etc/openvpn/easy-rsa/keys/ta.key /etc/openvpn/
```
### Copy client keys
```
cp pki/ca.crt /etc/openvpn/client/
```
```
cp pki/issued/client01.crt /etc/openvpn/client/
```
```
cp pki/private/client01.key /etc/openvpn/client/
```
### Copy the Diffie-Hellman key file
```
cp pki/dh.pem /etc/openvpn/dh2048.pem
```
Important! The target file name is intentionally changed to the name in the config.
## Configuring routing
To speed up configuration, work will be performed with iptables, not with FirewallD. Consistently perform:
```bash
yum install iptables-services -y
```
```bash
systemctl mask firewalld
```
```bash
systemctl enable iptables
```
```bash
systemctl stop firewalld
```
```bash
systemctl start iptables
```
```
iptables –flush
```
Before further configuration, you should look at the names of the interfaces using the command:
```
ifconfig -a
```
Add a rule for NAT:
```
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o -j MASQUERADE
```
```
iptables-save > /etc/sysconfig/iptables
```
As an example:
```
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
```
```
iptables-save > /etc/sysconfig/iptables
```
Allow packet forwarding between network interfaces. To do this, edit the sysctl.conf system file:
```
nano /etc/sysctl.conf
```
At the beginning of the file, insert the line:
```
net.ipv4.ip_forward = 1
```
We save the file, close the editor and restart the network service with the command:
```bash
systemctl restart network.service
```
## We start the OpenVPN server
To start, add the service to the auto-upload:
```bash
systemctl -f enable openvpn@server.service
```
Launch OpenVPN:
```
openvpn /etc/openvpn/server.conf
```
Client setting.
The server is configured, it remains to configure the client so that it can connect.
Regardless of the OS used, whether it's a mobile, server or home version, Linux or Windows, you will always need 4 files:
- ca.crt;
- client.crt;
- client.key;
- client.ovpn
The first 3 files are located in the /etc/openvpn /client/directory, and client.ovpn will have to be created. To do this, go to the directory where all the client keys are:
```
cd /etc/openvpn/client/
```
Create a file:
```
nano client.ovpn
```
Fill in the following contents:
```
client
```
```
dev tun
```
```
proto udp
```
```
remote 1194
```
```
resolv-retry infinite
```
```
nobind
```
```
persist-key
```
```
persist-tun
```
```
comp-lzo<
```
```
verb 3
```
```
ca ca.crt
```
```
cert client01.crt
```
```
key client01.key
```
Instead of IP_ADDRESS, insert the IP address of the server, or its domain name. Save the file with Ctrl + X and close the editor.
We transfer files to the client. It is possible to do this, for example, through SFTP or archive the directory and "give" it through the webserver.
## Client connection
Depending on the operating system, we download the installation file or install from the repository. Also, OpenVPN can be obtained from [the official website](https://openvpn.net/download-open-vpn/).
Windows:
For computers running Windows, you should download the product distribution package from the official site, get the "four files", put it in the folder, C: Program FilesOpenVPNconfig.
After starting the OpenVPN GUI, the program icon will appear in the system tray. We click on it with the right mouse button, select Connect.
### MacOS
OpenVPN for MacOS is a bit more complicated. You should use the open-source tool Tunnelblick. The keys and configuration file should be put in ~ /Library/Application Support/Tunnelblick/Configurations. Or double-click on the configuration file.
**Linuix:**
You should install from the repository.
### Debian/Ubuntu
```bash
apt-get install openvpn
```
### CentOS/OpenSUSE/Fedora
```bash
yum install openvpn -y
```
After installation, go to the folder in which the configuration file with the keys is located and run the command:
```
sudo openvpn –config client.ovpn
```
To check the operation of the server, you should use any of the sites showing your IP address.
https://serverspace.us/support/help/windows-2016-creating-a-user.mdCreating a user account in Windows 2016 - through the control panel and the console. And providing remote desktop access.
Creating your account for each user is an important attribute of server security. Let’s see how to add a user in Windows 2016.
## Method 1. Traditional
Open **Start → Control Panel.**
In the window that opens, click on **"User Accounts".**
In the updated window, click on **"User Accounts" again.**
The peculiarity of the operating system is that the parameters of the current account will open, and we need to create a new one. Click on the inscription**"Manage another account".**
In the lower part of the updated window, click on **"Add user account".**
In the new window** “Adding a user”** all fields should be filled:
- username;
- password;
- confirm password;
- password hint.
If the password does not meet the security criteria, the program will notify you.
In the updated window, click on the button** "Finish"**.
The add user window will close and in the** “Account Management”** window, you will be able to select an account to change the settings.
## Method 2. Through the computer management console
The keyboard shortcut **"Windows + R" calls the system window "Run"**. In its only field, we enter the mmc command.
An empty snap-in console opens. To be able to create a user, you need to add the necessary snap-in to the console. To do this, open** file → Add or Remove Snap-in **
In the window "Add and Remove Snap-In", in its left part, we find "Local Users and Groups". Now click on the "Add" button.** "Local users and groups **"will move to section** "Selected snap-ins"**.
Immediately after the action above, the window** "Select target computer **"will open. We select the option "Local computer (on which the window of this console program is running)", usually this parameter is set by default. Click on the button **“Done”.**
The window will close. In the remaining window, click on the "OK" button.
The Add "Remove Snap-in window" closes. Only the Console 1 window remains. In the left part of the window, expand the "Local users and groups" tree, then click on the "Users" folder. In the main part of the window, right-click on space and select “**New user”.**
In the "New User" window that opens, the following fields are important for filling out:
- User;
- Full name;
- Password;
- Confirm password;
We recommend clearly filling out the field** “Description”**.
It is important to pay attention to the parameter** “Require password change at the next login”**. The tick is set by default. Thus, when the administrator passes the password to the user, at the first login, the operating system will require the user to specify a new password to enter the system.
Click on the button “**Create**“.
The result will be something like this.
Allow the remote connection.
It was originally planned that the created user should be able to connect to the remote desktop on this server. We will provide this opportunity.
### Method 1. Through the server console
From the method above, all in the same window “Console 1”, click on the user-created with the right mouse button. In the context menu that opens, select the "Properties" item.
Open the** "Group Membership" tab** and click on the “Add” button.
In the group selection window, click on the button "**Additionally**".
In the right part of the updated window, click on the button** "Search"**. In the "Search Results" field, select **"Remote Desktop Users"** by double-clicking.
In the group selection window, click the "OK" button.
The corresponding group membership will appear in the account properties window. Close the window by clicking on the "OK" button.
### Method 2. Consider an alternative way to provide remote desktop access
Open the Start menu and select Control Panel.
In the window that opens, click on** "System and Security"**.
In the updated window, click on** "System"**.
In the left part of the new window, click on** "Setting up remote access"**.
In the window** “System Properties”** that opens, go to the “Remote Access” tab and click on the “Select Users” button.
In the window that opens, click on the button** "Add"**
In the user selection window, click the button "**Additionally**".
In the updated window, click on the button** "Search"**, and in the lower part of the window, where the search results are, we find the user we need. Select it with a double click.
A line with the login will be added to the user selection window and on which server the user is located. If everything is correct – click on the "OK" button.
In the window** "Remote Desktop Users"** we check the users and when finished click on the “OK” button.
## Now you can try to connect
You can run** "Remote Desktop Connection"** through the Start menu → Accessories – Windows → Remote Desktop Connection. Perhaps this program will be on the "tile" on the right.
A program window will open. Enter the IP address of the remote machine or its domain name in it. And click on the button** "Connect"**.
The remote computer will ask for a username and password, enter them and click on the "OK" button.
https://serverspace.us/support/help/backing-up-using-the-windows-server-backup-component.mdConfiguring Windows Server Backup - an embedded component of the Windows Server family of operating systems that are used for creating OS backups.
Backing up important information is a good habit in system administration to save valuable time. Let’s look at how to save yourself from the torment of the "X" hour using the Windows Server Backup component.
## What is Windows Server Backup?
Windows Server Backup is an integrated component of the Windows Server family of operating systems designed to back up and work with the OS.
## Getting started with the setup
From the Start menu, start Server Manager.
In the Server Manager window that opens, select “Add Roles and Features”.
In the opened window of the Add Roles and Components Wizard, in the left part of the window, select "Installation Type", in the right – "Install Roles or Components" and click on the "Next" button.
In the updated window, at the server selection stage, select the current one from the pool. Click "Next".
In the updated wizard window, in its left part, click on "Components". In the central part of the window, in the main part of the window, select "Windows Server Data Archiving System". Click on the button "Next".
At the confirmation stage, click on the "Install" button.
Waiting for the installation process to finish.
In the end, click the “Close” button.
The Server Manager window remains open. In the upper-right part, select “Tools”. In the menu that opens, select "Windows Server Data Backup System".
In the “wbadmin” window that opens, on the left side, select “Local backup”, on the right side actions with the local backup will be available. Set up a backup according to the schedule – select "Archiving schedule ".
In the window that opens, the activation schedule wizard, at the initial stage, click on the "Next" button.
The next step is to choose the type of configuration – the entire server or something specific. Create a copy of the entire server. Click “Next”.
Now you need to decide how many times a day to back up and at what time. Too often, this is not recommended. It’s also better to set up backups at the end of the working day or longer before it starts. In our case, let it be 09:00 pm. Click "Next".
Now choose "where" the backup copy will be saved. It makes sense to leave the parameter recommended by the system. If desired, you can select and save to a network folder, but it is important to remember that the process will greatly depend on the speed of the local network. Click "Next".
In the updated wizard window, select the destination disk. Click on the button "Show all available disks ". First, you need to create an additional disk for backups in the “Settings” section of your server, the “Disks” tab.
In the child window that opens, other (non-system) disks will be shown. Check the box next to the required media.
Important! We recommend that you make backups to physical disks, not logical disks.
Click on the "OK" button.
The selected disk is added to the General list of available disks. Mark it with a tick and click “Next”.
The system will notify you that you want to format previously selected disks. We respond by clicking on the "Yes" button.
At the stage of confirming operations, if all actions are correct, click the "Finish" button.
After short formatting of the disk, the program will notify you of the successful creation of the event in the scheduler, and also indicate the date of the first backup. Click on the "Close" button.
The result of the backup can be viewed in the central part of the wbadmin window.
## Consider restoring from a backup
All in the same wbadmin window, in its right part, click on "Restore ".
In the recovery wizard window, select the location where the archive with the backup copy is stored. Select "This server" and click on the "Next" button.
The next step is to select the backup date and click "Next".
In the updated window, you have to select "What needs to be restored", for example, "Files and folders". Click "Next ".
Select all files and directories located on the "C: “disk. Press the button "Next".
At the next stage, you need to decide what to do with the files, if any already exist. The choice of this action is up to the system administrator. We will overwrite these files. Click “Next”.
In the next step, we check the directories that will be restored. In case everything is indicated correctly, click "Restore".
We are waiting for the recovery process to complete. In the end, click the “Close” button.
Important! The process may take some time.
https://serverspace.us/support/help/dd-utility-for-windows-backup.mdWe will show you how to use the special DD utility to create backup copies of data on a virtual server under Windows. Downloading and using the utility.
We will describe how to create data backups on a virtual server under the Windows Server OS using the special DD utility.
## A few words about backing up files
Backups is a method of creating a backup copy of important information on a computer or server. It can be carried out manually or automatically under a regular schedule.
The DD utility can be used for operating systems of the Linux family; its commands help with copying files through certain operands. This is one of the oldest utilities, its backups can be opened with a variety of software. The version for the Windows operating system is less functional than the version for Linux. For example, it lacks support for converting files and using block devices.
## How to download the utility
Download the utility DD ([download](http://www.chrysocome.net/downloads/dd-0.5.zip)), because this is third-party software that is widely available to users.
There will be several files in the downloaded archive; the dd.exe application will let you run the utility.
## How to use
Using DD on Windows systems is very similar to using it on a Linux command line.
To open the page with the help you should go to the directory with the desired object, and after opening the PowerShell console enter:
```
./dd.exe –list
```
If you need a backup copy of the HDD, along with all the information stored on it, this line is useful:
```
./dd.exe if= of= bs=1440k
```
Demonstration of how to create an image of disk F and transfer it to disk E:
```
./dd.exe if=.f: of=e:tempdisk1.img bs=8M
```
The result is:
```
rawwrite dd for windows version 0.5.
```
```
Written by John Newbigin
```
```
This program is covered by the GPL. See copying.txt for details
```
```
7279+1 records in
```
```
7279+1 records out
```
Decrypt the record:
- The if =/dev/sda line is responsible for copying the entire sda hard drive.
- The expression bs=8M will help you set a specific amount of cache on your hard disk that will speed up the data copying process. Otherwise, the information will begin to be transferred in small sizes, approximately 512 b each.
- The place where the file will be copied is indicated by the command of =/mnt/backup/sda.img. The first two expressions indicate the mount point of the HDD for storing the image, that is, the mnt folder with the backup subfolder.
Please note: before creating backups, you need to make sure that there is enough unallocated space on the desired disk.
The command will help restore the HDD from backup:
```
./dd.exe if= of= bs=8M
```
For example:
```
./dd.exe if=e:tempdisk1.img of=.f: bs=8M
```
That will be:
```
rawwrite dd for windows version 0.5.
```
```
Written by John Newbigin
```
```
This program is covered by the GPL. See copying.txt for details
```
```
1279+1 records in
```
```
1279+1 records out
```
It is best to make backup copies of data according to the established schedule, then you do not have to worry about the fact that the administrator forgot or did not have time to copy the files. The work is fully automated.
Please note: here, backups are created once in 24 hours, all data is transferred to a disk that is territorially remote from the server itself. The user does not need to configure the backup himself, and backups are stored even in case of server failures.
https://serverspace.us/support/help/how-to-add-a-server-to-an-existing-windows-domain.mdLearn how to add a server to an existing Windows domain quickly and securely. Step-by-step guidance on configuring network settings, joining the domain, and ensuring proper Active Directory integration for efficient network management.
Adding a new server to an existing Windows domain is an important step in expanding and managing your local network effectively. This process allows the server to become part of a centralized system for authentication, authorization, and resource management. Microsoft's Active Directory Domain Services (AD DS) plays a key role here — it is a robust directory service built into Windows Server that enables centralized management of users, computers, and security policies across the network. By integrating a new server into the domain, you ensure secure and streamlined access to shared resources, making network administration easier and more efficient.
## Preparing Your Network and Servers
Before integrating a new server, it's important to ensure that your network infrastructure and domain controllers are properly prepared. When setting up virtual dedicated servers (VDS), enabling the Windows system preparation option helps streamline the process by configuring servers and domain controllers correctly from the start. After servers are provisioned, consolidating them into a private network allows them to communicate securely using local IP addresses and additional network adapters assigned during this phase.
## Configuring the Domain Controller and User Accounts
The domain controller itself must be fully configured and an appropriate user account created to manage domain access. Network configuration is a key part of the process. Connecting to the server remotely via Remote Desktop Protocol (RDP) allows administrators to configure network settings conveniently. Within the network adapter properties, specifying the server with the domain controller as the primary DNS server is essential — this ensures proper name resolution and domain connectivity.
## Joining the Server to the Domain
To add the server to the domain, access the system properties via the Control Panel or by right-clicking on "This Computer" and selecting "Properties." Within the system settings, changing the computer's membership from a workgroup to the domain involves specifying the domain name and assigning a friendly computer name for easier identification. The process requires domain administrator credentials to authenticate the server's addition to the domain.
## Restarting and Verifying Domain Integration
Once the credentials are validated, the server will be successfully joined to the domain, and a system prompt will request a restart to apply the changes. Restarting the server is critical as it finalizes the integration and ensures the system operates under domain policies. After reboot, you can verify the connection by logging in via RDP using the domain user credentials, specifying the domain in the login interface.
## Security Recommendations Post-Integration
Security considerations remain important after joining the domain. Although Windows recommends keeping the Firewall enabled for all network profiles, it's common practice in managed domain environments to disable the Firewall for domain and private networks to avoid unexpected connectivity issues, while keeping it active for public networks to maintain security against external threats.
## Benefits of Domain Integration for Network Management
Joining a server to a Windows domain not only streamlines user and resource management but also leverages the full capabilities of Active Directory for centralized security and policy enforcement. Properly integrating servers into the domain infrastructure supports scalable, secure, and efficient network management tailored to enterprise environments.
## FAQ: Adding a Server to a Windows Domain
- **Q: Do I need administrative privileges to add a server to the domain?**
Yes, domain administrator credentials are required to join a server to the Windows domain.
- **Q: Can I add any Windows Server version to an existing domain?**
Most modern Windows Server versions (2012, 2016, 2019, 2022) support domain joining, but it's best to check compatibility with your domain's Active Directory functional level.
- **Q: What should I do if the server cannot contact the domain controller?**
Ensure the server's DNS settings point to the domain controller's IP address, and verify network connectivity between the server and domain controller.
- **Q: Is a server restart mandatory after joining the domain?**
Yes, restarting the server applies the domain membership changes and initializes domain policies.
- **Q: Should I modify firewall settings after joining the domain?**
Typically, it's recommended to allow domain and private network profiles through the firewall, but you may need to adjust settings based on your organization's security policies.
https://serverspace.us/support/help/how-to-change-hostname-on-ubuntu-18-04.mdThe first thing we need to do is - to get the current hostname.To display the current hostname - simply enter the following command...
The first thing we need to do is – to get the current hostname.
To display the current hostname – simply enter the following command:
```
hostnamectl
```
As you can see in the image above, the current hostname of this server is – wyldebuntu.
The following steps, described below, show how to change the hostname in Ubuntu 18.04.
- Change the hostname using command hostnamectl.
For example, to change the system static hostname to serverspace, you would use the following command:
```
sudo hostnamectl set-hostname serverspace
```
The hostnamectl command does not produce output. On success, 0 is returned, otherwise – a non-zero failure code .
- Edit the /etc/hosts file.
Open the /etc/hosts file with preferred text editor and change the old hostname to the new one.
```
sudo nano /etc/hosts
```
127.0.0.1 serverspace
Press ctrl+O and then Enter to save modified file and next press ctrl+X to exit from nano.
- Edit the cloud.cfg file.
If the cloud-init package is installed you also need to edit the cloud.cfg file. This package is usually installed by default in the images provided by the cloud providers such as AWS and it is used to handle the initialization of the cloud instances.
To check if the package is installed simply run the following command:
```
ls -l /etc/cloud/cloud.cfg
```
If you see the following output it means that the package is not installed and no further action is required.
ls: cannot access ‘/etc/cloud/cloud.cfg’: No such file or directory
If the package is installed the output will look like the following:
-rw-r–r– 1 root root 3169 May 21 17:35 /etc/cloud/cloud.cfg
In this case you'll need to open the /etc/cloud/cloud.cfg file:
```
sudo nano /etc/cloud/cloud.cfg
```
Search for **preserve_hostname** and change the value from false to **true**.
Press ctrl+O and then Enter to save modified file and next press ctrl+X to exit from nano.
## Verify the change
To verify that the hostname was successfully changed, once again use the hostnamectl command:
```
hostnamectl
```
You should see your new server name printed in the output.
https://serverspace.us/support/help/how-to-install-docker-on-ubuntu-18-04-lts.mdLaunched in 2013 , Docker has risen to become one of the most quintessential tools among developers and DevOps engineers. Docker is an open source containerization technology.
Launched in 2013 , Docker has risen to become one of the most quintessential tools among developers and DevOps engineers. Docker is an open source containerization technology that simplifies building and deploying applications. It enables the packaging of applications in isolated environments called containers. Inside these containers, applications are shipped alongside their requisite libraries, dependencies, and configuration files.
** In the Serverspace you can [create a server](https://serverspace.us/services/cloud-servers.md) with already installed app “Docker”.**
Deploying applications in containers ensures that they can be deployed across different computing environments with utmost consistency. Consistency in the application deployment eliminates worry over which platforms the application will be run in and gives developers more time to focus on writing code.
In this guide, we dive deep and take you through a step-by-step procedure of how to install Docker on Ubuntu 18.04 LTS.
## Prerequisites
Before we get started, ensure that you have the following in check:
- An instance of Ubuntu 18.04 LTS.
- A regular user with sudo or administrative privileges.
- A stable internet connection.
Without much further ado, let's begin
## Installing Docker on Ubuntu 18.04
Docker can be installed on Ubuntu using two ways. You can either install Docker from Ubuntu repositories or install it from Docker's official repository. The latter, – installing from the official Docker repository – is the more preferred option because it guarantees that you get the latest version of docker.
To get started with installing Docker from Docker repository, first update the Ubuntu package list as shown:
```
$ sudo apt update
```
Screenshot №1. Updating Ubuntu packages list
Once you have updated your list of installed packages install the prerequisites required for the installation of Docker:
```
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common
```
In the example below, these prerequisites have already been installed, so the system will skip the installation. If a newer version is available, the existing packages will be upgraded.
Screenshot №2. If a newer version is available, the existing packages will be upgraded
Next, proceed and import Docker's GPG key as shown using the curl command-line tool:
```
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
```
You will get an 'OK' reply on the terminal as shown:
Screenshot №3. You will get an 'OK' reply on the terminal as shown
With the GPG key in place, append Docker's repository to the **sources.list** file as shown:
```
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
```
Screenshot №4. With the GPG key in place, append Docker's repository to the sources.list file
For Ubuntu to synchronize with the newly added repository, update the package list:
```
$ sudo apt update
```
Screenshot №5. Update the package list
At this point, you are now ready to install Docker using the APT package manager. However, before you do so, you might want to have a peek at the various versions of docker packages available for download. To print a list of docker packages execute the command:
```
$ apt list -a docker-ce
```
The list of Docker packages is ordered from the latest to the earliest as displayed in the output below.
Screenshot №6. The list of Docker packages is ordered from the latest to the earliest
To install a specific version of Docker , for example version **19.03.7 **run the command:
```
$ sudo apt install docker-ce=5.19.03.7~3-0~ubuntu-bionic
```
However, If you want to install the latest version , simply run the command:
```
$ sudo apt install docker-ce
```
Screenshot №7. Install the latest versio
When prompted to continue, simply press '**Y**' and hit **ENTER. **Once installed, check the status of Docker by executing:
```
$ sudo systemctl status docker
```
Screenshot №8. Check the status of Docker
The output confirms that Docker is up and running. To check the version of Docker installed, run the command:
```
$ docker –version
```
Screenshot №9. To check the version of Docker installed, run the command
As expected, the latest version – at the time of writing this guide – has been installed. To confirm that docker was installed correctly run the hello-world container:
```
$ sudo docker container run hello-world
```
The command initializes a few processes. First, it pulls a test image from Docker hub which is a repository for Docker images. (We shall discuss images in the next section ). Once the image is successfully downloaded, a container is spawned from the image that runs the application which displays the message '**Hello from Docker !**'.
Screenshot №10. The command initializes a few processes
## Docker Images
A docker image is a read-only binary file that ships with an application alongside its binaries, libraries, dependencies, and the requisite instructions needed for successfully running the application.
Docker images are hosted on [Docker hub](https://hub.docker.com/) which is a cloud-based library or repository. Docker hub gives you access to thousands of images from open source projects and other software vendors.
## Searching a Docker image
To search an image from Docker use the syntax:
```
$ sudo docker search image
```
For example to search for Nginx image run the command:
```
$ sudo docker search nginx
```
As shown in the table below, the output includes information about the image such as image name, a brief description of the image, and its popularity indicated as 'Stars' in the third column.
Screenshot №11. Searching a Docker image
## Downloading a Docker image
To download a docker image from Docker hub to your local system, use the command shown:
```
$ sudo docker pull image
```
For example, to download the Nginx image, execute:
```
$ sudo docker pull nginx
```
Screenshot №12. Downloading a Docker image
Usually, docker images are tagged and bear version numbers. To be more specific when downloading an image, you can specify the tag as follows:
```
$ sudo docker pull image:tag
```
Let's assume you want to download an Ubuntu 20.04 image. The command for downloading the image will be:
```
$ sudo docker pull ubuntu:20.04
```
Screenshot №13. Download an Ubuntu 20.04 image
To list images downloaded on your system, execute the command:
```
$ sudo docker images
```
The output is arranged in a tabular format with 5 columns displaying information such as the images' repository, image tag, image ID, how long ago the image was created, and the size of the image.
Screenshot №14. The output is arranged in a tabular format with 5 columns
To remove a Docker image run the command:
```
$ sudo docker image rm ubuntu:20.04
```
Screenshot №15. To remove a Docker image run the command
## Docker containers
A docker container is a runtime instance of a docker image. It's in a Docker container that an application is packaged alongside its libraries and dependencies.
To launch a docker container based on the Ubuntu image we downloaded earlier, execute the command:
```
$ sudo docker container run ubuntu:20.04
```
Screenshot №16. Launch a docker container based on the Ubuntu image
At first glance, it may appear as if nothing really happened, but that is far from the truth. The Ubuntu container started and stopped immediately since we issued no commands to it.
To run an OS container more effectively, use the -it arguments to access the bash shell and interact with it:
```
$ sudo docker container run -it ubuntu:20.04
```
Once you run the command, you should get a bash shell prompt that allows you to run commands as though you were executing them on an actual Ubuntu 20.04 instance.
Screenshot №17. Docker containers
## Listing Docker containers
To display a list of running Docker containers, use the command:
```
$ sudo docker container ls
```
```
$ sudo docker ps
```
Screenshot №18. Listing Docker containers
The output gives you statistics such as the container ID, image name, when the container was last created, and status to mention a few. From the output, we can see that we only have Nginx container running.
To view all containers, both active and dormant, execute:
```
$ sudo docker container ls -a
```
or
```
$ sudo docker ps -a
```
The output prints out 4 more containers which are inactive.
Screenshot №19. The output prints out 4 more containers
## Starting and stopping docker containers
To start a Docker container, use the **docker start **command using either the container name or container ID.
For example, to start the Ubuntu container, run:
```
$ sudo docker start c28e836e7fbf
```
Screenshot №20. Starting and stopping docker containers
To stop a Docker container, again feel free to use either the container name or container ID using the **docker stop **command:
```
$ sudo docker stop c28e836e7fbf
```
Screenshot №21. Stop a Docker container
## Removing a Docker container
To remove a docker container, use the **docker rm** command. Once again feel free to use either the container name or container ID:
```
$ sudo docker rm c28e836e7fbf
```
Screenshot №22. Removing a Docker container
## Conclusion
In this guide, you learned how to install Docker on Ubuntu 18.04. Additionally, we gave you handy tips on how you can manage Docker images and containers on your system. It's our hope that this tutorial was informative.
https://serverspace.us/support/help/installing-and-configuring-a-vnc-server-on-centos-7.mdLearn how to install and configure a VNC server on CentOS 7 to enable remote desktop access. Works with popular VNC clients like TightVNC and RealVNC.
A VNC (Virtual Network Computing) server allows you to access a graphical desktop environment on a CentOS 7 system remotely. This is especially useful for server administration, troubleshooting, or managing applications that require a GUI. In this guide, we'll walk through how to install and configure a VNC server on CentOS 7 to enable secure remote desktop access.
## Introduction
VNC (Virtual Network Computing) is a client-server protocol that allows a client computer (running a VNC client) to connect and control a remote computer (running on a VNC server). The software was developed by the Olivetti & Oracle research lab in Cambridge, UK, and its source code is still up to date and available under the General Public License (GNU).
Depending on the server software, the VNC client will connect to the active desktop (for example, as TeamViewer or AnyDesk programs) or a standalone virtual desktop (like the Windows RDP remote desktop protocol). The latter, perhaps more powerful and secure, especially if you need to manage the server computer because each session will be a unique environment, configured with the permissions and rights of the connected user. That’s why we choose TigerVNC, which runs parallel sessions of the desktop environment of the computer (GNOME, KDE, or another GUI): this means that a virtual desktop will be created for each connection – this is exactly what we want.
## Installing TigerVNC
Now let’s see how we can install and configure TigerVNC on CentOS. The first thing to do is to install the TigerVNC Server program by opening a terminal session and entering the following command with root privileges:
```
$ sudo yum install tigervnc-server
```
Immediately after that, you need to create a separate VNC user from which the connection will be made (with a dedicated password). To do this, enter the following:
```
$ sudo adduser vncuser
$ sudo passwd vncuser
```
After you create vncuser and set a password for logging in, you also need to set a unique VNC password for this user. The command to do this is:
```
$ su – vncuser
$ vncpasswd
```
(the first line may be omitted if we are already logged in as vncuser in advance).
The next thing to do is create a VNC configuration file for vncuser. The quickest way to do this is to copy the shared VNC template file located in the **/lib/systemd/system/ **folder, and then change it:
```
$ cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
```
The number 1 that we added to the new file name is the display number that will be used for this particular instance of the service. This is important to know because it will also determine the TCP port that will be used by our VNC server, equal to 5900 + display number. The first will be 5901, then 5902 and so on.
Immediately after copying you need to edit the new file using Vi, Nano or another text editor, and replace [USER] with the name of the user created recently (in our case, vncuser). This is how the file should look after the update (except for the long commented part at the beginning):
```
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l vncuser -c "/usr/bin/vncserver %i -geometry 1280×720"
PIDFile=/home/vncuser/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
WantedBy=multi-user.target
```
Once you do this, you can reload the VNC daemon and run vncserver @ 1 with the following commands:
```
$ systemctl daemon-reload
$ systemctl start vncserver@:1
```
Before proceeding, verify that the service is running by entering the **systemctl status **command:
```
$ systemctl status vncserver@:1
```
and create a symbolic link so that it always runs at system startup using the following command:
```
$ systemctl enable vncserver@:1
```
Another test that you can perform before trying to connect to the server is to look at the active network sockets using the**ss**command: if everything works correctly, you should see that the VNC server is working and uses TCP port 5901. Execute the command:
```
$ ss -tulpn| grep vnc
```
The result should be as follows:
```
tcp LISTEN 0 5 *:5901 *:* users:(("Xvnc",pid=38344,fd=9))
tcp LISTEN 0 128 *:6001 *:* users:(("Xvnc",pid=38344,fd=6))
tcp LISTEN 0 5 :::5901 :::* users:(("Xvnc",pid=38344,fd=10))
tcp LISTEN 0 128 :::6001 :::* users:(("Xvnc",pid=38344,fd=5))
```
If you see this, then everything is set up correctly.
## Firewall setup
Since our VNC service is listening on TCP port 5901, you must be sure that such a port is open and accessible to external clients. Therefore, if you have a firewall installed, you must create an appropriate rule that allows VNC clients to connect.
How many ports to open will depend on how many VNC server instances you need. In our scenario, we did only 1, so you only need to open the first dedicated VNC port: TCP 5901, as we already said. The command to open this port on Firewalld:
```
# firewall-cmd –add-port = 5901 / tcp
# firewall-cmd –add-port = 5901 / tcp –permanent
```
It will not be superfluous to mention that you can also restrict this port to certain groups, IP addresses, network cards, or other simple or complex firewall rules.
## **Installing the graphical user interface (GUI)**
If you already have GNOME, KDE, or other installed desktop environments, you can skip this step. Otherwise, you need to install one of them: the TigerVNC server will start a parallel instance of this desktop environment for each login session, which means that we must have at least one GUI.
VNC is commonly used on CentOS-based VPS and cloud servers where direct physical access is unavailable.
### GNOME
If you want a great, but heavyweight GNOME interface, enter the following:
```
$ sudo yum groupinstall "GNOME Desktop"
```
### Xfce
If you need a lightweight alternative, we can offer Xfce, a free, open-source environment for Unix-like platforms that works great with TigerVNC. GNOME also works great, but it quite resources intensive: if you want to save resources on your server machine, Xfce might be the best choice. To install it, enter the following:
```
$ yum install epel-release
$ yum groupinstall xfce
```
### Additional settings for Xfce
If you decide to use **Xfce**, you will also need to modify the file that was executed when the VNC session started. To do this, edit the file **/home//.vnc/xstartup **and change the exec entry (usually line 4) from **etc/X11/xinit/xinitrc **to **startxfce4**, as shown below:
```bash
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4
vncserver -kill $DISPLAY
```
## **VNC client connection**
Now that the VNC server is fully configured and running, it’s time to test the connection using a VNC client such as TightVNC, UltraVNC, or RealVNC. Open your preferred client and connect to the server’s IP address followed by the display port. If you’ve followed this guide exactly, your VNC session should be available on TCP port 5901, which corresponds to display **:1.**
Be sure to enter the correct password you set during configuration. If the connection is successful, you'll be presented with a graphical desktop environment of your CentOS 7 server, ready for remote administration or software management. If not, double-check your firewall, SELinux settings, and service status to troubleshoot connectivity issues.
## **Possible problems**
If your client cannot establish a working VNC connection, you need to check the following:
**1. Connection problems – Firewall configuration**: if you see pop-up errors that the client cannot connect to the remote host, you need to check your network and firewall configuration to make sure there are no blocking problems that could prevent the client from connecting to TCP server port 5901.
**2. Black screen with the mouse – updating YUM or reinstalling the GUI**: if you see a black screen with a working mouse cursor, it probably means that your VNC connection is working fine, but there is something that prevents the GUI from starting correctly desktop. For correction:
- Run yum update to install the latest versions of TigerVNC and the GUI itself. Be sure to keep track of any problems that occur during the installation phase.
- Uninstall and reinstall the GUI using the command **yum remove / yum group remove **and **yum groupinstall **again. If still nothing works, you can try installing a different GUI.
https://serverspace.us/support/help/firewall-configuring-the-server-firewall.mdDetailed instructions for configuring and creating Firewall rules in the control panel for virtual servers. Configuring the firewall configuration.
Instructions for configuring Firewall rules for virtual servers in the Serverspace control panel.
## What is it?
Using a firewall directly from the control panel, you can control access to the server, network data packets. This option is not separately charged and is included in the server price.
There is currently a limit of 50 rules, if this limit is not enough for you, then you can increase it by request for technical support.
## The network architecture
To avoid a conflict of firewall rules and their proper configuration, you need to understand the operating procedures of existing firewalls. First, you can set up a firewall for a private network. Secondly, for the server through the control panel. Thirdly, you can configure the internal firewall, for example, for Linux via iptables, for Windows – built-in.
For incoming packets, the network-level firewall (if any) will be the first to apply. If the packet has passed, then a firewall at the server level will be applied, and the internal software mechanism will be used last. For outgoing packets, the reverse sequence will be applied.
_We do not recommend the simultaneous use of a server-level firewall and an internal software:_
## Creating a rule
The firewall configuration is available for all VPS and is located in the server settings in the Firewall section.
_Important:
– the order of the rules matters, the lower the order number of the rule (the higher it is on the list), the higher its priority. You can change the sequence of rules using Drag and Drop by dragging the rule with the left mouse button to the desired position;
– by default – all data packets, both incoming and outgoing, are allowed._
To create a rule, click the button** Add**:
A window for adding a rule will open before you. These fields must be filled in:
- **Name **– a user-friendly name (no more than 50 characters), as a rule briefly describes the purpose of the rule;
- **Direction** – The direction of packets for which you want to apply the rule takes one of two values: Incoming or Outgoing. Incoming – the rule applies to incoming data packets, Outgoing – to outgoing ones;
- **Source/Destination **– depending on the direction, it contains the IP address of the server or one of the values: IP address, CIDR, range of IP addresses and any;
- **SourcePort/DestinationPort **– when choosing the TCP, UDP or TCP and UDP protocol, it is possible to specify the port, port range, or any;
- **Action **– the action to be applied takes one of two values: Allow or Deny. Allow – permission to forwarding data packets; Deny – prohibition of forwarding;
- **Protocol **– protocol type, ANY, TCP, UDP, TCP and UDP and ICMP are available.
To create a rule, click **Add**.
For the created rule to take effect, you need to save the changes using the button** Save**. You can create several rules and then save everything at once.
### The priority of rules
The lower the sequence number of the rule (the higher it is on the list), the higher its priority. For example, after a prohibition rule has been created for all incoming traffic, create a rule that allows you to receive incoming packets on port 80 of the Tcp protocol. After saving changes with this configuration, this port will also be unavailable, because the prohibition rule has a higher priority.
To change the priority of rules, use the left mouse button to drag the allowing rule to the first place and save the changes
After saving, the sequence numbers of the rules will change, and their priority will also change.
https://serverspace.us/support/help/how-to-configure-a-dhcp-server-in-windows-server-2016.mdLearn how to install and configure a DHCP server on Windows Server 2016 to manage IP address allocation, prevent duplicates, and optimize network efficiency for a single subnet.
**DHCP (Dynamic Host Configuration Protocol)** is a network management protocol that automates the assignment of essential IP configuration parameters to client devices. These parameters include the IP address, subnet mask, default gateway, and DNS server settings, allowing devices to join and communicate on the network seamlessly without manual configuration.
A DHCP server centrally manages this process by dynamically allocating IP addresses from a defined pool, ensuring efficient use of network resources. It prevents IP address conflicts by avoiding duplication and automatically reclaims unused addresses for redistribution, which helps maintain a stable and organized network environment.
In this guide, we will walk you through the steps to install and configure a DHCP server on Windows Server 2016 specifically for managing IP address assignment within a single subnet, providing a practical solution for small to medium-sized networks.
## Installation process
- Launch Server Manager and select "Add roles and features". Choose the first item “Role-based or feature-based installation”:
- Specify the server on which we will install the DHCP role:
- Next, you need to find and select the DHCP role in the list. We agree to add the components required for the DHCP service to work properly. Since the components were added at the "Server Roles" step, we skip the "Features" step:
- The wizard reminds you to plan your subnets, areas, and exceptions:
- We check the installed components and click “Install”:
- After the installation is complete, you can begin the initial configuration of DHCP. We follow the link “Complete DHCP configuration”:
The initial setup process takes place in two stages:
1. Create a "Security Group" to manage this DHCP server. There are two of them:
- DHCP Administrators – group members have full rights to manage the DHCP server;
- DHCP Users – members of the group can view server settings and a list of connected devices.
2. Authorization of a DHCP server in Active Directory (if it is joined to a domain). This setting is necessary to avoid the appearance of extraneous DHCP servers on the network. The server must be authorized for the DHCP service to start:
- Enter the administrator credentials and click on the "Commit" button. If the server is not joined to the domain, then select the last item:
- If everything is done correctly, the wizard notifies that the configuration was successful:
## Setup process
Launch the “Server Manager”. We find the DHCP item in the “Tools” drop-down list:
In our version, we are considering issuing IPv4 addresses, so we need to create a new area (Scope) – a pool of IP addresses issued to clients. Right-click on IPv4 and select "New Scope ":
The Create Area Wizard opens, where we enter the name of the pool. If necessary, you can enter a description:
We determine the boundaries of our pool by setting the start and end IP addresses. Also, enter the subnet mask:
If necessary, you can add one or more IP addresses from the created pool to the exceptions. This range may include network devices that are already assigned a static IP. There is also a parameter for delaying the response of the server before sending data to the request from the host:
Next, you can specify the lease time of the IP address. The default is 8 days:
Now the Wizard will offer to specify the network parameters (Gateway, DNS, WINS) issued to clients on the network:
Specify the address of the network gateway:
Next, enter the domain name and DNS server. DNS can be found either by server name or by specifying an IP address:
The next step allows to add a WINS server:
Select “Activate” the area we specified now:
After setting up the pool, you can check if the server is working. You can see connected clients by going to the Address Leases section. In our case, we see that one device is connected:
If we go to the client machine, we can check the correctness of the received settings:
Although we considered the configuration on Windows Server 2016, this instruction is also suitable for Windows Server 2008-2012, since the process is not much different.
##
Conclusion
Configuring a DHCP server on Windows Server 2016 is a crucial step to automate and simplify network management by efficiently assigning IP addresses and related settings to client devices. By following the installation and setup process outlined in this guide, you can ensure reliable IP address allocation, prevent conflicts, and optimize your network performance within a single subnet. This setup not only saves time but also reduces errors associated with manual IP configuration. Whether you are managing a small office or a growing enterprise network, mastering DHCP configuration on Windows Server 2016 will provide a solid foundation for scalable and efficient network administration.
## FAQ: Frequently Asked Questions About Setting Up a DHCP Server on Windows Server 2016
- **What is DHCP and why is it needed?**
DHCP (Dynamic Host Configuration Protocol) is a protocol that automatically assigns IP addresses and network settings to client devices, simplifying network management and preventing IP conflicts.
- **What are the main functions of a DHCP server?**
A DHCP server manages the allocation of IP addresses, prevents duplication, releases unused addresses, and distributes network parameters such as the gateway, subnet mask, and DNS.
- **How do I install the DHCP role on Windows Server 2016?**
Use Server Manager to select "Add roles and features," choose the DHCP role, confirm the installation, and then complete the initial setup by creating security groups and authorizing the server in Active Directory.
- **What is a DHCP scope?**
A scope is a range (pool) of IP addresses that the DHCP server can assign to clients. During setup, you define the address range, subnet mask, lease time, and other settings.
- **Can I exclude certain IP addresses from being assigned?**
Yes. You can specify exceptions in the scope settings—IP addresses that will not be assigned to DHCP clients (for example, devices with static IPs).
- **How do I verify that the DHCP server is working correctly?**
In Server Manager, go to the DHCP section and check the list of active address leases to ensure clients are receiving correct network settings.
- **Is this guide applicable to other versions of Windows Server?**
Yes. The DHCP setup process is very similar in Windows Server 2008, 2012, and 2016, so this guide applies to those versions as well.
https://serverspace.us/services/vps-server/wordpress-hosting.mdDeploy fully managed Wordpress hosting within one minute: fast SSDs support for Apache, PHP and MySQL 99.9% SLA 24/7 human support
Deploy WordPress on your virtual server. Customize its settings and install any software.
https://serverspace.us/about/blog.mdUseful articles about virtual servers, IaaS, cloud storage, data centers and much more.
Explore Serverspace blog.
https://serverspace.us/about/news/additional-drives-on-cloud-servers.mdServerspace added the ability to connect additional SSDs to Cloud servers.
Serverspace added the ability to connect additional SSDs to Cloud servers. The connection is automatic and is available for servers with any operating system.
- Up to 4 additional disks can be connected to one server.
- The minimum size of one additional drive is 10 GB, the maximum is 500 GB. The step when choosing a volume is 10 GB.
- The cost of an additional disk is 0.9 euro per month for every 10 GB of its volume.
To connect an additional disk, click on the server name in the “Servers” section, go to the “Settings” – “Disks” tab and click on the “Add Disk” button. Next, specify the name of the disk to add, select the desired volume, and click “Create”:
Creation time depends on the operating system installed on the server and averages from 10 seconds to 1 minute.
The created additional disk can be expanded. To do this, go to the “Settings” – “Disks”, click on the icon with three dots located in the line with the desired disk and click on the “Change size” button:
Next select the volume that you want to add to the disk, and click on the “Save” button. After that, an unmarked area will be added to the selected disc, which the user needs to partition independently at the operating system level.
https://serverspace.us/about/blog/how-to-choose-an-os-for-a-virtual-server-and-what-does-it-affect.mdWe find out which operating system is more stable, safer and more convenient when working with a virtual server.
Server operating systems, compared to desktop ones, are a heavier weight category in which Windows and Linux have been fighting for many years.
It is not easy for a beginner to choose between two OSs: Linux is free, with various distributions, and Windows supports several specific technologies and DBMS.
The simplest formula for choosing an OS looks like this: for a regular web resource on a popular CMS we install a Linux system, for the rest – Windows Server. But we will go further and sort through the points on what you should pay attention to when choosing a server operating system.
## Programming languages
Their support will be needed when developing the site. Popular programming languages like JavaScript or HTML support both systems, but there are exceptions. For projects developed using ASP.NET or VBScrpt technology, only Windows is suitable. This operating system is needed for hosting projects that use OS-specific file formats (for example, WMA and WMV).
A bundle of PHP + MySQL is supported by both OSs, but it’s better to choose Linux, for which the PHP language is native. Windows, although it allows you to run PHP scripts, under it they will run more slowly.
If you need to work with MP3, Flash, Shockwave and Real files, as well as with sites created using Microsoft FrontPage, then both operating systems will perform equally well.
## Services and Protocols
Many services and protocols, such as FTP and Telnet, work in all server operating systems, but again there are nuances. If on Linux the SSH network protocol is supported by default, then on Windows Server it must be connected separately. Even if as a result you get an OS with the same capabilities, for Windows software components are very likely to have to be bought when they are free for Linux.
## Database management
Popular MySQL runs on both OSs, but on the Linux kernel, the PHP + MySQL bundle works more efficiently. With Access, Microsoft Sharepoint, and Microsoft SQL, the situation is different: it is better to choose Windows Server here. It is good where you need to deploy a corporate portal with high requirements for reliability and stability.
## Server administration
Again we return to the analogy with desktop OS: Windows is closer and more understandable to most system administrators, and to work with Linux-systems, new knowledge and experience are required. But if speed and efficiency are a priority, it is better to spend time and understand Linux functionality.
## Cost
Almost all Linux distributions (such as CentOS, Debian, and Ubuntu) are distributed free of charge. Choose any of them and pay only for renting a virtual server. You will have to pay extra for using the licensed Windows Server, as well as for installing additional components for it.
## What is not affected by the choice of server OS
The services launched on the virtual server will be equally available to your clients regardless of the selected operating system. Clients will never know which OS you are using for your project, as they will be dealing with the same data. The only difference is in the environment in which this data is processed, and only the IT specialists serving the virtual server will see these differences.
## What to choose?
The main differences between Linux and Windows are called stability and speed, which are characteristics of operating systems on the Linux kernel. They do not require regular maintenance and frequent reboots for configuration changes to take effect. If you deploy several large databases under Windows, the Linux server is likely to get ahead of it in uptime. But in fact, OS stability will also depend on administration methods, that is, on the human factor.
On average, virtual hosting on Linux systems costs 20% less than hosting on Windows, so if you are not connected to certain technologies and technical tasks, it is more profitable to choose Linux. Hosting on any Linux-system is optimal for sites on Joomla, WordPress, Drupal. But where the task is to deploy the project to ASP or ASP.NET, only Windows Server will do. The same operating system is needed to host Windows applications for stock trading and any continuously running service, such a game server.
## Putting it all together
Advantages of Linux systems:
- stable and fast work;
- safe environment (attacks are mainly aimed at Windows-systems);
- free distribution (with rare exceptions);
- universality – suitable for most web projects.
Why choose Windows Server OS:
- support for ASP.NET and other technologies developed for Windows;
- simple management and updates;
- host specific projects that require Windows.
https://serverspace.us/about/news/new-centos-8-1-and-ubuntu-20-04-lts-templates.mdServerspace has added a feature to automatically deploy CentOS 8.1 and Ubuntu 20.04 operating systems with the x64 architecture using ready-made templates on Cloud servers.
Serverspace has added a feature to automatically deploy CentOS 8.1 and Ubuntu 20.04 operating systems with the x64 architecture using ready-made templates on Cloud servers. At the same time, you can still install older OS versions on servers, like Ubuntu 18.04 and CentOS 7.7.
## What’s new in CentOS 8.1
- Modified packages, including yum, anaconda, httpd, dhcp, grub2, and kernel;
- New FRRouting Protocol stack with support of BGP, IS-IS, OSPF, PIM, and RIP;
- Support for block device re-encryption using the LUKS2 specification;
- New udica tool which generates SELinux security policies for containers, etc.
Detailed documentation concerning this release can be found on the [RedHat website](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/8.1_release_notes/rhel-8_1_0_release#New-features) as well as in the [CentOS reference section](https://wiki.centos.org/Manuals/ReleaseNotes/CentOS8.1911).
## Ubuntu 20.04 innovations
- Hardware support for two-factor authentication when connecting via SSH;
- Latest updates for PHP 7.4, MySQL 8.0, NGINX 1.17, Python 3.8, etc.;
- WireGuard VPN support;
- Release of updates and security support of the current version for 5 year period and more.
For a full list of changes, see the official [Ubuntu blog](https://ubuntu.com/blog/ubuntu-server-20-04).
https://serverspace.us/about/news/instant-payments-with-paypal.mdServerspace has got a new method of payment. Now you can use a PayPal international payment system to pay for services with no commission.
Serverspace has got a new method of payment. Now you can use a PayPal international payment system to pay for services with no commission.
To pay for the service, you need to enter the desired payment amount and log in to your PayPal account using an email address and password you are registered with. Your payment takes just a few seconds.
When logging in to your PayPal, a user can also activate the PayPal One Touch feature. It lets you make secure payments in 1 click without entering an email or password.
PayPal advantages:
- all payment transactions are encoded with advanced data encryption technology and 24/7 fraud protection;
- PayPal allows users to pay for services without disclosing their bank card details;
- the payment system is multilingual and is available in most countries of the world and on any device, including the mobile app.
https://serverspace.us/support/help/pfsense-2-3-configuring-site-to-site-vpn.mdThe setup process is conditionally divided into two stages: 1. Configuring pfSense and configuring private networks; 2. Site-to-Site implementation. Let's start.
Consider setting up pfSense. First, I think it’s worth explaining what pfSense and Site-to-Site VPN are and what the advantages are. Then move on to implementation.
PfSense is a firewall distribution based on the FreeBSD operating system. The distribution allows implementing mechanisms such as NAT, CARP, and VPN (including PPTP, IPsec, OpenVPN), Captive portal. In addition, it performs the functionality of a classic firewall, dynamic DNS, DHCP and proxy server. Easy to deploy.
**Why Site-to-Site?**
Site-to-Site allows you to configure only gateways in remote subnets, and you do not need to configure the network nodes themselves. In simple terms, the Site-to-Site method connects two offices to a single network, and the Point-to-Site method connects remote employees to the office. In this article, we will consider an example of connecting two existing networks — physical and virtual.
The setup process is conditionally divided into two stages:
- Configuring pfSense and configuring private networks; 2.
- Site-to-Site implementation.
Let’s start.
First, configure the internal LAN and the gateway interface. To do this, in the browser, go to the server IP address or domain name if any. Enter the username and password and get to the Home screen (Dashboard). In the program menu, go to the interfaces section Interfaces -> Assignments. In our example, only two interfaces are already distributed – we leave it as it is. If you have several interfaces, you should select the necessary interface by mac-address and click the Add button.
Assign an IP address to the interface "looking" to the local network. In the program menu, go to the interfaces section-> LAN. At the end of the setup, click the Save button.
For all servers in the local network, as the default gateway set the IP address specified in the LAN.
Important! If you use cloud services, then you need to unite the network nodes from the administration panel of the cloud service through "Virtual Networks".
## Configuring Firewall for local connections
In the program menu, select Firewall -> Rules -> LAN. Click the Add button.
On the new page we check the parameters:
customizable interface – LAN;
Protocol-TCP, but you can also use Any;
Source – Any;
Destination – Any.
Save the settings by clicking on the Save button.
It should be noted that the same settings must be made on all remote pfSense servers connected to a single network.
## Start configuring the site-to-Site tunnel
In the beginning, we configure OpenVPN. In the main menu, select VPN -> OpenVPN and click on the Add button.
On the new page, select:
Server mode – Peer to Peer (Shared Key);
Protocol – UDP on IPv4 only;
Device mode – tun – Layer 3 Tunnel Mode;
Interface – WAN
Local port – 1194;
Shared key – Set the checkbox opposite Automatically generate a shared key;
Encryption algorithm – leave by default;
Hardware Crypto – No hardware crypto acceleration;
IPv4 Tunnel Network: 10.0.10.0/24 – specify the addresses used in the tunnel;
IPv4 Remote networks: 10.0.1.0/24 – specify the network address located behind the remote pfSense gateway.
We save the settings and do not forget to click on the green button Apply Changes.
## Configure Firewall for the new interface
In the main menu, select Firewall – > Rules. Select the OpenVPN item and click on the Add button.
On the updated page, check the parameters:
Interface – OpenVPN;
The protocol is TCP, but Any is better;
Source and Destination – Any.
When finished, click on the Save button. Do not forget to click on the green button Apply changes.
## Configure Firewall for the WAN interface
In the main menu, select Firewall – > Rules. Select the OpenVPN item and click on the Add button.
Interface – WAN;
Protocol – UDP;
Destination port range in both drop-down lists (From and To), select OpenVPN (1194).
Save the settings. Do not forget to click on the green button Apply changes.
Now copy the generated key to transfer it to the remote router. In the main menu, select VPN -> OpenVPN. Click on the "Pencil" icon (edit). On the updated page, from the Shared Key item, copy the entire contents of the field into a text editor, for example, Notepad.
It remains to configure the remote pfSense gateway as a client.
In the main menu, select VPN – > OpenVPN and click on the Clients item, then on the Add button.
On the page that opens, check the parameters:
Server mode – Peer to Peer (Shared Key);
Protocol – UDP on IPv4 only;
Device mode – tun – Layer 3 Tunnel Mode;
Interface – WAN;
Server host address-specifies the server’s WAN interface that was configured earlier;
Local port – 1194;
Shared key – Take off the tick in front of Automatically generate a shared key;
Encryption algorithm – leave by default;
Hardware Crypto – No hardware crypto acceleration;
IPv4 Tunnel Network: 10.0.10.0/24 – specify the addresses used in the tunnel;
IPv4 Remote networks: specify the network address located behind the remote pfSense gateway server.
Click Save. Then click the green button to Apply changes.
This completes the setup.
https://serverspace.us/support/help/routing-in-pfsense-port-forwarding.mdConsider the routing settings in pfSense - Port forwarding. pfSense is a FreeBSD software distribution designed to provide a router or firewall.
Network experts divide routers into two large classes – software and hardware. Hardware routers represent equipment developed in enterprises as a finished product. Software implementations are a set of programs or ready-made assemblies of operating systems that can be installed on almost any modern computer or server platform. Sometimes it is necessary to provide access from the Internet to machines located on the local network. Consider the configuration of routing – port forwarding using pfSense.
PfSense is a software distribution based on the FreeBSD OS and designed to organize a router or a firewall, or all at once. This OS can be installed on almost any computer or server. A key feature of pfSense is the solution of tasks through a web-based interface.
## Network setting
If the configuration is performed via VPS/VDS, you should create all the required servers, one of which will be managed by pfSense. Add network adapters and merge them into a single virtual network.
## Getting started with the setup
In the main menu of the program (horizontal black), select** interfaces → Assignments**.
The web page refreshes, a list of all network interfaces appears. "**Free**" interfaces are in the Available network ports field. All interfaces are shown with mac addresses on them. From the drop-down list, select the necessary one and click the "**Add**" button.
After completing the action, the system will notify you of the successful addition. The interface will be called "**LAN**". Save the settings by clicking on the "**Save**" button.
Configure the network adapter. To do this, open** interfaces → LAN**in the main menu.
By setting the checkbox in the Enabled field, we activate the interface. Setting IPv4 as static IP (Static IPv4).
In the "**Static IPv4 Configuration**" configuration settings section, specify the IP address for this interface, in our case 10.0.0.254, maybe you will have a different one. At the very bottom of the page, click the "**Save**" button to save the changes.
The system will notify you of the changes. We apply them by clicking on the button "**Apply changes**".
## Configure the network interfaces of the clients
When configuring client network interfaces, it is important to remember that the address of the pfSense server must be specified as the gateway, in our case 10.0.0.254.
### Configuring in Ubuntu
Editing the file /etc/network /interfaces:
```
auto ens31
```
```
iface ens31 inet static
```
```
address 10.0.0.2
```
```
netmask 255.255.255.0
```
```
dns-nameserver 8.8.8.8
```
```
gateway 10.0.0.254
```
Restarting the network service:
```
/etc/init.d/networking restart
```
### Windows
To configure the network adapter in Windows, you must open** start → Control Panel → Network and Internet → Network Connections** or
**Start → Control Panel → Network and Internet → Network and Sharing Center → Change adapter settings**.
In the opened folder, right-click on the network adapter icon, select "**Properties**".
In the window that opens, click on the name (not on the checkbox) and select "**Internet Protocol Version 4 (TCP/IPv4)**". Click the "**Properties**" button.
In a new window, specify:
- IP address – 10.0.0.3;
- Subnet mask: 255.255.255.0;
- Gateway – 10.0.0.254;
- Preferred DNS server: 8.8.8.8.
To save, click the "**OK**" button. In the Properties window of the network adapter, also click the "**OK**" button.
Important! Please note again that the pfSense server IP address must be specified as the default and default gateway.
## Setting up routing
In the main menu of the web application, select** firewall → NAT**. On the "**Port Forward**" tab click the button** Add**.
On the page that opens for editing the traffic redirection rule, we will create a rule for the RDP interface.
In the field **Destination **specify **Any**.
Destination port range (from a port) – select the destination port, in our case, MS RDP. The "to port" field will be filled in automatically.
Redirect target IP – specify the IP address of the server or computer running Windows.
Redirect target port – MS RDP.
If desired, fill out the description field – "**Description**".
Click the button "**Save**". And do not forget to click the "**Apply changes**" button.
**Important! If the RDP port was changed (by default 3389), select the port name "Other", in the Custom field indicate the current value.**
The created rule is displayed as in the example below.
Similarly, rules are created, say, for SSH access.
## Checking the connection
To test the settings, you need to connect an SSH client or application to access the remote desktop to the external IP address of the pfSense server.
You can also perform the check using the network port sniffer —**nmap**.
https://serverspace.us/support/help/installing-and-configuring-an-rdp-server-on-centos-7.mdStep-by-step guide to installing and configuring xRDP on CentOS 7. Learn how to enable remote desktop access and connect to your Linux server via RDP.
In this comprehensive guide, you'll learn how to install and configure xRDP on a remote CentOS 7 server, enabling you to access it through a graphical Remote Desktop Connection (RDP) from a Windows or Linux machine. We'll also walk you through setting up popular desktop environments — such as GNOME or XFCE — to ensure a smooth and user-friendly remote experience on your CentOS 7 system.
xRDP is a free, open-source Remote Desktop Protocol server that allows non-Windows operating systems to provide full-featured remote desktop capabilities.
xRDP is fully compatible with rdesktop, FreeRDP, and even with Microsoft Remote Desktop Client (mstsc.exe).
**Requirements:**
- Although this is not a requirement, we recommend acting as a non-root user when making any major changes to your system.
- A machine running CentOS 7 with at least 2 GB of RAM.
Update the packages installed on the system:
```
$ sudo yum -y update
```
Then install the necessary packages:
```bash
sudo yum install -y epel-release
```
```bash
sudo yum install -y xrdp
```
```bash
sudo systemctl enable xrdp
```
```bash
sudo systemctl start xrdp
```
If you are using FirewallD, open port 3389/TCP for RDP:
```
sudo firewall-cmd –add-port=3389/tcp –permanent
```
```
sudo firewall-cmd –reload
```
## Set your preferred desktop environment
Now we can set the desktop environment that we will use. In this guide, we will try out Xfce, MATE, and GNOME.
**Note:** if you cannot connect via Remote Desktop Connection after installing the desktop environment, open port 3389/TCP using the firewall-cmd command mentioned above.
### Install the XFCE Workspace
Xfce is one of the lightest desktop environments. It is fast, consumes little system resources, but remains visually attractive. Also, she has a very active community, so many customization options are available.
To install Xfce, run the following commands:
```bash
sudo yum install -y epel-release
```
```bash
sudo yum groupinstall -y "Xfce"
```
```
sudo reboot
```
Then create the file.Xclients in the user directory with which the connection will be made:
```
cho "xfce4-session" > ~/.Xclients
```
```bash
chmod a+x ~/.Xclients
```
Now you can connect to the server using Remote Desktop Connection. This is what Xfce looks like:
Screenshot №1. Xfce
Xfce Removal
To remove Xfce from your CentOS 7, run the following commands:
```bash
sudo yum groupremove -y "Xfce"
```
```bash
sudo yum remove -y libxfce4*
```
### Install MATE Desktop Environment
To install MATE, run the following commands:
```bash
sudo yum install -y epel-release
```
```bash
sudo yum groupinstall -y "MATE Desktop"
```
```
sudo reboot
```
Then create the file.Xclients in the directory of the user you are connecting to:
```
echo "mate-session" > ~/.Xclients
```
```bash
chmod a+x ~/.Xclients
```
Now you can connect to the server using Remote Desktop Connection. This is what MATE looks like:
Screenshot №2. MATE
Removing the MATE
To remove MATE from CentOS 7, run the following commands:
```bash
sudo yum groupremove -y "MATE Desktop"
```
```bash
sudo yum autoremove -y
```
### Install GNOME Desktop Environment
Next, let's install the GNOME 3 desktop environment. This requires installing the GNOME Desktop package group, which automatically pulls in all the essential components needed to enable a full graphical user interface on CentOS 7:
```bash
sudo yum groupinstall "GNOME DESKTOP" -y
```
This could take some time. On the minimum configuration of the CentOS 7 distribution, about 1000 packages will be installed.
Launch the graphical interface
Although we installed the GNOME Desktop package group, the GUI will not load by default upon reboot. We can verify this by running:
```bash
systemctl get-default
```
Conclusions:
```
multi-user.target
```
If the default value is multi-user.target, this means that the GUI will not load. Change the default value to graphical.target. To do this, run the following commands:
```
$ sudo systemctl set-default graphical.target
```
Conclusions:
```
Removed symlink /etc/systemd/system/default.target.
```
Created symlink from** /etc/systemd/system/default.target** to **usr / lib / systemd / system / graphical.target.**
After that, run the following command to immediately switch to the graphical interface:
```
$ sudo systemctl isolate graphical.target
```
Now you can connect via xRDP to your CentOS 7 using GNOME.
This is what GNOME 3 looks like when you first connect after installation. Just follow the initial setup steps to complete the setup:
Screenshot №3. GNOME 3
**Note:** If you used Xfce or MATE Desktop to connect to CentOS 7 before installing the GNOME Desktop graphical shell, run the following command:
```
sudo rm -f ~/.Xclients
```
Removing of GNOME
To remove GNOME from your CentOS 7, run the following commands:
```bash
sudo yum groupremove -y "GNOME Desktop"
```
```bash
sudo yum autoremove -y
```
## Connect to a computer using Remote Desktop Connection
After installing xRDP and the desktop environment, you can connect from the local computer to the remote.
Connection from Windows
To connect to the server from Microsoft Windows, simply find and launch the Remote Desktop Connection application (mstsc.exe) and enter your hostname or IP:
Screenshot №4. Remote Desktop Connection
If this is your first time connecting, you will receive several security warnings. Assuming this is your server and it is secure, just accept these warnings:
Screenshot №5. Security warnings
## FAQ: xRDP Installation and Remote Desktop Setup on CentOS 7
- **Q: What is xRDP, and how does it work on CentOS 7?**
xRDP is an open-source implementation of the Microsoft RDP (Remote Desktop Protocol) server that enables you to connect to a Linux system using standard RDP clients like mstsc.exe from Windows. It bridges the Linux graphical interface with the RDP protocol for remote access.
- **Q: Which desktop environment should I choose — Xfce, MATE, or GNOME?**
Xfce is the lightest and fastest, ideal for systems with limited resources. MATE offers a balance between performance and features, while GNOME provides a modern look but consumes more system resources. Choose based on your hardware and preferences.
- **Q: I installed the desktop environment, but RDP still doesn't work. What should I check?**
Make sure port 3389/TCP is open in your firewall and that the .Xclients file in your user’s home directory correctly references the session type (e.g., xfce4-session, mate-session, or gnome-session). Also, restart the xrdp service after making changes.
- **Q: Is it safe to use xRDP over the internet?**
By default, xRDP is not encrypted end-to-end. For secure access over public networks, consider tunneling RDP through SSH or setting up a VPN connection to the server.
- **Q: Can I switch between desktop environments after installation?**
Yes, but you may need to edit or remove the .Xclients file in your home directory to change sessions. Also, removing previous environments helps prevent conflicts and saves system resources.
https://serverspace.us/support/help/install-and-configure-ms-sql-server-express.mdThis manual describes the installation process of MS SQL Server 2017 Express, a free and high-tech database on Windows Server 2012 R2/2016/2019.
This guide describes how to install MS SQL Server 2017 Express on Windows Server 2012 R2 / 2016/2019. Following it, you will get a ready-made tool for exploring the SQL programming language, for checking your developments or launching a small resource that does not require large amounts of database storage.
**SQL Server 2017 Express Edition Limitations**
This release is free and suitable for commercial use, but has several limitations:
- Maximum number of processor cores: 4;
- Maximum database size: 10 GB;
- Maximum buffer pool size per database instance: 1410 MB.
If you need to go beyond these limits, we recommend that you purchase a Microsoft SQL Server Standard license.
**Operating System Requirements**
SQL Server 2017 Express is available for installation on the following operating systems:
- Windows 8/8.1/10 and later;
- Windows Server 2012, 2012 R2, 2016, 2019 and later.
**Installation Procedure**
To install SQL Server 2017 Express, go to the [link](https://www.microsoft.com/en-us/download/details.aspx?id=55994), select the installation language and click **Download:**
After starting the downloaded file, the installer will open a special window in which it will offer several installation options to choose from. To control the installation options, select** Custom**:
Next, select the place where the installation files will be downloaded, if necessary, change it to the desired one and click **Install:**
Wait for the download process to complete installation files:
Next, select the first installation item** New SQL Server stand-alone installation**:
Read the terms of the license agreement and click **Next**:
If you need to receive updates from Windows Update, check the box and click **Next**:
Read the warning about possible problems, and if there are none, click **Next:**
Go to the function selection screen, where you can, if necessary, select or remove additional features for the database server, leave it unchanged and click **Next**:
Select a server name and ID. The server identifier will be included in the installation path. Leave the default and click **Next**:
On the next screen, you can specify service accounts that are different from the standard ones and grant the right to perform volume maintenance tasks to the SQL Server DBMS kernel service, which will increase the speed of file initialization, but the DBMS can access the remote content. On the** Collation** tab, you can change the sorting options for the database engine. In this example, we will grant privileges, leave the default sorting options, and click **Next**:
The next step in the installation is to configure the database core configuration. To do this, the following tabs are provided:
- **Server Configuration**– indicates the method of authorization to the database: using Windows tools or mixed mode, which includes Windows authorization and SQL Server native authorization. When choosing the second option, you must specify the SQL Server administrator password;
- **Data Directories**– indicates the location of SQL Server executable files and data;
- **Temp ****DB**– Parameters of the Temp DB used by internal SQL Server resources, temporary user objects, and version store;
- **User instances**– allows you to give rights to users who do not have administrator rights to run individual database instances;
- **FILESTREAM**– turns on if necessary to use tables optimized for memory (Memory Optimized) tables.
Since Microsoft R (Machine Learning Services) and Python were selected during the installation, you must agree to the terms of use for this and the next step by clicking **Accept **and **Next**:
The installation process starts, and then a window appears confirming the completion of the SQL Server 2017 installer. Click** Close**:
This completes the installation of SQL Server 2017 Express.
https://serverspace.us/support/help/configuring-the-remote-desktop-gateway.mdLearn how to configure a Remote Desktop Gateway for secure RDP access. Step-by-step instructions to set up, connect, and manage remote desktops safely.
To increase the security level of the Windows server, it is not enough to change the TCP port RDP. Consider configuring the remote desktop gateway in the Active Directory domain.
**Remote Desktop Gateway – what is it?**
Remote Desktop Gateway is a Windows server role that provides a secure connection using the SSL protocol to the server via RDP. The main advantage of this solution is that you do not need to deploy a VPN server, and this is what the gateway is for.
It should be noted that starting with Windows Server 2008 R2,[the names](https://docs.microsoft.com/en-us/windows/win32/termserv/terminal-services-is-now-remote-desktop-services) of all Remote Desktop Services were changed. The previously named Terminal Services were renamed Remote Desktop Services.
Advantages of Remote Desktop Gateway
- Using an encrypted connection, the gateway allows to connect to internal network resources without the need for a VPN connection by remote users;
- The gateway provides the ability to control access to certain network resources, thereby realizing comprehensive protection;
- The gateway allows connection to network resources that are located behind firewalls in private networks or NAT;
- You can use the gateway manager console to configure authorization policies for certain conditions that must be met when remote users connect to network resources. As an example, you can specify specific users who can connect to internal network resources, as well as whether the client computer should be a member of the AD security group, whether redirection of the device and disk is permissible;
- The gateway manager console contains tools designed to monitor the status of the gateway. Using them, you can assign monitored events for auditing, such as failed attempts to connect to the terminal services gateway server.
**Important!** The terminal services gateway must be part of an Active Directory domain. Gateway configuration is performed only on behalf of the domain administrator, on any server in the domain.
**Setting the role.**
Open the server manager.
Select "**Add roles and components**".
At the stage "**Installation type**", select "**Installing roles and components**".
The next step is to select the current server.
Server role –**Remote desktop service**.
Go to the role service. Select "**Remote desktop gateway**".
We proceed to the confirmation step, click the "**Install**" button.
**Configuring the connection and resource authorization policy.**
In the window that opens, the remote desktop gateway manager, in the left part of the window, open the branch with the server name → Policies → Connection authorization policies.
In the right part of the same window, select** Create a new policy → Wizard**.
In the window that opens, "**Wizard for creating new authorization policies**", select the recommended option “Create a policy for authorization of remote desktop connections and authorization of remote desktop resources.” Press the button "**Next**".
In the next step, enter a convenient name for the connection authorization policy. We recommend giving names in English.
The next step will be to choose a convenient authentication method – password or[smart card](https://docs.microsoft.com/en-us/windows/win32/secauthn/smart-card-authentication). In our case, we leave only "**Password**" checked. We add groups that can connect to this RD-gateway, for this, click the "**Add Group **" button.
In the group selection window, click on the button "**Additionally**".
The window will resize. Click the "**Search**" button. In the search results, we find “**Administrators of the domain**" and click on the button "**OK**".
In the group selection window, check the selected object names and click "**OK**".
The group is added. To go to the next step, click the "**Next**" button.
In the next step, select "**Enable device redirection for all** client devices” and click “**Next**".
Set timeouts – downtime and session time, values are indicated in hours. Click "**Next**".
Check the settings. Everything is correct – click "**Next**".
In the next step, configure the resource authorization policy. Specify the desired policy name. Click "**Next**".
The next step is to establish group membership. Usually, the group is already installed, but if this is not done, you should follow the steps above. Click "**Next**".
We select available network resources. To do this, select the group that contains the servers on which the required user groups could work with remote desktop. Press the button "**Overview**".
In the group selection window, click the "**Additionally**" button.
In the changed window, click the "**Search**" button. In the result window, we find “**Domain controllers**".
Click "**OK**".
We check the selected objects and click "**OK**".
Once again we check which network group is added and click "**Next**".
If the RDP port number has not changed, set the switch value to "**Allow the connection only to port 3389**". If the port has been changed, specify a new value.
Click "**Done**"
At the stage of confirming the creation of the policy, click the "**Close**" button.
At the end of the setup, the window will look similar.
**Install the SSL certificate.**
In the same window "**Manager of the remote desktop gateway**", in the left window, click on the server icon, in the main part of the window – "**View and change properties of the** certificate”.
In the opened window "Properties ", go to the tab "SSL Certificate". Set the switch "Create a self-signed certificate" and click on the button "Create and import certificate ".
Although 2 more options are possible:
- import of a previously uploaded certificate (self-signed earlier or third-party);
- Download a third-party certificate (for example, Comodo) and import it;
In the window "**Creating a self-signed certificate**" we check the settings and click the button "**OK**".
The system will notify that the certificate was created successfully, there is also information where you can find the certificate file itself. Press the button "**OK**".
In the server properties window, click the "**Apply**" button.
The self-signed certificate is installed on TCP port 443 (SSL port by default).
For security reasons, we recommend that you change the default SSL port. To do this, in the main menu of the window, select "**Actions" → "Properties**".
Go to the tab "**Transport settings**" and set the desired value for the field "**HTTPS port**". Save the settings by clicking the "**Apply**" button.
The system will ask for confirmation – answer "Yes".
**Connecting via the gateway.**
Open the RDP client, go to the tab "**Additionally**" and press the button "**Settings**".
In the window that opens, select "**Use the following** Remote desktop gateway server settings”. We indicate the domain name of the server and through the colon (:) indicate the SSL port. The login method is "**Request Password**". Click "**OK**".
Go to the tab "**General**". Specify the address of the computer and the user under which the connection will be made. Push the button "**Connect**"
The program will ask for the password from the account.
The results of the gateway can be checked by tracing – the tracert command.
https://serverspace.us/support/help/configuring-samba.mdSamba is a server application that implements client terminals' access to folders, printers, and disks over the SMB/CIFS Protocol.
There is probably not a single office that does not use shared local network resources, whether they are folders or printers. Large and medium-sized companies use the capabilities of Active Directory, while smaller companies use regular Windows or Samba tools, but on servers on Linux OS. Look at all the cases.
How to configure Samba:
- [What is Samba?](#step1)
- **[How to set up a shared folder](#step2)**
- [How to set up a shared folder in Linux](#step3)
- [How to set up a shared folder on Windows](#step4)
- **[How to connect to a shared folder](#step5)**
- [How to connect to Linux shared folder](#step6)
- [How to connect to a Windows shared folder](#step7)
- **[How to create a Network Share in Samba](#step8)**
## What is Samba?
Samba is a server application that implements client terminals’ access to folders, printers, and disks over the SMB/CIFS Protocol.
## Configuring shared folders
### Linux
The installation and configuration of the Samba server for Ubuntu is performed in the following steps.
Update information about repositories and install updates for existing software packages in the system:
```bash
apt-get update && apt-get upgrade
```
Installing the Samba pack:
```bash
apt-get install -y samba samba-client
```
Creating a reserve copy of the configuration file:
```
cp /etc/samba/smb.conf /etc/samba/smb.conf_sample
```
Creating directories for files, for example in the /media catalog:
```
mkdir /media/samba
```
Important! By default, the /media directory is located at the root of the system/, and a separate partition is rarely created for it. For this reason, the root partition may overflow. To avoid this unpleasant situation, we recommend mounting a separate hard drive in /media/samba.
Creating a folder for all users:
```
mkdir /media/samba/public
```
Changing the folder access rights:
```bash
chmod -R 0755 /media/samba/public
```
You should also use the chown command to change the owner and/or group.
Creating a directory for a limited number of people:
```
mkdir /media/samba/private
```
Using the system tools, we will create a user group:
```
groupadd smbgrp
```
Adding Samba users:
```
useradd user1
```
Adding the created users to the group:
```
usermod -aG smbgrp user1
```
Changing the group that the private directory belongs to:
```
chgrp smbgrp /media/samba/private
```
Use the Samba tools to create a password for the added user:
```
smbpasswd -a user1
```
Use a text editor such as nano to edit the samba configuration file:
```
nano /etc/samba/smb.conf
```
Deleting all lines from the file. Insert the following:
```
workgroup = WORKGROUP
security = user
map to guest = bad user
wins support = no
dns proxy = no
path = /media/samba/public
guest ok = yes
force user = nobody
browsable = yes
writable = yes
path = /media/samba/private
valid users = @smbgrp
guest ok = no
browsable = yes
writable = yes
```
Save using the combination Ctrl + X, then press Y and Enter.
Let’s explain the string values. The configuration file consists of three sections:
**global **— this section is responsible for the General settings of the Samba server;
**public **и **private **— the description section of the settings directories are shared.
The **global** section contains five parameters:
- **workgroup **— working group. To simplify the work of users, WORKGROUP is specified as the default group. If the workgroup name is changed in your network, you should also change this value for Samba;
- ** security **— the security level of the server. The value user means authorization by the username/password pair;
- **map to guest** — this parameter defines how requests are processed. The bad user value means that requests with an incorrect password will be rejected, even if such a user name exists;
- **wins support** — • enable or disable WINS support;
- **dns proxy** — the ability to proxy requests to a DNS.
Directory settings are made in the corresponding sections:
**path **— full path to the directory on your hard disk;
**guest ok** — ability to access the folder without a password (guest);
**browsable **— whether to show the folder on the server, among others. If the parameter is set to ” no", access will be possible using the full path, for example, ip-address hidden_directory;
**force user **— the user who is working with the folder. To increase server security, "nobody" is usually used. The main thing is that it is not safe to use the root user.
**writable** — setting the value to "yes" allows the user to perform actions on files inside the folder — rename, add, delete, move to a subdirectory, and copy;
**valid users** — list of users who have access to the folder. If there are several users, their names are separated by commas. If access is required for users belonging to a group, the symbol "at" (@) is set before the group name.
Important! The name of the shared directory displayed to users is equal to the name of the section where it is described.
Check the settings using the command:
```
testparm -s
```
Restarting the server:
```bash
service smbd restart
```
```bash
service nmbd restart
```
Configure the firewall. To do this, open TCP ports 139 and 445 in the rules, as well as UDP ports 137 and 138, but only for those subnets that you trust. To specify your own address range, replace the value after the "-s ” key":
```
iptables -A INPUT -p tcp -m tcp –dport 445 -s 10.0.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp -m tcp –dport 139 -s 10.0.0.0/24 -j ACCEPT
```
```
iptables -A INPUT -p udp -m udp –dport 137 -s 10.0.0.0/24 -j ACCEPT
```
```
iptables -A INPUT -p udp -m udp –dport 138 -s 10.0.0.0/24 -j ACCEPT
```
To save the rules and apply them after restarting the server, use the iptables-persistent package. Install it:
```bash
apt-get install iptables-persistent
```
During the installation of the package, the program will ask you to save existing iptables rules. Confirm this action.
To check existing rules, use:
```
iptables -L
```
### Windows
Similar to Linux, we will configure shared access to the public and private folders, but in Windows.
To create shared access to a folder without password protection, you must configure security restrictions in the control panel. To do this, open:
**Control panel → Network → network and sharing Center → Advanced sharing settings.**
In the updated window, open the section “All networks" and look for the section” Shared access with password protection". Setting the parameter to "Disable password-protected sharing". To save the parameter values, click the "**Save changes**" button.
Now we will open access to the folder itself. Right-click on the folder and select "Properties" in the context menu. Open the “Access” tab and click on “Advanced settings”.
In the advanced sharing settings window that opens, select the "Open shared access to this folder “checkbox in the "shared resource Name” field" specify the name that will be displayed to users. Click on the “Permissions” button.
In the window that opens, in user groups, select “All", and in group permissions, set the "Full access” checkbox. Click ” OK ” in this and other Windows.
In the properties window of the public folder, click the “Shared access” button.
In the window that opens, add the "All “user, and delegate the” Read and write” rights. Click on the “Share” button.
In the updated window, click “Done”.
Setting up a shared folder, but for a limited number of people.
Right-click on the folder and select “**Properties**“.
In the window that opens, go to the "**Access** ” tab. Click on the “**Advanced settings**” button.
In the new window that opens, set the "**Open shared access to this folder **” checkbox. Then click on the **“Permissions**” button.
In the window that opens, in the "**Groups or users**" field, select “**All "and click "Delete”.**
This means that anonymous access to the folder is not allowed.
The window will update. Click on the “**Add** ” button.
In the window that opens, click the “**Advanced**” button.
The window will change in size. Click on the “**Search**” button. Double-click to select the user who needs access to this folder, for example, accountant.
In the window that opens, if desired, we can add another user via **“Advanced" — “Search”.** Similarly, you can add a group of users, such as “**Administrators**“, but you should understand that access will be granted to all users in this group.
Setting access rights for the user “accountant”. If you need full access to the directory, set the checkbox in the appropriate place.
Clicking the “**OK** “button returns to the folder properties window, where we click on the “**Shared access**” button.
In this window, you need to find and add the user “accountant”.
In the window for selecting users and groups, click the “**Advanced**” button.
The window will change its size again. Click on the “**Search**” button. In the list of users and groups found below, select the user you are looking for. Double-click it.
In the remaining window, check whether the user is specified correctly and click “**OK**“.
Set the required permission level for the user and click on the “**Share**” button.
Click on the “**Done**” button.
## Connecting to shared folders
### from Linux
To connect to shared folders from the Linux environment, you need to install a separate software-smbclient. Establish:
```bash
sudo apt-get install smbclient
```
To connect to the server, use the following command format:
```
smbclient -U
```
Example:
```
smbclient -U buhgalter 10.0.0.1public
```
In order to avoid typing this command every time, it is possible to configure the mounting of a shared directory as a network drive. To do this, install the CIFS-utils package:
```bash
sudo apt-get install cifs-utils
```
The following template is used for mounting:
```
mount -t cifs -o username=Everyone,password= //10.0.0.1/public /media
```
Important! If you need to connect to shared folders located on a Windows server, use "Everyone" as the user name for non-password-protected directories. To connect to a Linux server, we recommend using "nobody" as the user name. If you have access to protected directories, use the credentials you specified.
### from Windows
Connecting to deleted folders from the Windows environment is slightly different. To do this, use the following template in Windows Explorer or the program launch window (Windows + R):
```
```
By simply specifying the server IP address, you will get a list of shared folders.
When connecting to a Windows server, the security system may require you to enter credentials. To connect to a shared open folder, use Everyone, and leave the password field empty.
When connecting to a Linux server from Windows, use the template specified earlier:
```
```
or just the server address:
```
```
## How to create a Network Share in Samba
Create a directory wich you want to share:
```
mkdir /home//
```
Make a backup, if something goes wrong:
```
sudo cp /etc/samba/smb.conf ~
```
Edit the file “/etc/samba/smb.conf”:
```
sudo nano /etc/samba/smb.conf
```
Add this in the end of the file:
```
[]
path = /home//
valid users =
read only = no
```
Enter yout own information, save the file and exit it.
Restart the Samba:
```bash
sudo service smbd restart
```
Use this command to check your smb.conf for any errors:
```
testparm
```
To access your network share use:
```bash
sudo apt-get install smbclient
# List all shares:
smbclient -L /// -U
# connect:
smbclient /// -U
```
Note 1: To access your network share use your username (user_name) and password through the path “smb:////” Note that “” value is passed in “[folder_name]”, in other words, the share name you entered in “/etc/samba/smb.conf”.
Note 2: The default user group of samba is “WORKGROUP”.
https://serverspace.us/support/help/how-to-change-rdp-account-password.mdIn operating systems of the Microsoft Windows Server family, it is common to use the keyboard shortcut - the problem is that the “three buttons” cannot be used through “Remote Desktop Connection”. Let's see how to change the password anyway.
One of the good habits of any PC user, and especially a system administrator, is to periodically change account passwords. The main thing is not to forget it later.
How to change password on remote desktop?:
- [How to change password in Windows Server 2008](#step1)
- [How to change password in Winodows Server 2012 and Windows Server 2012 R2](#step2)
- [How to change password in Windows Server 2016](#step3)
- [Alternative way to change password in Windows Server 2016](#step4)
- [How to change password on remote desktop computer with combination CTRL + ALT + END](#step5)
- [How to change password on remote desktop with On-Screen Keyboard](#step6)
- [How to change password with VBS-script or with PowerShell](#step7)
- [How to change password using shell extension shortcut Windows Explorer](#step8)
- [How to change password with Desktop Web Access](#step9)
- [How to change password with CredSSP and NLA](#step10)
- [How to change password with special RDP-file](#step11)
In operating systems of the Microsoft Windows Server family, it is common to use the keyboard shortcut Ctrl + Alt + Del to change the password the problem is that the "three buttons" cannot be used through "Remote Desktop Connection". Let’s see how to change the password anyway.
## In Windows Server 2008, this can be done from the Start menu by clicking on** "Windows Security".**
On the updated screen, select** "Change Password".**
We enter the old password and the new one and it’s confirmation.
## In Windows Server 2012 and Windows Server 2012 R2, the task has become somewhat more complicated.
Open the notebook and write two lines:
```
set objShell = CreateObject("shell.application")
objshell.WindowsSecurity
```
We save the file with the extension * .vbs (we write manually.). To do this, select File -> Save as
In a new window, select the directory to save the file, for example, Desktop. In the File type, select All files, and in the File name, specify an arbitrary name, for example, 1.vbs.
After saving the file, it is ready for execution. Double-clicking with the left mouse button will bring up a screen in which **"Change password" should be selected.**
Further, everything is familiar.
Fill in the fields with the old password, indicate the new password and its confirmation. Click on the arrow icon.
## The Windows Server 2016 OS pleases with its attention to the user, but to change the password remotely, you still need to search for this item.
Open the Start menu and click on the user's icon, select **"Change account settings" in the menu that opens.**
In the "Parameters" window that opens, select "Sign-in" options, and in the Password section, click on the Change button:
In a new window, specify the current password and click on the Next button.
The window will be updated and ask for a new password, its confirmation, as well as a hint for the password. Click on the button "Next". As a result, click on the Finish button. The next login will be with a new password:
## An alternative way
This method is applicable both for changing the password for your account and the accounts of other users.
From the Start menu, select Administration ("Administration Tools" in Windows Server 2016).
In a new window, double-click open **"Computer Management".**
In the left part of the window that opens, open the "Local users and groups" branch and open the Users folder. In the main part of the window, right-click on the user and select "**Set Password " in the context menu.**
The system will issue a warning. Having carefully read which and having realized all the risks, click on the "Continue" button. Otherwise, **"Cancel.”**
In a new window, specify the new password and its confirmation. When finished, click on the OK button.
## **How to change password on remote desktop with combination CTRL + ALT + END.**
To get the combination CTRL + ALT + DEL on remote desktop, you need to press CTRL + ALT + END.
Pressing this combination will open a dialog box for us in which we will have to select “Change a password”:
To change the password, we will need to provide some data:
## **How to change password on remote desktop using On-Screen keyboard.**
When connecting to the desktop remotely, the password can be changed using the on-screen keyboard.
To open the on-screen keyboard, type “On-Screen Keyboard” or “OSK” in the Start menu.
After the on-screen keyboard appears, hold down the ALT + CTRL keys and use the mouse to press the Del button.
You will get a dialog box in which you yourself will need to select “Change a password”:
To change the password, we will need to specify: username, old password and repeat the new password twice:
## **How to change password in RDP session with a VBS script or PowerShell.**
To call the password change window using a VBS script, create the WindowsSecurity.vbs file and enter the following lines of code there:
```
set objShell = CreateObject("shell.application")
```
```
objshell.WindowsSecurity
```
After that, after double-clicking on this VBS script, a dialog box will open in front of you, in which we will need to select “Change password”:
To change the password, we will need to specify: username, old password and repeat the new password twice:
Also, to open the password change window using PowerShell, open PowerShell itself using the Start menu and use the command:
```
New-Object -COM Shell.Application).WindowsSecurity()
```
After that, a dialog box will open in front of you, in which we will need to select “Change password”:
To change the password, we will need to specify: username, old password and repeat the new password twice.
## To open the change password dialog box, you can create a shortcut with a link to the Windows Explorer shell extension.
First, create a shortcut and specify the given path for it:
```
C:\Windows\explorer.exe shell:::{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}
```
Next, choose a name for the label and create it:
After double-clicking on this shortcut, a dialog box will open in front of you, in which we will need to select “Change password”:
To change the password, we will need to specify: username, old password and repeat the new password twice.
## Change password with Remote Desktop Web Access
In Windows Server 2012 /R2 and later, remote users with Remote Desktop Web Access rights have the ability to reset their password themselves through a special web page on the Remote Desktop Web Access server.
The remote password change functionality is available on the server with the Remote Desktop Web Access role, but this feature is disabled by default.
To enable this feature:
Open the IIS Manager server management console and go to [Name of your Server] – Sites – Default Web Site – RDWeb – Pages and open the Application Settings section.
In the right pane, select the option named “PasswordChangeEnabled” and change its value to “true”.
To check the availability of the password change page, go to: https://[RD-WEB-1]/RDWeb/Pages/en-US/password.aspx
After successfully changing the user’s password, a message should appear:
```
Your password has been successfully changed.
```
## How to change password in RDP witch CredSSP and NLA
Credential Security Support Provider (CredSSP) is a credential passing protocol used by RDP to protect DDoS attacks and unauthorized process execution.
**Network Level Authentication (NLA)** is a Remote Desktop Services feature that requires the connecting user to authenticate themselves before establishing a session with the server.
There is one important feature regarding changing an expired user password with RDP, related to the Network Level Authentication (NLA) option and the Credential Security Support Provider (CredSSP) protocol. By default, CredSSP with NLA for RDP is enabled on all versions of Windows starting with Windows Server 2012/Windows 8. NLA secures the RDP server by performing user authentication before establishing an RDP session with the server.
If the user’s password has expired, or the user’s AD administrator has enabled the option “userAccountControl” – wich requires to change password at first login, then an error will appear when logging in with RDP:
```
Remote Desktop Connection
You must change your password before logging on the first time. Please update your password or contact your system administrator or technical support.
```
As a result, the user will not be able to connect to the RDP server and change the password.
In this case, so that the user can change the password himself, you can:
1) Set up Remote Desktop Web Access (RDWA) with a password change page as in this part of the manual : [How to change password with Desktop Web Access](#step9)
2)Create a separate server for changing user passwords. On this server, you need to disable the NLA function. In this case, users will be able to change the password.
3) The user can change his password remotely with PowerShell – as shown in this part of the tutorial [How to change password with VBS-script or with PowerShell](#step7)
## Changing the password on the remote desktop using a special RDP file:
If you want the user to change the password using an .rdp file, then you must match the RDP configuration level security settings on the RDS interface and the server .rdp file prestandard on the client interface.
Try on the client side, open mstsc.exe.
In the start menu, type “mstsc” and select “Remote Desktop Connection”:
Next, we configure all the necessary parameters for connecting to the server.
Click “Show more”, enter the IP address of our remote computer and username there, then, using the Save As button, create an RDP file:
After that, open the RDP file with a text editor and add the line at the end of the file:
```
enablecredsspsupport:i:0
```
Explanation: Adding this parameter to the RDP connection properties will allow the client to successfully establish an RDP session with the remote system and change the password before gaining access to the remote desktop. However, this setting will lower the security level of the RDP connection, as the client will not be able to use Network Level Authentication (NLA), which we [described earlier in our article](#helpNLA).
If NLA is enabled, then the user will not be able to connect and will receive the corresponding error:
The only way to fix this error is to lower the RDP security level on the RDS server side by disabling the mandatory Network Level Authentication (NLA) requirement.
## Important!
**We do not recommend doing this if your remote computer may be subject to DDoS attacks and unauthorized processes.**
To change this setting, on a remote computer, in the start menu, enter “Control Panel”:
Next, go to “System and Security”:
After that go to “System”:
We open the window that appeared in full screen and select “Advanced system settings”: “Allow connections only from ”:
We will have a window with “System Properties”, go to the part with “Remote Access” and uncheck the box “Allow connections only from ”, then click “Apply” and “OK”:
After we have disabled the NLA function on the RDP server side, the client, using a special RDP file, can successfully establish an RDP session and change the password in it:
After that you will be able to connect with the new password.
So, we have considered all possible ways to change the account password with RDP.
https://serverspace.us/support/help/configuring-the-network-interface-in-ubuntu-18-04.mdLearn how to configure network interfaces in Ubuntu 18.04 using Netplan. Step-by-step YAML examples, interface setup, and troubleshooting tips.
Configuring a network interface is one of the first and most important steps when setting up Ubuntu Server 18.04. In this guide, we'll show how to manage network settings using Netplan, the default network configuration tool in Ubuntu 18.04, and briefly cover the legacy ifupdown method. You'll learn how to locate configuration files, apply changes, configure multiple interfaces, and troubleshoot common networking issues to ensure stable connectivity.
Configuring the network interface in Ubuntu 18.04 was a surprise to many. Although there exists, familiar to all, the configuration Linux network interfaces file – /etc/network/interfaces, it says:
Configuration via ifupdown has been replaced by netplan. Configuration via /etc/netplan. If you want to go back to ifupdown configure via command:
```bash
sudo apt install ifupdown
```
We will not install anything else. Set up what there is. First, look at the content of the directory /etc/netplan.
Let’s see, what is in this file.
The configuration file is written in YAML. Netplan uses declarative YAML configuration files to define network settings, making Ubuntu network management more predictable and easier to automate. The settings shown in the example above were made at the stage of installing the operating system. Let’s take a closer look.
- **network** — beginning of the network configuration block;
- **ethernets** — this parameter reports that the next step will be to configure the protocol of the same name;
- **enp0s3** — the name of the configurable network interface. It is likely that in your case the name will be different. A list of all interfaces can be viewed with the command ifconfig -a;
- **addresses** — block of IP addresses assigned to an interface with a network prefix. One ip-address is indicated as in the example, several addresses are indicated in square brackets "[and]", separated by commas;
- **gateway4** — IPv4 network gateway;
- **nameservers** — name server configuration block.
- **addresses** — it is in the nameservers block that indicate which DNS servers to access. Indicated without a network prefix. Several addresses are indicated in square brackets "[and]", separated by commas.
- **version** — YAML language version.
We activate the current settings with the command:
```
netplan apply
```
We examined the main options. More setup examples are on the [official website](https://netplan.io/).
What if the system does not use netplan?
It’s the old fashioned way. First we get a list of available interfaces:
```
ifconfig -a
```
In this case, there are 2 network interfaces without IP addresses (for now). Configured by DHCP. Let’s move on to the settings.
```
sudo nano /etc/network/interfaces
```
A server receiving IP from a DHCP server is not a good solution. We bring the file to the form:
What does this mean.
- auto enp0s3 — automatic launch of a specific interface;
- iface enp0s3 inet static — reports on static configuration;
- address 10.10.2.6 —actually, the IPv4 address for this interface;
- netmask 255.255.255.0 — netmask.
- gateway 10.10.2.1 — IPv4-gateway
- dns-nameservers 8.8.8.8 — specify DNS servers
The second and subsequent interfaces are configured in the same way or configured using a DHCP server. Apply settings:
```
sudo /etc/init.d/networking restart
```
If everything is done correctly, then we wait for the process of restarting the service.
```
sudo reboot
```
## FAQ: Network Interface Configuration in Ubuntu 18.04
- **Q: Why is Netplan used instead of /etc/network/interfaces in Ubuntu 18.04?**
Starting with Ubuntu 17.10, Netplan replaced the traditional ifupdown system for configuring network interfaces. It uses YAML-based configuration files located in /etc/netplan/ and works with backend renderers like NetworkManager or systemd-networkd.
- **Q: How can I find my network interface name?**
You can list all available interfaces using the command ifconfig -a or ip link show. Interface names like enp0s3 or ens160 may vary depending on your hardware and system.
- **Q: What should I do if my network changes don't apply after editing the Netplan config?**
After making changes in the YAML file, run sudo netplan apply. If the IP address still doesn't change, try restarting the system with sudo reboot.
- **Q: Can I still use the old /etc/network/interfaces method?**
Yes, but you need to install the ifupdown package manually with sudo apt install ifupdown. However, it's recommended to stick with Netplan on Ubuntu 18.04 for compatibility.
- **Q: How do I set up a static IP address?**
In Netplan, specify the addresses, gateway4, and nameservers fields in your YAML config. For the legacy method, use iface [interface] inet static in /etc/network/interfaces.
https://serverspace.us/support/help/windows-server-versions-editions-licensing.mdThis article introduces a variety of different versions of Windows Server systems, compares the available editions, and touches on the topic of its licensing.
When wondering which version of Windows Server to choose for their business, users, as a rule, are faced with a wide variety, and it is far from always clear how to choose the most suitable option. The Windows Server operating system has not only different versions but also different editions. Let’s look at the differences between them.
**What is a version of Windows Server?**
In the 90s, during the time of Windows NT, each version of Windows Server had a unique number. For example, Windows NT had numbers 3.1, 3.51, and 4.0. But starting in 2000, Microsoft began to add, after the name, the year the operating system was launched: Microsoft Windows 2000, Windows Server 2003, 2008 (which also had version R2), 2012 (also with R2), 2016 and 2019, etc.
Each new version of Microsoft Windows Server introduces new functionality. For example, Hyper-V, Server Core, and BitLocker virtualization were introduced in Windows Server 2008, Windows and Nano Server containers were introduced in Windows Server 2016, and Windows Server 2019 brought Windows Admin Center – a new way to remotely administer the server infrastructure, improve the hyper-converged infrastructure and deep support for the Linux subsystem.
**What is the end of support?**
As they say, nothing lasts forever. And at some point, Microsoft stops releasing patches for legacy software. The date by which Microsoft releases product updates is called the end date of support. And after this date has passed, an outdated version of the OS will become an easy target for malware, since it will no longer receive security updates and, therefore, will be vulnerable to new exploits.
Microsoft operating systems are usually supported for at least 10 years. For example, the popular Windows Server 2003, released in April 2003, had extensive support that ended in 2015. Extended support for Windows Server 2008 R2 should end in January 2020, and Windows Server 2012 R2 will continue to receive updates until at least October 2023. Versions of Server 2016 and 2019 will receive updates through 2027 and 2029, respectively. Therefore, for security reasons, organizations should only use the latest versions of Windows Server.
**What is the Windows Server edition?**
When you buy a car, at least several sets of the same model are available to you. For example, the basic economical option, a luxurious option with leather seats and a sunroof, as well as a sporty option with larger wheels and a more powerful engine. In other words, each version of the car has its price and feature set for groups of customers with different budgets and needs.
The same goes for Windows Server editions. Each option includes functionality that is suitable for different companies, depending on their size and budget. For example, different editions may support a different number of users.
**Differences between editions of Windows Server 2012 R2**
To help understand some of the differences between OS editions, let’s look at an example of Windows Server 2012 R2:
- **Foundation **is a general-purpose server OS that is best suited for lower-level servers. The OS only supports one processor and 32 GB of RAM. The Foundation edition (not available in Windows Server 2016) is limited to 15 users, which makes it suitable only for small offices. Foundation is only available through OEMs, which usually means it is preinstalled on computers that you buy from companies such as Dell and HPE.
- **Essentials**(formerly SBS or Small Business Server) is an easy-to-configure server solution that supports up to 25 users and 50 devices, making it suitable for small offices. Essentials support more powerful hardware with up to 64 GB of RAM and two processors. Unlike other editions of Windows Server, Essentials pre-configured roles such as Active Directory, DNS, file services, IIS, and Remote Desktop, making it ideal for organizations with less developed IT or less experienced IT staff.
- **Standard** does not restrict users, but unlike Foundation and Essentials, you will have to purchase Client Access Licenses (CALs) separately, depending on how many people you need to support. Standard supports a maximum of 4 TB of RAM, and each license purchased extends to two processors. If you are interested in virtualization, this release will allow you to use the Hyper-V hypervisor to run up to two virtual instances of the operating system (additional virtual instances of Windows Server will require additional costs) on the same physical hardware, which makes the Standard edition suitable for a lightly virtualized environment.
- **Datacenter** is the best and most expensive edition of Windows Server. Windows Server 2012 R2 Datacenter is almost identical to the standard version with one big exception. With the Datacenter license, you can run an unlimited number of virtual instances with Windows Server as a guest OS on a single dual-processor computer. This small difference has a big impact, as companies can save by running dozens of OS instances on a single server.
**The differences between editions of Windows Server 2016 and 2019**
- **Hyper-V **is a free edition of Windows Server designed only to launch the Hyper-V hypervisor role. Its goal is to be a hypervisor for your virtual environment. It does not have a graphical interface. This is a stripped-down version of Server Core. You will use sconfig.cmd to enable the hypervisor, and then manage the environment using Hyper-V Manager (as part of RSAT) from a Windows 10 workstation on your network. It is recommended that you use this edition for your hypervisor to maintain the purity and simplicity of licensing.
- **Essentials **– ideal for both small and medium-sized businesses, and people with needs for basic server functions. The GUI is pretty much the same as in Standard, except the Essentials setup wizard.
**Virtualization Rights**
You are allowed to run one physical Essentials instance as a Hyper-V host that hosts one Essentials virtual instance. You need to remove all roles except the Hyper-V role from the physical instance of Essentials to ensure compliance. Essentials are also suitable for one virtual instance on any other hypervisor.
**Licensing model**
based on the processor. Client licenses are not required, but you are limited to 25 users and 50 devices connecting to the server.
**Hardware limitations**
Essentials are limited to 64 GB of RAM and 2 CPUs on the computer on which it is installed.
- **Standard **– ideal for any company or for people who require advanced features, but they will not be intensively virtualized.
**Virtualization Rights**
You can run up to two Hyper-V virtual machines or containers or one physical instance with a standard license. If you use the Hyper-V role only on a physical instance, you can use it as a Hyper-V host, and then host two Hyper-V virtual machines on that host. If you want to use multiple roles on a physical instance, you cannot start the virtual machine on top with the same license.
**Licensing model**
based on the core. Client licenses are required for each user or device that connects indirectly or directly to the server. For example, if you use the server as a file server, you will need a CAL for each user account or computer that accesses this file server on the network.
**Hardware limitations**
The standard is limited to a maximum of 24 TB of RAM and 512 cores.
- **Datacenter**– ideal for any company with a high degree of virtualization. You get a license depending on how many cores your hosts have on which any virtual machine with a version of Datacenter can live (run or potentially run after Vmotion). This licensing, at first glance, seems expensive, but it allows you to create an unlimited number of virtual machines running Datacenter on the hosts that you consider. If you have a small number of hosts (and subsequently kernels) and a large number of potential virtual machines, then this license is not difficult.
**Virtualization Rights**
The unlimited number of virtual machines or Hyper-V containers. As stated above, you will buy licenses depending on how many cores you have on the hosts. At this point, you can run as many virtual machines as you like on the hosts using any role.
**Licensing model**
based on cores. Make sure that you do not accidentally select this release when installing on a physical server that does not host virtual machines. Client licenses are required for each user or device that connects indirectly or directly to servers in your environment.
**Differences in licensing for Windows Server 2016 and newer**
Although the prices for Windows Server 2012 R2, 2016, 2019 are the same, if you are using a standard license or a Datacenter license for Windows Server 2016 or later, there are some key changes that you need to be aware of. First of all, while Windows Server licenses have historically been sold for each processor/socket, in Windows Server 2016, the licensing model switched to each core.
Thus, if you have a server containing 2 processors with 24 cores, in Windows Server 2012 you will only need to buy one Standard or Datacenter license. In Windows Server 2016, you will have to buy licenses for all 24 cores. This becomes quite difficult, as there are many rules, but the main thing is that if you have a 16-core server, the costs will be approximately the same. However, OS licensing may be more expensive on servers with a higher core density.
Despite the change to the core license, the virtualization rules remain the same in Windows Server 2016 and later. Once you have licensed all your cores on the server, with the standard version you get 2 licenses for the Windows Server guest OS compared to the unlimited number in the Datacenter version.
Also, the features in Windows Server 2012 Standard and Datacenter were the same. But some features of Windows Server 2016, such as Storage Spaces Direct or shielded virtual machines, are only available in the Datacenter release.
**Comparing installation options for Windows Server 2016 and 2019**
Standard and Datacenter editions offer a variety of installation options. These options affect what features will be available after installation, such as a graphical user interface and a set of services. The following installation options are available:
- Desktop Experience (with a graphical interface);
- Core;
- Nano
**Desktop Experience** is an installation option that most people are familiar with. This option installs most of the functions and roles out of the box, including the desktop GUI. You will receive the Server Manager, which allows you to add and remove roles and components. The advantage is that the system can be easier to manage for people who are used to using a graphical interface. The downside is that you have more updates, reboots, and open ports to deal with.
Learn more from Microsoft[here](https://docs.microsoft.com/en-us/windows-server/get-started/getting-started-with-server-with-desktop-experience).
The** Server Core** lacks a graphical interface and several roles that are installed by default under the Desktop Experience option. The server core has less disk space and, therefore, a smaller attack area due to the smaller codebase. There are also fewer updates, reboots, and open ports to work with. This is a great option for infrastructure servers such as Active Directory domain controllers and DNS servers.
This edition lacks accessibility tools, built-in server configuration tools, and sound support. This version is no frills. It will not be amiss to make sure that you are familiar with command-line administration.
You can read more about this[on Microsoft's](https://docs.microsoft.com/en-us/windows-server/administration/server-core/what-is-server-core) site.
**Nano**
Starting with Windows Server 2019, Nano is only available as a containerized image of the operating system. It is designed to run as a container inside a container host, such as the Server Core mentioned above. If you rely on container applications designed for server OS, then you will use this version to compile these applications.
Nano can be deployed using Standard or Datacenter versions, but you must have Software Assurance attached to the host server licensing. You can learn more about this[on the website](https://docs.microsoft.com/en-us/windows-server/get-started/nano-in-semi-annual-channel) of Microsoft.
https://serverspace.us/support/help/configuring-a-dns-server-on-windows-server-2012-or-later.mdStep-by-step guide to configuring a DNS server on Windows Server 2012–2022. Install the DNS role, create forward and reverse zones, and add A records.
**The Domain Name System (DNS)** is a core network service that translates human-readable domain names (such as example.com) into IP addresses and back. On Windows Server, DNS plays a critical role in both internal networks and public infrastructure, enabling reliable name resolution for applications, services, and users.
**A DNS server** is a network service that provides and maintains the operation of DNS. The DNS server is an easy and light service that can run on most machines. If you don’t intend to configure other roles and services on the target machine, the minimum configuration is enough.
How to set up a DNS server:
- [Configuring the network adapter for the DNS server](#stepone)
- [Installing the DNS Server Role](#steptwo)
- [Create a forward lookup zone](#step3)
- [Creating a reverse lookup zone](#step4)
- [Create an A record](#step5)
- [Describes the Domain Name System (DNS) features that are new or changed in Windows Server 2016.](#step6)
## Configuring the network adapter on the DNS server
Installing a DNS server requires a domain zone. You need to create a private network in your personal account and connect virtual machines to it.
After the machine is connected to both of the networks, it is important to remember which connection needs to be configured. Usually, a network adapter is setup by default from the very beginning with an access to the Internet. At the same time other additional network adapters have no Internet access until the configuration is performed manually:
By hovering the cursor over the network icon in the system tray, you can find a tooltip with brief information about networks. Following the example above, you can see that the joined network is Network 3.
Perform a series of actions:
- Right-click Start and select Network Connections from the drop-down menu;
- Right-click on the required network adapter and select Properties from the menu;
- Select IPv4 In the Properties window, and click on the Properties button;
- Fill in the appropriate fields with the necessary data:
Here, the machine is assigned as the preferred DNS server, and the alternate is assigned as dns.google [8.8.8.8].
## Installing the DNS server role
To add new roles to Windows Server, you use Add Roles and Features Wizard in Server Manager.
On the upper navigation bar of the Server Manager click the Manage menu, and then select Add Roles and Features:
Here, the Wizard recommends you to verify if the following tasks have been completed:
1. The Administrator account has a strong password.
2. Network settings, such as static IP addresses, are configured.
3. The most current security updates from Windows Update are installed.
If you are sure that all the conditions are met, click Next;
Select the Role-based or feature-based installation and click Next:
Select a server you want from the server pool and click Next:
Check off the DNS server role and click Next:
Check the list of features to install and confirm by clicking Add Features:
Keep the list of features as is and click Next:
Read the information and click Next:
Check the installation configuration once again and confirm your decision by clicking Install:
The final confirmation screen lets you know that the installation has been successfully completed, and you can close the installation Wizard:
## Creating forward and reverse lookup zones
A DNS zone is a logical container for DNS records within a domain
**Forward lookup zones** resolve names to IP addresses.
**Reverse lookup zones** resolve IP addresses to names.
You have to use the DNS Manager to create and manage the zones.
On the upper navigation bar of the Server Manager click the Tools menu and select DNS in the drop-down list:
### Creating a forward lookup zone
- Right-click on the Forward Lookup Zones folder, select New Zone. This will open the New Zone Wizard:
- On the Welcome screen of the Wizard, click Next:
- On the Zone Type screen, Select Primary Zone, and click Next:
- Enter the name, and click Next:
- If necessary, change the name of the future zone file and click Next:
- You must choose whether you want to allow dynamic updates or not. It is not recommended to allow this because of a significant vulnerability. Click Next:
- Verify that the selected settings are correct, click Finish:
### Creating a reverse lookup zone
- Open the DNS Manager and right-click on the Reverse Lookup Zones folder, select New Zone. This will open the New Zone Wizard:
- On the Zone Type screen, Select Primary Zone, and click Next:
- In the first Reverse Lookup Zone Name page, select IPv4, click Next:
- Type the network ID (the first three octets of the IP address) and click Next:
- If necessary, change the name of the future zone file and click Next:
- You must choose whether you want to allow dynamic updates or not. It is not recommended to allow this because of a significant vulnerability. Click Next:
- Verify that the selected settings are correct, click Finish:
## Creating a host (A) record
This section of the guideline is here to mostly check all the steps you performed earlier.
**A Resource Record** is the unit of information storage and transmission in DNS. RRs are the basic building blocks of host-name and IP information and are used to resolve all DNS queries.
**Record A** — a record that lets you map hostnames to an IP address of the host.
**Record PTR** — is the reverse version of an A Record.
- Open the Forward Lookup Zones folder in the DNS Manager and find the zone folder. Right-click on the right part of the DNS Manager and select New Host (a or AAA):
- New Host page opens. In Name, type a name of the host (with no domain, it will use the name of the Zone as a domain) and your IP address. Check off the section “Create associated pointer (PTR) record”, to verify if both Forward and Reverse Lookup Zones are operating properly:
If the Name field is blank it uses parent domain name.
- You can also add records for other servers:
- Once you are finished, click Done.
## Making sure everything is correct
- Check the changes in the folders of the zones (in the example below you can see 2 records appeared in each of them):
- Open the command line (cmd) or PowerShell and run the nslookup command:
It shows that the default DNS server is example-2012.com with the address 10.0.1.6.
To make sure that the Forward and Reverse Zones are operating properly, you can send two queries:
- To query the domain;
- To query the IP address:
In the example, we have got appropriate responses for both queries.
- There is an option to send a query to an external resource:
We see a new line here “Non-authoritative answer”. This means that our DNS server does not contain domain's original zone files. Although the information displayed below, received from an authoritative server, it is not itself authoritative in this case.
To compare, all the same queries were made on the server where the forward and reverse zones were not configured:
Here, the machine assigned itself as a default DNS server. The DNS server domain name is displayed as unknown because there are no resource records for the IP address (10.0.1.7). For the same reason, the 2nd query returns an error (Non-existent domain).
## Describtion of the Domain Name System (DNS) features which are new or changed in Windows Server 2016.
In Windows Server 2016, DNS Server offers updates in the following areas:
- [DNS Server Policies](#first)
- [Response Rate Limit (RRL)](#scnd)
- [DNS Based Named Entity Authentication (DANE)](#third)
- [Unknown record support](#fourth)
- [IPv6 root hints](#fith)
- [Windows PowerShell Support](#sixth)
## DNS Server Policies
Now you can use these features:
- DNS Policy for Geo-Location based traffic management
- Intelligent DNS responses based on the time of day, to manage a single DNS server configured for split-brain deployment
- Apply filters on DNS queries, and more.
Specific description of these features:
**Application Load Balancing**
When you have deployed multiple instances of an application at different locations, you can use DNS policy to balance the traffic load between the different application instances, dynamically allocating the traffic load for the application.
**Geo-Location Based Traffic Management**.
You can use DNS Policy to allow primary and secondary DNS servers to respond to DNS client queries based on the geographical location of both the client and the resource to which the client is attempting to connect, providing the client with the IP address of the closest resource.
**Split Brain DNS**
With split-brain DNS, DNS records are split into different Zone Scopes on the same DNS server, and DNS clients receive a response based on whether the clients are internal or external clients. You can configure split-brain DNS for Active Directory integrated zones or for zones on standalone DNS servers.
**Filtering**
You can configure DNS policy to create query filters that are based on criteria that you supply. Query filters in DNS policy allow you to configure the DNS server to respond in a custom manner based on the DNS query and DNS client that sends the DNS query.
**Forensics**
You can use DNS policy to redirect malicious DNS clients to a non-existent IP address instead of directing them to the computer they are trying to reach.
**Time of day based redirection**
You can use DNS policy to distribute application traffic across different geographically distributed instances of an application by using DNS policies that are based on the time of day.
**You can also use DNS policies for Active Directory integrated DNS zones.**
## Response Rate Limiting (RRL)
**ТYou can configure RRL settings to control how to respond to requests to a DNS client when your server receives several requests targeting the same client. **
By doing this, you can prevent someone from sending a Denial of Service (Dos) attack using your DNS servers.
For instance, a bot net can send requests to your DNS server using the IP address of a third computer as the requestor. Without RRL, your DNS servers might respond to all the requests, flooding the third computer.
When you use RRL, you can configure the following settings:
**Responses per second** This is the maximum number of times the same response is given to a client within one second.
**Errors per second** This is the maximum number of times an error response is sent to the same client within one second.
**Window** This is the number of seconds for which responses to a client are suspended if too many requests are made.
**Leak rate** This is how frequently the DNS server responds to a query during the time responses are suspended. For instance, if the server suspends responses to a client for 10 seconds, and the leak rate is 5, the server still responds to one query for every 5 queries sent. This allows the legitimate clients to get responses even when the DNS server is applying response rate limiting on their subnet or FQDN.
**TC rate** This is used to tell the client to try connecting with TCP when responses to the client are suspended. For instance, if the TC rate is 3, and the server suspends responses to a given client, the server issues a request for TCP connection for every 3 queries received. Make sure the value for TC rate is lower than the leak rate, to give the client the option to connect via TCP before leaking responses.
**Maximum responses** This is the maximum number of responses the server issues to a client while responses are suspended.
**Allowlist domains** This is a list of domains to be excluded from RRL settings.
**Allowlist subnets** This is a list of subnets to be excluded from RRL settings.
**Allowlist server interfaces** This is a list of DNS server interfaces to be excluded from RRL settings.
## DNS Based Named Entity Authentication (DANE)
You can use DANE support (RFC 6394 and 6698) to specify to your DNS clients what CA they should expect certificates to be issued from for domains names hosted in your DNS server. This prevents a form of man-in-the-middle attack where someone is able to corrupt a DNS cache and point a DNS name to their own IP address.
## Unknown record support
An “Unknown Record” is an RR whose RDATA format is not known to the DNS server. The newly added support for unknown record (RFC 3597) types means that you can add the unsupported record types into the Windows DNS server zones in the binary on-wire format. The Windows caching resolver already has the ability to process unknown record types. Windows DNS server does not do any record specific processing for the unknown records, but sends it back in responses if queries are received for it.
## IPv6 root hints
The IPV6 root hints, as published by IANA, have been added to the Windows DNS server. The internet name queries can now use IPv6 root servers for performing name resolutions.
## Windows PowerShell support
The following new Windows PowerShell cmdlets and parameters are introduced in Windows Server 2016.
**Add-DnsServerRecursionScope** – This cmdlet creates a new recursion scope on the DNS server. Recursion scopes are used by DNS policies to specify a list of forwarders to be used in a DNS query.
**Remove-DnsServerRecursionScope** – This cmdlet removes existing recursion scopes.
**Set-DnsServerRecursionScope** – This cmdlet changes the settings of an existing recursion scope.
**Get-DnsServerRecursionScope** – This cmdlet retrieves information about existing recursion scopes.
**Add-DnsServerClientSubnet** – This cmdlet creates a new DNS client subnet. Subnets are used by DNS policies to identify where a DNS client is located.
**Remove-DnsServerClientSubnet** – This cmdlet removes existing DNS client subnets.
**Set-DnsServerClientSubnet** – This cmdlet changes the settings of an existing DNS client subnet.
**Get-DnsServerClientSubnet** – This cmdlet retrieves information about existing DNS client subnets.
**Add-DnsServerQueryResolutionPolicy** – This cmdlet creates a new DNS query resolution policy. DNS query resolution policies are used to specify how, or if, a query is responded to, based on different criteria.
**Remove-DnsServerQueryResolutionPolicy** – This cmdlet removes existing DNS policies.
**Set-DnsServerQueryResolutionPolicy** – This cmdlet changes the settings of an existing DNS policy.
**Get-DnsServerQueryResolutionPolicy** – This cmdlet retrieves information about existing DNS policies.
**Enable-DnsServerPolicy** – This cmdlet enables existing DNS policies.
**Disable-DnsServerPolicy** – This cmdlet disables existing DNS policies.
**Add-DnsServerZoneTransferPolicy** – This cmdlet creates a new DNS server zone transfer policy. DNS zone transfer policies specify whether to deny or ignore a zone transfer based on different criteria.
**Remove-DnsServerZoneTransferPolicy** – This cmdlet removes existing DNS server zone transfer policies.
**Set-DnsServerZoneTransferPolicy** – This cmdlet changes settings of an existing DNS server zone transfer policy.
**Get-DnsServerResponseRateLimiting<** – This cmdlet retrieves RRL settings.
**Set-DnsServerResponseRateLimiting** – This cmdlet changes RRL settigns.
**Add-DnsServerResponseRateLimitingExceptionlist** – This cmdlet creates an RRL exception list on the DNS server.
**Get-DnsServerResponseRateLimitingExceptionlist**– This cmdlet retrieves RRL excception lists.
**Remove-DnsServerResponseRateLimitingExceptionlist** – This cmdlet removes an existing RRL exception list.
**Set-DnsServerResponseRateLimitingExceptionlist** – This cmdlet changes RRL exception lists.
**Add-DnsServerResourceRecord** – This cmdlet was updated to support unknown record type.
**Get-DnsServerResourceRecord** – This cmdlet was updated to support unknown record type.
**Remove-DnsServerResourceRecord** – This cmdlet was updated to support unknown record type.
**Set-DnsServerResourceRecord**– This cmdlet was updated to support unknown record type
For more information, see the following Windows Server 2016 Windows PowerShell command reference topics.
[Powershell DNS Server](https://docs.microsoft.com/en-us/powershell/module/dnsserver/?view=windowsserver2022-ps)
[Powershell DNS Client](https://docs.microsoft.com/en-us/powershell/module/dnsclient/?view=windowsserver2022-ps)
## Conclusion
Configuring a DNS server on Windows Server 2012–2022 is a foundational step for building a reliable and secure network infrastructure. Properly configured forward and reverse lookup zones, along with accurate A and PTR records, ensure consistent and efficient name resolution. New DNS features introduced in Windows Server 2016 and later further enhance security, scalability, and traffic control for modern network environments.
## FAQ: Windows DNS Server Configuration
- **Q1: What is the difference between a forward and reverse lookup zone?**
A: A forward lookup zone translates domain names into IP addresses, while a reverse lookup zone translates IP addresses into domain names.
- **Q2: Can I use Windows Server DNS in a small network without Active Directory?**
A: Yes, you can install and configure the DNS role on a standalone server without AD, although AD integration provides additional features like dynamic updates.
- **Q3: Why should I avoid enabling dynamic updates in DNS zones?**
A: Dynamic updates can introduce security risks, such as unauthorized changes or spoofed records. It's recommended to leave them disabled unless you've implemented secure dynamic updates.
- **Q4: What is Response Rate Limiting (RRL) and why is it important?**
A: RRL helps protect your DNS server from being used in amplification attacks by limiting the number of identical responses sent to a single client in a short time.
- **Q5: How can I test my DNS server configuration?**
A: Use the nslookup or dig command to test name resolution for both forward and reverse lookups. Verify responses match expected IP addresses or hostnames.
- **Q6: What are DNS Server Policies used for in Windows Server 2016+?**
A: DNS Policies allow administrators to control how the DNS server responds to queries based on client location, time of day, or query type — enabling geo-load balancing, split-brain DNS, filtering, and more.
- **Q7: Does Windows DNS Server support IPv6?**
A: Yes. Windows DNS Server includes IPv6 root hints and fully supports IPv6 record types, making it ready for dual-stack or IPv6-only networks.
https://serverspace.us/support/help/validation-types-used-when-obtaining-ssl-certificates.mdDifferent SSL certificates (Domain Validation, Organization Validation, Extended Validation) and validation types used when obtaining SSL certificates.
## Domain Validation (DV)
All certificates should be subject to a domain validation process used to confirm domain name ownership rights.
Three validation methods are available:
**Validation via email**
You will get an email to admin mailbox of your domain with a unique confirmation code and link. Follow the link and input this unique code to pass the validation.
Permissible email addresses:
- admin@
- administrator@
- webmaster@
- hostmaster@
- postmaster@
_The following domain validation methods are only available for Comodo certificates._
**Validation via DNS record**
Your CSR will be hashed. You will be provided with hash values. Then, input a DNS CNAME record of your domain.
CNAME record format will look as follows:
__.. CNAME .[.]comodoca.com._
_Notes:_
- SHA-256 hash is divided by a "." (dot) into two labels 32 of characters each;
- Be sure to place a dot in the end of a full domain name;
- When ordering multi-domain certificates, create separate CNAME records for each full domain name in your order;
- A mnemonic name in a CNAME record for a domain with "www" which a certificate is ordered for, should be without "www" (i.e. if your domain is www.example.com, the record should look like this: _.example.com.).
```
_09f7e02f1290be211da707a266f153b3.subdomain1.yourdomain.com. CNAME 3d874ab7b199418a9753111648448163.9eb1f2608f4da5aa3560154ca1b0df53.comodoca.com.
```
```
_9e107d9d372bb6826bd81d3542a419d6.subdomain2.yourdomain.com. CNAME 899826c9c46f25fc70ed08b5811dbb2b.ddf3e6b932e44c6a6a9dc5285057e9db.comodoca.com.
```
**Validation via a HTTP(S)**
Your CSR will be hashed. You will be provided with hash values. Then, create a text file and save it to a root directory of your website.
The file and its content should be as follows:
1. File URL:
http:///.well-known/pki-validation/.txt
2. Content:
comodoca.com
_Notes:_
- Validation will not be completed if the website has redirections;
- Check if /.well-known/ and /.well-known/pki-validation/ directories exist on the web server;
- If you order a multi-domain certificate, then each protected domain in the certificate must have a txt file in its root directory;
- For domains with "www", validation is based on URLs without "www" (i.e. if you order a certificate for www.example.com domain, then the file must be accessible at http(s)://example.com/.well-known/pki-validation/.txt).
_Examples:_
_File name_
```
subdomain1.yourdomain.com/.well-known/pki-validation/09F7E02F1290BE211DA707A266F153B3.txt
```
_Content_
```
770423513bd0765c18e500000baec91976bcd8267a245437b32572665c6ac370 comodoca.com
```
## Organization Validation (OV)
**Step 1. Domain validation**
The domain validation process is described in the previous paragraph.
**Step 2. Organization validation**
Can be performed as follows:
- Certification center checks if the organization exists in the state registry of entities.
- Public data registers can be used, such as Dun & Bradstreet, Hoovers, Companies House on gov.uk, and Lursoft.lv
- Address can be confirmed by one of the following documents:
organization’s articles of association (address should be specified in it);
- government license for commercial activity where address is specified;
- copy of company’s bank account statement for the last 6 months (you can specify account number here);
- copy of company’s phone bills for the last 6 months;
- copy of company’s bills for utility services (electricity, water, etc.) for the last 6 months or an existing rental agreement;
- Notarized letter (Legal Opinion Letter)
**Step 3. Callback**
Certification center employee (or, more frequently, a robot) calls you to confirm certificate request originality and complete validation process.
After all steps are successfully completed, the certificate is signed and issued.
## Extended Validation (EV)
**Step 1. Filling in certification center forms**
The center sends you special forms to be filled in.
**Step 2. Organization validation**
The organization validation process is described in OV paragraph.
**Step 3. Domain validation**
The domain validation process is described in DV paragraph.
**Step 4. Callback**
Certification center employee calls you to confirm certificate request originality and complete validation process.
After all steps are successfully completed, the certificate is signed and issued.
https://serverspace.us/support/help/firewall-configuring-a-network-firewall.mdYou can control access to the public server network, incoming and outgoing data packets directly from the control panel using the firewall.
Instructions for configuring Firewall rules for virtual server networks in the control panel.
## What is this?
You can control access to the public server network, incoming and outgoing data packets directly from the control panel using the firewall. This option is not charged separately and is included in the network price.
At the moment there is a limit of 50 rules. If it is not enough for you, you can increase it by submitting a request to Technical Support.
## Network Architecture
It is necessary to understand the order of operation of existing firewalls in order to avoid the firewall rule conflict and to ensure correct firewall configuration. First, you can configure the firewall for the private network. Secondly, you can configure the firewall for the server through the control panel. Thirdly, you can configure a back-end firewall, for example, for Linux via iptables; As for Windows, the firewall is built-in.
Incoming packets will be handled first by a network level firewall (if any). If the packet has passed, the firewall at the server level will be applied further, the last one will be the internal software mechanism. As for outgoing packets, the reverse sequence of actions will be applied:
## Creation of rules
The firewall configuration is available for networks and can be found in the network settings of the Firewall section.
**_Important:_**
_— the order of the rules matters: the smaller the order number of the rule (the higher it is in the list), the higher its priority. You can change the order of rules with Drag and Drop by dragging the rule with the left mouse button to the desired position;_
_— off – all data packets, both incoming and outgoing, pass through the router._
Packets not covered by any rule can be allowed or denied; they are allowed by default.
Click the **Add** button to create a rule:
It will open the window for adding a rule. The following fields should be filled in:
- **Name** is a user friendly name (not more than 50 characters), which usually briefly describes the purpose of the rule;
- **Action** is an action to be applied that takes one of two values: Allow or Deny. Allow means that the data packets are allowed to be sent, Deny means that the data packets are not allowed to be sent;
- **Source/Destination** — specify the server IP address or one of the values: IP address, CIDR, IP address range, any, internal and external;
- **SourcePort/DestinationPort** — when selecting TCP, UDP or TCP and UDP, you can specify either a port or a range of ports or ‘any’;
- **Protocol** is a type of protocol. ANY, TCP, UDP, TCP and UDP and ICMP are available.
Click **Save** to create a rule.
In our example, the rule blocks incoming Tcp packets for the address range 10.0.1.2-10.0.1.4:
In order for the rule to take effect, you should save your changes by clicking the **Save** button. You can create several rules and then save them all at once:
After that, the page will look like this:
## Example of rule priority setting
The smaller the order number of the rule (the higher it is in the list), the higher its priority. **For example**, after creating a Deny rule for incoming Tcp packets for a specific address range, let’s create a rule that allows incoming packets to be received on Tcp port 443 from outgoing port 443. Once the changes are saved in this configuration, this port will still be unavailable because the Deny rule has higher priority:
Drag and drop the Allow rule to the first place using the left mouse button to change the priority of the rules, then save the changes:
The order numbers of the rules will be changed after they are saved, and their priority will also be changed:
Now the firewall configuration allows Tcp packets to be passed through Tcp port 443 to the network on a certain range of addresses, other Tcp packets will not pass through. All other packets that are not covered by the rules will pass into the network.
https://serverspace.us/support/help/configuring-vpn-in-the-control-panel.mdThe instruction describes the procedure for creating a VPN (Virtual Private Network) tunnel between networks in the control panel Serverspace.
The instruction describes the procedure for creating a VPN tunnel between networks in the control panel.
## What is VPN technology?
VPN (Virtual Private Network) is a virtual private network that provides a network connection over a potentially long physical distance. In this respect, VPN is a form of global network. VPN supports file sharing, video conferencing and other similar network services.
VPNs can operate on both public networks, such as the Internet, and private networks. VPN operates via the same hardware infrastructure as existing Internet channels using a method called tunneling. VPN technologies also include various security mechanisms to protect virtual connections.
VPN supports at least three different usage modes:
- client connections for remote Internet access;
- LAN-to-LAN networking;
- controlled intranet access.
In the control panel, you can configure an encrypted connection between remote private networks over a network located in the infrastructure.
## How to create a VPN tunnel
Click the VPN tab of the selected network to create the VPN tunnel. Click the **Add **button to create a tunnel:
Fill in the following fields in the opened window:
Name is a user-friendly and clear name for a VPN connection.
Local Network is an address of the selected network in the control panel; the value is set automatically.
Peer Networks is an address of the remote local network that is used to establish a VPN connection.
Local End Point is a local tunneling point; the value is set automatically.
Peer Ip is the external IP address of the device (Firewall or remote network VPN connector) that you need to communicate with via a VPN tunnel.
Peer Id is usually the external IP address of the device (Firewall or remote network VPN connector) that you need to communicate with via a VPN tunnel.
Peer Id and Peer IP are the same if no NAT device is used on the remote network. If NAT is used, it can be a private IP address.
Encryption protocol — select the type of encryption protocol; AES256, AES-GCM, AES, 3DES are available:
Shared key is an encryption key. The string must be of 32 — 128 characters and contain one upper case letter, one lower case letter and at least one numeric character. We recommend to use public key generators.
MTU is a size of a useful data block of one packet; the available range is from 60 to 9000 bytes.
The PFS checkbox enables you to control the Perfect Forward Secrecy property necessary for some routers.
The VPN checkbox enables you to control the tunnel status. Check the box and save the changes.
The encryption key will probably be needed at the other end of the tunnel. If both sides are set up correctly, the panel will display the OK status.
Note: there are two VPN tunnel connection statuses — OK (green tick) and Critical (red cross). The status is updated when the page is reloaded in the browser. If the page is open, the status is updated every 15 seconds:
If the tunnel is no longer needed, it can be deleted by clicking on the grey cross in the Actions column. This action shall be confirmed.
https://serverspace.us/support/help/delete-a-shared-project.mdThe following instruction describes how to delete a shared project in control panel. What is a shared project and how to create it you can find in our instruction.
The following instruction describes how to delete a shared project in control panel.
What is a _shared project_ and how to create it you can find in our instruction.
## How to delete a project?
On the **"Project Settings"** tab — **"Deletion"** you can delete a shared project.
To delete a project, the following conditions must be met:
- all project resources have been previously deleted;
- previously removed all users, except the last one;
- you should have zero balance, if necessary, the remainder can be transferred to another project, card or current account by contacting technical support:
_Note: to delete the only project, user should contact technical support._
https://serverspace.us/support/help/creating-a-project.mdThe following instruction defines how to create projects in the control panel. Shared project creation is now available for our users.
The following instruction defines how to create projects in the control panel.
## What is it?
_Shared project_ creation is now available for our users. This enables you to collaborate with other users and manage shared resources, such as servers or networks, shared balance, and support cases.
As part of this feature, the user can have no more than one personal project and any number of shared. Resources, balance, and support are now tied to the project, not the user.
A personal project is intended for the individual work of the user, it is impossible to add other participants to it.
All existing users have their current resources combined in a personal project. For most users of the service, there will be no need to work with shared projects. In this case, all the changes in the control panel interface should remain unnoticed for the user.
## Creating a shared project
After registration in the control panel, the user will always create a personal project. To create the first shared project, select the **+ Add project** option in the **Settings** menu located in the upper left corner:
This opens a dialog box where you can:
- optionally, select **Convert an existing personal project to a shared project**. In this case, the personal project is converted to a shared project, which means that all user resources, such as servers, networks, SSL certificates, etc., can be shared with other users. If this option _is not_ selected, in addition to the _personal_ project, which is available only to the user, a shared project will be created;
- enter project name.
A user can choose the logo from the list or upload a custom one. Available extensions — .png, .jpg or .jpeg, size — not more than 1 MB.
Fill the form and click **Create a project**.
_Note: having a personal project, each time you create a new project, you will be asked to convert the personal project to a shared one:_
After creating a new project, new project settings open, the **Project Settings** tab:
To switch between workplaces, use the drop-down window in the horizontal menu at the top of the panel. There will now be an option **+ Add project**:
https://serverspace.us/support/help/dns-basics.mdDomain name hierarchy and delegation. Key types of resource records. Recursive and non-recursive DNS queries. DNS is a distributed system to store and process domain zone information.
## General
This article describes DNS basics.
**Domain Name System (DNS)** is a distributed system to store and process domain zone information. It is mainly used to map IP addresses of network nodes to human-readable names. However, such mapping is not the only DNS function. It also handles different types of resource records and solves a variety of tasks such as redirecting between domain names, load balancing among hosts, and linking certain services (such as mail service) to domains:
DNS is one of modern Internet pillars since knowing IP address of a requested host is critical to receiving a response to any Internet request. However, IP addresses are numerical values like 1.23.45.67, which are not human-readable. In addition, the core principle of IP address assignment in a network is uniqueness. Moreover, IP address is not something permanent: it may change when a host or hosting service provider changes, etc. All the above factors make network navigation by IP addresses complicated for a human.
DNS converts a symbolic name requested by a client to an IP address(es) of a server(s) responsible for this domain zone. At early stage of the Internet, IP address conversion was based on the content of “hosts" file prepared in the centralized manner and automatically distributed to each computer in a network. However, with the Internet growth, the need for a new mechanism arose, and in 1983 Paul Mockapetris developed it – DNS.
**Key DNS features:**
- **Distributed storage and management** – each DNS server must only store information about domains delegated to it, while responsibility for different nodes of the domain name tree rests with different parties.
- **Data caching** – a DNS server can temporarily keep some information about non-delegated domains to reduce overall traffic.
- **Hierarchical structure** – a node responsible for a domain zone can autonomously delegate lower-level nodes to other DNS servers.
- **Backup** – multiple logically and physically isolated DNS servers store and process information about any certain node, thus ensuring information accessibility even if one or more nodes fail.
## Domain name hierarchy and delegation
**Domain** is a named branch in a name tree, including the node itself (for example, ".com" first-level domain) and its subordinate nodes ("example.com" second-level domain, "mail.example.com" third-level domain, etc.). To designate domain name hierarchy, the term level is used, specifying the node position in a tree. The less the level number, the higher the domain position in the tree.
- “.” – a zero-level domain;
- “.us” – a first-level (top-level) domain;
- “example.com” – a second-level domain;
- “mail.example.com” – a third-level domain;
- and so on.
Look at the zero-level domain **“.” (dot)** also called a root domain. In practice, the dot is usually omitted (we type “example.com" instead of “example.com.”); in other words, specifying a root domain is not mandatory for IP address resolution. Most client programs (such as web browsers, etc.) add a zero-level domain automatically without showing it to a user. A domain name without a zero-level domain is called a relative domain name, while the name ending up with a dot is called a **Fully Qualified Domain Name**, or FQDN.
**Domain zone** – a part of a hierarchical domain name tree (for example, “.us”), which is fully transferred for service to a particular DNS server (or, more frequently, to several servers) for subsequent delegation of responsibility for this domain and all subordinate domains (“anyaddress.us”, “any.anyaddress.us”) to another party.
**Delegation** – transfer of responsibility for a specific branch of a domain name tree to another individual or organization. This procedure implements one of the core DNS principles – distributed record storage and request processing. During the delegation process, so-called glue NS records for a delegated child zone (“example.com”), pointing to DNS servers of a party accepting the domain (for example, to DNS servers of our company) are added to resource records of a parent zone (“.us”). Since then, all resource records of the “example.com" second-level domain and all its subdomains (“mail.example.com”, etc.) are stored on DNS servers of this company, with parent zone “.us” storing only NS records pointing to these servers.
**DNS server** – a host storing resource records and processing DNS queries. DNS server can autonomously resolve addresses within the zone it is responsible for (“example.com” in the above example) or redirect requests for "foreign" zones to higher-level servers.
**DNS client** – a set of software tools to interact with DNS. Periodically, the DNS server itself acts as a client.
## Key types of resource records
Resource Record (RR) – an information storage and transmission unit in DNS, which includes the following elements (fields):
- **Name** – name of a domain to which the record relates;
- **Time To Live (TTL)** – maximum permissible time of record storage by a non-responsible server;
- **Type** – a parameter defining the record purpose and format in the data field (Rdata);
- **Class** – a data network type (it is meant that DNS also supports non-TCP/IP networks);
- **Data field length (Rdlen)**;
- **Data field (Rdata)** – field content and format depend on record type.
The most used resource record types are:
- **A (IPv4 Address Record)** – links a domain name with a host IPv4 address;
- **AAAA (IPv6 Address Record)** – links a domain name with a host IPv6 address (similar to the А record);
- **CNAME (Canonical Name Record)** – used for redirecting to another domain name;
- **MX (Mail Exchange)** – refers to a mail server, which serves the domain;
- **NS (Name Server)** – refers to a DNS server responsible for the domain;
- **TXT** – domain text description. It is often required for special tasks (such as domain ownership right confirmation when linking it to mail service);
- **PTR (Point to Reverse)** – links a machine IP address to a domain and is used mainly by third-party mail services to check emails sent through this machine for relation to a domain specified in mail server parameters. If parameters do not match, an email is checked more thoroughly by other criteria.
## Recursive and non-recursive DNS queries
**Recursion** is a model of query processing by a DNS server, when it performs full search of information (including information about domains, which are not delegated to it) and accesses other DNS servers if necessary.
**DNS queries** from a client (server) to a server may be recursive or non-recursive. In the first case, a DNS server that received a query polls all nodes in descending order of zone levels until it receives positive response or information that the requested domain does not exist. In case of a non-recursive query, the server returns positive response if only the queried node is within the domain zone for which this server is responsible. Non-recursion may be due to both query type and prohibition to perform such queries at the level of a DNS server itself:
Caching is another important DNS feature. When, during a recursive query fulfillment, DNS server polls other nodes, it may temporarily cache information contained in responses it receives. In this case, a repeated domain query does not go beyond DNS server’s cache. Maximum permissible caching time is specified in TTL field of a resource record.
https://serverspace.us/support/help/reserve-copying.mdReserve copying is performed once in a 24 hour period to a territorially remote disk array. Storage Depth parameter determines how long reserve copies will be kept.
**Reserve copying** service is available for all virtual servers.
## How it works
Reserve copying is performed once in a 24 hour period to a territorially remote disk array. Storage Depth parameter determines how long reserve copies will be kept (1, 2, 3 or 4 weeks). Copies older than chosen term will be automatically removed.
## How to activate this service
When creating a new server, activation of reserve copying happens with the help of appropriate field and the choice of depth of storing the copies:
For already active server, you might activate the service in the **Backup** server menu:
Also specifying depth of keeping the copies:
## How to recover the server from the reserved copy
To recover the server from the reserved copy go to the **Backup** tab, then click on **Recover from the copy** and choose the method of server recovery: Near or Over the top. In the first case, there will be a server duplicate created. In the second case, on the main server will be recovered chosen copy.
Choose the date for creation of reserved copy, which needs to be recovered.
When recovering Over the top, place a check mark in the additional field. Click on the **Recover** button.
## How to disable the service
For disabling the service, go to the **Backup** tab, then click on **Disable **button:
## Charges and Costs
The price of service is calculated with the following formula:
_Z = G * S * (N / 7)_
G stands for the price of service per 1 gigabyte, S stands for the total amount of all drives on the server, N is for the depth of storing the copies. The information about the current prices can always be found in the **Billing** tab of the ordered server.
The rules for charges:
- the service is charged every 10 minutes;
- the amount charged doesn't depend on the stage of the server (turned on or turned off).
https://serverspace.us/support/help/billing-rules.mdOnce the server is ordered, its cost is being gradually debited from your account on control panel. Such debiting occurs every 10 minutes.
You can calculate the cost of a required virtual server configuration by yourself using our configurator. Once the server is ordered, its cost is being gradually debited from your account on control panel. Such debiting occurs every 10 minutes.
If a virtual server is disabled in the control panel and is in **Off **status, then money shall only be debited for using HDD space and leasing additional licenses.
If your current balance drops below zero, all services will be automatically blocked, and money debiting from the account will stop. After you replenish your account, you will be able to resume using services.
Users that replenished their accounts at least once, will have the opportunity to recover a blocked service within two weeks from such blocking; the service will be automatically deleted upon expiration of this period.
For users that have never replenished their accounts, such service will be deleted on the next day after blocking.
_Note: Our users have the opportunity to use services On Trust for a certain period._
https://serverspace.us/support/help/managing-users-on-ubuntu-and-debian.mdThe instructions describe how to add, remove, and change a password for users of the Ubuntu or Debian operating system.
The instructions describe creating, deleting, and modifying users of the Ubuntu or Debian operating system.
## Initial Debian System Requirements
Many of the commands in this guide require superuser privileges. If the following error appears when using the sudo command:
```
bash: sudo: command not found
```
You need to activate superuser mode, install the sudo command, and add your user to the sudo group:
```bash
su –
apt-get install sudo -y
usermod -aG sudo yourusername
```
## How to add a new user?
Ubuntu and Debian have two command-line tools that you can use to create a new user account: useradd and adduser.
useradd is a low-level utility for adding new users, and adduser is a friendly interactive interface for useradd written in Perl.
To create a new operating system user account named _username_ using the _adduser_ command, run the following command:
```
sudo adduser username
```
As a result, a dialogue appears in which you must enter the password and additional information:
Adding user `username’
Adding new group `username' (1000)
Adding new user `username' (1000) with group `username'
Creating home directory `/home/username'
Copying files from `/etc/skel'
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for username
Enter the new value, or press ENTER for the default
Full Name []: Name
Room Number []: 100
Work Phone []: 123-45-45
Home Phone []:
Other []:
Is the information correct? [Y/n] Y
The command creates the home directory for the new user and copies the files from the /etc/skel directory there.
By default, sudo members are granted sudo access.
If you want the newly created user to have administrator rights, add him to the sudo group:
```
sudo usermod -aG sudo username
```
## How to delete a user?
There are two command-line tools that you can use to delete a user account: userdel and deluser. We recommend using the deluser command, as it is more friendly than the low-level userdel.
To delete a user without deleting user files and directories, do:
```
sudo deluser username
```
If you need to delete the user’s home directory and its contents, use the –remove-home flag:
```
sudo deluser –remove-home username
```
As a result, the following message appears:
Looking for files to backup/remove
Removing files
Removing user `username'
Warning: group `username' has no more members.
Done.
## How to change the user password?
To change your password, use the passwd command with no additional arguments:
```
passwd
```
In the system dialogue, you will need to enter the old password and specify a new one:
Changing password for username.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
To change the password for another user, you must have administrator rights and username:
```
sudo password username
```
https://serverspace.us/about/news/additional-rdp-licenses-on-cloud-servers.mdServerspace clients now have an opportunity to activate additional RDP licenses on Cloud servers on Windows.
Serverspace clients now have an opportunity to activate additional RDP licenses on Cloud servers on Windows. You can activate from 3 to 255 additional licenses for each server. Activation of the license is performed by Serverspace tech support, upon your request from the control panel.
To send a request, go to “Servers”, click on the server name, go to the “Settings” – “Licenses” tab, and click the “Add license” button:
Afterward, you need to select the license type “Terminal Service” and the desired number of licenses. Select the desired date and time of their activation, type in your server login and password, and click “Add license”.
When you are planning to activate the license, make sure, your account balance has a sufficient amount of funds to cover Cloud server operation at least for a week ahead, including the cost of additional licenses.
The cost of 1 additional RDP license is 5.7 euro per month. The minimum number of licenses to order is 3 CALs.
https://serverspace.us/support/help/configuring-the-remote-desktop-gateway-on-windows.mdStep-by-step guide to configure Remote Desktop Gateway on Windows. Enable secure RDP connections, improve remote access, and manage desktops with ease.
We will explain in detail how to configure the Remote Desktop Gateway (RDG) service on a domain on platforms running Windows Server.
## What is RDG
Microsoft offers to use remote access to desktops using the RDP protocol (Remote Desktop Protocol). To create a secure connection, the RDG (Remote Desktop Gateway) service is used. Its feature is that it uses an HTTPS connection. This creates a reliable communication channel that guarantees the user the proper level of protection. Accordingly, there is no need to use third-party services to create a VPN tunnel.
Using the functions of restricting access to network resources, administrators create connections depending on the user’s role in the company. RDG allows connecting not only to one subnet but also to others that are located behind a NAT or firewall. The gateway has a simple and convenient interface with flexible settings. A novice administrator can easily figure out the settings and create the necessary connection templates depending on the internal hierarchy of the company.
## Role configuration
Launch the “Server Manager”, go to the “Add Role” tab on the right side:
Screenshot № 1. Option selection
For example, use the first item:
Screenshot № 2. The choice of installation
Next, the utility will ask you to specify the server for which the role is being issued. Select from the list, click “Next”. In the next step, a list of available server roles will appear. For example, we put "Remote Desktop Service":
Screenshot № 3. We activate the role
After clicking the "Next" button, information about the selected role will be displayed on the screen. We agree and move on to the next step. Now an added feature has appeared in the Role Server section. We go into it and note the options that are necessary for the administrator. For example, activate RDG:
Screenshot № 4. Selection of additional features
The setup wizard checks the selected role and compatibility with the server OS. If you need to install additional components, the workspace automatically opens with the marked components. For RDG to work, web administration services with a full set of software tools must be installed in the operating system:
Screenshot № 5. Select additional components
We recommend that you leave the selected services by default. Click “Next”, confirm the installation.
## Access to resources
After installing the selected role, go to the main window of the Server Manager. Select the "Tools" section and proceed to the RDG setup. A new popup window will open (RD Gateway Manager). In it, go to the tab with the server name, then select “Policies” and configure authorized connections. Press the "Wizard" button to open the setup wizard:
Screenshot № 6. Creating a policy
The installer will offer a choice of 3 points. Leave the first option active:
Screenshot № 7. Configure
Set a name for the new template, click "Next". The next step is to select an authentication method and a list of users who will gain access to the policy. Authorization is allowed with a password or a smart card, or both. Leave only a password. Next, click the “Add Group” button and add data to the field:
Screenshot № 8. The choice of authorization and users
Next, we differentiate access to network resources to which users will connect through the Remote Desktop Gateway:
Screenshot № 9. Selection of resources
Let us leave the first point as an example. Click “Next.” Now you need to set the timeout values for network resources. We put it down depending on the requirements. A window with a customized template will appear on the screen. If the information is correct, go to the next step.
The setup wizard will ask you to specify an authorization policy for network resources. First, we come up with a configuration name. Then we add the user groups that will connect:
Screenshot № 10. Select a group
Now select the resource group:
Screenshot № 11. Select a resource group
The setup wizard will ask you to specify the port number for the connection. If there are no special requirements, we leave by default – 3389. After clicking "Next", information about the created authorization policy will appear on the screen. If everything is correct, we complete the configuration.
## Installing the SSL certificate
For RDG access to be active, you must also create a certificate. In the RDG Manager working window, go to the “Server Name” section. Using the context menu, open the item "View or change certificate properties". In the window that opens, switch to the SSL tab. There are 3 options for creating. Select the item marked in red in the screenshot:
Screenshot № 12. Selection of the method
Now we write the name of the certificate and the path along which it will be stored:
Screenshot № 13. Import
Click "OK" to generate. As a result, manager workspace is as follows:
Screenshot № 14. General information
For increased security, it is recommended that you change the default port for connecting via Remote Desktop Protocol. Open the “Actions” section in the RDG Manager, the “Properties” item. Go to the tab “Transportation properties”. In the field marked in red, change the value:
Screenshot № 15. Changing the port
We confirm the changes, close the window.
## How to connect
Now you need to configure the connection through RDP. Press the key combination Win + R, enter the command mstsc.exe. In the window that opens, click “Options”:
Screenshot № 16. Configuring RDP
In the field marked in red, we write the server address, and through the colon at the end, mark the port number. Click “OK”.
Now go to the “General” tab. Enter the domain name and user name:
Screenshot № 17. Domain and user
The setup wizard will ask you to enter a password for the account name. Enter it. Configuration completed.
https://serverspace.us/support/help/copy-files-and-run-commands-through-ssh.mdLet's find out how to run commands and copy files on a remote server through SSH connection using the Windows and Linux operating systems.
Connecting to the server via SSH is one of the primary means for managing *nix servers. Quite often, it is necessary to upload a file to a remote server or unload it, but there are no other means other than SSH connection. Fortunately, one of the regular functions of this Protocol is to copy files via a secure connection. You can implement it using a **scp** command on Linux systems, or using **pscp.exe**, which is part of the Putty SSH client on the Windows operating system.
## Using the Linux OS
Execute the following commands:
```bash
scp [modifier] [source] [target_directory]
```
If a remote server serves as the source or target directory, execute the following commands:
```
[user]@[server]:[file_path]
```
After running the command, you need to enter the password for the remote server account.
To sum up, you can copy the local file named: /home/user/file.tgz to the root user home directory of the remote server 123.123.123.123 executing the following command:
```bash
scp /home/user/file.tgz root@123.123.123.123:/root
```
To download the same file from a remote server:
```bash
scp root@123.123.123.123:/root/file.tgz /home/user
```
You can copy several files at once. To do this, you must add them as the source. Separate them by a space – the last parameter will be considered as the target directory. For example, to upload file1 files.tgz and file2.tgz from the local directory to the remote server you have to execute the command:
```bash
scp file1.tgz file2.tgz root@123.123.123.123:/root
```
To copy the directory, you will need to use the **–r** command modifier. Copy the local directory /home/user/dir to the remote server:
```bash
scp-r /home/user/dir root@123.123.123.123:/root
```
When the SSH server is running on a non-default port, we need to get the help of the **-P** option. If you need to use port 10022:
```bash
scp-P 10022 /home/user/file.tgz root@123.123.123.123:/root
```
To find out what other modifiers you can use, simply execute **scp** without parameters and read the help.
## Using the Windows OS
When using the Windows operating system and Putty as a client, the command formatting remains the same. However, we will change the name of the executable file. We need to use a syntax for specifying paths to Windows files and directories when mentioning the source or target directories. Run the command line (cmd.exe) or PowerShell, open the directory with the pscp .exe file and enter the command:
```
pscp.exe C: Tempfile.tgz root@123.123.123.123:/root
```
If you run it from another folder, you will need to specify the full path to **pscp.exe**. If any of the paths contain spaces, we need to use double quotes — “file path":
```
"C:Program FilesPuttypscp.exe" C:Tempfile.tgz root@123.123.123.123:/root
```
Simply execute pscp (similarly to scp) without parameters and read the help on the modifiers as well as the command syntax information.
## Running commands on a remote server using the SSH connection
SSH protocol supports both running interactive sessions and regular commands and scripts on a remote server.
### Using the Linux OS
Command syntax:
```bash
ssh [user]@[server] '[command]'
```
Enter the password of the specified user and get the command output in the SSH console, if any.
For example, we can find information about the operating system installed on the remote server:
```bash
ssh root@123.123.123.123 'uname -a'
```
To run multiple commands using a single connection, you can use the ";" character as a separator. Check the network settings and active network connections on the remote server:
```bash
ssh root@123.123.123.123 'ifconfig; netstat -anp tcp'
```
If you need to run a local script file on a remote server: run the command interpreter (in the script execution mode). It can be bash with the-s key and pass the script file to it for the standard input. Take a look at the example below:
```bash
ssh root@123.123.123.123 'bash -s' < /home/user/myscript.sh
```
The local file: /home/user/myscript.sh will be executed on a remote server.
Running the SSH command without parameters allows you to see a brief syntax reference and a list of additional modifiers that allow you to extend the command’s functionality.
### Using the Windows OS
To connect to the remote server, we will use the Putty client with its executable plink.exe. File, if our computer supports Windows. Use the command line (cmd.exe) or PowerShell to work with this file.
To run the command on a remote server, use the following syntax:
```
plink.exe [server] – ssh-l [user] "[command]"
```
Check the network interfaces configuration:
```
plink.exe 123.123.123.123 -ssh-l root "ifconfig"
```
plink.exe allows you to use ";" as a separator to run multiple commands, likewise the SSH command in Linux:
```
plink.exe 123.123.123.123 -ssh-l root "ifconfig; netstat-anp tcp"
```
You can run commands from a local file using an additional key **-m**:
```
plink.exe 123.123.123.123 -ssh-l root-m "C:Tempmyscript.sh"
```
By running the plink.exe command without parameters, you can find a brief syntax reference and a list of additional command modifiers.
https://serverspace.us/support/help/how-to-connect-host-or-domain.mdIf you need to connect host or domain to a monitoring service, select Monitoring in the pull-down menu of the control panel - and then follow our tutorial.
To connect a host or domain to a monitoring service, select **Monitoring** in the pull-down menu of the control panel. In the window that opens, click the **Add Host** button to add a server or domain for monitoring:
- Enter an **IP address of a machine or a domain name **you want to track. You can choose any host you like, not necessarily rented in our service.
- Select **Validation rule** in the drop-down list, for example, PING.
- Specify the **Response time** – the time during which the response is expected. If no response is received during this time, we consider the host/domain as unavailable.
- Indicate **Frequency of requests** – the time after which it is necessary to run an availability check again.
- Select **Check Points** – geographical objects whose data center will be sending requests. A point can be either one or several. By default, all available points are selected.
Next, fill out the condition to check availability:
If necessary, you can enable e-mail notifications to learn about host status updates – check the corresponding box.
After filling in the condition, click the **Add** button:
You will see a newly created monitoring host in the list. You can check its status and the timestamp of the last scan. You can update the status using the circular arrow. You can also turn off host monitoring using the toggle switch, for example, during scheduled work.
To change verification conditions, go to the host settings and left-click on the IP-address or domain name. When making changes, be sure to save them:
## Host status
Our service uses the following values for host status. The value of the host status depends on the verification condition and metrics status:
| | Host |
| --- | --- |
| | The host is available, the validation condition is running, and all metrics are responding |
| | The host is unavailable, the verification condition is not running, the metrics may either respond or not respond |
| | The host is available, the verification condition is running, but some metrics are not responding |
## Deleting a host
To delete the host, confirm your action on the **Delete** tab, and click the **Delete** button:
https://serverspace.us/support/help/managing-project-participants.mdInstructions for managing project participants and their roles in the control panel: common information, how to add and delete a user.
Instructions for managing project participants and their roles in the control panel.
## What is it?
In the control panel, you can add participants with different roles to the project. A role is a set of access rights to project services. The following role types are currently available: owner, administrator and accountant.
The available user actions are described in the following table:
| Services | Role | | | |
| --- | --- | --- | --- | --- |
| Owner | Administrator | Accountant | | |
| VPS vStack | + | + | – | |
| IaaS vmware | + | + | – | |
| Storage | + | + | – | |
| DNS | + | + | – | |
| SSL | + | + | – | |
| Monitoring | + | + | – | |
| For Partners | + | + | + | |
| Billing | + | + | + | |
| Support | + | + | + | |
| Legal entities configuration | + | + | + | |
| SSH configuration | + | + | – | |
| Users | Adding a new user | + | – | – |
| View a list of users and roles | + | + | + | |
| Changing roles | + | – | – | |
| Remove user from team | + | – | – | |
| Remove yourself from the team | + | + | + | |
| Ability to create an "Owner" role | + | – | – | |
| Ability to transfer the "Owner" role | + | – | – | |
| Ability to remove the "Owner" role | + | – | – | |
| Project | View | + | + | + |
| Editing | + | + | – | |
| Removal | + | – | – | |
## Adding a user
To add a user, go to project **"Settings"** — project **"Details"** and click **+ Add**:
Enter the participant’s email and select his role. If the information is correct, click the green checkmark:
As a result, an email with an activation link will be sent to the specified email address. Until the user accepts the invitation by clicking on the activation link, his status will be **Awaiting confirmation:**
If the user is not yet registered in the control panel, in case of acceptance of the invitation, the registration procedure will be carried out automatically.
Invitational link to the project is valid for 3 days. When you click on an outdated link, an informational page about the link invalidity will be shown.
Using the **Resend** button, you can send the user a second invitation to the project with a new activation link. In this case, the old link will be invalid.
If the user is already registered in our control panel, then after the invitation to the project in his control panel, a new project will appear in the list of available projects:
_Note: if a user does not already have any shared project and he uses the old control panel interface, he can accept the invitation only by using the link sent to the registration email._
As a result, the user’s status changes to **Attached**:
You can use the drop-down list in the **Role** column to change the user’s role.
## Deleting a user
To remove a user from the project, click on the **Bucket**:
_Important: you cannot remove the last owner from a shared project._
https://serverspace.us/support/help/connecting-metrics-to-monitoring.mdHow to connect various metrics for a host to monitoring service. Metric status. Viewing monitoring history. If necessary, you can enable e-mail notifications.
As part of a **Monitoring** service, you can track various metrics for a host. You need to connect the host or domain first and then click **Create metric** on the **Metrics** tab:
Once a new window is opened, enter the name of the metric, select the desired protocol and, if necessary, fill in additional fields. You can leave the **Expected answer** field blank, in this case, any received answer will be considered as expected, you can also enter the required specific code here. All metrics retain host checkpoints. If necessary, you can enable e-mail notifications to learn about metric status updates – check the corresponding box. Click **Create **button:
A newly created metric, its status, type and timestamp of the last check are displayed in the list of metrics. To delete the metric, click on the cross on the right.
_Important: when you delete the metric, its entire history will be deleted:_
## Metric status
Our service uses the following values for metric status:
| | Metrics |
| --- | --- |
| | Metric is responding |
| | Metric is not responding |
## Viewing monitoring history
To view the history of metrics and host availability, click the **History** tab. You will see the status of the request, type, time stamp, and checkpoint displayed in chronological order. If necessary, you can filter this list by the required criteria:
_Note: the type of test that is marked as **Host** is a host availability condition check._
https://serverspace.us/support/help/how-to-create-routed-network.mdThis guideline describes how to create and configure a routed network in the control panel. A routed network is a private network that is already connected to a router with a public interface.
This guideline describes how to create and configure a routed network in the control panel.
## What is routed network?
A routed network is a private network that is already connected to a router with a public interface. This type of network allows all virtual servers to access the Internet via a router and receive inbound connections using NAT.
The cost of the network is composed of 1 external router IP address and the width of the communication channel.
## How to create a routed network?
To create a network, open a pull-down menu on the left, select **Networks** and click the **Add network** button:
Select the type as **Routed**. Select the data center in which the network will be created. If necessary, specify the use of DHCP – in this case, the network settings will be obtained automatically. Next, use the slider to specify the required width of the communication channel.
Then enter the network address in CIDR format. The address you have entered must belong to one of the indicated ranges: 10.0.0.0 – 10.255.255.0, 100.64.0.0 – 100.127.255.0, 172.16.0.0 – 172.31.255.0, 192.168.0.0 – 192.168.255.0.
In the last step, enter a name and click **Create network:**
To connect the server to the network, switch the **Connect** toggle switch to the active state and click **Save**. It is possible to connect only servers located in the data center in which this network is located. When connecting to the network, another network adapter will be added to your virtual server. This network adapter must be configured at the operating system level:
To configure a firewall for a routed network, go to the **Firewall** tab.
To configure VPN tunneling go to the **VPN** tab.
To create address translation rules go to the **NAT** tab.
To delete a network, in the **Delete** tab, confirm the removal and click the corresponding button. You can also remove a network from the list of networks by clicking on the cross.
https://serverspace.us/support/help/configuring-network-adapter-in-freebsd.mdLearn how to configure a network adapter in FreeBSD. This guide helps set up network interfaces and connect your virtual server running on FreeBSD.
This guide explains how to configure network interfaces and connect a virtual server running the FreeBSD operating system.
## Configuring Interface
To display the configuration for the network interfaces on your system, enter the following command:
```
ifconfig
```
```
**vmx0:**
flags=8843 metric 0 mtu 1500
options=60039b
ether 00:50:56:02:0a:65
inet 45.XXX.XXX.XXX netmask 0xffffff00 broadcast 45.XXX.XXX.255
media: Ethernet autoselect
status: active
nd6 options=29
**vmx1:**
flags=8802 metric 0 mtu 1500
options=60039b
ether 00:50:56:02:0c:98
media: Ethernet autoselect
status: active
nd6 options=29
**lo0:**
flags=8049 metric 0 mtu 16384
options=680003
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
inet 127.0.0.1 netmask 0xff000000
groups: lo
nd6 options=21
```
The output of the command shows, that the vmx0 interface is configured and ready (), which means that you need to configure the em0 interface to work on a private network.
_Note: The lo0 interface: The loopback device._
All following actions are performed in superuser mode.
## Configuring a network connection without DHCP
Use a text editor such as vi to open the file /etc/rc.conf:
```
vi /etc/rc.conf
```
Add the command line with correct parameters:
```
ifconfig_="inet netmask "
```
For example:
```
ifconfig_em0="inet 10.0.1.2 netmask 255.255.255.0″
```
The local IP value can be found in the control panel, **Networks** section:
Sample of the file contents: /etc/rc.conf.
```
clear_tmp_enable="YES"
sshd_enable="YES"
ntpd_enable="YES"
powerd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"
zfs_enable="YES"
hostname="freebsd12″
ifconfig_vmx0="inet 45.XXX.XXX.XXX netmask 255.255.255.0″
ifconfig_em0="inet 10.0.1.2 netmask 255.255.255.0″
defaultrouter="45.XXX.XXX.1″
```
After making changes to the file, be sure to reboot the server using the OS to apply the new settings.
## Configuring a network connection with DHCP
If the DHCP function has been enabled when creating a network, make sure Obtain an IP address automatically is selected. This can be done using the following command, specifying the interface name:
```
dhclient
```
For example:
```
dhclient vmx1
```
```
DHCPDISCOVER on vmx1 to 255.255.255.255 port 67 interval 7
DHCPOFFER from 10.0.1.1
DHCPREQUEST on vmx1 to 255.255.255.255 port 67
DHCPACK from 10.0.1.1
bound to 10.0.1.2 — renewal in 3600 seconds.
```
## Conclusion
Configuring a network interface in FreeBSD is a critical step when setting up a virtual server. This guide demonstrated how to inspect network adapters using ifconfig, and how to configure them either statically via /etc/rc.conf or dynamically using DHCP with dhclient. By correctly assigning IP addresses and netmasks, you ensure that your FreeBSD server is accessible within both public and private networks.
Whether you’re deploying a VPS, setting up internal infrastructure, or configuring routing, understanding how FreeBSD handles network interfaces gives you greater control over system behavior, connectivity, and overall performance. After completing these steps, your server should be fully network-ready and properly integrated into your environment.
## FAQ
- **How do I check available network interfaces in FreeBSD?**
Use the ifconfig command. It lists all available interfaces along with their current status and configuration.
- **What is the purpose of the lo0 interface?**
lo0 is the loopback interface. It’s used for internal communication within the system (localhost/127.0.0.1).
- **When should I use static IP vs DHCP in FreeBSD?**
Use a static IP when you need a persistent address for server accessibility. DHCP is useful in dynamic or cloud environments where IP addresses are managed automatically.
- **Where do I configure a static IP in FreeBSD?**
Edit the /etc/rc.conf file and add a line like:
```
ifconfig_em0="inet 10.0.1.2 netmask 255.255.255.0″
```
- **How can I apply network changes after editing rc.conf?**
Reboot the server or restart networking services to apply the changes.
- **What if dhclient doesn’t obtain an IP address?**
Ensure that DHCP is enabled on the corresponding network and that the correct interface name is specified.
https://serverspace.us/support/help/how-to-install-and-use-the-google-authenticator-application.mdGoogle Authenticator provides two-factor authentication (2FA). To install the application on the Android or iOS operational system, you can use our instruction.
Google Authenticator provides two-factor authentication (2FA). 2FA is an additional level of protection that is used for confirmation of users that are trying to receive an access to online account. At first, the user enters his login and password, then, instead of immediately receiving an access, he must provide additional information, such as:
- additional information (personal identification number (PIN), password, answers to "secret questions" or specific sequence of keystrokes);
- confirmation of ownership (usually, it's something that user owns, such as credit card, smart phone, or small hardware token);
- biometrical data (this category is a little bit more advanced and might include biometrical finger print, scanning of diaphragm or voice print).
This way, even if you have your password or telephone stolen, it's not likely that someone else besides you will be able to access your information.
## Installation of Google Authenticator on Android
To install the application on the Android operational system, you must simple download it from the GooglePlay store:
After installation, click on **Begin**, on the first page:
If you wish, you can set up 2FA on your Google account. If you don't need it, click on the **Skip**:
Now you can add the account. There are two ways to do it: scan the barcode or enter the key. The most convenient is scanning. In front of you will open up a camera. In the selected square you must enter the QR-code, which will be recognized automatically and the account will be added immediately:
## Installation of Google Authenticator on iOS
To install the installation on the iOS operational system, you must download it at AppStore:
After installation, open the application and click on the **Begin the set up**.
You can start to add the account. There are two ways to do it: scan the barcode and enter the key. The most convenient is scanning. In front of you will open up a camera. In the selected square you must enter the QR-code, which will be recognized automatically and the account will be added immediately:
## Installation of Google Authenticator on Windows Phone
The use of authentication on Windows Phone is only possible due to Google-compatible apps such as Authenticator+. The Microsoft also has its own application called Microsoft Authenticator.
Let's consider installing the Authenticator+ application. To do that, you must download it from the Microsoft application store:
After the installation you can open up the application and start adding the account. There are two ways to do it: scan the barcode and enter the key. The most convenient is scanning. In front of you will open up a camera. In the selected square you must enter the QR-code, which will be recognized automatically and the account will be added immediately:
## Installation of Google Authenticator in Google Chrome
The use of authenticator on the computer is possible only due to compatible applications. For example, it's [Authenticator for Windows](https://www.microsoft.com/ru-ru/p/microsoft-authenticator/9nblgggzmcj6?activetab=pivot%3Aoverviewtab), Nox App Player and [WinAuth emulator](https://winauth.github.io/winauth/index.html), on Linux [google-authenticator-libpam](https://github.com/google/google-authenticator-libpam) is available.
The instruction provides the most convenient method — connection of extension in Chrome web-browser.
To install the extension, open up the Chrome internet store and find the [Authenticator](https://chrome.google.com/webstore/detail/authenticator/bhghoamapcdpbohphigoooaddinpkbai) application:
After that, you will be redirected to the developer’s page on Github. Extension will show up on your browser in the upper right corner. To add the account press on the **Pencil**, then press on the **Plus**:
Here, you also have two methods: scan the barcode or enter the key. In the first case it's necessary to make a screen print of part of the monitor with QR-code. In second case, you must enter the secret key manually:
## Use the Google Authenticator application for connection to the control panel
After installing the application on your system, open in the control panel section Profile settings, then Security. On the page, that will open up, choose two-step authentication through the application:
QR-code will open up in front of you. Then, in the Google Authenticator application, choose scanning of the barcode. When the camera opens up, place the barcode in the selected square on the monitor of the application, which will be recognized automatically. In the application, six-digit code will be created, which you must enter:
After you enter it, you will see that two-stage authentication is switched on through the application.
Now, to enter the panel control, you must enter the code from the application:
## Disabling two-level authentication for the entry to control panel
To disable 2-level authentication option in the control panel, go to the **Profile Settings** then click on the **Safety**. To disable it, click on **Disable**:
Confirm your actions:
Now 2FA is disabled.
https://serverspace.us/support/help/configuring-nat-in-the-control-panel.mdDescription of the NAT configuration procedure for routed networks in the control panel. Network Address Translation is the procedure for changing IP addresses and ports in the IP packet header.
Description of the NAT configuration procedure for routed networks in the control panel.
## What is NAT?
Network Address Translation (NAT) is the procedure for changing IP addresses and ports in the IP packet header. The most common use of NAT is to replace the IP address of the internal network with an external IP address, e.g. of a router. When other computers on the Internet try to access computers on the local network, they only see the address of the router. This adds an additional layer of security because the router can be configured as a firewall, allowing only authorized systems to access computers on the local network.
The main purpose of creating NAT is to overcome the lack of IPv4 addresses. Our infrastructure uses _One-to-Many_ NAT, i.e. one router’s external IP address is displayed for multiple local addresses. This is where you can connect large networks to the Internet using only one external IP address.
## Creation of rules
First, you need to create a routed network in the control panel and connect virtual servers to it. Only servers from the same data center can be connected to the same network.
Open the **NAT** tab, when the network is configured. Click the **Add** button:
The user can create two types of rules: SNAT or DNAT.
## SNAT
SNAT (Source) changes the source IP address of the network packet with the data to another IP address.
Use case: masking and concealing local (private) IP addresses of devices to increase privacy and security.
When creating a type rule in the **NAT Type** drop-down list, select **SNAT** and fill in the following fields:
- **Description** is a user-friendly name;
- **OriginalIp** is a local (private) server address (will be converted);
- **TranslatedIp** is an external address of the router in the network; this value is entered automatically and cannot be changed.
You can use the **Enable** check mark to enable or disable a rule:
## DNAT
DNAT (Destination) is used to convert the target IP address of a network packet into a different IP address.
Use case: masking internal IP addresses and replacing them with other IP addresses.
When creating a type rule in the **NAT Type** drop-down list, select **DNAT** and fill in the following fields:
- **Description** is a user-friendly name;
- **OriginalIp** is an external address of the router in the network; this value is entered automatically and cannot be changed;
- **TranslatedIp** is a local (private) server address (will be converted);
- **Protocol** — select the required protocol from the available list of protocols;
- **OriginalPort** is the port of the router which receives data packets;
- **TranslatedPort** — is a port of the local server to be changed.
You can use the **Enable** check mark to enable or disable a rule:
Added rules will appear in the NAT section of the selected network:
## Editing NAT rules
The user can edit previously created NAT rules. Left-click on the rule’s **NAT type** field to edit it:
Save the changes.
Note: You can use the Enable check mark to enable or disable a rule.
## Deleting NAT rules
If the rule becomes irrelevant, it can be deleted. You can delete it using the **Cross** button:
Confirm deleting:
https://serverspace.us/support/help/rdp-connection-problems.mdWhen the connection between a desktop and its host fails, it's time to do some remote desktop troubleshooting. Check our list if a remote desktop is not working.
Make sure that you have carefully connect to Windows Server.
Make sure that you have not accidentally “hooked” a space before or after the password when copying it.
Open control panel and check if the required server is turned on.
Make sure that no domain is specified for the connection.
If you connect to a server from a PC within a corporate network then make sure that port 3389 is unblocked (most often, it is blocked in corporate networks).
If the above steps have failed then click **Start** – **Run** and type **cmd** in a window that opens. In a window that opens, type **ping **:
- If you see “Request timed out”, then you probably have network accessibility problems. Contact your ISP.
- If you see “Reply from IP address: bytes=xx time=xms TTL=xxx”, then steps described in clauses 1-4 of this guideline may help.
https://serverspace.us/support/help/connecting-vyos-server-to-a-network.mdVyOS VDS’s are often used as routers and can handle VPNs of different types and configurations. This guide describes how to configure a VyOS server in private network.
This guide describes how to configure a VyOS server in private network.
VyOS VDS’s are often used as routers and can handle VPNs of different types and configurations.
### Setup
After VPS connection to a LAN in a control panel, connect to the server over ssh and enter VyOS configuration mode:
```
config
```
_[step num=”2″]_
_Note: In normal mode, some utilities are unavailable and command prompt ends up with "$", while in configuration mode it ends up with "#"._
_[step num=”3″]_
Display all available interfaces:
```
show interfaces
```
```
ethernet eth0 {
address XXX.XXX.XXX.XXX /24
duplex auto
hw-id
smp_affinity auto
speed auto
}
ethernet eth1 {
duplex auto
hw-id
smp_affinity auto
speed auto
} loopback lo {
}
```
_[step num=”4″]_
Use set command to set local IP address; if **DHCP option is disabled** for the network, then take an address from a control panel on your VPS settings tab and set it as a value (see figure below):
```
set interfaces ethernet eth1 address /24
```
_[step num=”5″]_
For example:
```
set interfaces ethernet eth1 address 10.0.0.2/24
```
_[step num=”6″]_
If DHCP option is enabled, execute the following command:
```
set interfaces ethernet eth1 address dhcp
```
_[step num=”7″]_
_Note: If an error is returned, try including a current user in a superuser group (for example, usermod -a -G root )._
_[step num=”8″]_
Check modifications:
```
show interfaces
```
```
ethernet eth1 {
+ address /
duplex auto
hw-id 00:50:56:01:1b:9f
smp_affinity auto speed auto
}
loopback lo {
}
```
_[step num=”9″]_
Modified lines are marked with "+".
_[step num=”10″]_
If everything is OK, then commit and save changes:
```
commit
save
```
_[step num=”11″]_
Exit configuration mode:
```
exit
```
_[step num=”12″]_
Check the configured local IP address of VyOS interface:
```
show interfaces
```
```
Codes: S – State, L – Link, u – Up, D – Down, A – Admin Down
**Interface**
———
eth0
eth1
lo
**IP Address**
———-
XXX.XXX.XXX.XXX/24
10.0.0.2/24
127.0.0.1/8
::1/128
**S/L**
—
u/u
u/u
u/u
**Description**
———–
```
Now, you can use the configured machine as a router or other node in a private network.
https://serverspace.us/support/help/connecting-to-a-windows-server.mdGo to an internal control panel and then to a form of the server you have ordered. Click Download RDP file and run the downloaded file.
###
### Step 1
Go to an internal control panel and then to a form of the server you have ordered. Click **Download RDP** file and run the downloaded file:
### Step 2
In a window that opens, check "Don’t ask me again for connections to this computer" box:
### Step 3
In a window that opens, enter the password shown in the **Administrator login** and **password** field on the control panel:
### Step 4
Connection to the server will be established.
https://serverspace.us/support/help/configuring-network-adapter-in-ubuntu-or-debian.mdAfter connecting the server to a private network in the control panel, an additional virtual network adapter will be added to it. And then it must be configured.
This guideline describes how to configure the network adapter by editing the file: /etc /network/interfaces and Netplan.
After connecting the server to a private network in the control panel, an additional virtual network adapter will be added to it. For the proper work of the connected interface, it must be configured.
Connect to a virtual server as superuser and run the command:
```
ifconfig -a
```
A list of connected interfaces will be displayed:
```
**ens160**
Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet addr:xxx.xxx.xxx.xxx Bcast:xxx.xxx.xxx.xxx Mask:255.255.255.0
inet6 addr: yyyy::yyy:yyy:yyyy:yyy/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7011 errors:0 dropped:0 overruns:0 frame:0
TX packets:2862 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6661547 (6.6 MB) TX bytes:234861 (234.8 KB)
```
```
**ens192**
Link encap:Ethernet HWaddr 00:50:56:01:2e:ca
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
```
```
**lo**
Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:160 errors:0 dropped:0 overruns:0 frame:0
TX packets:160 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:11840 (11.8 KB) TX bytes:11840 (11.8 KB)
```
In the network settings, find **MAC** field with the value of **HWaddr** parameter equal to one of those contained in the displayed network interface list. Note the interface name (**ens192** in our case).
_[step num=”6″]_
_Important: before configuring the adapter in the operating system, check the control panel whether the DHCP option is enabled or disabled for your network. You can find this option in the network settings._
## Editing the file: /etc /network /interfaces
_[step num=”7″]_
To change network interface settings, open /etc/network/interfaces file:
```
nano /etc/network/interfaces
```
### DHCP is enabled
_[step num=”8″]_
If DHСP option was enabled during private network creation, then configure Ubuntu/Debian network adapter to obtain network settings automatically:
```
auto ens192
iface ens192 inet dhcp
```
### DHCP is disabled
_[step num=”9″]_
If DHCP is disabled, then configure the interface manually (as in the example below). You may find local address and subnet mask in network settings in control panel:
```
auto ens192
iface ens192 inet static
address 10.0.1.2
netmask 255.255.255.0
```
_[step num=”10″]_
Save changes, exit text editor, and restart network service (ens192 is adapter name, which you have noted):
```
ifdown ens192 && ifup ens192
```
_[step num=”11″]_
To check correctness of network adapter settings, execute ping to a gateway address shown in control panel, such as:
```
ping 10.0.1.1
```
## Netplan
_[step num=”12″]_
To change the network interface settings, open the /etc/netplan/99-netcfg-vmware.yaml file:
```
nano /etc/netplan/99-netcfg-vmware.yaml
```
### DHCP is enabled
_[step num=”13″]_
If the DHCP function has been enabled when creating a private network, go to the Ubuntu/Debian network adapter settings and make sure you select to receive network settings automatically as well as the gateway address:
```
**ens192:**
dhcp4: true
dhcp6: no
addresses: []
gateway4: 10.0.1.1
nameservers:
addresses:
– 10.0.1.1
```
### DHCP is disabled
_[step num=”14″]_
If the DHCP function has been disabled, then specify the interface parameters manually, as shown in the example below. The local address of the subnet mask can be found in the network settings in the control panel:
```
**ens192:**
dhcp4: no
dhcp6: no
addresses:
– 10.0.1.2/24
gateway4: 10.0.1.1
nameservers:
addresses:
– 10.0.1.1
```
_[step num=”15″]_
After you save the changes and exit the editor, you need to verify the interface configuration and then reboot the network services:
```
sudo netplan generate
sudo netplan apply
```
https://serverspace.us/support/help/increasing-disk-space-in-freebsd-11-12.mdAfter disk size is increased on control panel, make it usable by OS. Run terminal as root and enter the following commands. Read more.
After disk size is increased on control panel, make it usable by OS.
Run terminal as root and enter the following commands.
Restore partition table:
```
gpart recover da0
```
The command output may look like this:
- Option 1:
```
da0 recovering is not needed
```
Then restart server and begin with the first step of the guide. To restart the server, run the following command:
```
shutdown -r now
```
- Option 2:
```
da0 recovered
```
Then proceed with this guide.
Create new partition:
```
gpart add -t freebsd-zfs -a 4k da0
```
The command will display the exact number of the partition that has been added. Note this number. From now on, let’s mark partition number with (##) symbols:
```
da0p(##) added
```
Add the new partition to zroot: pool, where (##) is the number of the partition created:
```
zpool add zroot da0p(##)
```
To view partition information:
```
gpart show -p
```
Done.
https://serverspace.us/support/help/connecting-to-a-linux-server.mdLearn how to connect to a Linux server via SSH from Windows, macOS, or another Linux system. This step-by-step guide is perfect for beginners and system administrators looking for a quick and secure remote access method.
This comprehensive guide elucidates the methodology for establishing a secure and reliable connection to a Linux server. It delves into the intricacies of the SSH protocol, detailing its implementation and best practices for ensuring data integrity and confidentiality. Furthermore, the guide covers essential configuration steps for both client and server, including firewall adjustments and public key authentication, to optimize security and usability.
### Step 1
To use ssh connection you need to download PuTTY app from an official website and use it to connect to a Linux server:
PuTTY is a terminal application that have many of protocols, also SSH for remote Linux communication!
### Step 2
Run PuTTY. In a window that opens, fill **HostName (or IP address)** field with a value shown in **IP address** field of the control panel, and leave all other parameters unchanged. Click **Open**:
### Step 3
At the first launch, you will be prompted to cache a server link. Click **Yes**:
### Step 4
Then, input Linux server username and password shown in **Administrator login** and **Administrator password** field.
_[step num=”5″]_
_Note: When entering a password, you will not see it:_
_[step num=”6″]_
If you have entered correct data, you will see a successful login message. This way communication with server also applied to various of distributives like Ubuntu ssh, Debian ssh, Kali Linux ssh and etc.
https://serverspace.us/support/help/configuring-network-adapter-in-windows.mdConfiguring network interface after the server is connected to a network in Windows. Connect to a virtual server over RDP and then right-click Network Connection Settings.
Configuring network interface after the server is connected to a network in Windows.
### Step 1
Connect to a virtual server over RDP and then right-click **Network Connection Settings** in bottom right corner of Windows desktop to open **Network and Sharing Center**:
In a window that opens, select the required interface, which has no network access:
An interface status window will open. To make sure that the required interface is selected, click **Details**:
Compare the value in **Physical Address** field with the value in **MAC** field on control panel:
### Step 2
If **DHСP option** was enabled during network creation on a panel, then Windows network adapter will be configured automatically. Check whether the option is enabled or disabled in network properties on control panel:
### Step 3
If DHСP option was NOT enabled during network creation in a panel, then you must perform configuration manually. Open adapter properties by clicking **Properties**:
Select **IPv4** connection and click **Properties**:
In a window that opens, enter the assigned address in **IP address** field and enter subnet mask in **Subnet mask** field. You may view all values on the panel in the server settings (Networks section) or in Network menu:
Save your changes.
### Step 4
To check network adapter configuration, execute ping to a default gateway IP address, such as:
```
ping 10.0.1.1
```
Note: Checking in Windows Server 2016 requires pinging another local server:
https://serverspace.us/support/help/adding-disk-space-after-extension-in-windows-server-2008-r2.mdLearn how to extend disk space in Windows Server 2008 R2 after adding a new volume via your hosting panel. Step-by-step instructions to make the space usable.
After disk space is added to a server in a hosting or virtualization panel, you still need to configure the operating system to recognize and use this additional space. In Windows Server 2008 R2, simply adding storage doesn't automatically increase the available space on your drives — you must manually extend the existing volume or create a new one. This step is essential for ensuring your applications have enough room to store data, log files, backups, or to prevent system instability due to low disk space. Follow the steps below to properly extend your disk and make the new space usable.
Open **Computer Management** by following these steps:
Click **Start**, go to **Administrative Tools**, and then select **Computer Management**.
Open “**Disk Management**“.
In the left panel, select “**Disk Management**” in Storage folder. Press F5 to refresh the window and see the unallocated area. In the bottom right panel, you will see an Unallocated space (40 GB in the below example):
Click “**Extend Volume**“.
Select a volume to be extended and right-click on it. In a menu that opens, select “**Extend Volume**“:
“**Extend Volume Wizard**” will open:
Select the size of the unallocated space you want to allocate (in most cases, you should select all available space). Click “**Next**“:
Done. Verify that no unallocated space is shown in “**Computer Manager**“:
and that Computer window displays the updated disk size:
https://serverspace.us/support/help/active-directory-group-policies.mdWindows group policies are an integral part of Windows system administration. Let's look at examples of working with this tool on VDS running the Windows Server OS family.
Windows group policies are an integral part of Windows system administration. Let’s look at examples of working with this tool on VDS running the Windows Server OS family.
## Why group policies are needed
In simple terms, Group policy is an Active Directory architecture tool that allows managing the settings of servers and work terminals connected to a domain centrally. Also, using group policies, it's easy enough to distribute the software. The administrator can specify the policies for the group in one place, and then apply them to the target user group.
In many companies, as a rule, the division into departments is used: the human resources department, accounting, lawyers, system administration department. Suppose that each department needs its own minimum set of software, and workstations must be configured for specific needs and for specific tasks. Thanks to group policies, it is possible to create settings for specific user groups in the domain. Using the Active Directory GPO, an administrator can set up and manage standardized sets of settings, specifically for accounting or human resources.
Setting up workstations (computers and users) is easier and more effective because they are located by the fact that they are located centrally and require duplication on each PC.
## GPO Components
There are two components of group policies – client and server, i.e. a "client-server" structure is being formed.
The server component is the Microsoft Management Console (MMC) snap-in, designed to configure group policy. MMC can be used to create policies, as well as to control and manage administrative templates, security settings (software installation, scripts, etc.). The generic name for "features" is called an extension. Each extension can have a child extension that allows adding new or removing old components, as well as updating them.
The client component receives and applies group policy settings. Client extensions are components that run on the client OS that is responsible for interpreting and processing group policy objects.
To administer a GPO, use the MMC snap-ins – Group Policy Management Console (GPMC) and Group Policy Management Editor.
Active Directory GPO usage scenarios:
- Centralized configuration of the Microsoft Office software package.
- Centralized configuration of computer power management.
- Setting up web browsers and printers.
- Installing and updating SOFTWARE.
- Apply specific rules based on the user’s location.
- Centralized security settings.
- Directory redirection within the domain.
- Setting access rights to applications and system programs.
## Group policy management snap-in
First, install the Active Directory Domain Service (AD DS) server role on the domain controller. After that, the Group Policy Management snap-in will be available, to launch it, call the "Run" window (Windows + R). In the window that opens, enter the command:
```
gpmc.msc
```
Click "**OK**".
Perhaps the snap will not be able to open because has not been installed previously. Fix this.
- Open the server manager and select the installation of roles and components.
- At the stage of choosing the type of installation, note the parameter "**Installing roles and components**". Click on the button "**Next**".
- Since the installation is performed for the current server, click "**Next**".
- We skip the installation of server roles by clicking on the button "**Next**".
- At the stage of component selection, check the box "**Group policy management**". Click on the button "**Next**".
We complete the installation of components as usual.
## Creating group policy objects
Adding a new group policy object. On the left side, follow the path:** Forest → Domains → → Group policy objects**.
In the right part of the window, right-click in an empty place. In the context menu that opens, select "**Create**".
In the window that opens, enter the name of the new policy. Click " OK ".
The added object will appear in the general list.
## Configure the created object
To configure a new object, right-click on it. In the context menu, select "**Change**".
The group policy management editor window opens. Let’s do a "useful" thing – delete the folder with standard games from the Start menu. To do this, in the menu on the left, we will follow the path User Configuration → Policies → Administrative Templates: Policy definitions (ADMX files) were received from the local computer → Start menu and taskbar.
In the right part of the window, we find the option “Remove the link” Games “from the” Start “menu.” For ease of search, you can use sorting by name, at the top of the window.
Right-click on this parameter and select "**Change**".
In the window that opens, change the state to "**Enabled**". In the comment field, we recommend not to ignore it. To complete the setting, click "**OK**".
Creation of objects can be considered finished.
## Search for objects
In enterprise environments, a large number of GPO objects are usually created. It would be nice to be able to find the desired object. The console has this functionality. To do this, right-click on the forest in the left part of the window. In the menu that opens, select "Find "
In the window that opens, select in which domain to search. You can search for all domains, but this can take a long time.
Let’s try to find the object created earlier.
In the "Search element" field, from the drop-down list, select "Group policy object name". In the condition, we leave the option “Contains”. In ” Value", specify the name of the previously created policy. It is for this reason, you should create clear policy names. Click the "Add" button.
Search criteria specified. Click the “Find” button and view the search results.
## Deleting a group policy object
If the GPO object is no longer needed, it is better to delete it. We click on the created object with the right mouse button, select "**Delete**" in the context menu. If you are confident in your decision, you answer "**Yes**" to the confirmation question.
https://serverspace.us/support/help/installing-icinga-2-on-debian-9.mdThis guide shows how to install and configure the Icinga 2 network infrastructure monitoring tool in Debian 9.
This guide shows how to install and configure the Icinga 2 network infrastructure monitoring tool in Debian 9.
## **What is Icinga 2?**
Icinga is an open source monitoring application that you can use to monitor critical services and systems on your virtual server. Icinga 2 can monitor hosts on the network or check external network protocols, such as the status of the HTTP server, mail server, file-sharing services and others.
Icinga 2 can be configured to monitor the status of internal systems, to check the load, memory, free disk space or other internal host parameters. Icinga can also be configured to send notifications and alerts via email or SMS to system administrators specified in contacts.
**Initial requirements**
Many of the commands in this guide require superuser privileges. If a bash: sudo: command is not found when using the sudo command, you need to activate the superuser mode, set the sudo command, and add your user to the sudo group:
```bash
su –
apt-get install sudo -y
usermod -aG sudo yourusername
```
The LAMP stack must be installed on the virtual server.
Update local repositories and packages:
```bash
sudo apt-get update && sudo apt-get upgrade
```
**Using OPCache to increase download speed**
To increase the loading speed of your application using the OPCache plugin available in PHP 7, add the following OPCache parameters to the end of the PHP configuration file:
```
vi /etc/php/7.0/apache2/php.ini
```
Insert the following lines:
```
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
```
Restart Apache for the changes to take effect:
```bash
systemctl restart apache2
```
**Database settings**
Install the DBMS required by the Racing 2 web application for monitoring, and the Icinga Web 2 interface for storing users, contacts, and other collected data. Run the following command to install the MariaDB database and PHP module required to access the MySQL database in Debian 9:
```bash
apt install php7.0-mysql mariadb-server mariadb-client
```
Log in to the MySQL console and protect the MariaDB superuser account:
```bash
mysql -h localhost
```
```
use mysql;
```
```sql
update user set plugin=" where user='root';
```
```
flush privileges;
```
```
exit
```
Next, run the MySQL security script:
```
sudo mysql_secure_installation
```
Log into the database console and create the database for Icinga 2:
```bash
mysql -p
```
Create a user with a strong password to manage the Icinga 2 application database by entering the commands below. In this example, replace icingadb, icinga-user, and strongpassword with your database name and credentials:
```sql
create database icingadb;
grant all privileges on icingadb.* to 'icinga_user'@'localhost' identified by 'strongpassword';
flush privileges;
```
Create a second MySQL database used by Icinga 2 Web to store users and groups. As in the previous step, replace the database name and credentials. You can use the same MySQL user account to manage both databases simultaneously (icinga_user’@’localhost):
```sql
create database icinga_users;
grant all privileges on icinga_users.* to 'icinga_user'@'localhost' identified by 'strongpassword';
exit
```
**Installing Icinga 2**
Install Icinga 2 and the Icinga 2 MySQL module to access the MariaDB database:
```bash
apt install icinga2 icinga2-ido-mysql
```
During installation, the question arises of using the MySQL module. Choose Yes on the command line:
After installing Icinga 2, start the Icinga 2 service and check the status of the daemon:
```bash
systemctl start icinga2.service
```
```bash
systemctl status icinga2.service
```
**Installing the Icinga 2 Web Interface**
To control Icinga 2 through the web interface, install the Icinga 2 web interface and command line interface (CLI) packages:
```bash
apt install icingaweb2 icingacli
```
Restart the Icinga 2 daemon and check its status:
```bash
systemctl restart icinga2.service
```
```bash
systemctl status icinga2.service
```
An Icinga 2 database is required to install the MySQL schema:
```bash
mysql -u root icingadb -p < /usr/share/icinga2-ido-mysql/schema/mysql.sql
```
Open the Icinga 2 MySQL IDO configuration file:
```
vi /etc/icinga2/features-enabled/ido-mysql.conf
```
Add the Icinga 2 database credentials as shown in the example below. Use the credentials of the first database you created in the previous step in creating the database:
```
library "db_ido_mysql"
object IdoMysqlConnection "ido-mysql" {
user = "icinga_user",
password = "strongpassword",
host = "localhost",
database = "icingadb"
}
```
Save the file and restart the Icinga 2 daemon:
```bash
systemctl restart icinga2.service
```
Create the Icinga Web 2 log directory and add the appropriate file system permissions to grant group write permissions:
```
mkdir -p /var/log/icingaweb2/
```
```
chgrp -R icingaweb2 /var/log/icingaweb2/
```
```bash
chmod -R 775 /var/log/icingaweb2/
```
**Configure Icinga 2 through the web interface**
Generate the installation token. Store it in an easily accessible place. You will need to use it to access Icinga 2 setup:
```
icingacli setup token create
```
The output of this command should be something like this:
```
The newly generated setup token is: c0f22932e763ac41
```
Note: To show the generated token, if you forgot it, you can use the command:
```
icingacli setup token show
```
Open the HTTP port to connect to the web interface:
```
iptables -A INPUT -p tcp –dport 80 -j ACCEPT
```
Open your browser and go to http://exampleIP/icingaweb2/setup. Replace example IP with the IP address of your virtual server. At the first stage of installation, add the token created earlier:
On the next screen, check the Doc and Monitoring modules and click Next to continue:
Icinga 2 will check your system requirements and PHP modules to ensure that all requirements are met before continuing with the installation and configuration process. If some modules are missing, they must be re-installed.
Scroll down to the bottom of the page and click Next to continue:
For the authentication type, select** database**:
Use the information from the second database you created earlier to add the credentials needed to access the Icinga 2 database to store users and groups.
Use icingaweb_db as the name for this resource.
Host and Port parameters must be localhost and 3306, respectively. Do not enable persistent and SSL options. Click the Validate configuration button to confirm the database. After successfully checking the database, click Next to go to the next step in the Icinga 2 configuration process:
Define a name for the authentication database and click Next:
Add a username with a strong password to log in to Icinga 2 web interface and click Next:
Next, configure the application and configure error logging using the following parameters:
- Check Show Stacktraces;
- Storage Type = Database;
- Logging Type = File;
- Logging Level = Error;
- File path = /var/log/icingaweb2/icingaweb2.log
View the information report and, if there are no errors, click Next to continue:
In the next window, click Next to continue:
Add a name for Icinga 2 Backend, select IDO as Backend Type and click Next:
Add database credentials to configure the IDO resource environment. After adding, click the Validate Configuration button to check the Icinga monitoring IDO resource.
After the message Successfully validated appears, click Next:
Configure the transport module using the following parameters:
```
Transport Name = icinga2
Transport Type = Local Command File
Command File = /var/run/icinga2/cmd/icinga2.cmd
```
Set the monitoring security environment variables (you can leave the default values):
The next screen shows a detailed report of the current configuration. Check the configuration and click Finish to complete the installation process:
After the installation and configuration process is completed, a message appears stating that Icinga Web 2 has been successfully configured:
Log in to the Icinga 2 panel at http://exampleIP/icingaweb2/authentication/login:
You will be redirected to the Icinga Web 2 control panel, where you will see the services and resources of the virtual server that are currently monitored by Icinga 2:
You have successfully installed and configured the Icinga 2 monitoring application and the Icinga Web 2 interface in Debian 9.
https://serverspace.us/support/help/installing-git-on-windows.mdGit version control system is useful not only for programmers but also for system administrators. Consider the process of installing software, as well as setting up a connection to the GitHub repository, on a server running Windows.
Git version control system is useful not only for programmers but also for system administrators. Consider the process of installing software, as well as setting up a connection to the GitHub repository, on a server running Windows.
A bit of theory.
Git is one of the most popular modern version control systems. It is mainly used by software developers to track changes in software products during their development. Initially, Git was created to help develop the Linux kernel, but because of its advantages, the project went to the masses.
Getting to the installation.
We open the official website[of the project](https://git-scm.com/download/win), click on the 64-bit version for Windows.
The download will start automatically, wait for it to finish. Run the resulting file.
The installer welcomes us with a license agreement. Click on the "Next" button.
In the next step, specify the installation path. We are satisfied with the specified default. Click "Next.”
At the stage of selecting components, tick off the creation of the Git shortcut on the desktop and proceed to the next stage.
Now the installation program offers to create a shortcut in the Start menu. If you do not see the need for this, install the corresponding checkbox. Click on the "Next" button.
In the next step, the installer will prompt you to select the default editor for git. For beginners, it is better to use nano, for those who like more complicated things – Vim. Although Notepad ++ and others are allowed. Go to the next step.
Now the installer asks how you are going to use the command line:
- Use Git from Git Bash only – use only from the Bash command line.
- Use Git from the Windows Command Prompt – use the Bash command line, as well as the minimum set of Git commands from the Windows command line.
- Use Git and optional Unix tools from the Windows Command Prompt – Use Git and Unix utilities from the Windows command line. Selecting this option will overwrite some Windows utilities, for example, find and sort.
We leave the first option and move on.
Now the installer asks which library should be used for HTTPS connections. Leave openssl and go to the next step.
The next step can be called the most significant. The question for the installer is what format to use for completing the line. One of the distinguishing features of Windows from Unix-like systems is the newline character in files, namely, LF and CRLF are control characters for line breaks in Unix and Windows, respectively.
We recommend that you select the option suggested by the system – debug the file in Windows format, and download the file in Unix format. Click on the button "Next".
At this stage, the program will ask which terminal to use next:
- MinTTY – Unix terminal;
- Windows is the standard terminal (command line) of Windows.
In our case, leave "as is" and move on.
In the next step, the installer will ask you to note the necessary functions:
- File system caching.
- Git Credential Manager – enable credential manager.
- Symbolic links – allow the use of symbolic links.
Choose what is needed and move on to the next step.
At this step, the installer suggests using the experimental option. To use it or not is up to you. Click on the "Install" button.
The program starts copying files. We are waiting for the end of the process.
At the end of the installation process, click "Finish".
We are connected to the repository.
It is assumed that you already have your own account on github/gitlab. If not, then, in the case of github, we go through a simple registration process on the [website](https://github.com/).
Then log in to it and create a repository. To do this, click on the "Start a project" button.
Specify the name of the repository and click on the "Create repository" button.
Repository created.
Add files.
Suppose we have a file that needs to be added to the git or gitlab repository. Open the folder where the file is located, right-click on the free space and select "Git Bash Here" from the context menu that opens.
The command line will open. We sequentially execute the following commands:
```bash
git config –global user.email "yourmail@example.com"
```
```bash
git config –global user.name "Your name"
```
So we entered our mail and name.
In order to start tracking changes in the current folder, execute the following commands:
```bash
git init
```
```bash
git add .
```
We execute our first commit and add the changes to the server:
```bash
git commit -m "Init"
```
Important. To make changes to the server, you should use for github:
```bash
git remote add origin https://github.com/user/repository_name.git
```
```bash
git push -u origin master
```
For gitlab:
```bash
git remote add gitlab https://server/namespace/project.git
```
```bash
git push -u gitlab master
```
After running the command, an authorization window will open. Enter the data that was used during registration.
Configuring authentication using SSH keys.
First, create a key:
```bash
ssh-keygen -t rsa -b 4096 -C "yourmail@gmail.com"
```
During key generation, the program will ask you to enter a passphrase, which is necessary to protect the key itself. You can answer the question by double pressing Enter.
The private key will be located on the path C: Users .sshid_rsa. The public key is C: Users .sshid_rsa.pub
Run the SSH agent:
```
eval $(ssh-agent -s)
```
Add the keys to the ssh agent:
```bash
ssh-add ~/.ssh/id_rsa
```
Add the created key to the Git server. On the github site, in the upper-right corner, click on the account icon and select “Setting”.
On the updated page, in the left menu, select "SSH and PGP keys", and in the main part of the window, opposite the SSH keys, click on the "New SSH key" button.
Fill in the Title field. In the Key field, paste the contents of the file
C: Users .sshid_rsa.pub
Click on the "Add SSH key" button.
If everything is done correctly, something like this will appear:
To check the settings, execute the command:
```bash
ssh -T git@
```
For example:
```bash
ssh -T git@github.com
```
During the execution of the command, the program will ask: "Are you sure to continue the connection". This is a standard security issue. The answer is yes.
If everything is done correctly, the program will output a welcome speech.
https://serverspace.us/support/help/how-to-configure-xrdp-server-on-ubuntu-18-04.mdThis step-by-step guide explains how to install and configure an xRDP server on Ubuntu 18.04 using the Xfce UI. Learn how to connect to your Linux desktop from a Windows machine via Remote Desktop Protocol (RDP).
This tutorial describes how to set up an xRDP server to connect to Ubuntu 18.04 with the lightweight graphical Xforce UI using the RDP protocol. This can be very handy when you need to connect to Linux operating systems with graphical interface from Windows using Remote Desktop.
## What is xRDP?
**xRDP** is Microsoft’s free and open-source implementation of RDP (Remote Desktop Protocol) which allows non-Microsoft Windows operating systems (such as Linux and BSD) to provide a fully functional RDP-compatible remote desktop.
## Installation and Setup
Connect to your ubuntu server via SSH and perform a system update:
```bash
sudo apt-get update
sudo apt-get upgrade -y
```
Install and enable the xRDP utility:
```bash
sudo apt-get install xrdp
sudo systemctl enable xrdp
sudo systemctl restart xrdp
```
Xrdp service running
Install the xfce environment:
```bash
sudo apt-get install xfce4 xfce4-terminal
```
Open RDP port to be able to connect remotely:
```
sudo ufw allow 3389/tcp
```
Reboot the xRDP server for the changes to take effect:
```
sudo /etc/init.d/xrdp restart
```
## Connecting to an Ubuntu Server via RDP
If you don’t know the IP address of the Ubuntu server, you can check it by entering the command:
```
ifconfig -a
```
ifconfig output
In our test case it is 10.0.0.2. To connect open the Windows Remote Desktop Connection (mstsc.exe). Enter the IP address of the server and click **Connect**:
RDP window
A security warning will appear. Click Yes:
RDP certificate warning
In the opened window, select Xorg as the session, enter the username and password for the user and click OK:
Xrdp authentication window
This will connect to the xforce desktop.
Xforce desktop
If it shows a black screen when connecting to xrdp you need to go into the **/etc/xrdp** folder, and make changes to the **startwm.sh** file.
```
sudo nano /etc/xrdp/startwm.sh
```
We need to add:
**_unset DBUS_SESSION_BUS_ADDRESS_**
**_unset XDG_RUNTIME_DIR_**
Before the line:
**_test -x /etc/X11/Xsession && exec /etc/X11/Xsession_**
startwm.sh settings
After making the changes you have to restart the XRDP service:
```bash
sudo systemctl restart xrdp
```
Now you can run **mstsc.exe** again and connect to our ubuntu server.
https://serverspace.us/about.mdServerspace is an ideal online Сloud IT infrastructure rental service. Cloud computing is easier than you think. In just a couple of clicks, you can easily deploy a virtual IT infrastructure in the largest data centers in the world with…
Serverspace is an ideal online Сloud IT infrastructure rental service. Our service lets you configure and deploy virtual servers, configure network circuits, order SSL certificates, administer domain zones and monitoring.
## Our capabilities
Cloud computing is easier than you think. In just a couple of clicks, you can easily deploy a virtual IT infrastructure in the largest data centers in the world with us.
https://serverspace.us/err404.md404 - Page not found. We’re So Sorry! We can’t seem to find this page.
### Page not found
Oops! We can’t find the page that you’re looking for.
https://serverspace.us/conditions/sla.mdSLA - Service Level Agreement. Guaranteed parameters of service quality, availability (uptime). The procedure for financial compensation.
This agreement is an annex to the user agreement. It defines the quantitative and qualitative Serverpace service level target values, as well as financial guarantees for their compliance.
## Network Availability
**Unavailability** — the period when rented virtual machines are not available to the client over the network.
**Downtime** — the total duration of downtime for a period (1 month), with the exception of downtime caused by:
- carrying out scheduled maintenance work at scheduled time;
- a communication channels and equipment shutdown in an area outside of ITGLOBAL.COM CORP jurisdiction/control;
- client's applications or components, which are not controlled or not administrated by ITGLOBAL.COM CORP, and have become a cause of a Service failure;
- damaging actions of the Client, its employees, partners, customers, etc., which have led to a negative impact on the components of the Service (spam, spoofing, violation of the rules for using the Service, etc.);
- other uncontrolled events classified as force majeure.
**Uptime** – the time when the service must function normally. Serverspace uptime = 24×7.
**availability %** — ratio of time when the service was available to uptime.
availability % = 100%*(Uptime-Downtime)/Uptime
For example, if the downtime in November is 1 hour, then
availability % = 100%*(60*24*30-1*60)/60*24*30 = 99,86 (1)
| Parameter | Target value |
| --- | --- |
| rented virtual machine availability % | 99,9% |
## Data Storage System Performance
**IOPS** (Input/Output Operations Per Second) – the number of input-output operations performed by the data storage system (DSS) per second.
**Latency** – delay – the disk subsystem maximum response time during input/output operations.
| Parameter | Guaranteed values |
| --- | --- |
| Guaranteed IOPS quantity for DSS | 30 IOPS per 1 GB SSD 0.1 IOPS per 1 GB SATA for read/write blocks of 32 kilobytes. |
| Latency | 40 ms |
Note: if the guaranteed number of IOPS exceeds, a deviation from the target value of the Latency parameter is allowed. This situation is not considered as a violation of the SLA.
## Technical support
**User request** is a request of the Serverspace client to the technical support service using the request registration and processing system, which is integrated into the client's account.
**Standard request** is a user request which can be easily solved by the first-line technical support (ServiceDesk) employees of the Serverspace service using the solutions listed in the service instructions. It does not require the help of the 2nd and 3rd support lines. It is not associated with the unavailability or significant failure of the service quality.
**Non-standard request** is a user request, which does not have the solution listed in the standard ServiceDesk instructions or requires the help of the 2nd and 3rd support lines. It is not associated with the unavailability or significant failure of the service quality.
**Incident** is a user request related to the unavailability or significant failure of the service quality. Incidents have the highest priority in processing requests.
**Response time to the request** is an acceptable delay between the request registration and start of its processing (defining the request type,the start of processing / transferring the request to the 2nd or 3rd support level).
### User Request Processing Modes
| Type of user request | Processing mode |
| --- | --- |
| Incident | 24×7 |
| Standard request | 24×7 |
| Non-standard request | 8×5 (Mon-Fri from 10.00 to 18.00 UTC / GMT +3 hours) |
### Response time to the user request
| Type of user request | Processing mode |
| --- | --- |
| Incident | 20 minutes |
| Standard request | 30 minutes |
| Non-standard request | 1 hour |
## Maintenance check
### Maintenance windows
| Type of works | Maintenance windows |
| --- | --- |
| Scheduled | The first and third Fridays of each month from 06:00 to 08:00 (UTC/GMT +3 hours) |
| Urgent | If required. We will send a notification 2 hours before the maintenance works start |
## Financial guarantees
In the case of the SLA violation when Serverspace fails to provide guaranteed % of virtual machine availability according to the agreement, clients are provided with monetary compensation. Please see the following table:
| % virtual machine availability (A) | Compensation amount (% of the virtual machine rent monthly value) |
| --- | --- |
| A ≥ 99,9 | 0%, SLA target value |
| 99,9 > A ≥ 99,72 | 5% |
| 99,72> A ≥ 99,45 | 10% |
| 99,45> A ≥ 98,90 | 15% |
| 98,90> A ≥ 96,71 | 20% |
| 96,71> A ≥ 76,98 | 50% |
| 76,98 > A | 100% |
https://serverspace.us/about/news/novaya-ploshadka-amsterdam.mdWe have added a new platform — the AM2 data center located in Amsterdam. The AM2 data center ensures the highest level of security, power redundancy N+1, chiller redundancy N+1, computer room air conditioners redundancy N+2.
Thanks to our cooperation with Equinix, Inc., Servespace customers have more options to choose from to deploy their IT infrastructure now. We have added a new platform – the AM2 data center located in Amsterdam!
The owner of AM2 is Equinix, Inc. The company's portfolio also includes more than 200 data centers in 24 countries. It has been specializing in data center construction and maintenance for more than 20 years. Equinix, Inc. is the global market leader for data center colocation.
The AM2 data center ensures the highest level of security, power redundancy N+1, chiller redundancy N+1, computer room air conditioners redundancy N+2. It also certified according to the OHSAS 18001, SOC 1 TYPE 2, SOC 2 TYPE 2, ISO 27001, ISO 50001 и PCI DSS standards.
https://serverspace.us/about/news/monitoring-a-new-service-at-serverspace.mdMonitoring gives Serverspace customers an opportunity to quickly identify failures and react to any kind of them. The service is completely free within the first 30 days.
We are happy to offer our new Monitoring service. The service operates in the automatic mode. It continuously monitors the availability of cloud servers (hosts) and domains from New York, Amsterdam, Frankfurt am Main, etc.
It gives Serverspace customers an opportunity to quickly identify failures and react to any kind of them. It will help businesses reduce the downtime of their own services to a minimum. Thus, it will prevent loss of customers and revenue, and help startups reduce their customer churn rate.
To start monitoring, you must choose the host or domain that you would like to monitor and select the check type (PING, TCP, or HTTP); Then, determine the frequency, choose the host checkpoints, and set the response time. You can see all the Monitoring results in the “History” tab. If required, we will send them in email notifications. You can create, delete, view hosts and metrics, as well as run an unscheduled check at any time you want.
The service is completely free within the first 30 days.
https://serverspace.us/about/news/free-vps-for-students-covid.mdDuring the pandemic period, students can use free-of-charge Cloud servers for full training: deployment and testing of applications, virtual desktops, website hosting and more.
**UPD: This promotion has ended.**
The promotion is valid for the time of the coronavirus pandemic for organizing distance learning and writing diplomas.
In the context of the spread of COVID-19 and quarantine, most educational institutions are forced to switch to distance learning. Many technical universities need [Cloud server](https://serverspace.us/services/cloud-servers.md) equipment for organizing distance learning and student self-training. Serverspace offered its assistance to 100 technical universities from around the world.
During the pandemic period, students can use free-of-charge Cloud servers for full training: deployment and testing of applications, virtual desktops, website hosting and more. Serverspace has many configuration options for Cloud servers: students can select and configure a virtual machine for their project.
Severspace believes that in this unprecedented situation, it is very important that universities have the opportunity not to stop the learning process. Helping students with technical specialties is not just a “goodwill gesture”, but a necessary contribution to economic recovery.”
For more information contact: marketing@serverspace.us
https://serverspace.us/about/news/projects-a-new-feature-in-the-control-panel.mdWe have added a new feature in our control panel, which helps you create and manage projects.
We have added a new feature in our control panel, which helps you create and manage projects.
### **What is the Projects feature?**
Projects help account owners share full or limited access to their dashboard. So the others can use their resources: servers, networks, balance, etc.
There are two types of projects:
- **Personal project**
After registration, your personal project is created in the control panel by default. It is assigned to the account owner and gives him full access to all resources available in the panel.
- **Shared project**
It can be created by the account owner by converting a personal project to a shared project. The owner can create separate shared projects, giving certain users full or limited access to all resources available in the dashboard.
Each user, who joined the project can be assigned with a role and get certain access rights:
- **Owner**
The role of the owner is assigned by default. The owner has a right to assign this role to any other user at own discretion. It means the owner provides full access to the control panel.
- **Administrator**
This role has no right to add or remove users from projects. It is also restricted from creating, assigning someone to this role, deleting the Owner role, or deleting any projects. The rest of the features are similar to the Owner role.
- **Accountant**
This role has access solely to “Partners”, “Billing”, “Support” and “Legal entity settings” sections. This role has also the right to monitor the project views and the list of project users.
### **Creating and managing projects**
After authorization has been granted, take a look at the upper left corner of the control panel. You will see the logo and name of the personal project created by default. To create a shared project, click on the ellipsis next to the name of your personal project and select the “Add project” option in the drop-down list. To convert a personal project to a shared project, check the box next to “Convert an existing personal project to a shared project” and add a shared project.
https://serverspace.us/about/news/data-processing-center-in-new-jersey-the-usa.mdWe have widened the list of available data centers for Serverspace users and added a new platform.
We have widened the list of available data centers for Serverspace users and added a new platform. Meet the new-generation autonomous data center NNJ3, located in New Jersey, the USA!
### Fault free
The data center provides its maximum 100% uptime, according to the SLA. This feature is provided thanks to the four fully independent (N+1) redundant power systems with its own back-up diesel generators.
The on-site JCP&L electrical substation provides supplementary power supply.
### Secured
The NNJ3 Data Processing Center is built in a small town named Parsippany, located 30 miles from Manhattan, New York. Thanks to its historically advantageous location (~ 287 feet above sea level), the data center is reliably protected against natural hazards and remains safe even after such devastating hurricanes as Sandy.
There is an in-house 24-hour on-site security service: a non-stop closed-circuit HD- video surveillance (CCTV) and a permit system requiring three-factor authentication with biometric scanning (fingerprints and iris scanning).
### Innovative
The data center is equipped with low-velocity cooling systems with N+1 redundancy, which extracts hot air into a separate cooling room and saves equipment from contamination. Also, there is a pre-fire suppression system with dual interlock.
Data center certifications:
- SOC 1 (SSAE18/ISAE3402);
- SOC 2;
- HIPAA;
- PCI-DSS.
https://serverspace.us/about/news/the-dns-section-update-new-interface-and-ptr-records.mdThere is a slight but pleasant upgrade of the control panel: we have updated the DNS hosting services section - now you can edit PTR records.
There is a slight but pleasant upgrade of the control panel: we have updated the DNS hosting services section – now you can edit PTR records. We have also changed the section interface according to the new Serverspace design concept. It is easy to use, functional and doesn’t require any unnecessary steps — all the actions can be performed in just a few clicks.
When you click on the “Add domain” button on the welcome screen, you get straight to the interface. Here, you can instantly add a domain and perform its DNS records migration. The process is fully automated. Thanks to a special progress bar you can track the stages of the process. Once the process of adding the domain is completed, you can create, edit, and delete records for the selected domain right away.
In addition, all our clients receive a completely free service: when they add the domain, they can use NS Serverspace servers for free by default. There is also no need to pay for editing DNS records.
https://serverspace.us/about/news/signing-up-for-serverspace-with-google-and-facebook.mdApart from the standard email registration, clients have a choice to sign up for Serverspace with Google, as well as from the Facebook social network.
Serverspace now has a greater number of options to register for the service. Apart from the standard email registration, clients have a choice to sign up for Serverspace with Google, as well as from the Facebook social network.
Advantages of registering with Google and Facebook:
- no need to sign up via a confirmation link sent to the email;
- selection of available Google account options in the preview window;
- instant reauthorization when clicking on the button with no need to enter a username and password.
Google and Facebook sign up are carried out under a secure protocol and absolutely safe.
https://serverspace.us/about/news/serverspace-offers-sms-based-two-factor-authentication.mdServerspace added an extra layer of protection for your accounts, which is free SMS two-factor authentication.
Serverspace added an extra layer of protection for your accounts, which is free SMS two-factor authentication. Now, our clients have two authentication methods to choose from:
- a mobile app available in Google Play and the App Store, such as Google Authenticator or Authy;
- a code sent via SMS to a mobile phone.
To enable two-factor SMS-based authentication, go to the Serverspace control panel – "Account" – "Setting" – "Security":
Once the option is enabled, apart from entering an email and password, you will need to enter a confirmation code at the authorization stage. The code will be sent to the phone you specified when registering.
https://serverspace.us/services.mdInnovative Cloud Products. Our service lets you configure and deploy virtual servers, configure network circuits, order SSL certificates, administer domain zones, and perform monitoring.
Our service lets you configure and deploy virtual servers, configure network circuits, order SSL certificates, administer domain zones, and perform monitoring.
https://serverspace.us/infrastructure-old.mdIn this section, you can find out, which data centers we use, what equipment we use, and how the cloud architecture is arranged in more detail.
In this section, you can find out, which data centers we use, what equipment we use, and in more detail how the cloud architecture is arranged.
https://serverspace.us/conditions/privacy-policy.mdWe understand that you care about how we use the information you gave to us. We appreciate your trust and try to store and use your information in accordance with applicable laws. This page describes our privacy policy.
_Last update date: 20.01.2020_
ITGLOBAL.COM CORP ("us", "we", or "our") operates "**www.serverspace.us**" website (the "Site").
We understand that you care about how we use the information you gave to us. We appreciate your trust and try to store and use your information in accordance with applicable laws. This page describes how we collect, use and safeguard the information you provide to us. When visiting www.serverspace.us and accepting our Privacy Policy and Terms of Use, you consent to our collection, storage, use, and disclosure of your personal information as described in this Privacy Policy.
**OUR CONTACT DETAILS**
Company name: ITGLOBAL.COM CORP
Address: 2093 Philadelphia Pike #2345, Claymont,
DE 19703, the USA
Phone: +1 302 498-83-59
Email: marketing@serverspace.team
Website: [www.serverspace.us](https://serverspace.us/index.md)
**DEFINITIONS**
For a better understanding of this Privacy Policy, we have listed the definitions used in:
**Personal data**
Personal data means any information relating to an identified or identifiable natural person ("data subject"). An identifiable natural person is one who can be identified, directly or indirectly, in particular by reference to an identifier such as a name, an identification number, location data, an online identifier or to one or more factors specific to the physical, physiological, genetic, mental, economic, cultural or social identity of that natural person.
**Data subject**
Data subject is any identified or identifiable natural person, whose personal data is processed by the controller responsible for the processing.
**Processing**
Processing is any operation or set of operations which is performed on personal data or on sets of personal data, whether or not by automated means, such as collection, recording, organization, structuring, storage, adaptation or alteration, retrieval, consultation, use, disclosure by transmission, dissemination or otherwise making available, alignment or combination, restriction, erasure or destruction.
**Restriction of processing**
Restriction of processing is the marking of stored personal data with the aim of limiting their processing in the future.
**Controller or controller responsible for the processing**
Controller or controller responsible for the processing is the natural or legal person, public authority, agency or other body which, alone or jointly with others, determines the purposes and means of the processing of personal data.
**Processor**
Processor is a natural or legal person, public authority, agency or another body which processes personal data on behalf of the controller.
**Third party**
Third party is a natural or legal person, public authority, agency or body other than the data subject, controller, processor and persons who, under the direct authority of the controller or processor, are authorized to process personal data.
**Consent**
Consent of the data subject is any freely given, specific, informed and unambiguous indication of the data subject's wishes by which he or she, by a statement or by clear affirmative action, signifies agreement to the processing of personal data relating to him or her.
**HOW WE COLLECT DATA ABOUT YOU**
**Account Registration**
When you provide your personal information by filling out forms on our Site www.serverspace.us we may ask for your contact information such as **name, last name, company name, email address, and telephone number**.
**Communications**
If you contact us directly, we may receive additional information about you such as your name, email address, phone number, the contents of the message and/or attachments you may send us, and any other information you may choose to provide. We may also receive a confirmation when you open an email from us.
The personal information that you are asked to provide, and the reasons why you are asked to provide it, will be made clear to you at the point we ask you to provide your personal information.
**Cookies and Other Tracking Technologies**
We collect certain information automatically through the use of information gathering tools, such as cookies, and store it in log files. It means, when you use our Site, we may collect certain information automatically from your device. This information may include internet protocol (IP) addresses, browser type, internet service provider (ISP), referring/exit pages, operating system, date/time stamp, clickstream data, landing page, and referring URL. To collect this information, a cookie may be set on your computer or device when you visit our Site. Cookies contain a small amount of information that allows our web servers to recognize you. ITGLOBAL.COM CORP uses both session‑based and persistent‑based cookies. We may automatically collect information about your use of the Site's features, about the functionality of our Site, frequency of visits, and other information related to your interactions with the Site.
Most internet browsers are set up by default to accept cookies. However, if you want to refuse or delete them (or similar technologies) please refer to the help and support area on your browser for instructions on how to block or delete cookies (for example: Internet Explorer, Google Chrome, Mozilla Firefox and Safari). Keep in mind that each browser has a different procedure for managing and configuring cookies. However, if you use your browser settings to block all cookies (including necessary cookies) you may not be able to access all or parts of our site.
**Usage of our Site**
When you use our Site, we may collect information about your engagement with and utilization of our Site, such as processor and memory usage, storage capacity, navigation of our Site, and system-level metrics. We use this data to operate the Site, maintain and improve the performance and utilization of the Site, develop new features, protect the security and safety of our Site and our customers, and provide customer support. We also use this data to develop aggregate analysis and business intelligence that enable us to operate, protect, make informed decisions, and report on the performance of our business.
**Third-Party Partners**
We may also receive publicly available information about you from our third-party partners and combine it with data that we have about you.
**INFORMATION USE**
ITGLOBAL.COM CORP uses the information we collect in various ways, including to:
- To provide and maintain our Site;
- To notify you about changes to our Site;
- To provide customer support;
- To gather analysis or valuable information so that we can improve our Site;
- To monitor the usage of our Site;
- To ensure the security of our systems and site, including from unauthorized access and the spread of malware, spasms, etc.;
- To detect, prevent and address technical issues;
- To provide you with news, special offers and general information about other goods, services and events which we offer that are similar to those that you have already purchased or enquired about unless you have opted not to receive such information.
**We will only process your data in the following manner:**
- Lawfully, fairly and transparently;
- Only for the purpose stated at the time of collection;
- Only personal data that is adequate, relevant and limited to what is necessary for the stated purpose will be collected;
- It is your responsibility to ensure that any personal data you provide is accurate at the time of collection and if there are changes to the personal data, and we will take every reasonable action to ensure the data remains accurate;
- Your personal data will not be kept longer than necessary for the stated purpose except for statistical reasons in which case appropriate technical and organizational measures will be implemented to safeguard your data;
- We will process your data in a manner that ensures security using appropriate technical or organizational measures.
**INFORMATION SHARED**
We may share the information we collect in various ways, including the following:
**Vendors and Service Providers**
We may share information with third-party vendors and service providers that provide services on our behalf, such as helping to provide our Site, for promotional and/or marketing purposes, and to provide you with information relevant to you such as product announcements, software updates, special offers, or other information.
**Aggregate Information**
Where legally permissible, we may use and share information about users with our partners in an aggregated or de-identified form that can't reasonably be used to identify you.
**Advertising**
We work with third-party advertising partners to show you ads that we think may interest you. These advertising partners may set and access their own cookies, pixel tags, and similar technologies on our Site, and they may otherwise collect or have access to information about you which they may collect over time and across different online services.
**Analytics**
We use analytics providers such as Google Analytics. Google Analytics uses cookies to collect non-identifying information.
**Business Transfers**
Information may be disclosed and otherwise transferred to any potential acquirer, successor, or assignee as part of any proposed merger, acquisition, debt financing, sale of assets, or similar transaction, or in the event of insolvency, bankruptcy, or receivership in which information is transferred to one or more third parties as one of our business assets.
**As required by Law and Similar Disclosures**
We may also share information to (i) satisfy any applicable law, regulation, legal process, or governmental request; (ii) enforce this Privacy Policy and our Terms of Service, including investigation of potential violations hereof; (iii) detect, prevent, or otherwise address fraud, security, or technical issues; (iv) respond to your requests; or (v) protect our rights, property or safety, our users and the public. This includes exchanging information with other companies and organizations for fraud protection and spam/malware prevention.
**With your consent**
We may share information with your consent.
**LEGAL BASIS FOR PROCESSING PERSONAL DATA**
ITGLOBAL.COM CORP`s legal basis for processing the personal information described in this Privacy Policy will depends on the personal information we collect, the specific context in which we collect it and the purposes for which it is used.
However, we will normally collect personal information from you only where we have your explicit consent with our Terms of Use and Privacy Policy on the registration and user profile pages.
ITGLOBAL.COM CORP may process your Personal Data because:
- We need to perform a contract with you;
- You have given us permission to do so;
- The processing is in our legitimate interests and it's not overridden by your rights;
- For payment processing purposes;
- To comply with the law.
If we ask you to provide personal information in reliance on our legitimate interests, to comply with a legal requirement or to perform a contract with you, we will make this clear at the relevant time and advise you whether the provision of your personal information is mandatory or not (as well as of the possible consequences if you do not provide your personal information).
**THIRD-PARTY SERVICES**
You may access other third-party services through the Site, for example by clicking on links to those third-party services from within the Site. We are not responsible for the privacy policies and/or practices of these third-party services, and we encourage you to carefully review their privacy policies.
**SECURITY**
ITGLOBAL.COM CORP is committed to protecting your information. To do so, we employ a variety of security technologies and measures designed to protect information from unauthorized access, use, or disclosure. The measures we use are designed to provide a level of security appropriate to the risk of processing your personal information. However, please bear in mind that the Internet cannot be guaranteed to be 100% secure, we cannot guarantee the security of your information transmitted and any transmission is at your own risk.
**DATA RETENTION**
ITGLOBAL.COM CORP will retain your Personal Data only for the period necessary to fulfill the purposes set out in this Privacy Policy unless a longer retention period is required or permitted by law or until you ask for your Personal Data to be deleted. Moreover, we will retain and use your Personal Data to the extent necessary to comply with our legal obligations (for example, if we are required to retain your data to comply with applicable laws), resolve disputes, and enforce our legal agreements and policies.
ITGLOBAL.COM CORP will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period of time, except when this data is used to strengthen the security or to improve the functionality of our Site, or we are legally obligated to retain this data for longer time periods.
**TRANSFERRING PERSONAL DATA**
According to our general business practice, the data we collect from you by this Site may be processed on servers located in Netherlands. It may also be processed by staff operating outside the USA and the EEA who work for us or for one of our partners. Such staff maybe engaged in, among other things, the fulfilment of your order or the provision of support services. In such cases, these companies must abide by our data privacy and security requirements and are not allowed to use the personal data they receive from us for any other purpose.
If you are a natural person are in the European Union, we inform you that your personal data may be processed at destinations outside the EU or the EEA some of which have not been determined by the European Commission to have an adequate level of data protection. In which case ITGLOBAL.COM will transfer and disclose your data in compliance with Standard Contractual Clauses approved by the European Commission [in accordance with Article 46(2)(c) of the GDPR].
**YOUR DATA PROTECTION RIGHTS**
You have certain data protection rights and ITGLOBAL.COM CORP aims to take reasonable steps to allow you to correct, amend, delete, or limit the use of your Personal Data.
If you wish to be informed what Personal Data we hold about you, please contact us.
In certain circumstances, you have the following data protection rights:
**The right to access, update or to delete the information we have on you**. Whenever made possible, you can access, update or request deletion of your Personal Data directly within your account settings section. If you are unable to perform these actions yourself, please contact us to assist you.
**The right of rectification**. You have the right to have your information rectified if that information is inaccurate or incomplete.
**The right to object**. You have the right to object to our processing of your Personal Data.
**The right of restriction**. You have the right to request that we restrict processing of your personal information.
**The right not to be subject to Automated Decision Making including Profiling**.
**The right to erasure ('right to be forgotten')**. You have a right to be forgotten. If you do not agree with the collection or use of your personal information as outlined in this policy and you want us to delete your data, please email us at marketing@serverspace.team. However, we may not be able to fully comply with your request, if there are other lawful reasons for us to process your data such as a legal obligation.
**The right to data portability**. You have the right to be provided with a copy of the information we have on you in a structured, machine-readable and commonly used format and have the right to transmit those data to another controller.
**The right to withdraw consent**. You also have the right to withdraw your consent at any time where ITGLOBAL.COM CORP relied on your consent to process your personal information.
Please note that we may ask you to verify your identity before responding to such requests.
**The right to deactivate cookies**. If you wish to restrict or block all the cookies which are set by our websites, please use the tool available on the particular website (if applicable), or refer to the Help function within your browser to learn how to manage your settings within your browser.
You can also exercise any of the above rights at any time by contacting us at marketing@serverspace.team.
Typically, you will not have to pay a fee to access your Personal Data (or to exercise any of the other rights). However, except in relation to Consent Withdrawal, we may charge a reasonable fee if your request is clearly unfounded, repetitive or excessive, or, we may refuse to comply with your request in these circumstances.
**CHILDREN'S PRIVACY**
ITGLOBAL.COM CORP does not knowingly collect information from children under the age of 16, and children under 16 are prohibited from using our Site. If you become aware that a child has provided us with personal information, please alert us at marketing@serverspace.team
**CHANGES TO THIS PRIVACY POLICY**
We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page.
You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page.
**CONTACT US**
If you have any questions or concerns about this Privacy Policy, please feel free to email us: marketing@serverspace.team
https://serverspace.us/about/news/serverspace-in-the-usa.mdJoin one of the most modern cloud services for developers.
Dear friends, now we have an official Serverspace representative office in the USA. At the same time we launched the following:
- 24/7 support at +1 302 498-83-59;
- Payments in Dollars;
- The ability to deploy infrastructure in a reliable American data center NNJ3, located in the state of New Jersey.
Join one of the most modern cloud services for developers!