Serverless Laravel. Brewed in Europe.
Deploy Laravel to Scaleway and bunny.net: two European clouds with European owners, in your own accounts. Brewless handles builds, releases, queues and scaling. You keep the infrastructure, the data and the bill.
$ brewless init Laravel detected · PHP 8.4 Database, queue and bucket set up $ brewless deploy production Upload ........ 4 s Build ......... 1 m 51 s Migrate ....... 21 s Health ........ 200 Release 184 is live at app.acme.eu
What is Brewless?
Brewless is a deployment and operations platform for Laravel applications on European cloud infrastructure. It runs your app on Scaleway Serverless Containers in France, with bunny.net from Slovenia as the edge in front of it. Both providers run in your own accounts and bill you directly; Brewless charges separately for deploying and running the app, and adds nothing to your cloud bill.
Brewless is the control plane. It builds releases, runs migrations, puts releases live and rolls them back. It is never in the path of visitor traffic, and it never stores the values of your application secrets: only references, revisions and key names. Containers start when a request arrives and stop when it is quiet, so an app that is scaled to zero costs nothing while nobody is using it.
Brewless is Laravel only, on purpose, and is made by Coding Agency in Meppel, the Netherlands.
A server has a size. Serverless does not.
Serverless means there are no servers for you to manage. Your Laravel app runs in containers that start when a request comes in and go away when it is quiet. Pick a size for the server below and follow one day of traffic.
AWS calls this model Lambda. Brewless uses Scaleway Serverless Containers.
Busiest moment 20:00 2,580 requests per minute
One VPS
One size, on all day.
- Unused capacity
- 67%
- Overloaded
- 1 h
Too small at the peak. The newsletter does not fit, and the rest of the day you pay for capacity nobody uses.
Brewless on Scaleway
Copies of your app, as many as needed.
- Unused capacity
- 22%
- Overloaded
- Never
18 replicas at the busiest moment. One through the night: the minimum you set, so the first visitor never waits.
- Traffic
- Capacity
- Unused capacity
- Did not fit
Illustration of a made-up day. One replica handles 150 requests a minute, with at most 20; the server sizes handle 600, 1,200 and 3,000. Real numbers depend on your app. A managed database stays on in both cases; a serverless database sleeps when nobody asks.
Hosted in Europe. Owned in Europe.
More and more Laravel teams want their app EU-sovereign: not only in a European data centre, but with European owners too. Brewless runs your app on Scaleway and puts bunny.net in front of it. You hold the contract with each of them directly.
Scaleway
Paris, France
Where your app and your data live.
- Serverless Containers
- Runs your app, its release commands, the queue worker and the scheduler
- Serverless Jobs
- Builds each release, inside your own project
- Databases
- Serverless SQL Database, which sleeps when nobody asks, or Managed PostgreSQL, with a standby copy in another zone when you ask
- Queues
- Background jobs, handed to your worker as they arrive
- Object Storage
- Private files, backups, and the source of each build, kept across three zones
- Cache
- Managed Database for Redis, over TLS, when you ask for one; a cluster of three to six nodes if you like
- Private Network
- Keeps your containers, database and cache off the internet
- Transactional Email
- The mail of your app, from your own domain, set up for production; bounces come back to your app
- Secret Manager
- Your environment variables
bunny.net
Ljubljana, Slovenia
What your visitors reach first. Optional, and recommended.
- DNS
- Your domains
- CDN
- Keeps pages that are the same for everybody, one copy per hostname behind Origin Shield, so visitors and crawlers do not wake your app; keeps serving them when your app does not answer
- Shield
- Firewall and DDoS protection, with a rate limit from brewless.yml
- TLS
- Certificates, renewed by bunny
- Storage and Optimizer
- Public media and image resizing
- Edge locations
- Can be limited to Europe
Pick where your app lives
One line in your config. Your app, database and files all go to that region.
No serverless database here yet: Managed PostgreSQL instead.
environments:
production:
region: nl-ams
database: shop-main Sovereignty is only as strong as the weakest link. If your app sends mail, payments or analytics through a service outside the EU, that data leaves the EU. Brewless cannot change that, and we will not call your setup fully sovereign when it is not. One thing to know about bunny.net: DNS lookups are answered from its worldwide network.
Cancel Brewless and see what stops.
Everything is set up in your own Scaleway and bunny.net accounts. Visitors never pass through us. Flip the switch.
Right now you are a customer. Both sides are running.
Yours
RunningIn your accounts, billed to you by the provider.
Ours
RunningThe control plane. This is all you stop paying for when you leave.
What you get, shown as what you type.
Pick a part. Each one is a line in brewless.yml or a single command.
Deploy without Docker
Your code is built inside your own project and pushed to your own registry. If a migration fails, the old release stays live.
$ brewless deploy production Build ......... 1 m 51 s Migrate ....... 21 s Release 184 is live
Laravel only. On purpose.
Brewless knows how a Laravel app is put together, so your brewless.yml stays short. It reads your schedule from the app and runs your migrations in every deploy.
Not on Laravel? Then Brewless is not for you, and we would rather say so now.
Two bills. Only one of them is ours.
You pay Scaleway and bunny.net directly for what your app uses. Brewless charges separately for deploying and running it. We add nothing on top of your cloud bill.
Their list prices, on your own account. This is what drives the amount:
- App and workersBy use. More when busy, less when quiet.
- DatabaseA serverless database by use, and nothing while it sleeps. A managed node is a fixed amount. Plus storage.
- CacheA fixed amount per node, when you have one.
- FilesPer gigabyte stored, plus downloads beyond a free allowance.
- CDNPer gigabyte delivered.
Free to try: one application, every environment, production too. You start paying when you want your own domain or more.
- Solo €15 For one developer: up to 3 applications, one cloud account, your own domains.
- Business €49 Unlimited applications and team members, up to 3 cloud accounts, and the admin role.
- Enterprise On request 5 or more cloud accounts, with terms agreed for your organisation. Contact us
- Unlimited environments on every plan
- No percentage of your cloud bill
- Cancel any month. Your app keeps running.
- Pay per year and get two months free.
Prices are per month and exclude VAT. Teams that start now keep the launch price for as long as they stay.
Questions people ask first
- What is Brewless?
- Brewless is a deployment and operations platform for Laravel applications on European cloud infrastructure. It runs your app on Scaleway Serverless Containers in France with bunny.net from Slovenia in front of it, both in your own accounts, and handles builds, releases, migrations, queues and scaling.
- How much does Brewless cost?
- Solo is €15 a month and Business is €49 a month, excluding VAT, both with unlimited environments. One application is free. Scaleway and bunny.net bill you directly for what your app uses, and Brewless takes no percentage of that.
- Do I need my own cloud accounts?
- Yes. Brewless deploys into a Scaleway project and a bunny.net account that belong to you, so the infrastructure, the data and the contracts are in your name and both providers invoice you at their list prices.
- What happens to my app if I stop using Brewless?
- It keeps running. Brewless is never in the path of visitor traffic and everything it created sits in your own accounts, so cancelling stops the deploying, the release history and the console, not the application.
- Does Brewless work with any framework?
- No, Laravel only, on purpose. The release steps, the queue worker, the scheduler and the migrations are built around how Laravel works, which is what makes them work without configuration.
- Can I move an app that runs on Laravel Vapor today?
- Yes. brewless init reads an existing vapor.yml and writes a matching brewless.yml, and brewless db:import and storage:import copy your database and your files across without removing anything at the old end.
Want to try it on your own app?
Register with your work email and deploy your first Laravel app to your own Scaleway account today.
One application free, production included. No credit card; you start paying when you want your own domain or more.
