LIONFIN
Game server

MTA:SA Server Hosting

Roleplay, racing, deathmatch or freeroam: manage your Multi Theft Auto: San Andreas server with Lua resources, ACL permissions and MySQL on a VDS with reserved resources.

See packages From ₺899.00 per month (excl. VAT)
Default port
22003/UDP (game) · 22005/TCP (HTTP) · 22126/UDP (ASE query)
Server software
MTA:SA dedicated server
Scripting language
Lua (server and client side)
Configuration
mtaserver.conf, acl.xml, meta.xml per resource
Operating system
Windows and Linux
Database
Built-in SQLite or MySQL/MariaDB via dbConnect

Quick answer

MTA:SA server hosting means running a server for Multi Theft Auto: San Andreas, the multiplayer platform for GTA San Andreas, on a machine that stays online 24/7. The server uses three ports: 22003/UDP for the game, 22005/TCP for resource downloads and 22126/UDP for server list queries. Game logic comes from resources written in Lua, and permissions are managed in acl.xml. Resource needs are moderate, so the server, database and web panel can share one VDS server.

Recommended server packages

There is no ready-made package for this use yet; these servers give you full control to install it yourself, or you can request setup through a support ticket. You complete the order on our Turkish store page.

VDS Pro

₺1,599.00 / month

  • 8 ayrılmış çekirdek
  • 16 GB RAM
  • 400 GB NVMe
  • 15 TB Trafik
  • 1 IPv4
  • Günlük yedek
Order (Turkish checkout)

VDS Max

₺2,899.00 / month

  • 12 ayrılmış çekirdek
  • 32 GB RAM
  • 800 GB NVMe
  • 25 TB Trafik
  • 2 IPv4
  • Öncelikli destek
Order (Turkish checkout)

Estimated resources for an MTA:SA server (varies with resource count and game mode)

Server profileRAMvCPUDisk
Race / DM, up to 32 players1–2 GB1–2 cores10 GB NVMe
Freeroam or RP, 50–100 players2–4 GB2 cores20 GB NVMe
Large RP, custom models and MySQL (100+)4–8 GB2–4 cores40 GB NVMe
Live + test server + web panel8 GB4 cores60 GB NVMe

Estimates; actual needs depend on mods, plugins and settings.

What is MTA:SA, and who should rent an MTA server?

Multi Theft Auto: San Andreas (MTA:SA) is an open-source platform that turns GTA San Andreas into a multiplayer game engine and gives server owners almost unlimited customisation through the Lua scripting language. Racing, deathmatch, freeroam, roleplay and even minigames of a completely different genre can be written in MTA.

Renting an MTA server makes sense for:

  • Roleplay communities: MTA RP servers have had a large player base for many years — notably in Türkiye — offering character-driven play with jobs, economy, vehicle and housing systems.
  • Race and DM servers: MTA’s built-in race mode and map editor let you build racing or “DD” (destruction derby) servers with community maps.
  • Lua developers: running scripts on both server and client makes it possible to build extensive projects with interfaces (GUI and DX drawing), custom models and shaders.

With your own rented server, the server stays online 24/7, players connect to a fixed address and you escape your home connection’s upload limit. That makes a clear difference in MTA, where resource files are downloaded to players.

What is the difference between MTA:SA and SA-MP?

MTA:SA and SA-MP offer multiplayer for the same game, but MTA is a more flexible engine that runs Lua scripts on both server and client, with a built-in map editor and resource system, while SA-MP is a simpler platform that runs Pawn scripts on the server side only.

CriterionMTA:SASA-MP / open.mp
Scripting languageLuaPawn
Client-side scriptsYes (UI, effects, shaders)No (limited UI functions)
Custom models and texturesDownloaded to players with resourcesLimited support with open.mp
Default port22003/UDP + 22005/TCP7777/UDP
Permission systemACL (acl.xml)Inside scripts
Resource needsModerateVery low

Your choice depends on the language your team knows and the experience you’re aiming for. For a visually rich server with custom UI and models, choose MTA; if you have an existing Pawn gamemode and a player base used to SA-MP, SA-MP or open.mp is a better fit. We cover the SA-MP side in detail on our SA-MP server hosting page.

