"Nebula" is my Artemis SBS server in the cloud. Specifically, it's a bunch of scripts that can kick off an AWS or Google Cloud server running a fresh untouched Ubuntu Linux, will install WINE and a bunch of other pre-requisites, install and configure Artemis, run it, click "server", and be ready for your players to connect to within 5 minutes. You can then connect using SSH in order to configure Siege/Single Front/Double Front/Deep Strike/etc, Difficulty Level, Terrain/LethalTerrain/FriendlyShips/Monsters/Anomalies, and click "Start Game" - there are some commands installed to "click buttons for you" or you can run VNC to see / click the buttons yourself.
Contents...
You'll need to get yourself an AWS account ("create a free account"), unless you already have one of course!
You'll want an SSH keypair in the right region (see below). If you're on Linux you probably already know what SSH is. If you're on Windows you'll probably want PuTTY Secure SHell - this is how you'll connect securely across the internet to your Nebula server
You'll want a Network Security Group in the right region. Call it "2010", add inbound rule, protocol TCP, port 22, source "Anywhere" (unless you want to be really specific about where you will be connecting from for administration?), add inbound rule, protocol TCP, port 2010, source "Anywhere" (unless you know all the IPs of all your players?!?), Done. This will allow players to connect to the Artemis server (which runs on TCP port 2010)
There's no cost for any of the above SO FAR
Unfortunately an Artemis server requires a VM with a spec that's too big for the AWS "free tier". Your VM is going to cost you some money to run, however I've found a spec that seems to run Artemis OK[*] and supports a reasonable number of clients/players for 17c/hr. I think 50c for 3hrs of Artemis is OK, isn't it? Remember how far 50c used to go at the arcade? When you're done with it you can completely nuke it, there's no disks to keep around so no cost when NOT using the server.
Your "region" should probably be chosen according to where most of your players are located, with a bit of an eye on price. Start at AWS's "on demand" pricing page, 4 vCPUs, usually the "compute optimised" are cheapest. You should obviously check for yourself, I am not going to pay your bill for you, but last time I checked some appropriate prices were:
0.17 USD/hr: vCPU=4 ECU=16 memoryGiB=8 storageGB=ebsonly region=ap-south-1 type=computeCurrentGen size=c5.xlarge 0.17 USD/hr: vCPU=4 ECU=16 memoryGiB=8 storageGB=ebsonly region=us-east-1 type=computeCurrentGen size=c5.xlarge 0.17 USD/hr: vCPU=4 ECU=16 memoryGiB=8 storageGB=ebsonly region=us-east-2 type=computeCurrentGen size=c5.xlarge 0.17 USD/hr: vCPU=4 ECU=16 memoryGiB=8 storageGB=ebsonly region=us-west-2 type=computeCurrentGen size=c5.xlarge 0.186 USD/hr: vCPU=4 ECU=16 memoryGiB=8 storageGB=ebsonly region=ca-central-1 type=computeCurrentGen size=c5.xlarge 0.192 USD/hr: vCPU=4 ECU=16 memoryGiB=8 storageGB=ebsonly region=eu-west-1 type=computeCurrentGen size=c5.xlarge 0.194 USD/hr: vCPU=4 ECU=16 memoryGiB=8 storageGB=ebsonly region=eu-central-1 type=computeCurrentGen size=c5.xlarge 0.196 USD/hr: vCPU=4 ECU=16 memoryGiB=8 storageGB=ebsonly region=ap-southeast-1 type=computeCurrentGen size=c5.xlarge 0.202 USD/hr: vCPU=4 ECU=16 memoryGiB=8 storageGB=ebsonly region=eu-west-2 type=computeCurrentGen size=c5.xlarge 0.202 USD/hr: vCPU=4 ECU=16 memoryGiB=8 storageGB=ebsonly region=eu-west-3 type=computeCurrentGen size=c5.xlarge 0.212 USD/hr: vCPU=4 ECU=16 memoryGiB=8 storageGB=ebsonly region=us-west-1 type=computeCurrentGen size=c5.xlarge 0.222 USD/hr: vCPU=4 ECU=16 memoryGiB=8 storageGB=ebsonly region=ap-southeast-2 type=computeCurrentGen size=c5.xlarge 0.227 USD/hr: vCPU=4 ECU=16 memoryGiB=7.5 storageGB=ebsonly region=ap-northeast-2 type=computeCurrentGen size=c4.xlarge 0.2432 USD/hr: vCPU=4 ECU=variable memoryGiB=16 storageGB=ebsonly region=ap-northeast-1 type=generalCurrentGen size=t2.xlarge OR 0.252 USD/hr: vCPU=4 ECU=16 memoryGiB=7.5 storageGB=ebsonly region=ap-northeast-1 type=computeCurrentGen size=c4.xlarge 0.262 USD/hr: vCPU=4 ECU=16 memoryGiB=8 storageGB=ebsonly region=sa-east-1 type=computeCurrentGen size=c5.xlarge
If you are using Linux and/or can run BASH scripts and have the AWS CLI installed and configured... Download start.sh. Check the variables at the
top. You probably want to change SSHKEY=name-of-your-ssh-key, you
may want to change REGION=us-east-1 and a corresponding
IMAGE_ID=ami-927185ef, and maybe INSTANCE_TYPE=c5.xlarge
- see the notes in the top of the script. All except INSTANCE_TYPE
can be set in a Then just run it: SSHKEY=my-ssh-key ./start.sh 271ben Make a note of the Public IP it tells you. |
If you prefer the AWS web console...
|
You should be able to connect to it (using SSH or PuTTY) within about a minute, for example if your Public IP was 192.0.2.3:
ssh -L5900:127.1:5900 ubuntu@192.0.2.3 # <-- use the real IP address here tail -1000f /var/log/cloud-init.log # to watch boot progress
If using PuTTY, you'll want to connect to the supplied IP, user "ubuntu", and arrange for a "local port forward" of port 5900 to 127.0.0.1 5900
If it works, you'll see a lot of headers like:
###################################################################### #### YYYY-MM-DD HH:MM:SS : APT updates and installs... ######################################################################... and a lot of other debugging output in between. It will probably pause for quite a while on some https://dl.winehq.org/wine-builds/ubuntu stuff (I'll be looking for a faster WINE mirror soon). When done, you should see something like...
#### YYYY-MM-DD HH:MM:SS : Waiting 30 secs for server... #### YYYY-MM-DD HH:MM:SS : Waiting 29 secs for server... #### YYYY-MM-DD HH:MM:SS : Waiting 28 secs for server... tcp 0 0 0.0.0.0:2010 0.0.0.0:* LISTEN ###################################################################### #### YYYY-MM-DD HH:MM:SS : DONE - stop the clock! ######################################################################If it DOESN'T work, in particular if you don't see the "tcp ... 0.0.0.0:2010" line, you may want to hit control-C and re-start the entire process:
wget -T3 -O- http://noseynick.org/artemis/aws/init.sh | sudo NAME=271ben bashIf it still doesn't work... Sorry, get hold of me (probably on the United Stellar Navy Discord server) and tell me what went wrong. I'll probably appreciate a copy of your /var/log/cloud-init.log file from Step 4 above, and/or I might want to log into your server to nose around - I'll discuss how to do that once you get hold of me.
Once you see "tcp... 0.0.0.0:2010" you know that you, and your other players, can point your Artemis clients at the Public IP address.
You're going to need to choose game type, skill level, Terrain/LethalTerrain/FriendlyShips/Monsters/Anomalies etc though, and you're going to need to start the game. There are 2 ways to do this:
vncviewer 127.0.0.1
Some of the special commands available to you are:
click-SERVER
- would click the "SERVER" button, but
this has already been done for you if you saw
"tcp... 0.0.0.0:2010"click-game-solo
for a solo game. Again, this has already been done
for you, but is available in case you wish to change the automationclick-game-pvp
click-game-coop
click-game-scripted
similarly available in case you wish
to change the automationManyManyMany 7
- this will set up for a Level7 DoubleFront with
Many Terrain, Many LethalTerrain, Many FriendlyShips, Many Monsters,
Many Anomalies - a combination popular on USN evening games.
NOTE: This command assumes you are currently at the default
1/Siege/None/None/None/None/None. Running this command multiple
times will just click the same buttons multiple times, leading to
unpredictable settings.repeat
- to repeatedly run any of the other commands
below (or indeed any command) - see example belowclick-level+
click-level-
to change
skill level. Remember you already start on Level 1, so to get to Level
7 you'll need to click-level+
SIX times, EG:
repeat 6 click-level+
click-type+
click-type-
cycle through:click-terrain+
click-terrain-
cycle through Terrain:click-lethal+
click-lethal-
cycle through Lethal Terrain, as aboveclick-friendly+
click-friendly-
as above for Friendly Shipsclick-monsters+
click-monsters-
as above for Monstersclick-anomalies+
click-anomalies-
as above for Anomaliesclick-time+
click-time+10
click-time-
click-time-10
to set a
fixed game time, EG for a 45-minute time-limited game:repeat 4 click-time+10; repeat 5 click-time+
click-custom
to configure for a custom game - the details of
which are left as an exercise for the readerclick-start
when you have configured all the above,
and when all your players are ready, to begin the gameclick-endsim
mid-game to end the simulation. This
tries to hit "Escape" and "End Simulation" on the server. The
server will hopefully be displaying your Game Results / stats, which
might not be visible unless you were using VNC or
Artemis-Puppy / logger.pl to collect stats for
you.click-endgame
will quit that "Game Results" screen.
You should be back at the "Server Control Screen" ready to change
level / type / etc, BUT remember the game will be set up with
your previous settings, so you should be modifying your
level/type/terrain etc, you are NOT starting from scratch. In
particular, running ManyManyMany
at this point would
scramble your settings in unpredictable ways, but if you were
previously already on ManyManyMany 7
you could
click-level+
to bump it to level 8 and
click-start
to begin the next gameclick-quit
to click the quit button in the
bottom-left. May need repeating 2 or 3 times to quit completely
("Back" then "Exit to windows")load
will tell you a bit about the load of the
machine, how many connections you have, etcSome other useful scripts:
./TSN-Artemis.ca.pl | nc 127.1 2010
will set all the
names, ship types, and shuttle/fighter configurations for the TSN
Canadian Fleet. See my main Artemis parser.pl
documentation / codeps
, kill
, etc), wait until there
are zero connections (load
will tel you), then
bash artemis.sh
will attempt to re-run Artemis.sudo /sbin/poweroff
and start
another one from scratch?Some regular Linux commands that may be useful:
tail -1000f /var/log/cloud-init.log
- look at the
last 1000 lines of the cloud-init logfile, and keep watching itsudo /sbin/poweroff
- Unix command to completely
shutdown / terminate / nuke the VM. Note that the server has been set
up to shutdown after 3 hours as a "safety net" using an "at" job:atq
- list all of the commands that have been
configured to run "at" particular times, EG:2 Dow Mth DD HH:MM:SS YYYY a ubuntu
atrm 1
- to remove the "at" job number 1 in the above listFrom inside the VM: sudo /sbin/poweroff
From the AWS CLI:
aws ec2 terminate-instances --region $REGION --instance-ids $ID
From the AWS web console, make sure you're in the right region (if you forgot, then yes, sorry, you're going to have to check every single region). Click on the VM in the list. Click "Actions", "Instance State", "Terminate".
aws ec2 run-instances
command to start the
VM, with cloud-init --user-data
to fetch and run
init.sh
. As above, you can do this manually in the
AWS web console if you prefer (Step 3 above)~/bin/load
which will tell you a summary of load (cpu, memory, TCP connections to 2010, etc)NAME= | Version |
---|---|
260 or 260vanilla | 2.6.0 Vanilla |
260ben | 2.6.0 with Ben's Mod 4.2.12 "2.6.0 Legacy Edition" |
263 | 2.6.3 Vanilla |
270 or 270vanilla | 2.7.0 Vanilla |
270ben | 2.7.0 with Ben's Mod 4.2.12 |
271 or 271vanilla | 2.7.1 Vanilla |
271ben (default) | 2.7.1 with Ben's Mod 4.2.12 |
Want others? | Let me know! |
artemis.ini
to set up for an auto-start.empty.png
and empty.jpg
to
replace all the skyboxes and the little mini-asteroids that show
movement. This looks a lot more boring but speeds up VNC considerably.wine regedit /?
with no display.
This just makes WINE stop asking pointless questions about Mono and
other stuff Artemis doesn't needclick-*
shortcut commands, ManyManyMany
, and repeat
.
These are all wrappers around xdotool
to simulate X11
mouse clicks (and occasionally keystrokes)click-SERVER
, every second,
for up to 1 minute, until the button actually appears in the right
place and gets clicked.click-game-solo
TOKEN
and
CHAN
, it will announce that your server is ready for
players to join.at
job to
shutdown the server after 3 hours (approx 50c). If you don't like
this, look at atq
and atrm 1
to remove
job number 1aws-pricing.pl produces the price list above. It is not guaranteed to be up-to-date or correct or anything, I'm not responsible for any errors on your AWS bill or anything.
A number of environment variables can be set in "Step 3 Start your
VM" or if you are re-running manually in step 4. The
examples show NAME=271ben or SSHKEY=my-ssh-key. If you're using
start.sh
from your own machine, you can set them in the
environment, or in a creds.sh
which will be read by
start.sh
. If you're using the AWS web console, you'll add
them in your "User data" between the |
and
bash
NAME=271ben
- passed by start.sh
via
init.sh
to artemis-dl.sh
to select what
Artemis version and mods you wish to run - see
the table of NAME values supportedVNCPASS=sig93air
- passed by start.sh
via
init.sh
to vnc.sh
- the password that will
be used by VNC. Note this is not a security risk, as the VNC
server is not accessible over the internet, unless you have already
securely connected over SSH using your SSH key.REGION=us-east-1
- used only by start.sh
to specify what region you will use in AWS.IMAGE_ID=ami-6dfe5010
- used only by start.sh
to specify which Ubuntu image you will be starting. See the
instructions in the top of start.sh
to find the latestSG_NAME=2010
- used only by start.sh
to specify the name of the Network Security Group, which should
allow in TCP port 22 (for your SSH access) and 2010 (for Artemis
clients)SSHKEY=my-ssh-key
- used only by start.sh
- name of an SSH key you already uploaded to AWSINSTANCE_TYPE=c5.xlarge
- set in, and used only by
start.sh
to specify what size VM to use. See
step 2 and the pricing table
aboveTOKEN
, CHAN
and TESTCHAN
- passed by start.sh
from creds.sh
via
init.sh
to puppy.sh
and
discord.sh so your server can tell your
players when it is ready for them to connect. TESTCHAN
will also get a load of progress info during boot, and a message
every 5 mins to remind you it's running and tell you about server
load.ASROOT
and ASUSER
-
passed by start.sh
to init.sh
. If
supplied, these are a list of extra scripts for init.sh
to download and run as root, or as the ubuntu user. If you need help
debugging your server, I may ask you to add extra scripts here to
let me log into your server and debug, for example, or if you have
special requirements, let me know and I may be able to write extra
scripts for youDISPLAY=:20
set in init.sh
, used in
x11.sh
, vnc.sh
, and
artemis.sh
(by WINE).
You're unlikely to need to change this.LC_ALL=C
set in init.sh
, mostly to stop
warnings from a bunch of programs that complain about no locale
being set. You're unlikely to need to change this.Artemis.exe crashes from time to time, probably no more or no less often than any other Artemis server to be honest :-/
"Load average" stats during typical USN games show the machine using about 2.5 - 3.5 of the 4 CPUs allocated to it, with no "steal time", so Artemis seems to not be bottlenecked. AWS still uses "powers of 2" CPUs, so 2 would be too few, 8 would be too many, 4 seems to be the Goldilocks "just right".
After many / most games, I also get my Artemis-Puppy bot to post a quick survey (see puppy-poll.sh), which looks a bit like...
![]() |
Artemis-Puppy
BOT
Thanks Crew! Please rate the performance of this server - it's a bit of an experiment and I'd appreciate feedback:
it LOOK like every letter has at least 1 vote per survey ): A 6
B 10
C 2
D 1
E 0
F 0
|
... so it looks like USUALLY the players agree these servers are "Pretty good" :-)
(See also my other Artemis tools)