마인크래프트 단일 서버 구축 (1/3) - 플러그인 서버

image.png.jpg

마인크래프트 지난 이야기들 마인크래프트 서버 제작 후기[NAS(시놀/헤놀)] 빨간물약 2024.02.16   마인크래프트는 거의 출시 초창기에 자바 에디션 구입 후 지인들이랑 친구들이랑 좀 했었고 그 다음 모드들... 마인크래프트 서버 모드 개념정리+추가내용[서버 구축(Self-Hosted)] 빨간물약 2024.02.19   마인크래프트 서버 제작 후기[NAS(시놀/헤놀)] 빨간물약 2024.02.16마인크래프트는 거의 출시... 마인크래프트 서버 구축 현황 - 기반다지기[서버 구축(Self-Hosted)] 빨간물약 2024.02.23   마인크래프트 서버 제작 후기[NAS(시놀/헤놀)] 빨간물약 2024.02.16마인크래프트는 거의 출시... 마인크래프트 서버 구축 현황 - 뼈대 만들기[서버 구축(Self-Hosted)] 빨간물약 2024.02.27   마인크래프트 서버 구축 현황 - 기반다지기[서버 구축(Self-Hosted)] 빨간물약 2024.02... 마인크래프트 서버 구축 현황 - 살 붙이기[서버 구축(Self-Hosted)] 빨간물약 2024.02.29     마인크래프트 서버 구축 현황 - 기반다지기[서버 구축(Self-Hosted)] 빨간물약 2024....

위의 링크글 처럼 예전에 후기 비스무리하게 글을 올렸었습니다만 가이드 글을 원하시는 분들도 종종 계시더라고요

이게 아무래도 가이드 글을 쓰기에는 너무 방대하기도 하고 각각에 상황에 따라 발생할 수 있는 문제가 다 달라서

대충대충 생략을 했었는데 그 이유는 다른 글의 댓글로 달았던 내용을 가져와서 보면

이 플러그인 서버라는 것이 누가 통팩으로 설정 다 해둔 거 그대로 쓰는 게 아닌 이상
각 서버 종류와 설정과 플러그인 종류 그리고 플러그인과 서버 버전 등등에 따라
이런 저런 오류가 많이 생깁니다 플러그인 들이 계속 개발과 업데이트가 이어지는 상태라
본인이 필요한 것들 하나하나 적용 하는 방법 밖에 없습니다

a, b, c 플러그인 넣으면 작동 하는데 d 플러그인 추가하면 b 플러그인 오류가 뜨고
a 플러그인 잘 되던 거 업데이트 떠서 교체하면 서버가 죽고 이런 경우가 많아요

그리고 각 플러그인 마다 위키나 문서 페이지가 따로 있고 그 분량이 방대한 경우가 많아서
그거 보고 각각의 플러그인 세팅 다 하나씩 해줘야 합니다
설명서 없으면 각 디스코드에 개발자들 있는데 그 개발자들 한테 질문하려면 플러그인 유료 구매 해야만 하구요

여하튼 복잡해요

저도 어제인가 그제인가 마크 게시글 보고 생각나서 서버 다시 켜봤는데
도커 이미지 업데이트 하고 서버 이상해져서 다시 복구하고 플러그인 업데이트 하고 보니 또 에러 뜨고
서버 죽어서 안 켜지고 리소스팩 적용 안되고 막 난리나서 복구하는데 8시간인가 걸렸네요
괜히 한 번 켜봤다가 8시간 날렸습니다...

필요한 플러그인 하나 추가하고 직접 설정 해보고 그 플러그인 위키나 문서 확인하고 설정 다 됐으면
다시 하나 또 추가하고 문제 없으면 다른 거 추가하고 문제 생기면 로그 보고 수정하고 해서
직접 수정하고 설정 가능 해야 유지 가능 합니다
플러그인 코드 다 뜯어서 확인 하는 정도 까지는 아니더라도
최소한 로그 파일 보고 설정 수정할 수 있는 정도는 되야 편합니다

제가 이 게시글도 그냥 후기 처럼 쓴 이유가 가이드 글로 쓰면 너무 방대해지고 변수가 너무 많아요
각 플러그인 마다 간단한 플러그인은 이 글 정도의 분량으로 1~2개, 복잡한 건 3~4개 정도는 써야 할 정도인데
그런 플러그인이 60여 개 정도 됩니다...

플러그인 마다 위키가 따로 있는 경우가 많으니 말 다 했죠

대충 이런 이유 입니다

