DJMax Technika Q는 2019년에 서비스 종료된 게임입니다.
하지만 Technika시리즈가 인기를 엄청끌었고 특히 북미지역에서 독립영화도 만들정도로 상당히 인기가 많았기에 사설서버가 만들어졌습니다
httpd, php, sqlite만으로 만들어지기에 아키텍처 관계없이 제작이 가능해서 라즈베리파이에 구축하고 동시에 DHCP서버를 구성해서 라즈베리파이로 접속만 하면 문제없이 구동되도록 제작해봤습니다
https://github.com/jbl428/DMTQ-ubuntu
여기의 내용을 참조했으며 여기서 ubuntu로 된 사용자 이름을 pi로 바꿔주면 됩니다.
/home/ubuntu 이런걸 /home/pi 이렇게요.
sudo apt update sudo apt upgrade -y sudo apt install apache2 php php-sqlite3 bind9 -y git clone https://github.com/jbl428/DMTQ-ubuntu.git cd DMTQ-ubuntu/ sudo cp -v sites-available/* /etc/apache2/sites-available/ sudo cp -rv ssl /etc/apache2/ sudo cp -vf bind/* /etc/bind/ sudo a2enmod rewrite ssl sudo a2ensite server ssl sudo a2dissite 000-default sudo systemctl restart apache2 |
그 다음 /etc/apache2/sites-available의 server.conf를 열어
DocumentRoot /home/ubuntu/(어쩌고 저쩌고)
요렇게 된걸
DocumentRoot /home/pi/(어쩌고저쩌고)
이렇게 바꿔주셔야 합니다.
물론 라즈베리파이 OS설치할때 그냥 이름을 ubuntu로 하면 그대로 쓸 수 있지만 보통은 이름을 그냥 기본값으로 쓰니까 pi로 고쳤습니다. buster 버전(일명 Legacy버전) 기준 기본 이름은 pi, 비밀번호는 raspberry입니다.
그런데 bullseye로 들어오면서 방식이 바뀌었습니다. 개인적으로는 LTS인 buster를 추천하지만 bullseye버전을 쓰신다면 조금 다르게 만들어야 합니다.
이미지를 구운후에 userconf.txt파일을 만들어서 사용하거나(고급사용자용https://github.com/raspberrypi/documentation/blob/develop/documentation/asciidoc/computers/configuration/headless.adoc 에서 Configure a User 부분 참조 openssl을 사용해서 암호화해줘야 합니다.)
그냥 Raspberry Pi Imager를 사용하면서 이름을 pi로 해주시면 됩니다.
그리고
mv /home/pi/DMTQ-server/www.neonapi.com/api/accounts_server/ /home/pi/DMTQ-server/www.neonapi.com/api/accounts |
sed -i 's#C:.dmtq.db3#/home/pi/DMTQ-server/_info/dmtq.db3#' DMTQ-server/dmqglb.mb.pmang.com/score/index.php DMTQ-server/dmqglb.mb.pmang.com/djmaxQ/_vendor/_config.php DMTQ-server/pmangplus.com/accounts/v3/global/login_dmq.php DMTQ-server/www.neonapi.com/api/accounts/v3/global/login_dmq.php |
그 다음
DMTQ-server/_vendor/controller/UserController.php
파일을 열어서 45번째 줄을
memberId = UserModel::nextUserId(0); |
이렇게 바꿔주시면 됩니다. 이제 서버 자체는 구축이 되었습니다만 DNS설정을 해주셔야 합니다. 이 부분이 상당히 골치 아픈데 저는 hostapd를 구축해서 라즈베리파이에 와이파이 접속을 하면 DNS설정을 한번에 할 수 있게 만들기로 했습니다. 어차피 로컬 서버이니 인터넷까지 갈 필요가 없으니까요. 오로지 집에서 테크니카를 하기 위한 방법입니다.
hostapd와 dnsmasq는
https://limjunho.github.io/2020/08/25/Raspberry-Pi-AP%EB%A7%8C%EB%93%A4%EA%B8%B0.html
여기 내용을 적용했습니다
우선 필요한 패키지를 설치합니다.
sudo apt install hostapd dnsmasq
sudo systemctl stop hostapd
sudo systemctl stop dnsmasq
일단 이렇게해서 서버를 잠시 정지합니다. 설정이 필요하거든요. 우선 DHCP서버와 고정IP설정을 합니다. 특히 고정IP가 중요한데 라즈베리파이가 호스트이자 게임서버가 될 예정이므로 주소가 바뀌면 문제가 생깁니다
sudo nano /etc/dhcpcd.conf
nano를 이용해서 편집을 해도 되고 vi를 써도 됩니다. 저는 간단하게 하기 위해 이렇게 합니다.
내용은
interface wlan0 static ip_address=192.168.0.82/24 nohook wpa_supplicant |
저는 귀찮아서 192.168.0.82로 했지만 원하시는 IP가 있다면 바꿔주시면 됩니다. 후에 이것이 라즈베리파이의 IP가 됩니다.
sudo service dhcpcd restart
이걸로 다시 DHCP서버를 다시 시작합니다.
그 다음 hostpad 수정
sudo nano /etc/hostapd/hostapd.conf
interface=wlan0 driver=nl80211 ssid=AP 이름 hw_mode=g channel=1 wmm_enabled=0 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=AP 비밀번호 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP |
여기서 비밀번호는 평문입니다. 채널은 1번을 쓰지만 원한다면 바꾸셔도 됩니다.
그 다음
sudo nano /etc/default/hostapd
여기에 다음 내용을 추가합니다.
DAEMON_CONF="/etc/hostapd/hostapd.conf" |
이걸로 hostapd에 필요한 내용이 들어갑니다.
그 다음 dnsmasq.conf 수정
sudo nano /etc/dnsmasq.conf
server=라즈베리파이의 IP(저는 192.168.0.82를 썼습니다).
로 지정해주시면 bind9로 만들어진 DNS와 연동이 됩니다. dnsmasq로 bind9을 안 쓰고도 구성이 가능할 수도 있는데 이미 만들어진 소스를 쓰기위해 이렇개 했습니다.
이제 서버를 다시 구성해봅시다.
sudo systemctl unmask hostapd.service
sudo systemctl start hostapd
sudo systemctl start dnsmasq
sudo systemctl restart apache2
이제 테크니카Q에 SSL파일을 넣어야 하는데 APK수정이 필요합니다.
이쪽은 자세하게 이야기 하지 않겠습니다.
apktool -d TechnikaQ.apk
이렇게 해서 우선 APK파일을 디컴파일링 하고
/home/pi/ubuntu-DMTQ/ssl에 있는 rootCA.crt파일을 복사해서
디컴파일링 된 폴더/res/raw/rootCA.crt에다가 덮어버립니다. 그리고 다시
apktool -b (디컴파일링된 폴더)
이렇게 하면 디컴파일링 폴더에 dist라는 폴더가 만들어지게 되고 여기에 apk파일이 만들어지게 됩니다.
이걸 signapk툴로 다시 사이닝하고 안드로이드 기기에 설치하시면 됩니다.
그리고 기기에서 와이파이 접속 메뉴로 들어가면 아까 라즈베리파이 설정할때 만든 SSID를 찾을 수 있는데 여기 접속 합니다. 인터넷이 안 된다고 뜰텐데 무시합시다. 당연히 인터넷이 안 됩니다.
테크니카를 이제 실행하면...뭔가 업데이트를 하면서 실행이 됩니다. 만약 오류로 꺼진다면 다시 실행해보시면 됩니다.
다만.. 커스텀롬의 경우 gapps가 없으면 오류가 나니 구글 관련 패키지가 설치되어 있지 않으면 설치해주세요. 플레이스토어가 꼭 설치되어야 실행이 됩니다.
하지만 이걸 일일이 만드는건 귀찮으니 그냥 제가 만든 라즈베리파이 이미지를 공유합니다.
https://mega.nz/file/qU8myQxR#YHR8orG3m5Pd2P4UkcAf_FB2DeKh_nJMhTB1rRgvWmQ
waveshare의 LCD를 적용한 상태로 백업 되었기에 /boot파티션의 config.txt를
https://github.com/waveshare/LCD-show/blob/master/boot/config-nomal.txt
여기로 바꾸고
root파티션의 /etc/rc.local 파일 중
sleep 7
fbcp &
con2fbmap 1 0
요 세줄을 삭제하면 HDMI가 작동합니다. 어차피 CLI지만...
추가로 root파티션의 /etc/default/hostapd.conf를 수정해서
ssid와 wpa_passphrase를 수정해주시면 와이파이 이름과 와이파이접속 비밀번호 수정이 가능해집니다.
root파티션은 리눅스환경이 필요하니 윈도우에서는 가상머신을 사용하는걸 추천합니다.