Metin2 remains one of the most popular Korean MMORPGs for private server hosting, and FreeBSD has long been the operating system of choice among experienced server administrators. This guide covers exactly how to configure Metin2 server files and channels on FreeBSD, from a clean OS install to a fully functioning multi-channel game server.
Most tutorials floating around forums today are outdated, referencing FreeBSD 9 or MySQL 5.6 setups from over a decade ago. Our team has put together this updated walkthrough so you can get a clean, official-like server running without piecing together fragments from ten different forum threads.
You will learn how to prepare your FreeBSD host, set up MySQL, install the game server files, configure channel servers, and open the right ports so players can actually connect. We also address the Linux versus FreeBSD debate that comes up in nearly every Reddit thread on this topic.
Before diving in, a quick note: yes, Metin2 is still active. The private server community is alive and well, with thousands of players across hundreds of community-hosted servers. Whether you want a personal offline instance for nostalgia or a public server for friends, the process below applies to both scenarios.
What you will accomplish by the end of this guide: A working FreeBSD-based Metin2 server with at least one channel configured, a connected MySQL database, and accessible ports for remote connections.
Table of Contents
Prerequisites and Requirements for Metin2 Server Configuration on FreeBSD
Before you configure anything, make sure your system meets the baseline requirements. Skipping this step is the number one cause of failed setups we see in forum posts.
Hardware requirements:
CPU: At least 2 cores (4 recommended for multi-channel setups)
RAM: 2 GB minimum, 4 GB or more if running 3+ channels
Storage: 20 GB for a basic single-channel server, 40 GB+ for multi-channel
Network: A stable connection with at least 10 Mbps upload for a small community
Software requirements:
FreeBSD 12 or 13 (64-bit) installed on a VPS or physical machine
MySQL 8.0 (or MySQL 5.6/5.7 for older server file packs)
Metin2 server files compatible with your chosen FreeBSD version
SSH access with root or sudo privileges
A registered domain name (optional but recommended for production servers)
We recommend FreeBSD 13.x for new installations as of 2026. It receives security updates and supports the latest Metin2 source compilations without library conflicts. FreeBSD 12 also works well and is what most existing community guides reference, so you will not go wrong with either.
If you are running this on a VPS, check that your provider allows kernel-level access and custom firewall rules. Some budget VPS providers restrict these, which will block your server from accepting external connections later.
Step-by-Step FreeBSD Installation for Metin2 Hosting
If you already have FreeBSD installed, skip to the MySQL section. For everyone starting fresh, follow these steps to get your base system ready.
Step 1: Install FreeBSD 12 or 13 (64-bit)
Download the ISO from the official FreeBSD website and boot your server or VPS from it. During installation, choose the UFS filesystem for simplicity, or ZFS if you want built-in snapshot capabilities for backups later.
Step 2: Set up networking
Configure your network interface with a static IP address. Edit your /etc/rc.conf file to persist the configuration across reboots:
ifconfig_em0="inet 192.168.1.100 netmask 255.255.255.0"
defaultrouter="192.168.1.1"
sshd_enable="YES"Enable SSH so you can manage the server remotely. This is essential unless you plan to work directly at the console for every step.
Step 3: Update the system and install ports
Run the following commands to bring your system up to date and prepare the ports tree:
freebsd-update fetch install
portsnap fetch extract
portsnap updateStep 4: Create a dedicated Metin2 user
Never run game server processes as root. Create a separate user account:
adduser
# Follow prompts: username "mt2", shell: csh or bash, home: /home/mt2Step 5: Install required libraries
Metin2 server binaries depend on several libraries. Install them through ports or pkg:
pkg install mysql80-server
pkg install gmake
pkg install libtool
pkg install m4
pkg install autoconfOnce these packages are in place, your FreeBSD system has the foundation needed to run Metin2 server files. The next step is getting the database layer configured.
How to Configure MySQL for Metin2 Server Files
MySQL stores all player accounts, characters, items, and game data for your Metin2 server. Getting this configuration right is critical, because a misconfigured database will prevent the auth and game servers from starting.
Step 1: Enable and start MySQL
Add MySQL to your startup scripts and launch it:
sysrc mysql_enable="YES"
service mysql-server startStep 2: Secure your MySQL installation
Run the security script to set a root password and remove test databases:
mysql_secure_installationChoose a strong password. You will need this for every database operation going forward.
Step 3: Create the Metin2 databases
Log into MySQL and create the required databases:
mysql -u root -p
CREATE DATABASE account;
CREATE DATABASE common;
CREATE DATABASE hotbackup;
CREATE DATABASE log;
CREATE DATABASE metin2_runup;
CREATE DATABASE player;
exit;Some server file packs use slightly different database names. Check the documentation included with your specific files for any variations.
Step 4: Import the database schema
Your server files should include SQL dump files. Import each one into the corresponding database:
mysql -u root -p account < /home/mt2/sql/account.sql
mysql -u root -p common < /home/mt2/sql/common.sql
mysql -u root -p player < /home/mt2/sql/player.sql
mysql -u root -p hotbackup < /home/mt2/sql/hotbackup.sql
mysql -u root -p log < /home/mt2/sql/log.sqlStep 5: Create a MySQL user for the game server
mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO 'mt2'@'localhost' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
exit;Make sure the username and password here match exactly what is written in your Metin2 configuration files. This mismatch is one of the most common errors reported on the Metin2 subreddit.
Metin2 Server Files Installation and Configuration
Now that FreeBSD and MySQL are ready, it is time to install the actual game server files. This is where many newcomers get stuck, because file placement and permissions matter enormously.
Step 1: Obtain server files
Server files are typically distributed through community repositories on GitHub, MT2Dev, Metin2hub, or the official Metin2 forums. Download a clean file pack that matches your FreeBSD version. Avoid packs loaded with custom systems if you want an official-like experience.
Step 2: Extract and place the files
Create the directory structure and extract your server files:
mkdir -p /usr/home/mt2
cd /usr/home/mt2
tar xzf /path/to/serverfiles.tar.gzA typical Metin2 server directory contains subdirectories for each channel and the auth server: channel1, channel2, game99, db, auth, and a shared share folder.
Step 3: Make binaries executable
chmod +x /usr/home/mt2/channel1/game
chmod +x /usr/home/mt2/channel2/game
chmod +x /usr/home/mt2/db/db
chmod +x /usr/home/mt2/auth/game
chmod +x /usr/home/mt2/game99/gameStep 4: Edit the CONFIG files
Each server directory contains a CONFIG file. This is where you define the server ID, port, channel number, and database connection details. Open the CONFIG in the db directory first:
SQL_ACCOUNT = "127.0.0.1 account mt2 your_password"
SQL_PLAYER = "127.0.0.1 player mt2 your_password"
SQL_COMMON = "127.0.0.1 common mt2 your_password"
SQL_HOTBACKUP = "127.0.0.1 hotbackup mt2 your_password"
LOCALE = "english"
BIND_PORT = 15000For each channel CONFIG file, set the following critical values:
SERVER_NAME: Your server’s display nameCHANNEL: The channel number (1, 2, 3, etc.)PORT: A unique port per channel (13000, 13001, 13002…)P2P_PORT: A unique inter-server port per channel (14000, 14001…)DB_PORT: Should match the BIND_PORT in your db CONFIG (15000)
Double-check that no two channels share the same PORT or P2P_PORT. Port collisions will cause channels to crash on startup.
Step 5: Link the shared data directory
All channels need access to the same game data (maps, monsters, items). Ensure each channel has a symlink to the shared folder:
cd /usr/home/mt2/channel1
ln -s /usr/home/mt2/share share
cd /usr/home/mt2/channel2
ln -s /usr/home/mt2/share shareHow to Configure Metin2 Channels on FreeBSD
Channels are individual instances of the game world that players can switch between. A well-configured multi-channel setup distributes player load and reduces lag. Most private servers run between 2 and 4 channels.
Each channel runs as a separate process with its own CONFIG file, port, and PID file. Here is how to configure Metin2 channels on FreeBSD properly.
Step 1: Understand the channel structure
A standard Metin2 server has the following components:
Auth server (login server): Handles authentication on port 11000
DB cache server: Bridges game servers to MySQL on port 15000
Channel 1: First game world instance, port 13000
Channel 2: Second game world instance, port 13001
Game99: Special channel for events and cross-server features, port 13099
Step 2: Assign unique ports per channel
Open each channel’s CONFIG file and confirm the ports follow this pattern:
# Channel 1 CONFIG
PORT = 13000
P2P_PORT = 14000
DB_PORT = 15000
# Channel 2 CONFIG
PORT = 13001
P2P_PORT = 14001
DB_PORT = 15000
# Game99 CONFIG
PORT = 13099
P2P_PORT = 14099
DB_PORT = 15000Notice that DB_PORT is the same across all channels, because they all connect to the same database cache server.
Step 3: Set the server index
In each CONFIG file, the SERVER_ID or map server index must be unique. Channel 1 uses index 1, channel 2 uses index 2, and game99 uses index 99. This is what tells the client which channel a player selected.
Step 4: Start the servers in order
Always start servers in this specific order to avoid connection errors:
Start the database cache server:
cd /usr/home/mt2/db && ./dbStart the auth server:
cd /usr/home/mt2/auth && ./gameStart channel 1:
cd /usr/home/mt2/channel1 && ./gameStart channel 2:
cd /usr/home/mt2/channel2 && ./gameStart game99:
cd /usr/home/mt2/game99 && ./game
Step 5: Create a startup script
To avoid starting each process manually, create a simple shell script. Place it at /usr/home/mt2/start.sh:
#!/bin/sh
cd /usr/home/mt2/db && ./db &
sleep 2
cd /usr/home/mt2/auth && ./game &
sleep 2
cd /usr/home/mt2/channel1 && ./game &
sleep 2
cd /usr/home/mt2/channel2 && ./game &
sleep 2
cd /usr/home/mt2/game99 && ./game &Make it executable with chmod +x /usr/home/mt2/start.sh. Now you can bring your entire server online with a single command.
Step 6: Verify all channels are running
Check that all game processes are active:
ps aux | grep gameYou should see separate entries for the auth server, db server, each channel, and game99. If any process is missing, check its corresponding syslog or the syserr file inside that server’s directory.
Network and Firewall Configuration for Metin2 Private Server
Your server will not accept connections until the right ports are open and your firewall is configured correctly. This is the section where most guides fall short, and it is also the most common help request on the Metin2 subreddit.
Step 1: Identify the ports you need to open
Here is the standard port list for a Metin2 server with two channels:
Port 11000: Auth/login server (TCP)
Port 13000: Channel 1 game server (TCP)
Port 13001: Channel 2 game server (TCP)
Port 13099: Game99 event server (TCP)
Port 15000: DB cache server internal (localhost only, do not expose)
Port 14000-14099: P2P inter-server communication (localhost only, do not expose)
Step 2: Configure the FreeBSD PF firewall
FreeBSD uses PF (Packet Filter) as its default firewall. Enable it in /etc/rc.conf:
pf_enable="YES"
pf_rules="/etc/pf.conf"Create your rules file at /etc/pf.conf:
ext_if = "em0"
set skip on lo0
block in all
pass out all keep state
# SSH access (adjust if using a non-standard port)
pass in on $ext_if proto tcp from any to any port 22
# Metin2 server ports
pass in on $ext_if proto tcp from any to any port 11000
pass in on $ext_if proto tcp from any to any port 13000
pass in on $ext_if proto tcp from any to any port 13001
pass in on $ext_if proto tcp from any to any port 13099Load the rules immediately without rebooting:
pfctl -f /etc/pf.conf
pfctl -eStep 3: Configure BIND_IP in your CONFIG files
Each channel and the auth server need to know the public IP address players will connect to. Add or modify the BIND_IP line in every CONFIG file:
BIND_IP = your.public.ip.addressFor internal or offline-only servers, use your machine’s local IP or 127.0.0.1.
Step 4: Update client serverinfo
In your Metin2 client files, edit serverinfo.py to point at your server’s IP and ports. This file defines which IP the client connects to when a player selects a channel from the server list.
Make sure the channel definitions in serverinfo.py match the ports you set in your FreeBSD CONFIG files exactly. A mismatch here will cause “cannot connect to server” errors.
Step 5: Test external connectivity
From a different machine, test whether your server ports are reachable:
telnet your.server.ip 11000If the connection succeeds, your firewall and IP configuration are correct. If it times out, double-check your PF rules and your VPS provider’s external firewall settings.
Linux vs FreeBSD for Metin2: Which Should You Choose?
This debate comes up constantly in community forums. Both operating systems can run Metin2 servers, but they have different strengths. Here is our honest comparison based on real-world deployment experience.
| Factor | FreeBSD | Linux |
|---|---|---|
| Native compatibility | Excellent — Metin2 was originally designed for FreeBSD | Good — works with compatibility layers |
| Community resources | Most guides and server files target FreeBSD directly | Fewer Metin2-specific tutorials available |
| Performance | Slightly better under heavy concurrent connections | Comparable on modern kernels |
| Learning curve | Steeper for admins new to FreeBSD | Easier for most people |
| Library availability | May require manual compilation for some libraries | Broad package availability via apt/yum |
| Recommended for | Production servers, experienced admins | Quick testing, beginners, Docker setups |
Our recommendation: if you are building a serious server that will host real players, go with FreeBSD. The Metin2 server binaries and configuration conventions were built around it, and you will encounter fewer library and compatibility issues long-term.
If you just want to test something quickly or you are already comfortable with Linux, a Debian or Ubuntu setup works fine. Just be prepared to troubleshoot compatibility issues that FreeBSD users never face.
Common Troubleshooting Steps for Metin2 Server Files
Even with a careful setup, things can go wrong. Here are the most frequent issues and how to fix them quickly.
Problem: Channel server crashes immediately on startup
Check the syserr file in the channel directory. The most common cause is a port conflict with another channel or a typo in the CONFIG file. Verify that each channel has a unique PORT and P2P_PORT value.
Problem: “Cannot connect to server” on the client side
This almost always points to a network issue. Confirm that BIND_IP in your CONFIG matches your public IP, your PF firewall rules allow the auth port (11000), and your VPS provider’s cloud firewall also allows inbound traffic.
Problem: Database connection errors in syserr
Verify the MySQL user credentials in your CONFIG files match what you created in MySQL. Also confirm that MySQL is running with service mysql-server status and that the databases were imported correctly.
Problem: Players can log in but cannot enter a channel
This means the auth server is working but the channel game servers are not running or not reachable. Run ps aux | grep game and confirm each channel process is active. Check that the channel ports in serverinfo.py match your CONFIG files.
Problem: High CPU usage or lag with multiple channels
Each channel runs as a separate process and consumes CPU independently. On a 2-core VPS, running 4 channels will cause contention. Either reduce your channel count or upgrade to a machine with more cores. You can also tune the PLAYER_MAX setting in each CONFIG to limit concurrent connections per channel.
Frequently Asked Questions
How do I set up a Metin2 private server?
To set up a Metin2 private server, install FreeBSD 12 or 13 on a VPS or physical machine, set up MySQL with the required databases, download clean Metin2 server files, configure the CONFIG files for each channel, open the necessary ports (11000 for auth, 13000+ for channels), and start the database, auth, and channel servers in order.
Is Metin2 still active?
Yes, Metin2 is still active in 2026. The private server community remains strong, with thousands of players across community-hosted servers. New server files and source code updates continue to appear on forums like MT2Dev, Metin2hub, and the official Metin2 forums.
Which FreeBSD version is best for Metin2 servers?
FreeBSD 13.x is recommended for new Metin2 server installations as of 2026. It offers the latest security updates and supports modern Metin2 source compilations. FreeBSD 12 also works well and is what most existing community guides reference.
What ports do I need to open for a Metin2 server?
Open port 11000 for the auth server, port 13000 for channel 1, port 13001 for channel 2, port 13099 for game99, and additional ports for any extra channels. Keep the database port 15000 and P2P ports 14000-14099 restricted to localhost only for security.
Can I run a Metin2 server on Linux instead of FreeBSD?
Yes, you can run a Metin2 server on Linux. However, Metin2 was originally designed for FreeBSD, so most server files and community guides are built around it. Linux works but may require additional compatibility layers and manual library compilation.
Conclusion
Configuring Metin2 server files and channels on FreeBSD requires attention to detail at every stage, from OS installation through MySQL setup, file placement, channel configuration, and firewall rules. The process is straightforward when broken into the steps above, but skipping any single piece will cause problems downstream.
Our team built this guide to address the gaps in outdated forum tutorials and give you a single, reliable reference for the entire setup process. Whether you are hosting a personal offline server or launching a community server, the same fundamentals apply: use a supported FreeBSD version, keep your database credentials consistent, assign unique ports per channel, and secure your firewall properly.
Now that you know how to configure Metin2 server files and channels on FreeBSD, the next step is to customize your game content. Explore the share directory for map and item configuration, adjust drop rates in your database, and start inviting players to test your new server.