제가 만들었던 프록시 서버와 적용한 모든 플러그인에 관한 가이드 글은 사실상 너무 복잡해서 좀 힘들 거 같고

단일 서버에 플러그인 몇 개 정도는 가이드 글로 적을 수 있겠더라고요

지금 코로나인지 독감인지 뭔가 걸려서 쉬고 있다가 좀 나아져서 여유가 생기니 한 번 적어 봅니다

우선 제가 만든 서버 같은 경우는

image.png.jpg

이런 식으로 번지코드 프록시 서버와 월드 서버 2개 그리고 redis 컨테이너 까지 해서 만들었습니다

굳이 코드를 보자면

version: '3.5'

services:
  mc1:
    image: itzg/minecraft-server
    tty: true
    stdin_open: true
    environment:
      EULA: true
      TYPE: PAPER
      VERSION: 1.20.1 #latest
      ONLINE_MODE: "FALSE"
      UID: 1026
      GID: 100
      TZ: Asia/Seoul
      #ENABLE_JMX: true
      #JMX_HOST: 192.168.0.45
      CFG_MOTD: 환영합니다
      DIFFICULTY: normal
      ICON: /downloads/icon/icon.png
      OVERRIDE_ICON: TRUE
      MAX_PLAYERS: 10
      MAX_WORLD_SIZE: 200
      ALLOW_NETHER: false
      ENABLE_COMMAND_BLOCK: true
      GENERATE_STRUCTURES: false
      SPAWN_ANIMALS: false
      SPAWN_MONSTERS: false
      SPAWN_NPCS: false
      SERVER_NAME: Dream
      ENABLE_AUTOPAUSE: true
      MAX_TICK_TIME: -1
      JVM_DD_OPTS: disable.watchdog:true
      AUTOPAUSE_TIMEOUT_INIT: 300
      AUTOPAUSE_TIMEOUT_EST: 300
      AUTOPAUSE_KNOCK_INTERFACE: eth0
      #RCON_PORT: 25577
      #DEBUG_AUTOPAUSE: true
      STOP_SERVER_ANNOUNCE_DELAY: 20
      STOP_DURATION: 60
      #PROXY: true
      MEMORY: 1G
    volumes:
      - /volume1/docker/minecraft_bungee_paper/minecraft_plugin_paper_lobby/data:/data
      - /volume1/docker/minecraft_bungee_paper/minecraft_plugin_paper_lobby/downloads:/downloads
    depends_on:
      - bungeecord
      - redis
    ports:
      - "25565:25565/udp"
      - "8163:8163"
    networks:
      default_bridge:
        ipv4_address: 172.25.0.4

  mc2:
    image: itzg/minecraft-server
    tty: true
    stdin_open: true
    environment:
      EULA: true
      TYPE: PAPER
      VERSION: 1.20.1 #latest
      ONLINE_MODE: "FALSE"
      UID: 1026
      GID: 100
      TZ: Asia/Seoul
      #ENABLE_JMX: true
      #JMX_HOST: 192.168.0.45
      MOTD: 환영합니다
      DIFFICULTY: normal
      ICON: /downloads/icon/icon.png
      OVERRIDE_ICON: TRUE
      MAX_PLAYERS: 10
      SERVER_NAME: Dream
      ENABLE_AUTOPAUSE: true
      MAX_TICK_TIME: -1
      JVM_DD_OPTS: disable.watchdog:true
      AUTOPAUSE_TIMEOUT_INIT: 300
      AUTOPAUSE_TIMEOUT_EST: 300
      AUTOPAUSE_KNOCK_INTERFACE: eth0
      #RCON_PORT: 25577
      #DEBUG_AUTOPAUSE: true
      STOP_SERVER_ANNOUNCE_DELAY: 20
      STOP_DURATION: 60
      PROXY: true
      MEMORY: 2G
    volumes:
      - /volume1/docker/minecraft_bungee_paper/minecraft_plugin_paper_wild/data:/data
      - /volume1/docker/minecraft_bungee_paper/minecraft_plugin_paper_wild/downloads:/downloads
    depends_on:
      - bungeecord
      - redis
      - mc1
    ports:
      - "25566:25566/udp"
      #- "8164:8164"
    networks:
      default_bridge:
        ipv4_address: 172.25.0.5

  #mc3:
   #image: itzg/minecraft-server
    #tty: true
    #stdin_open: true
    #environment:
      #EULA: true
      #TYPE: PAPER
      #VERSION: 1.20.1 #latest
      #ONLINE_MODE: "FALSE"
      #UID: 1026
      #GID: 100
      #TZ: Asia/Seoul
      ##ENABLE_JMX: true
      ##JMX_HOST: 192.168.0.45
      #MOTD: 환영합니다
      #DIFFICULTY: normal
      #ICON: /downloads/icon/icon.png
      #OVERRIDE_ICON: TRUE
      #MAX_PLAYERS: 10
      #SERVER_NAME: Dream
      #ENABLE_AUTOPAUSE: true
      #MAX_TICK_TIME: -1
      #JVM_DD_OPTS: disable.watchdog:true
      #AUTOPAUSE_TIMEOUT_INIT: 300
      #AUTOPAUSE_TIMEOUT_EST: 300
      #AUTOPAUSE_KNOCK_INTERFACE: eth0
      ##RCON_PORT: 25577
      ##DEBUG_AUTOPAUSE: true
      #STOP_SERVER_ANNOUNCE_DELAY: 20
      #STOP_DURATION: 60
      #PROXY: true
      #MEMORY: 1G
    #volumes:
     # - /volume1/docker/minecraft_bungee_paper/minecraft_plugin_paper_town/data:/data
     # - /volume1/docker/minecraft_bungee_paper/minecraft_plugin_paper_town/downloads:/downloads
    #depends_on:
     # - bungeecord
     # - redis
     # - mc1
     # - mc2
    #ports:
     # - "25567:25567/udp"
     # - "8124:8124"
     # #- "8165:8165"

  redis:
   container_name: minecraft_paper_redis
   image: redis:latest
   #restart: always
   depends_on:
      - bungeecord
   volumes:
      - /volume1/docker/minecraft_bungee_paper/redis:/usr/local/etc/redis
   networks:
      default_bridge:
        ipv4_address: 172.25.0.3

  bungeecord:
    image: itzg/bungeecord
    environment:
      BUNGEE_JAR_REVISION: "1"
      CFG_MOTD: 환영합니다
      REPLACE_ENV_VARIABLES: "true"
      TZ: Asia/Seoul
      ENABLE_RCON: true
    ports:
      - "25565:25577"
      - "19132:19132/udp"
      - "8804:8804"
    volumes:
      - /volume1/docker/minecraft_bungee_paper/config/config.yml:/config/config.yml
      - /volume1/docker/minecraft_bungee_paper/server:/server
    networks:
      default_bridge:
        ipv4_address: 172.25.0.2
