Server Setup Guide for [Vintage Story] Gamers
Game Server Requirements
Embarking on the journey of hosting your own Vintage Story server demands a foundational understanding of the underlying hardware and software prerequisites. The game, a voxel-based sandbox survival experience, while visually distinct from its more famous counterparts, still necessitates a robust server environment to deliver a seamless and enjoyable multiplayer session. The core principle guiding these requirements is the need to process and synchronize a dynamic, persistent world for multiple concurrent players, each interacting with the environment, crafting, building, and exploring.
At the heart of any server lies the Central Processing Unit (CPU). For Vintage Story, a processor with a high single-core performance is often more beneficial than one with numerous cores, especially for smaller player counts. This is due to the game engine's architecture, which, like many voxel-based games, can exhibit bottlenecks in single-threaded operations, particularly when generating new chunks or processing complex physics interactions. A modern quad-core CPU, such as an Intel i5 (10th generation or newer) or an AMD Ryzen 5 (3000 series or newer), is generally considered a solid starting point for a small to medium-sized server (up to 10-15 players). For larger communities or servers with extensive mod installations, an Intel i7 or AMD Ryzen 7 equivalent, or even a server-grade CPU like an Intel Xeon or AMD EPYC with strong clock speeds, would be prudent. The clock speed, measured in gigahertz (GHz), directly correlates with the number of instructions the CPU can execute per second, thus impacting the server's responsiveness to player actions and world updates.
Memory, or Random Access Memory (RAM), is another critical component. Vintage Story servers, particularly those with a large world size, numerous players, or extensive mod packs, can be quite memory-intensive. The server needs to load and actively manage portions of the game world, player inventories, entity data, and various game logic states in RAM for quick access. A minimum of 4 GB of RAM is typically recommended for a very small server (2-4 players) with a standard world. However, to ensure a smooth experience and accommodate growth, 8 GB of RAM is a more practical baseline for most small to medium-sized communities. For servers aiming to host 15+ players or those planning to integrate numerous resource-intensive mods, 16 GB or even 32 GB of RAM might be necessary. Insufficient RAM can lead to frequent "garbage collection" pauses, server lag, and even crashes, significantly degrading the player experience.
Storage is equally important, though its impact is primarily on world loading times and the speed of saving/loading player data. While the raw storage capacity for a Vintage Story world might not be astronomically large initially, the speed at which this data can be accessed is paramount. Solid State Drives (SSDs) are overwhelmingly recommended over traditional Hard Disk Drives (HDDs). An NVMe SSD offers the fastest read/write speeds, significantly reducing world generation times, server startup, and the time it takes for chunks to load for players. A SATA SSD is a good compromise if NVMe is not available or cost-prohibitive. A minimum of 50 GB of storage is usually sufficient for the game files and a moderately sized world, but allocating 100-200 GB provides ample room for world expansion, backups, and potential mod installations.
Network connectivity is the invisible backbone of any online game server. A stable and high-bandwidth internet connection is non-negotiable. The server needs to constantly send and receive data packets to and from all connected players. Upload speed is particularly crucial, as the server is primarily sending world updates, player positions, and other game state information to clients. A dedicated internet connection with at least 100 Mbps upload and download speed is a good starting point for a small server. For larger communities, a gigabit (1 Gbps) connection is highly desirable. Latency, or ping, between the server and its players also plays a significant role in perceived responsiveness. Choosing a hosting provider geographically close to your target player base can help minimize latency.
Finally, the operating system (OS) on which the server runs is a consideration. Vintage Story servers can be hosted on both Windows and Linux environments. Linux distributions, particularly Debian or Ubuntu Server, are often preferred in professional hosting environments due to their lower resource overhead, enhanced security, and command-line interface efficiency. However, Windows Server editions offer a more familiar graphical user interface for those less comfortable with Linux commands. Regardless of the OS, it should be a 64-bit version to fully utilize available RAM. Regular updates and security patches for the chosen OS are essential for server stability and protection against vulnerabilities.
Beginner's Guide
Setting up your first Vintage Story server can seem like a daunting task, but by breaking it down into manageable steps, even a novice can successfully establish a thriving multiplayer world. This guide will walk you through the essential stages, from acquiring the necessary files to configuring your server for optimal play.
The very first step is to obtain the Vintage Story server files. These are distinct from the client-side game files you use to play. You can typically download the dedicated server package directly from the official Vintage Story website. Always ensure you download the version that matches your client-side game to avoid compatibility issues. Once downloaded, extract the contents of the archive to a dedicated folder on your chosen server machine or hosting environment. It's good practice to create a new, empty folder specifically for your server files to keep things organized.
Next, you'll need to configure the server. The primary configuration file is usually named serverconfig.json or similar. This file, often generated automatically the first time you run the server, contains various parameters that control your server's behavior. Key settings to look for and adjust include:
serverName: This is the name that will appear in the server browser. Choose something descriptive and appealing.
worldName: The name of your game world. This also dictates the folder name where your world data will be stored.
port: The network port your server will listen on. The default for Vintage Story is typically 42420. If you plan to host multiple servers on the same machine or encounter port conflicts, you might need to change this.
maxPlayers: The maximum number of players allowed on your server simultaneously. Adjust this based on your server's resources and desired community size.
password: If you want to make your server private, set a password here. Leave it blank for a public server.
seed: A numerical or textual seed that determines the generation of your world. Using the same seed will produce the same world terrain.
difficulty: Adjusts various game mechanics like combat difficulty, hunger, and temperature.
gameMode: Options typically include "survival," "creative," or "wilderness."
Carefully review each setting and modify them according to your preferences. It's advisable to make a backup of the original serverconfig.json before making extensive changes.
Once configured, you're ready to launch the server. On Windows, you'll typically find a batch file (e.g., startserver.bat) that you can double-click. On Linux, you'll use a shell script (e.g., startserver.sh) executed from the command line. The first time you run the server, it will generate the world, which can take some time depending on your hardware. You'll see console output indicating the server's progress and status. Once it reports "Server started" or similar, your server is running.
For players to connect to your server, you'll need to ensure proper network configuration. If you're hosting from home, this usually involves "port forwarding" on your router. Port forwarding directs incoming connections on a specific port (your server's port, e.g., 42420) from your public IP address to the internal IP address of your server machine. The exact steps for port forwarding vary significantly between router models, so consult your router's manual or an online guide specific to your router. You'll need to know your server machine's internal IP address (e.g., 192.168.1.100) and the external IP address of your network (which players will use to connect). Websites like "whatismyip.com" can help you find your external IP.
If you're using a dedicated hosting service, port forwarding is usually handled by the provider, and they will give you a public IP address and port to share with your players.
Finally, to connect to your server, players will open their Vintage Story game client, navigate to the multiplayer section, and select "Direct Connect" or "Add Server." They will then enter your server's public IP address followed by the port (e.g., 123.45.67.89:42420). If you set a password, they will be prompted to enter it.
Regularly backing up your server's world data is paramount. Server crashes, hardware failures, or accidental deletions can lead to irreversible loss of progress. Most hosting providers offer automated backup solutions. If self-hosting, manually copy your world folder (located within your server's directory) to a separate storage device or cloud service periodically. This simple practice can save countless hours of gameplay and prevent significant frustration.
Hosting Service Comparison and Recommendations
Choosing the right hosting service for your Vintage Story server is a pivotal decision that directly impacts performance, reliability, and your overall administrative experience. The market is saturated with providers, each offering a myriad of plans and features. This section aims to dissect the offerings, highlight key considerations, and provide recommendations to help you make an informed choice, maintaining a fair and unbiased perspective.
When evaluating hosting providers, several critical factors come into play:
Hardware Specifications: As detailed in the "Game Server Requirements" section, the CPU, RAM, and storage type (SSD/NVMe) are paramount. Look for providers that clearly state these specifications. Avoid plans that offer vague "unlimited" resources, as these often come with hidden limitations or shared resources that can degrade performance.
Network Infrastructure: A robust network with low latency and high bandwidth is essential. Providers with multiple data centers allow you to choose a location geographically closer to your player base, minimizing ping. Look for DDoS protection, which safeguards your server from malicious attacks that can disrupt service.
Control Panel and Ease of Use: A user-friendly control panel (e.g., Pterodactyl, Multicraft, or a custom solution) simplifies server management, allowing you to start/stop the server, manage files, install mods, and view logs without extensive command-line knowledge. For beginners, an intuitive interface is invaluable.
Customer Support: Responsive and knowledgeable customer support is crucial, especially when troubleshooting issues. Look for providers offering 24/7 support through various channels (live chat, tickets, phone) and positive reviews regarding their support quality.
Pricing Structure: Compare not just the monthly cost but also what's included. Be wary of introductory offers that significantly increase after the first billing cycle. Understand renewal costs and any hidden fees. Consider the price-to-performance ratio.
Backup Solutions: Automated daily or weekly backups are a must. Ensure the provider offers easy restoration options.
Mod Support: If you plan to use Vintage Story mods, confirm that the hosting provider supports easy installation or provides FTP access for manual installation.
Let's consider a few archetypal hosting provider categories and their suitability for Vintage Story:
Shared Game Hosting: These providers specialize in game servers, often offering pre-configured Vintage Story instances. They are typically the most user-friendly option for beginners, as they handle most of the technical complexities.
Pros: Easy setup, dedicated control panels, often good customer support for game-specific issues, automated backups, DDoS protection.
Cons: Resources are shared, meaning performance can sometimes be impacted by other servers on the same machine. Less flexibility for advanced configurations or custom software. May be slightly more expensive per GB of RAM compared to a VPS.
Recommendation: Ideal for small to medium-sized communities (up to 15-20 players) and those new to server administration. Look for providers with a strong reputation for Vintage Story specifically, or for voxel-based games in general. Examples might include providers known for Minecraft hosting, as their infrastructure often translates well.
Virtual Private Servers (VPS): A VPS provides you with a virtualized slice of a physical server, offering dedicated resources (CPU, RAM, storage) and root access. This gives you much more control.
Pros: Dedicated resources ensure consistent performance, full root access for complete customization, often more cost-effective for higher resource allocations than shared game hosting, greater flexibility for installing custom software or multiple game servers.
Cons: Requires more technical knowledge to set up and manage the operating system and server software. No dedicated game control panel unless you install one yourself. You are responsible for OS updates, security, and backups.
Recommendation: Suitable for experienced users, larger communities (20+ players), or those who want to host multiple Vintage Story instances or other game servers on the same machine. It offers a balance between control and cost.
Dedicated Servers: This is the pinnacle of hosting, where you rent an entire physical server.
Pros: Maximum performance, complete control over hardware and software, unparalleled customization, ideal for very large communities or professional-grade hosting.
Cons: Most expensive option, requires significant technical expertise for setup, maintenance, and troubleshooting.
Recommendation: Only for very large communities (50+ players), professional esports teams, or individuals with advanced server administration skills and a substantial budget.
When comparing specific providers, always look for independent reviews and community feedback. Forums dedicated to Vintage Story or general game server hosting can provide valuable insights into real-world performance and support quality. Pay attention to uptime guarantees and service level agreements (SLAs), which outline the provider's commitment to keeping your server online. A provider offering a 99.9% uptime guarantee is generally considered reliable.
Ultimately, the best hosting service is one that aligns with your technical proficiency, budget, and the specific needs of your Vintage Story community. Start with a plan that meets your initial requirements, and ensure the provider offers easy upgrade paths as your server grows.
Troubleshooting
Even the most meticulously configured Vintage Story server can encounter issues. Effective troubleshooting involves a systematic approach to identify, diagnose, and resolve problems. This section outlines common server issues and provides actionable steps to address them, empowering you to maintain a stable and enjoyable multiplayer environment.
One of the most frequent issues is players being unable to connect. This can manifest as "Connection Timed Out," "Failed to Connect," or simply the server not appearing in the in-game browser.
Check Server Status: First, verify that your server process is actually running. On Windows, check Task Manager; on Linux, use htop or ps aux | grep VintageStoryServer. If it's not running, attempt to restart it and observe any error messages in the console.
Port Forwarding/Firewall: If self-hosting, double-check your port forwarding rules on your router. Ensure the correct external port is mapped to the internal IP address and port of your server machine. Also, verify that your operating system's firewall (e.g., Windows Firewall, ufw on Linux) is not blocking incoming connections on the server port. You may need to create an exception.
IP Address/Port: Confirm that players are using the correct public IP address and port to connect. Your public IP can change if you have a dynamic IP address from your ISP. Consider using a Dynamic DNS (DDNS) service if self-hosting to provide a consistent hostname.
Server List Visibility: If your server isn't appearing in the in-game server list, ensure that the serverName in your serverconfig.json is unique and that the server is configured to be public (no password, or the password is correctly entered by players). Some servers might take a few minutes to appear after startup.
Server Lag or Poor Performance is another common complaint, characterized by delayed player actions, chunk loading issues, or rubberbanding.
Resource Utilization: Monitor your server's CPU, RAM, and disk I/O. On Linux, tools like htop, free -h, and iostat are invaluable. On Windows, use Task Manager and Resource Monitor. If any resource is consistently at 90-100% utilization, it's a strong indicator of a bottleneck.
High CPU: Can be caused by too many players, complex world generation, excessive entities, or resource-intensive mods. Consider reducing maxPlayers, optimizing mod configurations, or upgrading your CPU.
High RAM: Indicates the server is struggling to hold world data and game state in memory. This leads to frequent disk access (swapping), which is slow. Upgrade RAM or reduce the number of loaded chunks/players.
High Disk I/O: Often linked to insufficient RAM (causing swapping) or a slow storage device (HDD instead of SSD). Upgrade to an SSD/NVMe or increase RAM.
Network Latency: Use ping or traceroute commands from a player's machine to the server's IP address to diagnose network latency issues. High ping indicates a problem with the network path, either on the player's end, the server's end, or somewhere in between.
Mod Conflicts: If you've recently installed mods, try disabling them one by one to identify if a specific mod is causing performance degradation or conflicts. Check mod documentation for known issues.
World Size/Complexity: Very old or extremely large worlds can accumulate a significant amount of data, leading to performance issues. Consider starting a fresh world periodically or using world trimming tools if available.
Server Crashes or Unexpected Shutdowns are serious issues that can lead to data loss.
Review Server Logs: The server log files (usually found in a logs folder within your server directory) are your most valuable diagnostic tool. Look for "ERROR," "CRITICAL," or "EXCEPTION" messages immediately preceding the crash. These often point directly to the cause, such as a corrupted world file, a faulty mod, or an out-of-memory error.
Out of Memory (OOM) Errors: If logs indicate OOM, your server is running out of RAM. Increase allocated RAM or reduce resource demands.
Corrupted World Data: If the server consistently crashes during world loading, a specific chunk or region of your world might be corrupted. If backups are available, try restoring an older version of the world.
Mod Instability: As with performance issues, mods are a common culprit for crashes. Ensure all mods are compatible with your Vintage Story version and with each other.
Hardware Failure: While less common with reputable hosting providers, self-hosted servers can experience crashes due to failing hardware components (RAM, CPU, storage). Run diagnostic tools if you suspect hardware issues.
Configuration Errors can prevent the server from starting or behaving as expected.
Syntax Errors in serverconfig.json: JSON files are strict about syntax. A missing comma, bracket, or quotation mark can prevent the file from being parsed correctly. Use an online JSON validator to check your configuration file.
Incorrect File Paths: Ensure any paths specified in configuration files (e.g., for mod folders) are correct and use the appropriate path separators for your operating system.
When troubleshooting, remember the scientific method: form a hypothesis, test it, and observe the results. Change one variable at a time to isolate the cause of the problem. Always make backups before attempting significant changes to your server configuration or world files.
Performance Optimization Tips
Achieving optimal performance for your Vintage Story server is an ongoing process that extends beyond merely meeting the minimum requirements. It involves strategic configuration, resource management, and proactive maintenance to ensure a consistently smooth and responsive experience for all players.
One of the most impactful areas for optimization lies in resource allocation and hardware choices. As previously discussed, prioritizing a CPU with high single-core performance is crucial. While multi-core CPUs are beneficial for overall system throughput, Vintage Story's engine, like many voxel-based games, can be bottlenecked by single-threaded operations, especially during chunk generation and complex physics calculations. Therefore, when selecting a CPU, consider its base clock speed and turbo boost frequency. Similarly, investing in NVMe SSD storage significantly reduces I/O wait times, which are critical for loading world chunks and saving player data quickly. The faster the storage, the less time the server spends waiting for data, leading to a more fluid experience.
Memory management is another cornerstone of performance. Ensure your server has ample RAM, as outlined in the requirements. However, simply having more RAM isn't enough; how it's utilized matters. If your server is consistently using a high percentage of its allocated RAM, it might be beneficial to increase the Java Virtual Machine (JVM) heap size if Vintage Story uses Java (though it's primarily C#). For C# applications, the .NET runtime manages memory, but ensuring sufficient physical RAM prevents the OS from resorting to slow disk-based swap memory. Regularly monitor RAM usage and consider if certain mods are excessively memory-hungry.
Server configuration tuning within serverconfig.json offers several levers for performance optimization:
maxPlayers: While tempting to set this high, a lower maxPlayers value directly reduces the computational load on your server. Adjust this based on your hardware's actual performance under load.
chunkLoadingRadius / renderDistance: These settings control how many chunks around each player the server actively loads and processes. Reducing these values can significantly decrease CPU and RAM usage, especially in densely populated areas. Experiment to find a balance between visual fidelity and performance.
entityDespawnTime: Adjusting how quickly unused entities (e.g., dropped items, passive mobs) despawn can reduce the number of active entities the server needs to track, freeing up resources.
autosaveInterval: While frequent autosaves are good for data integrity, very frequent saves on a busy server can cause momentary hitches. Find a balance that protects data without impacting gameplay too severely.
tickRate: This determines how many game updates occur per second. While a higher tick rate can feel more responsive, it also demands more CPU cycles. For most Vintage Story servers, the default is usually sufficient, but if experiencing severe lag, a slight reduction might help, though it's generally a last resort.
Mod management is critical. While mods enhance the Vintage Story experience, they are also a primary source of performance issues.
Curate Mods Carefully: Only install mods from reputable sources and those known for good performance. Avoid installing too many mods, especially those that add complex new mechanics or entities without proper optimization.
Monitor Mod Performance: Some server control panels or third-party tools can help identify which mods are consuming the most resources. If a mod is a known performance hog, consider alternatives or remove it.
Keep Mods Updated: Mod developers often release performance optimizations and bug fixes. Ensure your mods are always up-to-date.
World management also plays a role in long-term performance:
World Border: Implementing a world border can prevent players from exploring infinitely, which can lead to excessively large world files and increased resource demands for chunk generation.
Regular Backups: While not directly a performance tip, having regular backups allows you to experiment with optimizations without fear of irreversible data loss. It also enables you to roll back to a stable state if an optimization attempt goes awry.
World Trimming/Optimization: Over time, unused or abandoned chunks can accumulate. Tools might exist (or could be developed by the community) to "trim" these unused chunks, reducing world file size and server load.
Finally, operating system and network optimization contribute to overall server health.
Linux vs. Windows: As mentioned, Linux distributions often have lower overhead than Windows Server, freeing up more resources for the game server.
Network Configuration: Ensure your server's network interface is configured for optimal performance, and that there are no unnecessary background applications consuming bandwidth. For self-hosted servers, ensure your internet connection is stable and has sufficient upload speed.
DDoS Protection: While not directly a performance boost, robust DDoS protection prevents malicious attacks from overwhelming your server's network, ensuring consistent availability and performance.
By systematically applying these optimization techniques, you can significantly enhance the performance and stability of your Vintage Story server, providing a superior experience for your player community.
Technical Q&A
This section addresses common technical questions that arise during the setup, maintenance, and optimization of a Vintage Story server. These answers draw upon established principles of server administration and game server architecture, providing concise yet comprehensive explanations.
Q1: What is the difference between a "dedicated server" and a "listen server" in the context of Vintage Story?
A1: A dedicated server is a standalone application designed solely to host the game world and manage player connections. It runs independently of any player's game client, typically on a separate machine or a professional hosting service. Dedicated servers are robust, offer consistent performance, and remain online even if the host player disconnects. They are the preferred choice for persistent multiplayer worlds. A listen server, on the other hand, is hosted directly from a player's game client. When a player starts a multiplayer game from within their client, their computer acts as both a client (playing the game) and a server (hosting the world). Listen servers are easy to set up for casual play with friends but suffer from performance limitations (as the host's machine is doing double duty), are tied to the host's internet connection, and shut down when the host player leaves the game.
Q2: How do I install mods on my Vintage Story server?
A2: Mod installation typically involves placing the mod files (usually .zip or .dll files) into a specific directory within your server's file structure. For Vintage Story, this is commonly the Mods folder located in your server's root directory.
Download Mods: Obtain the desired mods from reputable sources (e.g., the official Vintage Story mod database or forums). Ensure the mods are compatible with your server's Vintage Story version.
Access Server Files: If using a hosting provider, you'll typically use their control panel's file manager or an FTP client (e.g., FileZilla) to access your server's file system. If self-hosting, simply navigate to your server's directory.
Place Mod Files: Copy the downloaded mod files (often the entire .zip archive, but sometimes just the .dll if the mod is a single file) into the Mods folder. Do not extract the .zip files unless specifically instructed by the mod's documentation.
Restart Server: After placing the mods, you must restart your Vintage Story server for the changes to take effect.
Client-Side Mods: Note that some mods require both server-side and client-side installation. Players connecting to your server might need to install the same mods on their game clients to ensure compatibility and avoid errors.
Q3: My server console is showing "Out of Memory" errors. What does this mean and how can I fix it?
A3: An "Out of Memory" (OOM) error indicates that your server process has exhausted the available RAM allocated to it. This is a critical issue that often leads to server instability or crashes.
To fix it:
Increase Allocated RAM: The most direct solution is to increase the amount of RAM available to your server. If you're using a hosting provider, you'll need to upgrade your hosting plan. If self-hosting, you might need to install more physical RAM in your machine or ensure that other applications aren't consuming too much memory.
Reduce Server Load:
Lower maxPlayers: Fewer players mean less data to manage in memory.
Reduce chunkLoadingRadius: Decreasing the server's render distance reduces the number of active chunks in memory.
Optimize Mods: Identify and remove or replace memory-intensive mods.
Entity Management: Ensure entities are despawning correctly and not accumulating excessively.
Monitor Memory Usage: Use tools like htop (Linux) or Task Manager/Resource Monitor (Windows) to continuously monitor your server's RAM usage. This helps you understand if the issue is a temporary spike or a persistent problem ( Operating System Concepts).
Q4: How can I protect my Vintage Story server from DDoS attacks?
A4: Distributed Denial of Service (DDoS) attacks aim to overwhelm your server with traffic, making it inaccessible to legitimate players. Protecting against them involves several layers:
Hosting Provider DDoS Protection: The most effective first line of defense is to choose a hosting provider that offers robust, built-in DDoS protection. These services typically filter malicious traffic before it even reaches your server.
Firewall Configuration: Configure your server's firewall (e.g., ufw on Linux, Windows Firewall) to only allow necessary ports (e.g., your Vintage Story server port, SSH/RDP for administration) and block all other incoming traffic. This reduces the attack surface.
Rate Limiting: Some advanced firewall rules or network devices can implement rate limiting, which restricts the number of connections or packets from a single IP address within a given time frame, mitigating certain types of DDoS attacks.
Obscure IP Address: While not foolproof, avoiding publicizing your server's direct IP address (e.g., using a domain name or a proxy service) can make it harder for attackers to target you.
Cloudflare/Proxy Services: For advanced users, routing your server's traffic through a service like Cloudflare (though primarily for web traffic, some solutions exist for game servers) can provide an additional layer of protection and traffic filtering.
Q5: What is the best way to back up my Vintage Story server world?
A5: Regular backups are crucial for disaster recovery. The "best" way depends on your hosting setup:
Hosting Provider Backups: Most reputable game hosting providers offer automated backup solutions. These typically take snapshots of your entire server or just the world data at regular intervals (daily, weekly) and store them off-site. Ensure you understand how to restore from these backups.
Manual Backups (Self-Hosted):
Stop the Server: Always stop your Vintage Story server before performing a manual backup to ensure data consistency and prevent corruption.
Copy World Folder: The most critical component is your world folder, located within your server's main directory. Copy this entire folder to a separate storage location (e.g., an external hard drive, a network-attached storage (NAS) device, or a cloud storage service like Google Drive, Dropbox, or OneDrive).
Include Configuration/Mods: It's also wise to back up your serverconfig.json and your Mods folder, as these are essential for restoring your server to its exact previous state.
Compression: Compress the backup files (e.g., using .zip or .tar.gz) to save space.
Automated Scripts (Self-Hosted): For more advanced users, you can write simple shell scripts (Linux) or batch scripts (Windows) to automate the backup process. These scripts can stop the server, copy files, compress them, and even upload them to cloud storage, then restart the server. Schedule these scripts to run periodically using cron (Linux) or Task Scheduler (Windows).