Tier 2 · Advanced guide
Put your instance on an always-on server, a computer that runs in a data centre 24/7, so remote teammates can reach it from anywhere, with your own web address and free HTTPS (the padlock that encrypts the connection). This guide uses Oracle Cloud's Always-Free tier, which can run Map Blueprint at no monthly cost, but the same steps work on any Ubuntu cloud server.
https://maps.yourdomain.com, protected by your team password, and restarting itself automatically after reboots. Plan on about 20–30 minutes. Wherever you see YOUR_… below, replace it with your own value.
Prefer to just run it on your own laptop? See the local hosting guide.
yourdomain.com); DNS is the internet's address book that points a domain at a server; HTTPS is the encrypted, padlocked version of a web address; a reverse proxy and a tunnel are two ways to put HTTPS in front of the app. Don't worry, each step below tells you exactly what to do.
VM.Standard.E2.1.Micro or an Ampere Arm shape (which has more memory). Keep the default Ubuntu image, Ubuntu is the version of Linux this guide uses.YOUR_SERVER_IP.A firewall blocks unexpected network connections. Oracle blocks incoming web traffic by default, so you need to allow it on the two standard web ports, 80 (plain web) and 443 (secure web):
0.0.0.0/0 (meaning "from anywhere") to ports 80 and 443.sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 443 -j ACCEPT
sudo netfilter-persistent save
If you use the Cloudflare Tunnel option in Step 5, you can skip opening ports 80/443 entirely.
Now you'll log in to the server and type commands on it from your own computer, using SSH. Open a terminal (on Windows, use PowerShell, it already includes ssh) and run this, pointing -i at the private key file you downloaded:
ssh -i /path/to/YOUR_PRIVATE_KEY ubuntu@YOUR_SERVER_IP
On Mac or Linux, if you get a "permissions are too open" error about the key, run chmod 600 /path/to/YOUR_PRIVATE_KEY first, that tightens the file so only you can read it, which SSH requires.
Once you're connected (your command prompt now shows the server), install the latest system updates:
sudo apt update && sudo apt upgrade -y
sudo means "run this as administrator"; apt is Ubuntu's built-in app installer.
There's nothing to install on the server, no Docker, no Node, no .env. It's a single self-contained program. From your own computer (a new terminal window, not the SSH session), run this from the folder where you unzipped the download to copy the Linux program up to the server. scp is "secure copy", it sends a file over the same secure SSH connection:
scp -i /path/to/YOUR_PRIVATE_KEY ./map-blueprint-linux ubuntu@YOUR_SERVER_IP:~/
Back in the SSH session, make the program runnable and start it. HOST=0.0.0.0 tells it to accept connections from outside, so the HTTPS step next can reach it:
chmod +x ~/map-blueprint-linux
HOST=0.0.0.0 ~/map-blueprint-linux
It's now listening on port 8080. You'll set your team password from the browser once HTTPS is in place (next step). For now, press Ctrl-C to stop it, Step 6 turns it into a service that runs 24/7.
config.json and your data/ maps are created right next to the program in your home folder (~/). All settings live on the in-app Settings page, there are no files to edit.
The app speaks plain HTTP and is designed to sit behind something that adds HTTPS (the encrypted padlock). Pick one of these two approaches, Option A is the easiest to secure.
A tunnel connects your server out to Cloudflare, so visitors reach the app through Cloudflare without any ports being open on your server.
cloudflared (Cloudflare's tunnel tool) and log in:
curl -fsSL https://pkg.cloudflare.com/install.sh | sudo bash
sudo apt install -y cloudflared
cloudflared tunnel login
cloudflared tunnel create mapblueprint
cloudflared tunnel route dns mapblueprint maps.YOURDOMAIN.com
http://localhost:8080 in its config, then install it as a background service so it always runs:
sudo cloudflared service install
Cloudflare creates and renews the HTTPS certificate for you automatically, and nothing on your server is exposed directly, you can leave ports 80/443 closed.
Caddy is a tiny web server that sits in front of the app, adds HTTPS, and forwards visitors to it, that's what a reverse proxy does.
maps.YOURDOMAIN.com at YOUR_SERVER_IP. (An "A record" is the DNS entry that maps a name to a server's IP, set it at your domain registrar or DNS provider.)/etc/caddy/Caddyfile (it tells Caddy: serve this address, and forward visitors to the app on port 8080):
maps.YOURDOMAIN.com {
reverse_proxy localhost:8080
}
sudo systemctl reload caddy
Caddy fetches and renews a free Let's Encrypt certificate for you automatically. This option needs ports 80 and 443 open (Step 2).
X-Forwarded-Proto header that both options above set), so logins are protected with no extra setup.
Visit https://maps.YOURDOMAIN.com, you should see the login page. Sign in and share that link with your team.
Want a second, stronger lock? Cloudflare Zero Trust "Access" puts a login screen in front of your app, so strangers never even reach Map Blueprint, Cloudflare checks who you are first. It works best with Option A (the Cloudflare Tunnel) above, and it lets you grant access person-by-person by email instead of sharing one password. It's free for small teams.
maps.YOURDOMAIN.com).@yourstudio.com), then save.This is the same kind of identity gate the makers of Map Blueprint use on their own internal map. Even if someone learns your URL, they can't load the app without passing the identity check, ideal for a private studio map.
Finally, turn the app into a service so it starts on boot and restarts itself if it ever stops. (A "service" is a program Linux looks after in the background.) Save the text below as the file /etc/systemd/system/map-blueprint.service:
[Unit]
Description=Map Blueprint
After=network.target
[Service]
WorkingDirectory=/home/ubuntu
Environment=HOST=0.0.0.0
ExecStart=/home/ubuntu/map-blueprint-linux
Restart=always
User=ubuntu
[Install]
WantedBy=multi-user.target
Then switch it on, reload the service list, enable and start it, and check it's running:
sudo systemctl daemon-reload
sudo systemctl enable --now map-blueprint.service
sudo systemctl status map-blueprint.service
WorkingDirectory=/home/ubuntu keeps config.json and your data/ maps in the home folder, next to the program. Now open https://maps.YOURDOMAIN.com, complete the first-run Setup screen, and set your team password right away. (Prefer to set it in advance? Add Environment=APP_PASSWORD=YOUR_PASSWORD to the service file.)
http://YOUR_SERVER_IP:8080 in real use.sudo apt update && sudo apt upgrade -y from time to time.data/ folder (and config.json) regularly, that's where your maps and settings live.When you get an updated program, stop the service, replace the program file, and start it again, your config.json and data/ maps are left untouched. Upload the new map-blueprint-linux from your computer (with scp, as in Step 4), then on the server run:
sudo systemctl stop map-blueprint.service
chmod +x ~/map-blueprint-linux
sudo systemctl start map-blueprint.service