volumes:
  bungeecord: {}
networks:
  default_bridge:
    ipam:
      driver: default
      config:
        - subnet: 172.25.0.0/16

복사

원래는 월드 서버가 3개 였는데 하나는 뺐습니다... 그리고 예전 글들 보셨으면 아시겠지만

아이콘이나 이런 거 필요 없으시면 그냥 빼도 되는 부분도 많죠

굳이 이 코드를 왜 적었느냐?

여기서 서버 코드를 잘라서 만들 거 거든요

솔직히 프록시 서버를 만드는 건 저대로 설정하고 만들기만 해도 아마 작동은 될 겁니다

복잡한 부분은 이제 각 서버의 설정과 플러그인들을 네트워크로 묶어 주는 작업이 복잡 한 거겠죠

단일 서버로 만들면 참 쉽습니다

우선 저는 1.20.1 '페이퍼' 서버를 만들 겁니다

페이퍼 서버가 뭐냐?

마인크래프트 서버 모드 개념정리+추가내용[서버 구축(Self-Hosted)] 빨간물약 2024.02.19   마인크래프트 서버 제작 후기[NAS(시놀/헤놀)] 빨간물약 2024.02.16마인크래프트는 거의 출시...

이 글 한 번 읽어 보시면 좋을 거 같습니다

맨 위에 있는 링크 글들 한 번 씩 읽어 보시면 이해하시기 쉬울 겁니다

1.20.1 버전을 쓰는 이유는 기존 플러그인들의 호환성 때문입니다
제가 서버를 만들 때는 1.20.1이 거의 최신이면서 호환성 좋은 버전 이었는데
요즘에는 더 버전 업이 되면서 상위 버전도 호환성이 좋아졌을 수 있습니다
version: '3.5'

