Skip to main content
A homelab is a self-hosted deployment. You need one machine to run Roomote; your other computers access it through a browser. For example, you can run it on an Ubuntu computer and use it from Windows and a MacBook. This guide takes you through preparing that host, connecting your network, and opening Roomote. Then Run your first task walks through account setup, inference, repository access, and a task you can review.

Before you start

Prepare:
  • a dedicated Ubuntu 24.04 LTS or Debian 12+ machine, or a full Linux VM, with administrator access; Windows and macOS can host a VM
  • about 4 CPUs, 8 GB RAM, and 60 GB disk available to Roomote and its local tasks, with more capacity for concurrent or Docker-heavy work
  • a supported inference subscription or API key with available credit or quota
  • permission to connect one repository for the first task
  • a domain you control; the tunnel path also needs a Cloudflare account managing that domain
The host can be x86_64 or arm64. For local tasks, Docker must support writable-layer disk limits. The installer sets up Docker when needed, but does not configure disk quotas for your filesystem. Choose local Docker if you have suitable storage, or prepare credentials for a hosted sandbox. A new Ubuntu VM with its default disk setup can need additional storage configuration before local tasks work.
This guide uses a public HTTPS URL so external services can deliver callbacks and webhooks. Hosting Roomote at home still needs this route for the complete provider setup. A private LAN address or Tailscale address alone cannot receive callbacks from services such as GitHub and Slack. You sign in to Roomote at the public URL to use the dashboard.
Slack, Proxmox, and Tailscale are optional. Start with the computer you already have and complete your first task in the browser.

1. Prepare one Linux host

If you have a dedicated Ubuntu or Debian machine, open a terminal on it or connect over SSH. Apply operating-system updates and keep the machine awake. You do not need to create another VM.
Create a full Ubuntu VM with Multipass. Follow its installation instructions and check its operating-system and virtualization requirements first. If you already have a suitable Linux VM, use that instead.After installing Multipass, run these commands in PowerShell on Windows or Terminal on macOS:
The second command opens a shell inside Ubuntu. Run the Linux commands in the rest of this guide there. For another terminal inside the same VM, open a new host terminal and run multipass shell roomote again.Use the named-tunnel path in step 2 with this VM. Router port forwarding would also require a VM network interface reachable from your router.Keep the computer and VM running while using Roomote. Use a full VM for this deployment path; WSL2 and Docker Desktop are not substitutes for the Linux host used by the installer.
Create a Debian or Ubuntu VM with 4 vCPU, 8 GB RAM, and at least 60 GB disk. Set the CPU type to host, use VirtIO for disk and networking, and install qemu-guest-agent. Give the VM a DHCP reservation or static LAN address, enable SSH, and apply operating-system updates.Use a full VM for Docker task sandboxes. LXC containers require additional privileged-container, networking, and storage configuration and are not covered by this guide.
Install the small tools used by the installer on the Linux host:
Check: You can open a terminal on the Linux host and run commands with sudo. Ports 80 and 443 are available for Roomote’s HTTPS server, Caddy.

2. Connect your home network

Use a named Cloudflare Tunnel if you want to avoid router changes, or if you are using the Multipass VM above. Use router port forwarding if your Linux host is reachable on the LAN and your ISP provides a public address. Follow one tab, then continue to step 3.
This path uses a domain managed through Cloudflare and keeps inbound router ports closed. It works behind carrier-grade NAT, where your ISP shares a public address and ordinary port forwarding cannot work.This example dedicates example.com to Roomote, with previews at *.example.com. Replace it with a domain you control. This layout works with Cloudflare’s standard certificate.
  1. Follow Cloudflare’s named tunnel setup to install the connector as a service on the Linux host.
  2. Add the application hostname and preview wildcard as published routes through the tunnel. Both must reach the same Caddy service:
  3. Configure the HTTPS origin to trust Caddy’s local CA, or enable No TLS Verify for that local connection. Enable Match SNI to Host on the wildcard route so preview requests reach Caddy with the matching hostname. Confirm both DNS records route through the tunnel and Cloudflare’s public certificate is active.
  4. On the Linux host, download and inspect the installer, then run it with your application hostname:
Press q to leave less. Replace example.com with your domain. Cloudflare serves public HTTPS and forwards traffic to Caddy. The internal TLS setting applies to that private connection. Keep the tunnel service running.If you choose a subdomain such as roomote.example.com, its preview wildcard *.roomote.example.com needs additional certificate coverage. See the preview hostname reference before choosing that layout.
Cloudflare Quick Tunnels (trycloudflare.com) do not support the Server-Sent Events used for Roomote’s live updates. Use a named tunnel for this guide. If you want to evaluate without your own domain, the public-server trial uses an automatic hostname on a server with a reachable public IPv4 address.

3. Open Roomote

When installation finishes, run this on the Linux host:
Check: The services are healthy. Open the setup link printed by the installer in a browser on any of your computers. Keep that link private; it lets you create the first administrator. You can retrieve it with sudo roomote setup-url in your terminal. Also open the deployment’s base URL from outside your home network, such as on a phone with Wi-Fi turned off. Confirm the page loads with a valid HTTPS certificate before connecting providers.

4. Complete setup and run a task

Continue to Run your first task. It walks through account setup, inference, repository authorization, sandbox checks, and a small task that proves Roomote can clone and run commands. You can do all of this from your browser. After that task works, test a live preview if you configured wildcard hostnames. Connect Slack or another communications provider when you want to start work from chat.

If something does not work

Keep the deployment running

Keep the host awake and the tunnel service running when one is used. Use Operate a self-hosted deployment for backups and updates. Store encrypted Roomote backups off the host and keep their passphrases separately; VM snapshots are useful before maintenance but do not replace those backups. For private administration, you can add Tailscale or another VPN for SSH access. Tailscale’s private address does not replace the public application URL. Tailscale Funnel can serve a limited dashboard/callback trial, but it does not provide the wildcard hostnames needed for full live previews. If a coding agent will prepare the host, give it the agent installation guide.