REPO= Set up Laravel on this VM by following the exe.dev recipe at https://exe.dev/deploy/laravel.md from top to bottom. The values at the top of this message are mine: - REPO: the GitHub repository to deploy, as owner/name or a URL, or `new` to start a fresh Laravel app Ask me for any that still say before you need them. The recipe's example VM name is my-laravel. This VM's name is the output of `hostname`: use it wherever the recipe writes my-laravel. Skip the step that creates the VM; you are on it. You are done when all of these are true. Check each one yourself: - PHP 8.5, Composer and Node.js 24 installed; nginx answering on port 8000 and PHP-FPM running as app.service, both enabled to come back after a reboot. - A ~/app.git whose pre-receive hook builds each push into a new release (Composer, the Vite build, migrations, optimize), switches to it, and checks /up; a failed deploy rejects the push and leaves the running release alone. - Settings in ~/app.env (mode 600) with a generated APP_KEY, and the SQLite database and storage/ (uploads) in ~/data. - The queue worker as app-worker.service and the scheduler as app-schedule.timer, both enabled. - A nightly backup by app-backup.timer, with the first backup opened and checked in a scratch directory. - With REPO=new, a fresh Laravel 13 app that trusts exe.dev's proxy and greets you by your exe.dev email at /hello. Read the whole recipe, including the closed details, and follow "Install by hand" in order, skipping VM creation. The walkthrough above it is for the owner afterwards. REPO=new takes "Start a new app"; anything else takes "Bring your app" (turn URLs into owner/name). If cloning fails, the repository is private: give the owner the `ssh exe.dev integrations add github` command from that step, with this VM's name and the repository, and wait for them. Never commit to the owner's code, on GitHub or in ~/app.git, so their first push fast-forwards: settings go in ~/app.env, and the hook already trusts exe.dev's proxy. Generate secrets; ask the owner for keys to outside services, and never invent values. If a deploy fails, read its output, fix what you can on the VM, and redeploy with `~/app.git/hooks/pre-receive