In the same boat. Got my server running with mcpc and threw railcraft and buildcraft on it. It's a fantastic texture pack, just wish I could get the add ons for the mods.
So I am attempting to set up our new server, and with my domain I have set up a subdomain to be used to login via MC loader. I talked to my webhost and they suggested I use a .htaccess file to redirect to our port #25606. I noticed that after setting up that redirect .htaccess file and log in via the subdomain, I actually hit the server, but eventually it times out. I know I hit the server because our MC server console tells me that it lost connection with my current IP address. Below is the code I used in my .htaccess file.
RewriteEngine On
RewriteCond %{SERVER_PORT} !^25606$
RewriteRule ^(.*) ##.#.##.### $1 [L,R]
Just to note I am unable to change any DNS records on the subdomain with my host. Already tried that...
Suggestions? Really wanna set up this subdomain instead of our crazy IP address
This would not work since the address request that your .htaccess file is translating uses a different protocol than minecraft.
DNS is your only friend in this situation.
You will have to use DNS records to avoid the protocol conflict. Pointing the domain to your minecraft server's IP should do. Minecraft clients will auto request 25565; so you could then get away with just the domain if your server uses port 25565 instead.
If you use a non-standard port the address will still need the port appended to the domain. Same goes for running multiple servers on the same IP. My hope is SRV records will be recognized by the minecraft server some day.
This is a server script I have been making improvements on recently. All credit goes to Ahtenus and Benni-chan for adding ramdisk and multiworld support. This script used to rely heavily on using sleep which I have replaced with a simple multi-role log check function. Rsync world backups have been replaced with rdiff backups which includes incremental restores and pruning.
start - starts the server
stop - stops the server
restart - restarts the server
backup - backups the worlds defined in the script
restore - restores selected world and increment using prompt
defrestore - restores selected world and increment integer values without prompt
prune - prunes backups older than set increment cap
whole-backup - backups the entire server folder
update - fetches the latest version of minecraft.jar server and Bukkit
log-roll - moves and gzips the logfile
to-disk - copies the worlds from the ramdisk to worldstorage
connected - lists connected users
status - shows server status
version - returns Bukkit version
links - creates nessesary symlinks
Edit: added "defrestore" command.
defrestore)
# Restores world with predefined input using world and increment integer values.
# Example: "/etc/init.d/minecraft defrestore 1 0" Restores world 1 defined
# in script settings from most current backup.
Any feedback is appreciated.
In order to run this your server will require:
screen
rdiff-backup
bc (sort of optional, was trying to make bash do math for you on KILL :tongue.gif:)
If planning to use a ramdisk add something like this to your /etc/fstab:
Be sure to fit the ramdisk size depending on your machine's total memory and world size.
Also, the bind path must go to a directory that already exists.
Script:
#!/bin/bash
# /etc/init.d/minecraft
### BEGIN INIT INFO
# Provides: minecraft
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Minecraft server
# Description: Init script for minecraft/bukkit server, with rolling logs and use of ramdisk for less lag.
### END INIT INFO
# Created by Ahtenus
# Forked by tahoward
# Requires rdiff-backup and bc installed in order to run!!!
# Changes:
# Replaced rsync world backups with rdiff-backups and implemented incremental world restores.
# Added log checking for faster script response during server stop/start/backup.
# Added timed kill for log checking.
# Based on http://www.minecraftwiki.net/wiki/Server_startup_script
# Support for multiworld by Benni-chan
#############################
######### SETTINGS ##########
#############################
# Name of server.jar file
SERVICE="craftbukkit-0.0.1-SNAPSHOT.jar"
# Name to use for the screen instance
SCREEN="minecraft"
# User that should run the server
USERNAME="username"
# Path to minecraft directory
MCPATH="/home/${USERNAME}/minecraft"
# Initial memory usage
INITMEM="1024M"
# Minimum amount of memory to use
MAXMEM="1024M"
# Remember: give the ramdisk enough space, subtract from the total amount
# of RAM available the size of your map and the RAM-consumption of your base system.
INVOCATION="java -Xmx$MAXMEM -Xms$INITMEM -jar $SERVICE nogui"
# Where the world backups should go
BACKUPPATH="/home/${USERNAME}/world_backups"
# Maximum number of increments allowed when pruning
PRUNE=672
# Where the logs are copied with log-roll
LOGPATH="${MCPATH}/logs"
# Where the whole minecraft directory is copied when whole-backup is executed
WHOLEBACKUP="/home/${USERNAME}/serverbak"
# Where the worlds are located on the disk
WORLDSTORAGE="${MCPATH}/worldstorage"
# folder names of the world
WORLDNAME[1]="worldname1"
WORLDNAME[2]="worldname2"
# copy world to ramdisk?
WORLDRAM[1]=false
WORLDRAM[2]=false
# Path to the the mounted ramdisk default in Ubuntu: /dev/shm
RAMDISK="$MCPATH/ramdisk"
# Time cap in seconds for log_check process
KILL=30
ME=`whoami`
as_user() {
if [ $ME == $USERNAME ] ; then
bash -c "$1"
else
su - $USERNAME -c "$1"
fi
}
datepath() {
# datepath path filending-to-check returned-filending
if [ -e $1`date +%F`$2 ]
then
echo $1`date +%FT%T`$3
else
echo $1`date +%F`$3
fi
}
log_check() {
counter=0
while [ $counter -lt `echo $KILL*10 | bc` ]
do
counter=$(( $counter + 1 ))
logcheck=`tail -1 $MCPATH/server.log | egrep -c '(Done)|(Save complete)|(Saving chunks)|(Connected)'`
sleep 0.1
if [ $logcheck -eq 1 ]
then
break
fi
done
}
mc_start() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "Tried to start but $SERVICE was already running!"
else
echo "$SERVICE was not running... starting."
cd $MCPATH
as_user "cd $MCPATH && screen -dmS $SCREEN $INVOCATION"
log_check
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is now running."
else
echo "Could not start $SERVICE."
fi
fi
}
mc_saveoff() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is running... suspending saves"
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"save-off\"\015'"
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"save-all\"\015'"
sync
log_check
else
echo "$SERVICE was not running. Not suspending saves."
fi
}
mc_saveon() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is running... re-enabling saves"
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"save-on\"\015'"
else
echo "$SERVICE was not running. Not resuming saves."
fi
}
mc_stop() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is running... stopping."
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"save-all\"\015'"
log_check
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"stop\"\015'"
log_check
sleep 1
else
echo "$SERVICE was not running."
fi
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE could not be shut down... still running."
else
echo "$SERVICE is shut down."
fi
}
log_roll() {
as_user "mkdir -p $LOGPATH"
path=`datepath $LOGPATH/server_ .log.gz .log`
as_user "mv $MCPATH/server.log $path && gzip $path"
}
mc_whole_backup() {
as_user "mkdir -p $WHOLEBACKUP"
path=`datepath $WHOLEBACKUP/mine_`
as_user "cp -r $MCPATH $path"
}
mc_world_backup() {
for INDEX in ${!WORLDNAME[@]}
do
echo "Backing up minecraft ${WORLDNAME[$INDEX]}"
as_user "mkdir -p $BACKUPPATH"
path="$BACKUPPATH/${WORLDNAME[$INDEX]}"
as_user "rdiff-backup $WORLDSTORAGE/${WORLDNAME[$INDEX]} $path"
done
}
mc_prune() {
for INDEX in ${!WORLDNAME[@]}
do
as_user "rdiff-backup --force --remove-older-than '$PRUNE'B $BACKUPPATH/${WORLDNAME[$INDEX]}"
done
}
mc_restore () {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "Stop the server first!"
else
echo "Enter the name of the world you wish to restore, followed by [ENTER]:"
read WORLDINPUT
echo "Enter how many increments back to restore from (0 being the most current backup), followed by [ENTER]:"
read INCREMENTS
backup="$BACKUPPATH/$WORLDINPUT"
dest="$WORLDSTORAGE/$WORLDINPUT"
as_user "rdiff-backup --force -r '$INCREMENTS'B $backup $dest"
echo "$WORLDINPUT restored."
fi
}
mc_defrestore() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "Stop the server first!"
else
INDEX=$1
backup="$BACKUPPATH/${WORLDNAME[$INDEX]}"
dest="$WORLDSTORAGE/${WORLDNAME[$INDEX]}"
as_user "rdiff-backup --force -r '$2'B $backup $dest"
echo "${WORLDNAME[$INDEX]} restored."
fi
}
check_links() {
for INDEX in ${!WORLDNAME[@]}
do
as_user "mkdir -p $WORLDSTORAGE/${WORLDNAME[$INDEX]}"
if [[ -L $MCPATH/${WORLDNAME[$INDEX]} || ! -a $MCPATH/${WORLDNAME[$INDEX]} ]]
then
link=`ls -l $MCPATH/${WORLDNAME[$INDEX]} | awk '{print $11}'`
if ${WORLDRAM[$INDEX]}
then
if [ "$link" != "$RAMDISK/${WORLDNAME[$INDEX]}" ]
then
as_user "rm -f $MCPATH/${WORLDNAME[$INDEX]}"
as_user "ln -s $RAMDISK/${WORLDNAME[$INDEX]} $MCPATH/${WORLDNAME[$INDEX]}"
echo "created link for ${WORLDNAME[$INDEX]}"
fi
else
if [ "$link" != "${WORLDSTORAGE}/${WORLDNAME[$INDEX]}" ]
then
as_user "rm -f $MCPATH/${WORLDNAME[$INDEX]}"
as_user "ln -s ${WORLDSTORAGE}/${WORLDNAME[$INDEX]} $MCPATH/${WORLDNAME[$INDEX]}"
echo "created link for ${WORLDNAME[$INDEX]}"
fi
fi
else
echo "could not process ${WORLDNAME[$INDEX]}. please move all worlds to ${WORLDSTORAGE}."
exit 1
fi
done
echo "links checked"
}
to_ram() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "Server start up stopped:"
else
echo "$SERVICE was not running... starting."
for INDEX in ${!WORLDNAME[@]}
do
if ${WORLDRAM[$INDEX]}
then
if [ -L $MCPATH/${WORLDNAME[$INDEX]} ]
then
as_user "rsync -rt ${WORLDSTORAGE}/${WORLDNAME[$INDEX]}/ $RAMDISK/${WORLDNAME[$INDEX]}"
echo "${WORLDNAME[$INDEX]} copied to ram"
fi
fi
done
fi
}
to_disk() {
for INDEX in ${!WORLDNAME[@]}
do
as_user "rsync -rt $MCPATH/${WORLDNAME[$INDEX]}/ ${WORLDSTORAGE}/${WORLDNAME[$INDEX]}"
echo "${WORLDNAME[$INDEX]} copied to disk"
done
}
mc_update() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is running! Will not start update."
else
### update minecraft_server.jar
echo "Updating minecraft_server.jar...."
MC_SERVER_URL=http://minecraft.net/`wget -q -O - http://www.minecraft.net/download.jsp | grep minecraft_server.jar\</a\> | cut -d \" -f 2`
as_user "cd $MCPATH && wget -q -O $MCPATH/minecraft_server.jar.update $MC_SERVER_URL"
if [ -f $MCPATH/minecraft_server.jar.update ]
then
if `diff $MCPATH/minecraft_server.jar $MCPATH/minecraft_server.jar.update >/dev/null`
then
echo "You are already running the latest version of the Minecraft server."
as_user "rm $MCPATH/minecraft_server.jar.update"
else
as_user "mv $MCPATH/minecraft_server.jar.update $MCPATH/minecraft_server.jar"
echo "Minecraft successfully updated."
fi
else
echo "Minecraft update could not be downloaded."
fi
### update craftbukkit
echo "Updating craftbukkit...."
as_user "cd $MCPATH && wget -q -O $MCPATH/craftbukkit.jar.update http://ci.bukkit.org/job/dev-CraftBukkit/promotion/latest/Recommended/artifact/target/craftbukkit-0.0.1-SNAPSHOT.jar"
if [ -f $MCPATH/craftbukkit.jar.update ]
then
if `diff $MCPATH/craftbukkit-0.0.1-SNAPSHOT.jar $MCPATH/craftbukkit.jar.update > /dev/null`
then
echo "You are already running the latest version of CraftBukkit."
as_user "rm $MCPATH/craftbukkit.jar.update"
else
as_user "mv $MCPATH/craftbukkit.jar.update $MCPATH/craftbukkit-0.0.1-SNAPSHOT.jar"
echo "CraftBukkit successfully updated."
fi
else
echo "CraftBukkit update could not be downloaded."
fi
fi
}
case "$1" in
start)
# Starts the server
check_links
to_ram
mc_start
;;
stop)
# Stops the server
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"say SERVER SHUTTING DOWN!\"\015'"
mc_stop
to_disk
;;
restart)
# Restarts the server
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"say SERVER REBOOT IN 10 SECONDS.\"\015'"
mc_stop
mc_start
;;
backup)
# Backups world
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"say Backing up world.\"\015'"
mc_saveoff
to_disk
mc_world_backup
mc_saveon
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"say Backup complete.\"\015'"
;;
restore)
# Restores world
mc_restore
;;
defrestore)
# Restores world with predefined input using world and increment integers.
# Example: "/etc/init.d/minecraft defrestore 1 0" Restores world 1 defined
# in script settings from most current backup.
mc_defrestore $2 $3
;;
prune)
# Prune backups
mc_prune
;;
whole-backup)
# Backup everything
mc_whole_backup
;;
update)
#update minecraft_server.jar and craftbukkit.jar (thanks karrth)
as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER UPDATE IN 10 SECONDS.\"\015'"
mc_stop
to_disk
mc_whole_backup
mc_update
mc_start
;;
to-disk)
# Writes from the ramdisk to disk, in case the server crashes.
# Using ramdisk speeds things up a lot, especially if you allow
# teleportation on the server.
mc_saveoff
to_disk
mc_saveon
;;
connected)
# Lists connected users
as_user "screen -p 0 -S $SCREEN -X eval 'stuff list\015'"
log_check
tac $MCPATH/server.log | grep -m 1 "Connected"
;;
log-roll)
# Moves and Gzips the logfile, a big log file slows down the
# server A LOT (what was notch thinking?)
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"say ROUTINE REBOOT IN 10 SECONDS.\"\015'"
mc_stop
log_roll
mc_start
;;
status)
# Shows server status
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is running."
else
echo "$SERVICE is not running."
fi
;;
version)
echo Craftbukkit version `awk '/Craftbukkit/ {sub(/\)/, ""); print $12}' $MCPATH/server.log`
;;
links)
check_links
;;
help)
echo "Usage: /etc/init.d/minecraft command"
echo
echo "start - starts the server"
echo "stop - stops the server"
echo "restart - restarts the server"
echo "backup - backups the worlds defined in the script"
echo "restore - restores selected world and increment using prompt"
echo "defrestore - restores selected world and increment integer values without prompt"
echo "prune - prunes backups older than $PRUNE increments"
echo "whole-backup - backups the entire server folder"
echo "update - fetches the latest version of minecraft.jar server and Bukkit"
echo "log-roll - moves and gzips the logfile"
echo "to-disk - copies the worlds from the ramdisk to worldstorage"
echo "connected - lists connected users"
echo "status - shows server status"
echo "version - returns Bukkit version"
echo "links - creates nessesary symlinks"
;;
*)
echo "No such command see /etc/init.d/minecraft help"
exit 1
;;
esac
exit 0
I got Minecraft_Mod.jar working great in Linux, I'm having trouble running it with a desktop launcher though. Unless I run terminal in the same directory Minecraft_Mod.jar is located, Minecraft_Mod will immediately DL another minecraft_server.jar to the /home directory instead of running where everything has already been unpacked.
0
0
Looks like they are using a plan from https://www.server4you.de/vserver/. Those are itty bitty vdeds...
In the same boat. Got my server running with mcpc and threw railcraft and buildcraft on it. It's a fantastic texture pack, just wish I could get the add ons for the mods.
0
0
This would not work since the address request that your .htaccess file is translating uses a different protocol than minecraft.
DNS is your only friend in this situation.
You will have to use DNS records to avoid the protocol conflict. Pointing the domain to your minecraft server's IP should do. Minecraft clients will auto request 25565; so you could then get away with just the domain if your server uses port 25565 instead.
If you use a non-standard port the address will still need the port appended to the domain. Same goes for running multiple servers on the same IP. My hope is SRV records will be recognized by the minecraft server some day.
0
start - starts the server
stop - stops the server
restart - restarts the server
backup - backups the worlds defined in the script
restore - restores selected world and increment using prompt
defrestore - restores selected world and increment integer values without prompt
prune - prunes backups older than set increment cap
whole-backup - backups the entire server folder
update - fetches the latest version of minecraft.jar server and Bukkit
log-roll - moves and gzips the logfile
to-disk - copies the worlds from the ramdisk to worldstorage
connected - lists connected users
status - shows server status
version - returns Bukkit version
links - creates nessesary symlinks
Edit: added "defrestore" command.
defrestore)
# Restores world with predefined input using world and increment integer values.
# Example: "/etc/init.d/minecraft defrestore 1 0" Restores world 1 defined
# in script settings from most current backup.
Any feedback is appreciated.
In order to run this your server will require:
screen
rdiff-backup
bc (sort of optional, was trying to make bash do math for you on KILL :tongue.gif:)
If planning to use a ramdisk add something like this to your /etc/fstab:
Be sure to fit the ramdisk size depending on your machine's total memory and world size.
Also, the bind path must go to a directory that already exists.
Script:
0
Have not had much luck experimenting with it.
0
0
Serve Address:
72.201.251.233:25565
Live map:
72.201.251.233:8080 or mineserve.dyndns-web.com
This is a test run to check system performance.
Vanilla Server. Currently capped at 10 players.
No greifing. Keep it fun.
i7940 w/ 12GB PC8500 6GB dedicated to Java
0
Dedicated 6 to java.
0
0
0
0
IP: 72.201.251.233:25565
Map: scalecraft.servegame.com
Max Players: 10
NO GREIFING, it is a test server but let it be enjoyable for others. :smile.gif:
System:
CPU: i7 940 @ 3.8Ghz w/ HT
Mem: 6GB PC8500 DDR3 soon to be 12GB :B
HDD: 500GB Clean
0
Can't wait to see what has been done in game :smile.gif:
Will find a way to increase upload speed from 1.5mbps. Seems to be limiting factor.
Hardware usage is minimal so far.
0