services:
  mc1:
    image: itzg/minecraft-server
    tty: true
    stdin_open: true
    environment:
      EULA: true
      TYPE: PAPER
      VERSION: 1.20.1 #latest
      ONLINE_MODE: "true"
      UID: 1026
      GID: 100
      TZ: Asia/Seoul
      #ENABLE_JMX: true
      #JMX_HOST: 192.168.0.45
      CFG_MOTD: 환영합니다
      DIFFICULTY: normal
      #ICON: /downloads/icon/icon.png
      #OVERRIDE_ICON: TRUE
      MAX_PLAYERS: 10
      MAX_WORLD_SIZE: 200
      ALLOW_NETHER: false
      ENABLE_COMMAND_BLOCK: true
      GENERATE_STRUCTURES: false
      SPAWN_ANIMALS: false
      SPAWN_MONSTERS: false
      SPAWN_NPCS: false
      SERVER_NAME: Dream
      ENABLE_AUTOPAUSE: true
      MAX_TICK_TIME: -1
      JVM_DD_OPTS: disable.watchdog:true
      AUTOPAUSE_TIMEOUT_INIT: 300
      AUTOPAUSE_TIMEOUT_EST: 300
      AUTOPAUSE_KNOCK_INTERFACE: eth0
      #RCON_PORT: 25577
      #DEBUG_AUTOPAUSE: true
      STOP_SERVER_ANNOUNCE_DELAY: 20
      STOP_DURATION: 60
      #PROXY: true
      MEMORY: 1G
    volumes:
      - /volume1/docker/minecraft_paper/data:/data
      #- /volume1/docker/minecraft_paper/downloads:/downloads
    ports:
      - "25565:25565"

    networks:
      default_bridge:
        ipv4_address: 172.25.0.2

networks:
  default_bridge:
    ipam:
      driver: default
      config:
        - subnet: 172.25.0.0/16

복사

자 서버 부분을 뚝 떼왔습니다

그런데 보시면 뭔가 많이 적혀 있습니다

TYPE은 paper로 적혀 있죠 - 플러그인 서버를 만들기 위해 선택 했습니다

버전도 적혀있고 프록시 버전과 다르게 온라인모드를 true를 해줘야 공식 서버 캐릭터를 가져올 수 있습니다

위의 코드를 쭉 보면 로비 서버 부분을 가져온 거라 npc나 동물이나 몬스터등의 스폰이 false로 설정 돼있습니다

중간에 autopause 같은 것들은 접속자 없으면 서버가 절전모드?같이 대기 모드로 바뀝니다

당연히 대기 모드 시에는 자원을 아주 적게 먹습니다

그리고 누군가가 접속을 요청하면 서버가 켜지게 되는 거죠

자원 관리 부분에서 좋기는 하지만 가끔 튕김이 있을 수 있습니다 물론 단일 서버다 보니 크게 문제는 없을 거 같네요

프록시 서버 같은 경우 이 서버 저 서버 왔다갔다 해야해서 가끔 튕겼다가 재접하게 되는 경우가 있더라고요

MEMORY: 1G 메모리 부분은 월드의 크기나 플러그인 종류에 따라서 늘려주시면 됩니다
유저가 많으면 월드가 점점 커지겠죠 - 건물이 늘어나거나 로딩 된 부분이 늘어나거나...
그러면 필요한 메모리도 점점 커집니다
메모리를 처음부터 많이 할당 하시거나 월드 크기 제한을 걸어 두시면 되겠습니다
MAX_WORLD_SIZE: 200 기본은 무한 맵이지만 월드 크기를 제한 하는 거죠
version: '3.5'

services:
  mc1:
    image: itzg/minecraft-server
    tty: true
    stdin_open: true
    environment:
      EULA: true
      TYPE: PAPER
      VERSION: 1.20.1 #latest
      ONLINE_MODE: "TRUE"
      UID: 1026
      GID: 100
      TZ: Asia/Seoul
      #ENABLE_JMX: true
      #JMX_HOST: 192.168.0.45
      MOTD: 환영합니다
      DIFFICULTY: normal
      #ICON: /downloads/icon/icon.png
      #OVERRIDE_ICON: TRUE
      MAX_PLAYERS: 10
      SERVER_NAME: Dream
      ENABLE_AUTOPAUSE: true
      MAX_TICK_TIME: -1
      JVM_DD_OPTS: disable.watchdog:true
      AUTOPAUSE_TIMEOUT_INIT: 300
      AUTOPAUSE_TIMEOUT_EST: 300
      AUTOPAUSE_KNOCK_INTERFACE: eth0
      #RCON_PORT: 25577
      #DEBUG_AUTOPAUSE: true
      STOP_SERVER_ANNOUNCE_DELAY: 20
      STOP_DURATION: 60
      #PROXY: true
      MEMORY: 2G
    volumes:
      - /volume1/docker/minecraft_paper/data:/data
      #- /volume1/docker/minecraft_paper/downloads:/downloads
    ports:
      - "25565:25565"
      #- "8164:8164"
    networks:
      default_bridge:
        ipv4_address: 172.25.0.2

