Public IP
Every VM gets a dedicated public IPv4. Shown inmachine0 get and machine0 ls. Suspended VMs get a new IP on resume.
HTTPS proxy
Every VM gets authenticated HTTPS athttps://<name>.mac0.io, proxying to port 80. No DNS or TLS setup. Renaming a VM updates the endpoint.
Only you can reach your VM through the proxy — requests are authenticated against your account before they reach the machine. A few behaviors are worth knowing:
- Embedding is restricted to machine0. Proxied pages can be framed only by the machine0 dashboard (the machine panel’s Web tab) and by the page itself. Any
X-Frame-Optionsor CSPframe-ancestorsyour app sets is overridden, and other sites embedding your<name>.mac0.ioURLs in an iframe are blocked by the browser. - Apps with their own login may not work embedded. Inside the dashboard’s Web tab the proxied site is a cross-site frame, so a VM app that sets its own session cookie can’t always complete sign-in there. Use the toolbar’s open in a new tab link for the full-fidelity view.
- WebSockets are not proxied.
wss://<name>.mac0.ioconnections (dev-server hot reload, notebooks, terminals) don’t pass through the proxy — open the app in a new tab or usemachine0 sshwith port forwarding. - Cross-origin writes need header auth. Browser requests that change state (POST/PUT/etc.) from a different origin are rejected; use an API key or
Authorizationheader for machine-to-machine calls. __proxy_tokenand__proxy_cookie_checkare reserved query parameters used by the sign-in flow and are stripped before the request reaches your VM.- Responses are not edge-cached. The proxy marks every response
no-storeso your authenticated content is never served from a shared cache.
Firewall
All VMs runufw with ports 22, 80, and 443 open. To open more: