설치 가이드
서론
우리에 대하여
L2J 서버는 Lineage II 게임 서버를 제공하기 위해 Java로 개발된 공식 오픈 소스 프로젝트입니다.
우리는 오랫동안 활동해 왔으며, 우리의 미션은 공식 게임에 가장 가까운 경험을 제공하는 것입니다.
우리의 비전은 구성에 따라 게임의 어떤 버전이든 실행할 수 있고, 마이크로서비스 클라우드 준비 아키텍처를 사용하는 서버를 갖추는 것입니다.
제품에 대하여
L2J 서버는 L2j 게임 서버와 L2j 로그인 서버라는 두 가지 구성 요소로 나뉘며, 동시에 L2j 게임 서버는 코어(Core)와 데이터팩(Datapack)으로 나뉩니다. 코어는 게임 메커니즘, 지속성 및 통신 메커니즘을 정의하는 Java 코드이며, 데이터팩은 대화 상자, 퀘스트 스크립트, AI 등 게임 플레이와 관련된 모든 파일로 구성됩니다.
서버를 설치하려면 먼저 추가 소프트웨어(Java, 데이터베이스, Git 등)를 설치한 다음 소스 코드를 가져오고, 소스 코드를 컴파일하고, 데이터베이스를 설치하고, 컴파일된 서버 파일을 배포하고, 최소한의 구성을 마친 후 서버를 시작하고 테스트해야 합니다.
필수 소프트웨어
- 업데이트된 OS
- Java
- MariaDB (또는 MySQL)
- Git
OS 업데이트
- Windows
- Centos Stream 10
- Debian 13
- Ubuntu 22
- macOS Sequoia 15
wuauclt /detectnow /updatenow
sudo -i
dnf update
sudo -i
apt update
sudo -i
apt update
brew update && brew upgrade
Java 설치
L2J는 Java를 사용하여 구축되었으므로 서버를 빌드하려면 Java JDK도 필요합니다.
- Windows
- Centos Stream 10
- Debian 13
- Ubuntu 22
- macOS Sequoia 15
winget install EclipseAdoptium.Temurin.25.JDK
이미 winget을 사용한 적이 있다면 다음 명령으로 Java 버전을 업그레이드할 수 있습니다.
winget upgrade EclipseAdoptium.Temurin.25.JDK
Java 버전 확인
java --version
cat <<EOF > /etc/yum.repos.d/adoptium.repo
[Adoptium]
name=Adoptium
baseurl=https://packages.adoptium.net/artifactory/rpm/${DISTRIBUTION_NAME:-$(. /etc/os-release; echo $ID)}/\$releasever/\$basearch
enabled=1
gpgcheck=1
gpgkey=https://packages.adoptium.net/artifactory/api/gpg/key/public
EOF
sudo -i
dnf install -y temurin-25-jdk
Java 버전 확인:
java --version
openjdk 25.0.2 2026-01-20 LTS
OpenJDK Runtime Environment Temurin-25.0.2+10 (build 25.0.2+10-LTS)
OpenJDK 64-Bit Server VM Temurin-25.0.2+10 (build 25.0.2+10-LTS, mixed mode, sharing)
여러 버전이 있는 경우 alternatives를 사용하여 구성할 수 있습니다.
update-alternatives --config 'java'
apt install -y wget apt-transport-https gpg
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null
echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list
apt update
apt install -y temurin-25-jdk
Java 버전 확인:
java --version
openjdk 25.0.2 2026-01-20 LTS
OpenJDK Runtime Environment Temurin-25.0.2+10 (build 25.0.2+10-LTS)
OpenJDK 64-Bit Server VM Temurin-25.0.2+10 (build 25.0.2+10-LTS, mixed mode, sharing)
여러 버전이 있는 경우 alternatives를 사용하여 구성할 수 있습니다.
update-alternatives --config 'java'
apt install -y wget apt-transport-https gpg
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null
echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list
apt install -y temurin-25-jdk
Java 버전 확인:
java --version
openjdk 25.0.2 2026-01-20 LTS
OpenJDK Runtime Environment Temurin-25.0.2+10 (build 25.0.2+10-LTS)
OpenJDK 64-Bit Server VM Temurin-25.0.2+10 (build 25.0.2+10-LTS, mixed mode, sharing)
여러 버전이 있는 경우 alternatives를 사용하여 구성할 수 있습니다.
update-alternatives --config 'java'
brew install --cask temurin@25
Java 버전 확인
java --version
JAVA_HOME 환경 변수를 업데이트하는 것을 권장합니다.
가능한 한 L2J는 Java의 최신 LTS(장기 지원) 버전과 호환됩니다. Java SE 로드맵은 여기에서 확인할 수 있습니다.
Git 설치
L2J는 BitBucket에서 버전 관리 시스템으로 Git을 사용하므로, 최신 버전을 가져오기 위해 Git을 사용하세요.
- Windows
- Centos Stream 10
- Debian 13
- Ubuntu 22
- macOS Sequoia 15
winget install -e --id Git.Git
dnf install -y git
apt install -y git
apt install -y git
brew install git
Git 버전 확인:
git --version
소스 코드는 우리의 공용 저장소에서 직접 가져오는 것을 권장합니다.
데이터베이스 서버 설치
데이터베이스 서버를 다운로드하여 설치하고 특정 사용자를 생성합니다.
- Windows
- Centos Stream 10
- Debian 13
- Ubuntu 22
- macOS Sequoia 15
winget install -e --id MariaDB.Server
dnf install -y mariadb-server
서비스 시작
systemctl start mariadb
데이터베이스 설치 보안 강화:
mysql_secure_installation
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Switch to unix_socket authentication [Y/n] y
Enabled successfully!
Reloading privilege tables..
... Success!
Change the root password? [Y/n] n
... skipping.
기본적으로 MariaDB 설치에는 익명 사용자가 포함되어 있어, 계정이 없는 사람도 MariaDB에 로그인할 수 있습니다. 이는 테스트용이며 설치를 원활하게 하기 위한 것입니다. 실제 운영 환경으로 옮기기 전에 이를 제거해야 합니다.
Remove anonymous users? [Y/n] y
... Success!
보통 root는 'localhost'에서만 접속할 수 있어야 합니다. 이는 네트워크를 통해 root 비밀번호를 추측하는 것을 방지합니다.
Disallow root login remotely? [Y/n] y
... Success!
기본적으로 MariaDB에는 누구나 접근할 수 있는 'test' 데이터베이스가 포함되어 있습니다. 이 역시 테스트용이며 실제 운영 환경 이전에 제거해야 합니다.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
권한 테이블을 다시 로드하면 지금까지의 모든 변경 사항이 즉시 적용됩니다.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
다 되었습니다! 위 단계를 모두 완료했다면 MariaDB 설치가 안전하게 보호될 것입니다.
MariaDB를 사용해 주셔서 감사합니다!
apt install -y mariadb-server
데이터베이스 설치 보안 강화:
mysql_secure_installation
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Switch to unix_socket authentication [Y/n] y
Enabled successfully!
Reloading privilege tables..
... Success!
Change the root password? [Y/n] n
... skipping.
기본적으로 MariaDB 설치에는 익명 사용자가 포함되어 있어, 계정이 없는 사람도 MariaDB에 로그인할 수 있습니다. 이는 테스트용이며 설치를 원활하게 하기 위한 것입니다. 실제 운영 환경으로 옮기기 전에 이를 제거해야 합니다.
Remove anonymous users? [Y/n] y
... Success!
보통 root는 'localhost'에서만 접속할 수 있어야 합니다. 이는 네트워크를 통해 root 비밀번호를 추측하는 것을 방지합니다.
Disallow root login remotely? [Y/n] y
... Success!
기본적으로 MariaDB에는 누구나 접근할 수 있는 'test' 데이터베이스가 포함되어 있습니다. 이 역시 테스트용이며 실제 운영 환경 이전에 제거해야 합니다.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
권한 테이블을 다시 로드하면 지금까지의 모든 변경 사항이 즉시 적용됩니다.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
다 되었습니다! 위 단계를 모두 완료했다면 MariaDB 설치가 안전하게 보호될 것입니다.
MariaDB를 사용해 주셔서 감사합니다!
apt install -y mariadb-server
데이터베이스 설치 보안 강화:
mysql_secure_installation
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Switch to unix_socket authentication [Y/n] y
Enabled successfully!
Reloading privilege tables..
... Success!
Change the root password? [Y/n] n
... skipping.
기본적으로 MariaDB 설치에는 익명 사용자가 포함되어 있어, 계정이 없는 사람도 MariaDB에 로그인할 수 있습니다. 이는 테스트용이며 설치를 원활하게 하기 위한 것입니다. 실제 운영 환경으로 옮기기 전에 이를 제거해야 합니다.
Remove anonymous users? [Y/n] y
... Success!
보통 root는 'localhost'에서만 접속할 수 있어야 합니다. 이는 네트워크를 통해 root 비밀번호를 추측하는 것을 방지합니다.
Disallow root login remotely? [Y/n] y
... Success!
기본적으로 MariaDB에는 누구나 접근할 수 있는 'test' 데이터베이스가 포함되어 있습니다. 이 역시 테스트용이며 실제 운영 환경 이전에 제거해야 합니다.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
권한 테이블을 다시 로드하면 지금까지의 모든 변경 사항이 즉시 적용됩니다.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
다 되었습니다! 위 단계를 모두 완료했다면 MariaDB 설치가 안전하게 보호될 것입니다.
MariaDB를 사용해 주셔서 감사합니다!
brew install mariadb
서비스 시작
brew services start mariadb
데이터베이스 설치 보안 강화:
mariadb-secure-installation
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Switch to unix_socket authentication [Y/n] y
Enabled successfully!
Reloading privilege tables..
... Success!
Change the root password? [Y/n] n
... skipping.
기본적으로 MariaDB 설치에는 익명 사용자가 포함되어 있어, 계정이 없는 사람도 MariaDB에 로그인할 수 있습니다. 이는 테스트용이며 설치를 원활하게 하기 위한 것입니다. 실제 운영 환경으로 옮기기 전에 이를 제거해야 합니다.
Remove anonymous users? [Y/n] y
... Success!
보통 root는 'localhost'에서만 접속할 수 있어야 합니다. 이는 네트워크를 통해 root 비밀번호를 추측하는 것을 방지합니다.
Disallow root login remotely? [Y/n] y
... Success!
기본적으로 MariaDB에는 누구나 접근할 수 있는 'test' 데이터베이스가 포함되어 있습니다. 이 역시 테스트용이며 실제 운영 환경 이전에 제거해야 합니다.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
권한 테이블을 다시 로드하면 지금까지의 모든 변경 사항이 즉시 적용됩니다.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
다 되었습니다! 위 단계를 모두 완료했다면 MariaDB 설치가 안전하게 보호될 것입니다.
MariaDB를 사용해 주셔서 감사합니다!
다음 SQL 문을 실행하여 L2J 전용 데 이터베이스 사용자를 생성합니다.
mariadb -u root -p
CREATE OR REPLACE USER 'l2j'@'%' IDENTIFIED BY 'l2jserver2019';
GRANT ALL PRIVILEGES ON *.* TO 'l2j'@'%' IDENTIFIED BY 'l2jserver2019';
FLUSH PRIVILEGES;
exit
기본 데이터베이스 비밀번호를 변경하는 것을 권장합니다. 비밀번호를 변경했다면 게임 서버 config 폴더와 로그인 서버 config 폴더 안의 database.properties 파일을 수정해야 합니다.
L2J는 MySQL 8.0+과 호환되지만, 우리는 MariaDB를 권장합니다.
Unzip 설치
- Windows
- Centos Stream 10
- Debian 13
- Ubuntu 22
- macOS Sequoia 15
Windows에서는 필요하지 않습니다.
나중에 컴파일된 서버 파일을 배포할 때 Unzip 유틸리티가 사용됩니다.
apt install -y unzip
나중에 컴파일된 서버 파일을 배포할 때 Unzip 유틸리티가 사용됩니다.
apt install -y unzip
나중에 컴파일된 서버 파일을 배포할 때 Unzip 유틸리티가 사용됩니다.
apt install -y unzip
macOS에서는 필요하지 않습니다.
소스 코드 가져오기
우리의 공식 저장소는 아래에 나열된 것들입니다.
- Windows
- Centos Stream 10
- Debian 13
- Ubuntu 22
- macOS Sequoia 15
mkdir C:\opt\l2j\git
cd C:\opt\l2j\git
mkdir -p /opt/l2j/git
cd /opt/l2j/git
mkdir -p /opt/l2j/git
cd /opt/l2j/git
mkdir -p /opt/l2j/git
cd /opt/l2j/git
mkdir -p ~/l2j/git
cd ~/l2j/git
git clone -b master https://bitbucket.org/l2jserver/l2j-server-login.git
Cloning into 'l2j-server-login'...
remote: Counting objects: 353, done.
remote: Compressing objects: 100% (285/285), done.
remote: Total 353 (delta 194), reused 63 (delta 26)
Receiving objects: 100% (353/353), 110.40 KiB | 324.00 KiB/s, done.
Resolving deltas: 100% (194/194), done.
git clone -b develop https://bitbucket.org/l2jserver/l2j-server-game.git
Cloning into 'l2j-server-game'...
remote: Counting objects: 162315, done.
remote: Compressing objects: 100% (26695/26695), done.
remote: Total 162315 (delta 122790), reused 157270 (delta 117810)
Receiving objects: 100% (162315/162315), 125.97 MiB | 9.93 MiB/s, done.
Resolving deltas: 100% (122790/122790), done.
git clone -b develop https://bitbucket.org/l2jserver/l2j-server-datapack.git
Cloning into 'l2j-server-datapack'...
remote: Counting objects: 278648, done.
remote: Compressing objects: 100% (66228/66228), done.
remote: Total 278648 (delta 215765), reused 269687 (delta 207236)
Receiving objects: 100% (278648/278648), 144.49 MiB | 9.63 MiB/s, done.
Resolving deltas: 100% (215765/215765), done.
Checking out files: 100% (24264/24264), done.
develop 브랜치는 High Five의 최신 버전을 포함하고 있으며, master 브랜치는 High Five의 안정 버전을 포함하고 있습니다. 다른 옵션으로는 Interlude, Epilogue, Freya 등이 있습니다.
서버 빌드
우리는 Maven을 사용하여 서버 파일을 빌드하며, 다음 명령을 실행합니다.
- Windows
- Centos Stream 10
- Debian 13
- Ubuntu 22
- macOS Sequoia 15
cd C:\opt\l2j\git\l2j-server-login
mvnw install
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------< com.l2jserver:l2j-server-login >-------------------
[INFO] Building L2J Login Server 2.6.1.6
...
cd C:\opt\l2j\git\l2j-server-game
mvnw install
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------< com.l2jserver:l2j-server-game >--------------------
[INFO] Building L2J Game Server 2.6.2.0-SNAPSHOT
...
cd C:\opt\l2j\git\l2j-server-datapack
mvnw install
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------< com.l2jserver:l2j-server-datapack >------------------
[INFO] Building L2J DataPack 2.6.2.0-SNAPSHOT
...
cd /opt/l2j/git/l2j-server-login
chmod 755 mvnw
./mvnw install
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------< com.l2jserver:l2j-server-login >-------------------
[INFO] Building L2J Login Server 2.6.1.6
...
cd /opt/l2j/git/l2j-server-game
chmod 755 mvnw
./mvnw install
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------< com.l2jserver:l2j-server-game >--------------------
[INFO] Building L2J Game Server 2.6.2.0-SNAPSHOT
...
cd /opt/l2j/git/l2j-server-datapack
chmod 755 mvnw
./mvnw install
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------< com.l2jserver:l2j-server-datapack >------------------
[INFO] Building L2J DataPack 2.6.2.0-SNAPSHOT
...
cd /opt/l2j/git/l2j-server-login
chmod 755 mvnw
./mvnw install
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------< com.l2jserver:l2j-server-login >-------------------
[INFO] Building L2J Login Server 2.6.1.6
...
cd /opt/l2j/git/l2j-server-game
chmod 755 mvnw
./mvnw install
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------< com.l2jserver:l2j-server-game >--------------------
[INFO] Building L2J Game Server 2.6.2.0-SNAPSHOT
...
cd /opt/l2j/git/l2j-server-datapack
chmod 755 mvnw
./mvnw install
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------< com.l2jserver:l2j-server-datapack >------------------
[INFO] Building L2J DataPack 2.6.2.0-SNAPSHOT
...
cd /opt/l2j/git/l2j-server-login
chmod 755 mvnw
./mvnw install
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------< com.l2jserver:l2j-server-login >-------------------
[INFO] Building L2J Login Server 2.6.1.6
...
cd /opt/l2j/git/l2j-server-game
chmod 755 mvnw
./mvnw install
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------< com.l2jserver:l2j-server-game >--------------------
[INFO] Building L2J Game Server 2.6.2.0-SNAPSHOT
...
cd /opt/l2j/git/l2j-server-datapack
chmod 755 mvnw
./mvnw install
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------< com.l2jserver:l2j-server-datapack >------------------
[INFO] Building L2J DataPack 2.6.2.0-SNAPSHOT
...
cd ~/l2j/git/l2j-server-login
chmod 755 mvnw
./mvnw install
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------< com.l2jserver:l2j-server-login >-------------------
[INFO] Building L2J Login Server 2.6.1.6
...
cd ~/l2j/git/l2j-server-game
chmod 755 mvnw
./mvnw install
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------< com.l2jserver:l2j-server-game >--------------------
[INFO] Building L2J Game Server 2.6.2.0-SNAPSHOT
...
cd ~/l2j/git/l2j-server-datapack
chmod 755 mvnw
./mvnw install
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------< com.l2jserver:l2j-server-datapack >------------------
[INFO] Building L2J DataPack 2.6.2.0-SNAPSHOT
...
다음 경고를 피하려면
[WARNING] An NVD API Key was not provided - it is highly recommended to use an NVD API key as the update can take a VERY long time without an API Key
NIST에서 API 키를 받아 NVD_API_KEY 환경 변수에 해당 키를 설정해야 합니다.
API 키가 있으면 취약점 데이터베이스 파일을 가져오는 데 사용됩니다.
서버 배포
현재 배포 프로세스는 단순히 빌드된 파일의 압축을 푸는 것입니다.
로그인 서버 배포
- Windows
- Centos Stream 10
- Debian 13
- Ubuntu 22
- macOS Sequoia 15
mkdir C:\opt\l2j\server\login
cd C:\opt\l2j\server\login
tar -xf C:\opt\l2j\git\l2j-server-login\target\l2j-server-login-2.6.5.2.zip
mkdir -p /opt/l2j/server/login
cd /opt/l2j/server/login
unzip /opt/l2j/git/l2j-server-login/target/l2j-server-login-*.zip -d /opt/l2j/server/login
mkdir -p /opt/l2j/server/login
cd /opt/l2j/server/login
unzip /opt/l2j/git/l2j-server-login/target/l2j-server-login-*.zip -d /opt/l2j/server/login
mkdir -p /opt/l2j/server/login
cd /opt/l2j/server/login
unzip /opt/l2j/git/l2j-server-login/target/l2j-server-login-*.zip -d /opt/l2j/server/login
mkdir -p ~/l2j/server/login
cd ~/l2j/server/login
unzip ~/l2j/git/l2j-server-login/target/l2j-server-login-*.zip -d ~/l2j/server/login
게임 서버 배포
- Windows
- Centos Stream 10
- Debian 13
- Ubuntu 22
- macOS Sequoia 15
mkdir C:\opt\l2j\server\game
cd C:\opt\l2j\server\game
tar -xf C:\opt\l2j\git\l2j-server-game\target\l2j-server-game-2.6.3.0-SNAPSHOT.zip
tar -xf C:\opt\l2j\git\l2j-server-datapack\target\l2j-server-datapack-2.6.3.0-SNAPSHOT.zip
mkdir -p /opt/l2j/server/game
cd /opt/l2j/server/game
unzip /opt/l2j/git/l2j-server-game/target/l2j-server-game-*.zip -d /opt/l2j/server/game
unzip /opt/l2j/git/l2j-server-datapack/target/l2j-server-datapack-*.zip -d /opt/l2j/server/game
mkdir -p /opt/l2j/server/game
cd /opt/l2j/server/game
unzip /opt/l2j/git/l2j-server-game/target/l2j-server-game-*.zip -d /opt/l2j/server/game
unzip /opt/l2j/git/l2j-server-datapack/target/l2j-server-datapack-*.zip -d /opt/l2j/server/game
mkdir -p /opt/l2j/server/game
cd /opt/l2j/server/game
unzip /opt/l2j/git/l2j-server-game/target/l2j-server-game-*.zip -d /opt/l2j/server/game
unzip /opt/l2j/git/l2j-server-datapack/target/l2j-server-datapack-*.zip -d /opt/l2j/server/game
mkdir -p ~/l2j/server/game
cd ~/l2j/server/game
unzip ~/l2j/git/l2j-server-game/target/l2j-server-game-*.zip -d ~/l2j/server/game
unzip ~/l2j/git/l2j-server-datapack/target/l2j-server-datapack-*.zip -d ~/l2j/server/game
버전이 새로 나올 때마다 파일 이름이 변경될 수 있으니 이 점을 참고하시기 바랍니다.
데이터베이스 설치
L2J CLI 가져오기
L2J CLI는 자동 배포 및 초기 구성을 구현할 수 있게 해주는 도구입니다.
- Windows
- Centos Stream 10
- Debian 13
- Ubuntu 22
- macOS Sequoia 15
mkdir C:\opt\l2j\cli
cd C:\opt\l2j\cli
curl -o l2jcli.zip -L https://l2jserver.com/api/download/cli/latest
tar -xf l2jcli.zip
mkdir -p /opt/l2j/cli
cd /opt/l2j/cli
wget https://l2jserver.com/api/download/cli/latest -O /tmp/l2jcli-latest.zip
unzip /tmp/l2jcli-latest.zip -d /opt/l2j/cli
chmod 755 l2jcli.sh
mkdir -p /opt/l2j/cli
cd /opt/l2j/cli
wget https://l2jserver.com/api/download/cli/latest -O /tmp/l2jcli-latest.zip
unzip /tmp/l2jcli-latest.zip -d /opt/l2j/cli
chmod 755 l2jcli.sh
mkdir -p /opt/l2j/cli
cd /opt/l2j/cli
wget https://l2jserver.com/api/download/cli/latest -O /tmp/l2jcli-latest.zip
unzip /tmp/l2jcli-latest.zip -d /opt/l2j/cli
chmod 755 l2jcli.sh
mkdir -p ~/l2j/cli
cd ~/l2j/cli
wget https://l2jserver.com/api/download/cli/latest -O /tmp/l2jcli-latest.zip
unzip /tmp/l2jcli-latest.zip -d ~/l2j/cli
chmod 755 l2jcli.sh
CLI 구성
config 폴더 내의 login-server.properties와 game-server.properties 두 파일을 편집하여 데이터베이스에 대해 구성된 사용자 및 비밀번호에 맞게 DatabaseUser 및 DatabasePassword를 설정합니다.
CLI 실행
l2jcli.bat를 실행하고 다음 명령을 수행합니다.
- Windows
- Centos Stream 10
- Debian 13
- Ubuntu 22
- macOS Sequoia 15
l2jcli.bat
db install -sql C:\opt\l2j\server\login\sql -u l2j -p l2jserver2019 -m FULL -t LOGIN -c -mods
db install -sql C:\opt\l2j\server\game\sql -u l2j -p l2jserver2019 -m FULL -t GAME -c -mods
./l2jcli.sh
db install -sql /opt/l2j/server/login/sql -u l2j -p l2jserver2019 -m FULL -t LOGIN -c -mods
db install -sql /opt/l2j/server/game/sql -u l2j -p l2jserver2019 -m FULL -t GAME -c -mods
./l2jcli.sh
db install -sql /opt/l2j/server/login/sql -u l2j -p l2jserver2019 -m FULL -t LOGIN -c -mods
db install -sql /opt/l2j/server/game/sql -u l2j -p l2jserver2019 -m FULL -t GAME -c -mods
./l2jcli.sh
db install -sql /opt/l2j/server/login/sql -u l2j -p l2jserver2019 -m FULL -t LOGIN -c -mods
db install -sql /opt/l2j/server/game/sql -u l2j -p l2jserver2019 -m FULL -t GAME -c -mods
./l2jcli.sh
db install -sql ~/l2j/server/login/sql -u l2j -p l2jserver2019 -m FULL -t LOGIN -c -mods
db install -sql ~/l2j/server/game/sql -u l2j -p l2jserver2019 -m FULL -t GAME -c -mods
매개변수는 다음과 같습니다.
| 매개변수 | 설명 |
|---|---|
| -sql path | SQL 파일 경로 |
| -u user | 데이터베이스 사용자 |
| -p password | 데이터베이스 비밀번호 |
| -m mode | 설치 모드 FULL 또는 UPDATE |
| -t type | 서버 유형 LOGIN 또는 GAME |
| -c | 커스텀 테이블 설치 |
| -mods | 모드(mods) 테이블 설치 |
관리자 계정 생성
L2J CLI를 사용하여 관리자 계정을 생성합니다. 8은 최고 계정 레벨(마스터)입니다.
account create -u Zoey76 -p -a 8
quit
서버 포트 개방
localhost에서 플레이하지 않는 경우 서버에서 일부 포트를 열어야 할 수도 있습니다.
- Windows
- Centos Stream 10
- Debian 13
- Ubuntu 22
- macOS Sequoia 15
netsh advfirewall firewall add rule name="L2J Login Server" dir=in action=allow protocol=TCP localport=2106
netsh advfirewall firewall add rule name="L2J Game Server" dir=in action=allow protocol=TCP localport=7777
이 작업은 관리자 권한 명령 프롬프트가 필요합니다. 명령 프롬프트를 관리자 권한으로 실행해 주세요.
firewall-cmd --zone=public --add-port=2106/tcp --permanent
firewall-cmd --zone=public --add-port=7777/tcp --permanent
firewall-cmd --reload
ufw allow 2106/tcp
ufw allow 7777/tcp
ufw allow 2106/tcp
ufw allow 7777/tcp
macOS에서는 필요하지 않습니다.
플레이어로서 서버에 접속하려면 이 포트들만 개방하면 됩니다.
지오데이터 (Geodata)
L2J 서버는 서버에 환경 정보를 포함하기 위해 지오데이터 파일을 사용합니다.
게임 서버의 config 폴더 내 geodata.properties를 편집하여 이를 구성할 수 있습니다.
지오데이터는 data/geodata 폴더 안에 위치해야 하며, GeoDataPath 속성을 편집하여 이를 변경할 수 있습니다.
High Five의 최신 버전은 여기에서 다운로드할 수 있습니다.
서버 시작
초기 구성
이 명령들은 로그를 위한 필수 폴더를 생성하고 스크립트에 실행 권한을 부여합니다.
- Windows
- Centos Stream 10
- Debian 13
- Ubuntu 22
- macOS Sequoia 15
Windows에서는 필요하지 않습니다.
cd /opt/l2j && mkdir -p custom
cd /opt/l2j/server/login && mkdir -p log
chmod 755 LoginServer_loop.sh
chmod 755 startLoginServer.sh
cd /opt/l2j/server/game && mkdir -p log
chmod 755 GameServer_loop.sh
chmod 755 startGameServer.sh
cd /opt/l2j && mkdir -p custom
cd /opt/l2j/server/login && mkdir -p log
chmod 755 LoginServer_loop.sh
chmod 755 startLoginServer.sh
cd /opt/l2j/server/game && mkdir -p log
chmod 755 GameServer_loop.sh
chmod 755 startGameServer.sh
cd /opt/l2j && mkdir -p custom
cd /opt/l2j/server/login && mkdir -p log
chmod 755 LoginServer_loop.sh
chmod 755 startLoginServer.sh
cd /opt/l2j/server/game && mkdir -p log
chmod 755 GameServer_loop.sh
chmod 755 startGameServer.sh
cd ~/l2j && mkdir -p custom
cd ~/l2j/server/login && mkdir -p log
chmod 755 LoginServer_loop.sh
chmod 755 startLoginServer.sh
cd ~/l2j/server/game && mkdir -p log
chmod 755 GameServer_loop.sh
chmod 755 startGameServer.sh
서버 시작
서버를 시작하려면 게임 서버용과 로그인 서버용 두 가지 스크립트를 실행해야 합니다.
- Windows
- Centos Stream 10
- Debian 13
- Ubuntu 22
- macOS Sequoia 15
C:\opt\l2j\server\login\startLoginServer.bat
C:\opt\l2j\server\game\startGameServer.bat
cd /opt/l2j/server/login
./startLoginServer.sh
cd /opt/l2j/server/game
./startGameServer.sh
선택적으로 로그를 확인하여 서버가 올바르게 시작되었는지 확인할 수 있습니다.
tail -f -n 300 /opt/l2j/server/login/log/stdout.log
[INFO ] 2023-01-17 02:03:51 LoginController: Loading Login Controller...
[INFO ] 2023-01-17 02:03:52 LoginController: Cached 10 KeyPairs for RSA communication.
[INFO ] 2023-01-17 02:03:52 LoginController: Stored 20 keys for Blowfish communication.
[INFO ] 2023-01-17 02:03:52 HikariDataSource: HikariPool-1 - Starting...
[INFO ] 2023-01-17 02:03:53 HikariDataSource: HikariPool-1 - Start completed.
[INFO ] 2023-01-17 02:03:53 GameServerTable: GameServerTable: Loaded 0 registered Game Servers.
[INFO ] 2023-01-17 02:03:53 GameServerTable: GameServerTable: Cached 10 RSA keys for Game Server communication.
[INFO ] 2023-01-17 02:03:53 LoginServer: Loaded 2 banned IPs.
[INFO ] 2023-01-17 02:03:53 LoginServer: Listening for game servers on 127.0.0.1:9014.
[INFO ] 2023-01-17 02:03:53 LoginServer: Telnet server is currently disabled.
[INFO ] 2023-01-17 02:03:53 LoginServer: Login Server is now listening on *:2106.
[INFO ] 2023-01-17 02:03:53 UPnPService: Looking for UPnP Gateway Devices...
[INFO ] 2023-01-17 02:04:02 UPnPService: No UPnP gateways has been found.
cd /opt/l2j/server/login
./startLoginServer.sh
cd /opt/l2j/server/game
./startGameServer.sh
선택적으로 로그를 확인하여 서버가 올바르게 시작되었는지 확인할 수 있습니다.
tail -f -n 300 /opt/l2j/server/login/log/stdout.log
[INFO ] 2023-01-17 02:03:51 LoginController: Loading Login Controller...
[INFO ] 2023-01-17 02:03:52 LoginController: Cached 10 KeyPairs for RSA communication.
[INFO ] 2023-01-17 02:03:52 LoginController: Stored 20 keys for Blowfish communication.
[INFO ] 2023-01-17 02:03:52 HikariDataSource: HikariPool-1 - Starting...
[INFO ] 2023-01-17 02:03:53 HikariDataSource: HikariPool-1 - Start completed.
[INFO ] 2023-01-17 02:03:53 GameServerTable: GameServerTable: Loaded 0 registered Game Servers.
[INFO ] 2023-01-17 02:03:53 GameServerTable: GameServerTable: Cached 10 RSA keys for Game Server communication.
[INFO ] 2023-01-17 02:03:53 LoginServer: Loaded 2 banned IPs.
[INFO ] 2023-01-17 02:03:53 LoginServer: Listening for game servers on 127.0.0.1:9014.
[INFO ] 2023-01-17 02:03:53 LoginServer: Telnet server is currently disabled.
[INFO ] 2023-01-17 02:03:53 LoginServer: Login Server is now listening on *:2106.
[INFO ] 2023-01-17 02:03:53 UPnPService: Looking for UPnP Gateway Devices...
[INFO ] 2023-01-17 02:04:02 UPnPService: No UPnP gateways has been found.
cd /opt/l2j/server/login
./startLoginServer.sh
cd /opt/l2j/server/game
./startGameServer.sh
선택적으로 로그를 확인하여 서버가 올바르게 시작되었는지 확인할 수 있습니다.
tail -f -n 300 /opt/l2j/server/login/log/stdout.log
[INFO ] 2023-01-17 02:03:51 LoginController: Loading Login Controller...
[INFO ] 2023-01-17 02:03:52 LoginController: Cached 10 KeyPairs for RSA communication.
[INFO ] 2023-01-17 02:03:52 LoginController: Stored 20 keys for Blowfish communication.
[INFO ] 2023-01-17 02:03:52 HikariDataSource: HikariPool-1 - Starting...
[INFO ] 2023-01-17 02:03:53 HikariDataSource: HikariPool-1 - Start completed.
[INFO ] 2023-01-17 02:03:53 GameServerTable: GameServerTable: Loaded 0 registered Game Servers.
[INFO ] 2023-01-17 02:03:53 GameServerTable: GameServerTable: Cached 10 RSA keys for Game Server communication.
[INFO ] 2023-01-17 02:03:53 LoginServer: Loaded 2 banned IPs.
[INFO ] 2023-01-17 02:03:53 LoginServer: Listening for game servers on 127.0.0.1:9014.
[INFO ] 2023-01-17 02:03:53 LoginServer: Telnet server is currently disabled.
[INFO ] 2023-01-17 02:03:53 LoginServer: Login Server is now listening on *:2106.
[INFO ] 2023-01-17 02:03:53 UPnPService: Looking for UPnP Gateway Devices...
[INFO ] 2023-01-17 02:04:02 UPnPService: No UPnP gateways has been found.
cd ~/l2j/server/login
./startLoginServer.sh
cd ~/l2j/server/game
./startGameServer.sh
선택적으로 로그를 확인하여 서버가 올바르게 시작되었는지 확인할 수 있습니다.
tail -f -n 300 ~/l2j/server/login/log/stdout.log
[INFO ] 2023-01-17 02:03:51 LoginController: Loading Login Controller...
[INFO ] 2023-01-17 02:03:52 LoginController: Cached 10 KeyPairs for RSA communication.
[INFO ] 2023-01-17 02:03:52 LoginController: Stored 20 keys for Blowfish communication.
[INFO ] 2023-01-17 02:03:52 HikariDataSource: HikariPool-1 - Starting...
[INFO ] 2023-01-17 02:03:53 HikariDataSource: HikariPool-1 - Start completed.
[INFO ] 2023-01-17 02:03:53 GameServerTable: GameServerTable: Loaded 0 registered Game Servers.
[INFO ] 2023-01-17 02:03:53 GameServerTable: GameServerTable: Cached 10 RSA keys for Game Server communication.
[INFO ] 2023-01-17 02:03:53 LoginServer: Loaded 2 banned IPs.
[INFO ] 2023-01-17 02:03:53 LoginServer: Listening for game servers on 127.0.0.1:9014.
[INFO ] 2023-01-17 02:03:53 LoginServer: Telnet server is currently disabled.
[INFO ] 2023-01-17 02:03:53 LoginServer: Login Server is now listening on *:2106.
[INFO ] 2023-01-17 02:03:53 UPnPService: Looking for UPnP Gateway Devices...
[INFO ] 2023-01-17 02:04:02 UPnPService: No UPnP gateways has been found.
서버 접속
서버에 접속하려면 다음과 같은 옵션이 있습니다.