티스토리 뷰
Photo by Mika Baumeister on Unsplash
유치원 다니는 아들 둘이 마인크래프트를 시작했는데, 둘이 같은 서버에서 만나 놀고 싶어해서 방법을 찾아보았다. 다양한 조건과 상황에 대해 모두 들여다 보지는 못했지만 일단 돌아가는 상황까지 만들었다. 실제로 마인크래프트를 하지도 않고 이 게임에 대한 충분한 지식이 없기에 틀리거나 보충할 부분이 있다면 댓글을 부탁드린다.
조건은
1. 24시간 돌아갈 것: 무료 서버로 유명한 Aternos 서버는 5분이상 접속한 유저가 없으면 꺼지는 등의 단점이 있다.
2. Pocket Edition Server일 것: 아이들이 안드로이드 태블릿의 앱(9,900원)으로 접속한다
오라클 클라우드에서 VM(인터넷상의 공짜 컴퓨터라고 생각하자)을 제공하는데 무난하다고 하여 여기에 올려보려고 한다. 상세하고 친절하지는 않은 점 양해를... 참고 링크는 다음과 같다
오라클 클라우드에 마인크래프트(Java Edition) 올리기
마인크래프트 Pocket Edition 설치하기
- https://www.terminalbytes.com/create-your-own-minecraft-pe-server-for-free/
전체 순서
1. 오라클 클라우드에 계정 생성하기
2. VM을 생성하고 ssh로 접속하기
3. Minecraft Pocket Edition 설치하기
4. 안드로이드 태블릿에서 접근하기
오라클 클라우드에 계정 생성하기
계정 생성 방법은 생략한다. 신용카드를 등록하여야 하는데 무언가 자동으로 전환되어 비용이 청구되는 부분은 없으니 안심해도 된다. 무료로 두 개의 VM과 두 개의 오라클 데이터베이스를 제공한다.
VM을 생성하고 ssh로 접속하기
로그인 이후 화면에서 새로운 VM instance 생성 메뉴가 보인다
Create compute instance
컴퓨터 사양을 맞춰서 생성하는 과정이며 아래와 같이 만들었다.
- Intel CPU
- 위 링크에서는 Ampere CPU를 선택했다. 선택지중 사양이 가장 우수한가 보다.
- Java Edition 설치에는 문제 없나본데 마인크래프트 PE 설치중 이런저런 에러 발생해서 제외. Oracle Linux OS가 아니라 CPU가 문제인 것으로 보인다
- Canonical Ubuntu 20.04: 제일 무난하겠지?
- Public IP address: 이걸 설정해야 외부에서 인터넷으로 접근이 가능하다
- Private key/Public Key: Private key는 ssh 접속을 위해 다운받아 놓는다.
네트워크 설정 - Ingress Rules
위 VM 사양 중에서 Primary VNIC 의 Subnet을 클릭하면 아래와 같이 Security List 가 나온다.
다시 Security List를 선택하거나 Add하면 나오는 화면에서 Ingress Rules를 추가해준다
핵심은 Minecraft PE server로 들어오는(Ingress) TCP와 UDP의 19132 포트를 열어준다는 것이다.
방화벽 설정과 screen
시행착오를 거쳐서 아래 부분을 적용하였다. 솔직히 이 부분은 이해가 안된다. 위에 Ingress Rules를 설정했는데 이건 왜 하는 것일까? 충분히 들여다 볼 시간은 없었다.
참고 링크: https://www.reddit.com/r/MCPE/comments/o9vxdd/how_to_create_a_free_minecraft_bedrock_server/
1. firewalld를 설치, 설정, 리로드 해준다. 이렇게 해줘야 외부에서 접근이 가능해진다
2. screen을 설치해준다. ssh로 접근하여 서버를 시작한 다음 터미널을 닫으면 서버가 종료해 버린다. 이걸 방지하려면 screen을 이용해서 시작해주고 터미널을 종료해주어야 한다
$ sudo apt-get update
$ sudo apt-get install firewalld
$ sudo apt-get install screen
$ sudo firewall-cmd --permanent --zone=public --add-port=19132/tcp
$ sudo firewall-cmd --permanent --zone=public --add-port=19132/udp
$ sudo firewall-cmd --reload
Minecraft Pocket Edition 설치하기
VM을 start 하고 원격으로 해당 컴퓨터로 들어간다. MobaXterm이라는 프로그램을 사용해서 ssh 접근을 하였다.
할당된 Public IP를 적고, username에 ubuntu를 적고, 마지막으로 다운받아 두었던 private key의 위치를 말해둔다. 설명을 덧붙이자면, 오라클의 서버는 Private key/Public key를 가지고 있기에 우리의 ssh client인 MobaXterm이 Private key를 가지고 있는지 여부를 확인하여 접근을 허락하는 것이다.
PocketMine-MP 설치
참고 링크: https://www.terminalbytes.com/create-your-own-minecraft-pe-server-for-free/
마인크래프트 서버 설치를 하려고 ssh로 VM에 원격접속을 한 것이다. 아래와 같이 폴더를 만들고 들어가서 서버를 설치하자. Ampere CPU에서는 우여곡절을 겪었는데 인텔 CPU에서는 금방 설치된다
$ mkdir PocketMeServerCreative && cd PocketMeServerCreative
$ curl -sL https://get.pmmp.io | bash -s -
서버를 시작해보자
./start.sh를 실행하면 시작한다. 하지만 위에서 언급했듯 ssh 원격접속을 끊고도 서버가 동작하게 하려면 screen을 통해서 실행시켜줘야 한다.
Screen 사용법 참고 링크: https://bio-info.tistory.com/42
1. $ screen -S minecraft 하면 minecraft라는 이름의 세션 시작
2. 그 세션 안에서 ./start.sh 를 시작한다
- 최초 실행시에는 언어, 모드 등등의 설정을 해준다
- 참고로 나는 아이들을 위해 서바이벌, 크리에이티브 모드로 두 개의 오라클 VM에 두 개의 서버를 띄워주었다.
3. 세션에서 나오려면 ctrl+a, d(그래도 서버는 돌고 있다.
4. 세션의 리스트를 보려면 $ screen -ls
이제는 ssh client인 MobaXterm을 꺼줘도 서버가 죽지 않는다
아래는 서버 설정 참고. 이후에 설정을 변경할 수도 있다.
참고: 첫 실행시 서버 설정
안드로이드 태블릿에서 접근하기
생성한 서버의 Public IP와 19132포트로 새로운 서버를 설정하면, 설정한 서버의 이름이 보일것이다. 접속해서 즐기면 된다.
참고: 태블릿에서 서버가 보이지 않으면 오라클 VM을 정지시켰다 재시작해보자. 특정 설정이 반영되지 않아서일 수 있다.
추가 할일들
Screen으로 계속 실행하게 해두었기에 ssh 원격접속이 끊겨도 마인크래프트 서버는 계속 돌아간다. 하지만 오라클 VM 자체가 꺼지거나 재시작하면 다시 접속애서 마인크래프트 서버를 재시작해줘야한다. VM 서버가 부팅이 되면 자동으로 마인크래프트 서버가 재시작되게 해보자. crontab으로 하면 될 것 같다.
'development' 카테고리의 다른 글
27년차 실리콘벨리 개발자 한기용님 인터뷰 정리 (0) | 2022.08.14 |
---|---|
QCY-HT01을 Windows 10 PC에 연결하기 (0) | 2022.01.17 |
Google Sheets - 일정 간격의 값들을 가져와 자동으로 채우기 (1) | 2021.09.30 |
C language: pthread_create에서 start_routine의 warning (0) | 2021.08.31 |
Makefile - .PHONY는 어떤 용도로 쓰일까? (0) | 2021.08.05 |
- Total
- Today
- Yesterday
- websocket
- 체호프
- notion
- 2023
- 잡학툰
- 제이펍
- github
- solid
- OpenAI
- 독서후기
- 엉클 밥
- clean agile
- ChatGPT
- folklore
- 오블완
- agile
- 인텔리제이
- 영화
- 티스토리챌린지
- golang
- 클린 애자일
- API
- 독서
- bun
- Gin
- 노션
- strange
- intellij
- go
- Bug
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |