palworld-server-docker icon indicating copy to clipboard operation
palworld-server-docker copied to clipboard

Rcon dosent works cli: execute: auth: rcon: dial tcp 127.0.0.1:25575: connect: connection refused

Open Maria-nearl opened this issue 8 months ago • 3 comments

Describe the bug

when I starts server, is shows cli: execute: auth: rcon: dial tcp 127.0.0.1:25575: connect: connection refused and cannot connect a server.

To Reproduce

Steps to reproduce the behavior:

  1. make a server with ubuntu script
  2. install a server manager
  3. put some mod and restart
  4. See error

Expected behavior

it should connect, but refuses

Actual behavior

shows {cli: execute: auth: rcon: dial tcp 127.0.0.1:25575: connect: connection refused} and refuse to connect

Screenshots

Image

OS information (IMPORTANT)

  • OS: Canonical, Ubuntu, 22.04 LTS, amd64 jammy image built on 2025-03-05
  • Palworld Version: v0.4.15.66880
  • Docker Image Version: 1.2.3

Hardware information (IMPORTANT)

  • CPU: GCP C2-standard-8 (Intel Cascade Lake)
  • Memory:32GB

docker-compose.yml contents (IMPORTANT)


services: palworld: image: thijsvanloef/palworld-server-docker:latest restart: unless-stopped container_name: palworld-server stop_grace_period: 30s # Set to however long you are willing to wait for the container to gracefully stop ports: - 8211:8211/udp - 27015:27015/udp # Required if you want your server to show up in the community servers tab # - 8212:8212/tcp # Port for REST API if REST_API_ENABLED: true environment: PUID: 1000 PGID: 1000 PORT: 8211 # Optional but recommended PLAYERS: 12 # Optional but recommended SERVER_PASSWORD: "xxxx" # Optional but recommended MULTITHREADING: true RCON_ENABLED: true RCON_PORT: 25575 TZ: "UTC" ADMIN_PASSWORD: "xxxxx" COMMUNITY: false # Enable this if you want your server to show up in the community servers tab, USE WITH SERVER_PASSWORD! SERVER_NAME: "palworld-hardmode" SERVER_DESCRIPTION: "in-hell-we-lament" ALLOW_CONNECT_PLATFORM: "Steam" # Defaults to "Steam" if not set, set this to "Xbox" if you want to host a server for Xbox players. CROSSPLAY BETWEEN XBOX-STEAM IS NOT YET SUPPORTED volumes: - ./palworld:/palworld/

# docker-compose.yml contents here

Container/Host Logs (IMPORTANT)

Logs

sorry, I don't konw how to see logs in GCP

Additional context

Is server colides with outdated mod .paks files?

Bug Report Checklist

  • [v] I searched for my issue on the Known issues page
  • [v] I searched for my issue in the Closed issues
  • [v] I have included all relevant information required above.
  • [v] I am willing to fix this bug

Maria-nearl avatar Mar 08 '25 14:03 Maria-nearl

Could you share the contents of your script?

thijsvanloef avatar Mar 08 '25 15:03 thijsvanloef

Could you share the contents of your script?

Auto_setup.sh(scrypt to making server)

#!/bin/bash

sudo mkdir /home/serverfile sudo chmod 777 -R /home/serverfile

for (( ; ; )); do echo "Check your [docker-compose.yml] file and press Enter to continue." read check=$(ls /home/serverfile | sed 's/.//g')

if [ $check == "docker-composeyml" ]
then
    echo "File checked"
    break
fi
echo "Can't detect docker-compose.yml Try again."

done

cd /home/serverfile

sudo apt-get update &&

sudo apt-get -y install docker.io

sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker

sudo COMPOSE_VERSION=v2.24.1 bash -eu << 'EOT' echo ${COMPOSE_VERSION} curl -L https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-uname -s-uname -m > /usr/local/bin/docker-compose chown root:docker /usr/local/bin/docker-compose chmod ug+x /usr/local/bin/docker-compose update-alternatives --install /usr/bin/docker-compose docker-compose /usr/local/bin/docker-compose 10 EOT

echo "Installing Serverfile... Please wait 2 minute"

sudo docker-compose up -d && sleep 120

echo "Complete! Now you can join your server" sudo chmod 777 -R /home/serverfile

server_manager(auto restart and manager)

#!/bin/bash

Function to display the current time in KST

echo_ct_kst() { echo "TIME: $(TZ='Asia/Seoul' date +'%y-%m-%d-%H-%M-%S')" }

Function to stop the palworld-server Docker container

stop_palworld() { echo "Stopping palworld-server..." echo_ct_kst sleep 10 sudo docker exec -i palworld-server rcon-cli "broadcast This_server_shuts_down_after_60_seconds." sleep 30 sudo docker exec -i palworld-server rcon-cli save sudo docker exec -i palworld-server rcon-cli shutdown echo "palworld-server will shut down in 30 seconds." sleep 31 sudo docker stop palworld-server echo "palworld-server stopped!!" echo_ct_kst }

Function to start the palworld-server Docker container

start_palworld() { echo "Starting palworld-server..." echo_ct_kst sudo docker start palworld-server echo "palworld-server started!!" echo_ct_kst sleep 60 sudo docker exec -i palworld-server rcon-cli "broadcast Hello,_Pal_Master.The_server_uptime_is_1_minute." sleep 60 sudo docker exec -i palworld-server rcon-cli "broadcast Hi,_Pal_Master.The_server_uptime_is_2_minute." sleep 60 sudo docker exec -i palworld-server rcon-cli "broadcast Welcome,_Pal_Master.The_server_uptime_is_3_minute." sudo docker exec -i palworld-server rcon-cli save }

Function to restart the palworld-server Docker container

restart_palworld() { echo "Stopping palworld-server..." echo_ct_kst sleep 10 sudo docker exec -i palworld-server rcon-cli "broadcast This_server_shuts_down_after_60_seconds." sleep 30 sudo docker exec -i palworld-server rcon-cli save sudo docker exec -i palworld-server rcon-cli shutdown echo "palworld-server will shut down in 30 seconds." sleep 31 sudo docker stop palworld-server echo "palworld-server stopped!!" echo_ct_kst sleep 20 echo_ct_kst echo "Backup and Compressing palworld-server files..." TIMESTAMP=$(TZ='Asia/Seoul' date +'%y-%m-%d-%H-%M-%S') BACKUP_PATH="/home/serverfile/backups/${TIMESTAMP}-palworld-backup.tar.gz" tar -czf "${BACKUP_PATH}" -C /home/serverfile/palworld/Pal/Saved/ . echo "Backup and Compression completed!!" sleep 1 sudo docker exec -i palworld-server rcon-cli "broadcast A_backup_of_the_server_at_the_current_time_has_been_created." echo_ct_kst sleep 5 echo "Starting palworld-server..." echo_ct_kst sudo docker start palworld-server echo "palworld-server started!!" echo_ct_kst sleep 60 sudo docker exec -i palworld-server rcon-cli "broadcast Hello,_Pal_Master.The_server_uptime_is_1_minute." sleep 60 sudo docker exec -i palworld-server rcon-cli "broadcast Hi,_Pal_Master.The_server_uptime_is_2_minute." sleep 60 sudo docker exec -i palworld-server rcon-cli "broadcast Welcome,_Pal_Master.The_server_uptime_is_3_minute." sudo docker exec -i palworld-server rcon-cli save }

Function to backup and compress the /home/serverfile/palworld/Pal/Saved/ directory

backup_palworld() { echo_ct_kst echo "Backup and Compressing palworld-server files..." TIMESTAMP=$(TZ='Asia/Seoul' date +'%y-%m-%d-%H-%M-%S') BACKUP_PATH="/home/serverfile/backups/${TIMESTAMP}-palworld-backup.tar.gz" tar -czf "${BACKUP_PATH}" -C /home/serverfile/palworld/Pal/Saved/ . echo "Backup and Compression completed!!" sleep 1 sudo docker exec -i palworld-server rcon-cli "broadcast A_backup_of_the_server_at_the_current_time_has_been_created." echo_ct_kst }

Function to check memory usage and perform actions if it exceeds 80%

check_palworld() { echo "Checking memory usage..." echo_ct_kst # Get total and used memory in megabytes read total used <<< $(free -m | awk '/Mem:/ {print $2 " " $3}') echo "Current memory usage: $(awk '/MemTotal/{total=$2}/MemAvailable/{available=$2} END {printf "%.2f", (total-available)/total*100}' /proc/meminfo)%"

# Calculate used memory as percentage of total
used_pct=$((used * 100 / total))

if [ "$used_pct" -gt 80 ]; then
    echo "Memory usage above 80%. Executing save and shutdown commands..."
    sudo docker exec -i palworld-server rcon-cli "broadcast The_memory_usage_of_the_server_is_too_high."
	sleep 1
    sudo docker exec -i palworld-server rcon-cli "broadcast The_server_will_be_restarted_in_60_seconds."
	sleep 1
    sudo docker exec -i palworld-server rcon-cli "broadcast Stop_everything_you_are_doing_and_disconnect_from_the_server."
	sleep 1
    sudo docker exec -i palworld-server rcon-cli save
	sleep 3
    sudo docker exec -i palworld-server rcon-cli "broadcast See_you_later!"
    sudo docker exec -i palworld-server rcon-cli shutdown 120
    echo "Shutdown initiated. Server will restart after a designated delay."
    sleep 61 # Wait for 60 seconds after save before initiating shutdown
    echo "Restarting palworld-server..."
    sleep 30 # Delay before restarting the server, adjust this value as needed
    sudo docker start palworld-server
    echo "palworld-server restarted."
else
    echo "Memory usage below 80%."
	echo "Current memory usage: $(awk '/MemTotal/{total=$2}/MemAvailable/{available=$2} END {printf "%.2f", (total-available)/total*100}' /proc/meminfo)%" 
	sleep 5
    sudo docker exec -i palworld-server rcon-cli "broadcast The_server_checker_is_complete."
	sleep 1
    sudo docker exec -i palworld-server rcon-cli "broadcast The_server_is_stable_now."
	echo_ct_kst
fi
echo_ct_kst

}

Main logic to call functions based on passed argument

case "$1" in stop) stop_palworld ;; start) start_palworld ;; restart) restart_palworld ;; backup) backup_palworld ;; check) check_palworld ;; *) echo "Usage: $0 {start|stop|backu|check}" exit 1 ;; esac

Maria-nearl avatar Mar 08 '25 16:03 Maria-nearl

Perhaps you should wait until RCON is available.

example)

$ sudo ./rcon.sh showplayers
wait startup Server ...............................OK
wait startup RCON ...........OK
name,playeruid,steamid

<rcon.sh>

#!/bin/bash

### helper functions

get_status() {
  docker inspect -f '{{.State.Status}}' "${1}" 2> /dev/null
}

get_health() {
  docker inspect -f '{{.State.Health.Status}}' "${1}" 2> /dev/null
}

is_running() {
  test "$(get_status ${1})" = "running"
}

is_healthy() {
  test "$(get_health ${1})" = "healthy"
}

can_RCON() {
  docker exec "${1}" nc -z localhost "${RCON_PORT:-25575}" 2> /dev/null
}

wait_start_Server() {
  while ! is_healthy "${1}"; do
    is_running "${1}" || return 1
    echo -n "."
    sleep 1
  done
  return 0
}

wait_start_RCON() {
  while ! can_RCON "${1}"; do
    is_running "${1}" || return 1
    echo -n "."
    sleep 1
  done
  return 0
}

abort() {
  echo "NG"
  exit 1
}

### Main

CONTAINER="palworld-server"

if ! is_running "${CONTAINER}"; then
  echo "The container of ${CONTAINER} has not been started yet."
  exit 1
fi

if ! is_healthy "${CONTAINER}"; then
  echo -n "wait startup Server ..."
  wait_start_Server "${CONTAINER}" || abort
  echo "OK"
fi

if ! can_RCON "${CONTAINER}"; then
  echo -n "wait startup RCON ..."
  wait_start_RCON "${CONTAINER}" || abort
  echo "OK"
fi

docker exec -it "${CONTAINER}" rcon-cli $@

MusclePr avatar Mar 26 '25 11:03 MusclePr