Development cost differs too: in MTA, UI, maps and models can be solved with scripts, enabling more ambitious projects — but those need more development effort and testing. For a small team, starting with a ready-made, open-source game mode and gradually adding your own resources is the most sustainable path. When using community-shared resources, follow their licence terms and credit the authors.

How does the resource system work on an MTA server?

Every feature on an MTA server is a resource: a folder or zip file that describes its contents in meta.xml. The game mode, admin panel, scoreboard, maps and vehicle models are started and stopped as separate resources.

A resource’s meta.xml defines:

  • scripts that run on the server (type="server"),
  • scripts downloaded to the player and run on the client (type="client"),
  • files sent to the player (models, textures, sounds, images),
  • other resources it depends on and the functions it exports.

Resources live in the server/mods/deathmatch/resources folder. In the console, refresh registers new resources, and start, stop and restart manage them. Resources that should start automatically when the server boots are listed with resource lines in mtaserver.conf.

The advantage of this modular structure is that you can update and restart a single resource without shutting down the server. The thing to watch is dependencies between resources: a resource using another’s functions may throw errors when that resource restarts.

How do you set admin permissions with the ACL?

On an MTA server, the ACL (Access Control List) in acl.xml decides who can run which command and which resource can use which sensitive function; admin permissions are granted through the groups and rights in this file.

The ACL has two core concepts:

  1. Groups: player accounts (user.accountname) and resources (resource.resourcename) are made members of groups such as Admin, SuperModerator and Moderator.
  2. ACLs: permission lists defining which commands (command.kick) and functions (such as function.setPlayerMoney) each group can access.

The most important security rule is to give resources only the rights they truly need. Adding a resource downloaded from the internet to the Admin group gives it almost full rights on the server; if it contains malicious code, the whole server is at risk. That’s why MTA lets resources declare the sensitive rights they want in meta.xml and lets the admin approve these requests one by one with the aclrequest command.

Create personal admin accounts, don’t use shared accounts, and remove people who leave the team from groups immediately.

How many resources does an MTA server need?

A 32-player race or DM server often runs comfortably on 1–2 GB of RAM and two CPU cores; for a 50–100 player roleplay server, 2–4 GB of RAM is a realistic start. The table values are estimates; the real drivers are the number of resources and how efficiently they’re written.

The main factors that raise resource use on an MTA server:

  • Server-side loops: timers (setTimer) that process all players at short intervals and code that hits the database on every event tax the CPU.
  • Element data sync: syncing frequently changing data to all players with setElementData increases network traffic and CPU load.
  • Database queries: using asynchronous queries prevents the server from waiting.
  • Downloaded files: custom vehicle and building models, textures and sounds take up disk space and are downloaded by every new player, which increases bandwidth needs.

NVMe storage shortens resource start and server boot times. When estimating needs, account for a test server as well: a test environment on the same machine as the live server is the cheapest way to try updates without affecting players, and usually needs about half the live server’s resources.

Should you rent a ready-made package or a VDS for MTA?

The most flexible route for an MTA:SA server is to rent a VDS with full administrative access and set up the server yourself, or request installation through a support ticket; the package table on this page lists the current server options suitable for MTA.

MTA projects usually involve more than one game process. A typical roleplay server runs a live server, a test server on different ports, a MariaDB database for player data, a web server to distribute resource files quickly and a web panel where players see their character details, all side by side.

On a VDS you run all of these with cores and memory reserved for you:

  • choose Windows or Linux as the operating system,
  • set firewall rules yourself to allow only the ports you need,
  • move to a stronger package as your community grows.

In return, updates, backups and security are your responsibility. We compare ready-made game packages and VDS on the game server package vs VDS page.

How can players download resource files faster?

By default, an MTA server distributes the scripts and model files sent to players through its built-in HTTP server on port 22005/TCP. As file sizes grow, handing this off to an external web server noticeably shortens players’ first join.

