Hey this looks like a fun thing to play with, I like what you've
done. I logged in and accessed it. Now that it's been some time
since you announced it and it's still running, I guess it has had
some testing already.
I don't see anything wrong with what you have done after a quick look, it seems like you took some steps to secure it.
If you care about security you want to think about defense in depth. Even if there don't appear to be ways for arbitrary filesystem or network access to happen, you have to consider the effect of bugs in your program and bugs in python itself.
To protect against unwanted filesystem access, I suggest:
To protect against unwanted network access:
What level of protection is necessary will depend on the severity of impact in the case it gets hacked, and also your own level of conscientiousness.
Also consider putting in some monitoring; monitor network
bandwith and CPU usage at least (perhaps # of logins as well) and
set up an alert if those go outside limits, so you get timely
notification if something should happen.
Have fun,
Alex
P.S. this brings to mind https://en.wikipedia.org/wiki/Russell_Coker#SELinux_Play_Machine, which is no longer operating.
When you say "expose it to the internet via SSH", do you mean
expose it to everyone (e.g. by publishing the pssword), or will
there still be some restrictions on who can access it? If the
former, you should be able to set up ssh without any password
required.