Documentation

Everything you need to get around your box. Don’t have an account yet? 👉 Sign up first.

Logging in

ssh -p 2222 <user>@mbox.blue

You’ll land straight inside your own box as root (of your container — you can’t touch anyone else’s). Your home directory is /root.

Persistence

Your box keeps running between logins. Disconnect whenever you like and SSH back in later — your files and any background processes are still there.

💡 To keep interactive programs running across disconnects, use tmux: start it with tmux, detach with ^b d (CTRL + b, then d), and re-attach next time with tmux attach.

Re-entering your box

Re-entering is just logging back in:

ssh -p 2222 <user>@mbox.blue

You can also be explicit:

ssh -p 2222 <user>@mbox.blue attach

Depending on your SSH client you may see the input device is not a TTY, in which case pass -t to force a terminal:

ssh -t -p 2222 <user>@mbox.blue attach

Running one-off commands

You can run a command without opening an interactive shell:

ssh -p 2222 <user>@mbox.blue uptime

The command runs directly (no extra shell), so if you want pipes or redirection, wrap it yourself:

ssh -p 2222 <user>@mbox.blue sh -c 'ls -la | head'

Your web presence

A static page — anything in ~/public_html is served, with HTTPS handled for you, at both https://<you>.mbox.blue and https://mbox.blue/~<you>:

mkdir -p ~/public_html
echo '<h1>hello from my box</h1>' > ~/public_html/index.html

A web app — run a server on a port inside your box, then tell mbox.blue which port to publish. That port then takes over https://<you>.mbox.blue (instead of your static page):

# e.g. a quick static server on :8080
cd ~/public_html && python3 -m http.server 8080 &

# publish port 8080
mkdir -p ~/.mbox && echo 8080 > ~/.mbox/expose

Your app appears at https://<you>.mbox.blue within a few minutes (or right away on your next login). Remove ~/.mbox/expose to fall back to serving your ~/public_html there again. Use tmux to keep your server running after you disconnect.

Plain HTTP (no forced redirect) — by default your box is served over HTTPS and any http:// visitor is redirected up to it. If you’d rather also serve over plain HTTP without that redirect (e.g. for a client or webhook that can’t do TLS), create an empty flag file:

touch ~/.mbox/no-redirect

This applies to both https://<you>.mbox.blue and any custom domains below; HTTPS keeps working as before, you just also get plain HTTP. Remove the file (rm ~/.mbox/no-redirect) to restore the default redirect.

PHP — your box ships with PHP (CLI + FPM), the common extensions (PDO/MySQL/SQLite, mbstring, gd, curl, intl, …) and composer, so you can run PHP sites and apps. Two ways:

For your safety we never serve .php files as raw source. So until you enable PHP, a .php file in ~/public_html returns 404 (not its source) — if you dropped one in and it 404s, that’s the reason: run touch ~/.mbox/php. PHP only ever runs via the box, so any .php requested from the static https://mbox.blue/~<you> path always returns 404. If you enabled PHP on a box created before PHP was added, recreate it once to pick up the new tools: ssh -p 2222 <you>@mbox.blue destroy, then log back in.

Your own domain — you can serve any of the above on a domain you own, with HTTPS handled for you. It takes three steps:

  1. List the domain. Put one hostname per line in ~/.mbox/domains:

    mkdir -p ~/.mbox
    echo www.example.com >> ~/.mbox/domains
    

    Each listed domain serves your app if you’ve set ~/.mbox/expose, otherwise your ~/public_html.

  2. Prove you own it. Add a TXT record at your DNS provider so we know the domain is really yours (replace <you> with your username):

    _mbox.www.example.com.   TXT   "mbox-verify=<you>"
    
  3. Point it at us. For a subdomain use a CNAME; for a bare/apex domain use an A record (CNAME isn’t allowed at the apex):

    www.example.com.   CNAME   <you>.mbox.blue.
    example.com.       A       <the mbox.blue host IP>
    

Once the TXT record is in place and the name points at us, your site comes up on https://www.example.com automatically — we obtain the certificate on the first visit. We only ever serve and request a certificate for a domain whose TXT record names you, so nobody else can claim your domain (or one of ours). DNS changes can take a little while to propagate; if it’s not up yet, give it a few minutes. Remove the line from ~/.mbox/domains to unpublish.

Handy commands

A few extras are baked into your box:

Say who you are

Tell the rest of mbox.blue what you’re up to: drop a few free-form lines in ~/.plan and a one-line summary in ~/.project.

echo "Tinkering with a small Gopher server. Say hi!" > ~/.plan
echo "building a gopherhole" > ~/.project

Anyone can then finger <you> from their box, run finger <you>@mbox.blue from another system, or click your name on the members page.

Meet the others

mbox.blue is a shared world; here’s how to find each other:

Resetting your box

To get a fresh box (for example to pick up a newer image), destroy the current one and then log back in:

ssh -p 2222 <user>@mbox.blue destroy
ssh -p 2222 <user>@mbox.blue

Lifecycle commands

Special words you can pass when logging in to manage your box:

💡 Most commands can be shortened to their first letter, e.g. s for status. A periodic reaper cleans up any stopped boxes every few minutes.