On roleplay servers with custom vehicles, clothing and building models, the data a player must download on first join can reach hundreds of megabytes. The built-in HTTP server carries that load on the same machine and in the same process as the game. For external distribution:

  1. Set httpdownloadurl in mtaserver.conf to the external web server’s address.
  2. Sync the resource cache folder the server generates (resource-cache/http-client-files) to the web server’s root directory.
  3. Repeat the sync whenever you update a resource; otherwise players download old files and get verification errors.

You can run the external web server with Nginx on the same VDS or use a separate web hosting plan. Compressing files and shrinking unnecessarily high-resolution textures also cuts download time directly.

How do you improve MTA server performance?

The biggest performance gains on an MTA server come from measuring how much CPU each resource uses and fixing problem code, reducing frequently changing element data and making database queries asynchronous.

  • Measurement: the performance browser resources that ship with MTA (for example ipb) show per-resource CPU usage and timer counts. Always start optimisation with measurement.
  • Element data: don’t sync data that only the server needs to every player; disable sync or send it only to the relevant player to cut network and CPU load.
  • Timers: use one global loop instead of a timer per player, and lengthen unnecessarily short timer intervals.
  • Database: asynchronous queries using dbQuery with a callback stop the server freezing while it waits for a result. Index frequently queried columns.
  • Client side: onClientRender drawing that runs every frame and heavy shaders cause FPS drops for players; tune them with lower-end machines in mind.

While debugging, the debugscript 3 command shows warnings and errors in-game; clearing unnecessary warnings both tidies the logs and reveals hidden performance issues.

How do you keep an MTA server secure?

Securing an MTA server takes network-level DDoS filtering, a strict ACL, scripts of known origin, game actions validated on the server and MTA’s built-in anti-cheat kept enabled.

  • DDoS: attacks between rival servers do happen in the MTA community. The RouteFence firewall in our data center filters attack traffic at network level.
  • Don’t trust the client: client scripts run on the player’s computer and can be modified. Validate every action that grants money, items or permissions on the server, and for events coming from the client, check that the sender is really allowed to perform that action.
  • Script protection: Lua files downloaded to the client are saved on the player’s computer. Scripts compiled with MTA’s official Lua compiler, and encrypted if needed, make your code harder to copy.
  • Anti-cheat: don’t disable MTA’s built-in anti-cheat; you can enable extra detections with the relevant settings in mtaserver.conf.
  • Ports and access: don’t expose the database port to the internet; on a VDS, allow only the ports you need, for example with UFW.

How do you back up and migrate an MTA server?

An MTA backup consists of the resources folder, the mtaserver.conf and acl.xml files, the server’s built-in SQLite databases (internal.db and registry.db) and, if you use an external MySQL/MariaDB, a full dump of it.

The built-in databases hold player accounts and some resources’ persistent data. Because these files are written constantly while the server runs, taking the backup with the server briefly stopped or during a maintenance window gives you a consistent copy. Keeping your resources’ source code in version control (Git) gives you both a backup and change history.

When migrating from another provider:

  1. Stop the server and compress the entire server/mods/deathmatch folder.
  2. Export the external database, if any.
  3. Install the MTA server software on the new server, extract the archive and import the database.
  4. Update the database connection details in your resources and the httpdownloadurl address, then start the server.

The only way to be sure backups work is to restore one to a test server now and then. A backup that can’t be restored is no backup at all; a short monthly restore test saves hours in a crisis.

What are the most common MTA server errors?

The most common MTA server errors are resources that fail to load because of a faulty meta.xml, missing ACL rights, ports in use and Lua syntax errors — most of which can be diagnosed from the server console or debugscript output.

  • Resource marked as “broken”: meta.xml has a syntax error or references a file that doesn’t exist. The error message in the refresh output shows which file is missing.
  • “Access denied” warnings: the resource calls a function it has no ACL permission for. If it really needs that right, approve the request; otherwise review the resource.
  • HTTP server can’t start: port 22005 is used by another process or closed in the firewall.
  • Players get stuck while downloading: the external download address serves old files or is unreachable.
  • “Loading script failed”: there is a syntax error in the Lua file; check the line number in the error message.
  • Server not in the list: the 22126/UDP query port is closed; check your firewall rules.

