How to Set Up a SA-MP / open.mp Server
Host a classic SA-MP or modern open.mp multiplayer server for GTA: San Andreas on a Linux VPS, configure it, add gamemodes, and keep it online.

SA-MP (San Andreas Multiplayer) and its modern successor open.mp keep GTA: San Andreas multiplayer alive with roleplay, racing, and freeroam servers. This guide sets up either one on a Linux VPS and keeps it online. Players need a legitimate copy of GTA: San Andreas plus the SA-MP or open.mp client.
SA-MP vs open.mp
- SA-MP is the original, battle-tested platform. It's still widely used but no longer actively developed.
- open.mp is an open-source, backward-compatible successor — it runs SA-MP gamemodes and filterscripts, with active development and fixes.
New servers should generally choose open.mp; existing SA-MP servers can migrate with little friction. Both use the same default port and similar configs.
Requirements
- A VPS: Ubuntu 22.04 or Debian 12. These servers are extremely light — 1 vCPU and 1 GB RAM runs a busy server. Enable the i386 architecture, as the binaries are 32-bit.
- Port: UDP 7777 by default.
Step 1: User and 32-bit libraries
sudo adduser --disabled-password --gecos "" samp
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y lib32stdc++6 lib32z1 unzip wget
Step 2a: Install open.mp (recommended)
Download the latest Linux release from the open.mp GitHub releases page:
sudo su - samp
cd ~
wget https://github.com/openmultiplayer/open.mp/releases/latest/download/open.mp-linux-x86.tar.gz
tar xf open.mp-linux-x86.tar.gz
cd Server
open.mp is configured through config.json. A minimal example:
{
"name": "My Nxeon open.mp Server",
"max_players": 50,
"port": 7777,
"rcon": {
"enable": true,
"password": "change-this-strong-password"
},
"pawn": {
"main_scripts": ["gamemode 1"],
"side_scripts": []
}
}
Step 2b: Install SA-MP (classic)
If you specifically need SA-MP, download the Linux server package and extract it:
sudo su - samp
cd ~
wget https://files.sa-mp.com/samp037svr_R2-1.tar.gz
tar xf samp037svr_R2-1.tar.gz
cd samp03
SA-MP uses server.cfg (a plain key/value file):
echo "off"
maxplayers 50
port 7777
hostname My Nxeon SA-MP Server
gamemode0 grandlarc 1
rcon_password change-this-strong-password
announce 1
query 1

Step 3: Open the firewall
sudo ufw allow 7777/udp
sudo ufw allow 7777/tcp
sudo ufw reload
Open the same port in your provider's network firewall.
Step 4: Start the server
For open.mp:
cd /home/samp/Server
./omp-server
For SA-MP:
cd /home/samp/samp03
./samp03svr
Step 5: Keep it online with systemd
Create /etc/systemd/system/samp.service (open.mp shown; adjust paths/binary for SA-MP):
[Unit]
Description=open.mp Server
After=network.target
[Service]
Type=simple
User=samp
WorkingDirectory=/home/samp/Server
ExecStart=/home/samp/Server/omp-server
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now samp
sudo journalctl -u samp -f
Adding gamemodes and filterscripts
Gamemodes are compiled Pawn scripts (.amx files) in the gamemodes folder; filterscripts add features on top. Point main_scripts (open.mp) or gamemode0 (SA-MP) at your .amx name without the extension. Set announce 1/query on so your server appears in the master list. These servers are so light you can easily run several — see how to host multiple game servers on one VPS.
Latency and location
Because SA-MP/open.mp communities are often regional, a nearby server matters — read choosing a game server location for low ping. And since these servers use so few resources, they're a great fit for a small plan; see Game Server Specs Explained.
Compiling and adding gamemodes
Gamemodes are written in Pawn and compiled to .amx. If you're editing scripts, compile with the Pawn compiler that ships in the pawno (SA-MP) or qawno (open.mp) folder:
./pawncc gamemodes/mygamemode.pwn -o gamemodes/mygamemode.amx
Point the server at the compiled name without the extension via gamemode0 mygamemode 1 (SA-MP) or main_scripts (open.mp). Filterscripts work the same way and load alongside the gamemode for modular features like admin systems.
Plugins and 32-bit builds
Many gamemodes need plugins (.so files on Linux) such as MySQL connectors or streamers. List them in plugins (SA-MP server.cfg) or the open.mp config.json, and place the .so files in the plugins folder. Because the server binaries are 32-bit, plugins must be 32-bit builds too.
Troubleshooting
- Server exits on start: a missing gamemode
.amxor a plugin that failed to load — read the console log. - Not in the master list: set
announce 1(SA-MP) or the equivalent and open UDP 7777. - Players lag despite low specs: it's latency, not CPU — pick a region close to your community.
FAQ
Should I use SA-MP or open.mp?
open.mp for new servers — it's open-source, actively maintained, and backward-compatible with SA-MP gamemodes. Stick with SA-MP only if you have a specific reason.
What port does SA-MP use?
UDP 7777 by default, set in server.cfg (SA-MP) or config.json (open.mp). Open the same port on both firewalls.
Why do I need 32-bit libraries?
The server binaries are 32-bit, so you must add the i386 architecture and install lib32stdc++6 and lib32z1 even on a 64-bit VPS.
Why isn't my server in the browser?
Set announce 1 and enable query (SA-MP) or the equivalent in config.json (open.mp), and confirm UDP 7777 is open on both firewalls.
These servers barely sip resources — an affordable NVMe VPS from Nxeon runs one comfortably, with full root access and free migration help if you're moving from another host.