networks:
  default_bridge:
    ipam:
      driver: default
      config:
        - subnet: 172.25.0.0/16

복사

이건 야생 서버로 사용하던 코드 입니다

좀 더 간단하죠 뭐 환경변수는 다양하니 필요에 따라 쓰시면 됩니다

네트워크의 경우 가끔 재빌드를 하면 네트워크가 바뀌는 경우가 있습니다
플러그인 설정에 네트워크 설정을 하는 경우가 있는데
컨테이너 네트워크 설정이 변경 되면 플러그인 설정을 다 바꿔줘야 하는 경우가 있습니다
물론 단일 서버라 네트워크 설정해야 하는 플러그인이 많지는 않겠지만
그래도 귀찮을 상황을 방지하기 위해 고정 하기로 합니다
본인의 상황에 맞게 네트워크 설정을 해주시면 됩니다
아 다 귀찮다 싶으시면 그냥 네트워크 부분 다 지우시고 기본 설정 하셔도 됩니다
나중에 문제 생겼을 때 추가해도 되는 부분이니까요

단일 서버니까 야생 서버로 만들어 보겠습니다

우선 서버부터 빠르게 올려 보겠습니다

파일 스테이션 열고 docker 폴더에 원하는 이름으로 폴더를 만들어 줍니다

저는 minecraft_paper 라고 만들 겠습니다

image.png.jpg

그리고 그 안에 data 폴더를 만들어 줍니다

서버 아이콘을 적용 하시려면 icon 관련 주석 처리 된 부분을 지우고 적용하시면 됩니다
download 폴더도 만들고 그 안에 icon 폴더 만들고 그 안에 icon.png 파일도 넣어주시면 되겠죠?
image.png.jpg

컨테이너 매니저에서 프로젝트 생성 하시고 위 처럼 설정 후 코드 넣고 다음다음 완료 입니다

image.png.jpg
image.png.jpg

정상적으로 생성이 됐습니다

자 이제 페이퍼 서버가 만들어졌습니다

image.png.jpg

접속도 잘 됐습니다만

서버를 만들었으니 접속 할 클라이언트 세팅을 해야겠죠

예전 글에도 대충 적혀있긴 합니다만 다음 글에서 다뤄 보겠습니다

사실 과정은 간단한데 설명을 쬐끔 자세하게 적다보니 글이 길어지네요

마인크래프트 단일 서버 구축 (2/3) - 클라이언트 설정[NAS(시놀/헤놀)] 빨간물약 2024.08.05   마인크래프트 단일 서버 구축 - 플러그인 서버[NAS(시놀/헤놀)] 빨간물약 2024.08.05   ...

Read more

시놀로지 도커에 openclaw 설치하기

오픈클로를 도커에 설치하는 방법을 문의하신 분이 계셔서 작성 해봅니다 현재 오픈클로는 나온지 얼마 안됐고 계속 업데이트가 되고 있는 상황이기 때문에 설치 방법이 달라질 수 있습니다 Docker - OpenClaw https://docs.openclaw.ai/install/docker 제 개인적인 의견은 공식 문서를 참고하시는 걸 추천 드립니다 우선 시놀로지에 설치 하기 위해서는 패키지 센터에서

By 빨간물약

GLM-5 모델 출시와 함께 가격인상

https://svrforum.com/software/2992940 얼마 전에 위 링크 글을 통해 1년 4만원 결제로 상급 모델 사용이 가능하다고 알려드렸던 GLM에서 5버전 출시와 함께 가격 인상을 한다는 이메일이 왔네요 다행히 기존에 이미 사용하는 사람들은 상관 없다고 합니다 내용은 11일 부터 인상이라는데 시차 때문인지 아직 할인된 가격이 적용 되는 거 같습니다 사용을

By 빨간물약

Openclaw를 시놀로지 도커에 설치 해봤습니다

wtr pro n100 네이티브 헤놀에 설치 했습니다 (꺼져있는 CLI 컨테이너는 CLI 접속 시에만 동작 합니다) 어차피 api를 사용하니 도커도 괜찮겠다 싶어서 시도 해봤는데 간단한 문답은 자원 소모가 거의 없네요 텔레그램과 대시보드도 잘 되고 SSH 접속을 통한 CLI 설정도 잘 됩니다 GLM-4.7 API를 사용하는 거라 일반적인 대화 성능은 맥미니랑 크게

By 빨간물약