A practical way to narrow down a problem is to start the server with core resources only and add the rest back in groups. Saving the console output and debugscript messages and attaching them to a support ticket also speeds up diagnosis.

How does renting an MTA server work?

Choose a suitable VDS from the package table and complete your order; the server is provisioned automatically, and you then install the MTA server software yourself or request installation through a support ticket.

If you install it yourself, the basic steps are: connect over SSH on Linux or Remote Desktop on Windows; install the MTA server files into a dedicated user’s folder; set the server name, player limit, ports and auto-start resources in mtaserver.conf; and add your own admin account to the Admin group in acl.xml. Then open the three ports (22003/UDP, 22005/TCP, 22126/UDP) and start the server as a service.

Before going live, confirm on the test server that login, registration and core game systems work, take a first backup and share the mtasa:// link or the server address with your players. Prices are shown in Turkish lira excluding VAT and the checkout is in Turkish; contact us by email if you need help ordering.

To grow your player base, stating the game mode clearly in the server name, writing down the rules and making announcements on Discord are the most effective ways to stand out in the MTA server list. Using a memorable domain instead of an IP means players won’t lose your address when you migrate later.

How do you rent and launch an MTA:SA server?

  1. 1

    Choose the game mode

    Decide whether the server will be roleplay, racing, deathmatch or freeroam, and set your target player count.

  2. 2

    Pick a VDS package

    Choose a VDS and operating system from the package table that fit your server, database and web server needs.

  3. 3

    Install the server software

    Install the MTA server files into a dedicated user folder, or request installation via a support ticket.

  4. 4

    Configure the server

    Set the server name, player limit and resources in mtaserver.conf, and your admin account in acl.xml.

  5. 5

    Open the ports

    Allow 22003/UDP, 22005/TCP and 22126/UDP and keep all other ports closed.

  6. 6

    Go live

    Start the server as a service, take a first backup and share the server address with your players.

FAQ

Frequently asked questions about MTA:SA Server Hosting

An MTA:SA server uses three ports by default: 22003/UDP for game traffic, 22005/TCP for the built-in HTTP server that serves resource files, and 22126/UDP for server list queries. All three must be open in the firewall.

1–2 GB of RAM is usually enough for a 32-player race or DM server and 2–4 GB for a 50–100 player roleplay server. If you’ll run many custom models, a MySQL database and a test server on the same machine, plan around 8 GB.

If you know Lua and want client-side UI, custom models and visual effects, MTA is more flexible. If you have an existing Pawn gamemode and a player base used to SA-MP, SA-MP or open.mp may suit you better. Resource needs are lower on SA-MP.

The player first needs to create an account on the server. Then add them to the Admin group in acl.xml as user.accountname, or with the aclGroupAddObject function from the console. The player logging in again activates the permissions.

Yes. The MTA:SA server software is published for Windows and Linux. Linux uses fewer system resources and is a popular choice for servers running uninterrupted for long periods, while Windows is convenient for those who want visual management over Remote Desktop.

Custom models, textures and scripts are downloaded on first join, and the built-in HTTP server can be slow. Defining an external web server with httpdownloadurl in mtaserver.conf and shrinking large textures shortens download time.

The resource is calling a function it has no ACL permission for. Have the resource request the right in its meta.xml and approve it with the aclrequest command. Granting only the required right is safer than adding the whole resource to the Admin group.

Yes. Stop the server and take the server/mods/deathmatch folder and any external database dump. After installing MTA on the new server, put the files in place, import the database, update the connection details and download address, then start the server.

Client scripts are downloaded to the player’s computer, so they can be copied. Using files compiled with MTA’s official Lua compiler, and encrypted if needed, makes this harder. Still, always keep critical game logic on the server side.

In the LIONFIN infrastructure the RouteFence firewall filters attack traffic at network level and stops most volumetric attacks before they reach the server. Brief stutters may occur during an attack; if the problem persists, open a support ticket with the time of the attack.