Deploy Laravel

Deploy Laravel on your own server.

Deploy Laravel on your own server: artisan migrate before each release, queue workers and the scheduler as their own services, and Postgres alongside.

Laravel on Beep
Build
Railpack (auto)
Start
Set by Railpack, or your Dockerfile’s CMD
Port
$PORT, set by Beep
Pre-deploy
php artisan migrate --force
Health check
/up

Step by step.

  1. Connect a server

    Use Beep Cloud, a server in your own cloud account, or any Ubuntu or Debian VPS. Beep installs its runtime and agent and locks the server down: inbound traffic is denied, and app ports are reachable only from Beep’s edge.

  2. Create a service from your repository

    Pick the GitHub or GitLab repository and the branch to track. In a monorepo, set the root directory for this service; watch paths limit rebuilds to changes that touch it.

  3. Let Beep build it

    Railpack detects PHP and Laravel from composer.json and builds a production image. Add a Dockerfile if you want full control of the runtime. You can override the install, build or start command on the service.

    Start command
    Set by Railpack, or your Dockerfile’s CMD
  4. Listen on $PORT

    Beep sets PORT for every service unless you set it yourself, and routes traffic from its edge to that port. Bind to 0.0.0.0 so the edge can reach the container.

    Environment variables
    APP_KEY=base64:…
    APP_URL=https://app.example.com
  5. Add a database

    Add managed Postgres (16 to 18, with pgvector and PostGIS), Redis or Valkey to the project, then reference its connection string from your service. References resolve at deploy time.

    Environment variables
    DB_CONNECTION=pgsql
    DB_URL=${{ postgres.DATABASE_URL }}
  6. Run migrations before each release

    Set a pre-deploy command. It runs before each release, so the schema is ready before the new version takes traffic.

    Pre-deploy command
    php artisan migrate --force
  7. Set a health check and deploy

    Set the health check path to /up. Every push to the tracked branch builds and releases; traffic moves to the new version only once it passes, and rolling back re-releases an earlier image without a rebuild.

  8. Add your domain

    Every service starts with a URL on edge.usebeep.sh. When it works, point a CNAME for your domain at Beep; the certificate is issued and renewed for you. Each GitHub pull request also gets its own preview environment, removed when it closes.

Laravel tips.

Laravel 11 and later include a /up health route; use it as the health check path.

Run queue workers (php artisan queue:work) as a separate worker service.

Run the scheduler with a cron job service instead of a crontab on the server.

Laravel on Beep, answered.

Straight answers. Anything missing, ask us directly.

Do I need a Dockerfile to deploy Laravel?

No. Railpack detects PHP and Laravel from composer.json and builds a production image. Add a Dockerfile if you want full control of the runtime. If your project already has a Dockerfile, you can build with that instead.

Where does the Laravel app run?

On the server you connected: Beep Cloud, your own cloud account or any Ubuntu or Debian VPS. Beep bills per server, so databases, workers and previews on the same server add nothing to the plan.

Can I SSH into the server?

No, and that’s deliberate: Beep manages each host end to end so manual changes can’t drift from its setup. To debug, open a shell inside any container from the dashboard, next to its logs and metrics.

Own your infrastructure again.

Plans from $1 a month, billed per server, never per service.

Early access · We’ll set up your workspace

Or talk to us →