Try Falak locally
The Falak repository ships a simulation (sim/) that runs everything on one machine with Docker: the control plane, three Ubuntu 24.04 containers acting as servers (two app servers and a database server), a builder, a git server and Loki/Tempo/Grafana. It is what the project’s end-to-end tests run against. Use it to explore Falak without cloud machines.
Prerequisites
Section titled “Prerequisites”- Docker with about 8 GB of RAM available to it
- Go 1.25,
make,jq,curl,openssl - A clone of github.com/OthmanHaba/falak
Start it
Section titled “Start it”-
Build the agent, CLI and builder binaries (they are mounted into the simulation):
Terminal window cd agent && make build && cd .. -
Start everything and wait until it is healthy (about a minute once images are built):
Terminal window cd simmake up -
Set a password for the simulation’s admin user:
Terminal window docker compose -p falak-sim --env-file sim.env --env-file .data/secrets.env \exec control-plane php artisan falak:admin admin@falak.test --reset-password --password='choose-one' -
Trust the simulation’s certificate authority (
sim/.data/edge-root.crt, created bymake ca) and openhttps://localhost:8443. Log in asadmin@falak.test.
What you can run
Section titled “What you can run”| Command | What it does |
|---|---|
make e2e |
Infrastructure checks: TLS, the mTLS agent edge, observability, servers |
make e2e-deploy |
The full product flow through public surfaces only (about 13 minutes cold). ONLY=deploy,release runs selected stages. |
make logs / make shell |
Follow logs / open a shell |
make reset |
Wipe volumes and generated secrets, keep caches |
make reset-all |
Also wipe the package, image and download caches |
make e2e-deploy is a good tour of what Falak does. It:
- creates the first admin, an organization and an API token;
- creates two app servers and one database server through the API, runs their install commands and waits for real provisioning (FrankenPHP, PHP 8.4, Node, PostgreSQL, nftables firewall, SSH hardening);
- connects a git server and creates a Laravel 13 site on both app servers (
app-1is the leader); - deploys it: one native build, fetch and prepare on both, migrations on the leader only, activation, health checks; then a second commit (zero downtime), a rollback, and a broken release that is rolled back automatically;
- serves a Laravel site through Octane (FrankenPHP worker mode) with zero failed requests during redeploys;
- deploys a Bun + Hono TypeScript site;
- checks APM traces in Tempo, an exception grouped into an Insights issue, and deployment events in Loki.
The simulation uses non-default ports to avoid clashing with other stacks:
| Service | URL |
|---|---|
| Control plane UI | https://localhost:8443 |
| Grafana | http://localhost:13000 (admin / admin) |
Other ports are listed in sim/sim.env.