Tech: deploy as a VM. For starters, allow the client to configure the VM network interface before downloading it. (On the fly, mount the VM with qemu nbd or whatever and write to the image, unmount qemu-nbd and proceed with the download request)<p>Expose everything as a RESTful API in the VM. NOTHING ELSE. Don&#x27;t spend too much time hardening your VM security wise. Have a strict release schedule. Listen to the customer on what features they might want. But have your release schedule. Don&#x27;t blindly add in everything this client wants.<p>If client is insistent on source code, throw an escrow clause into your contract. Dont had over everything yet.<p>Sales: draw up a contract. charge according to the sales figures of the client (yearly or one time is left to you). I cannot stress this enough.