Caution
The main branch of froxlor/froxlor is in a very early stage of development. It is incomplete, changes
constantly and is not meant to be used in production.
Please do NOT open security reports, advisories or issues about security topics for this branch. They will not be accepted or processed. Known gaps are expected at this stage and are being worked on.
Important
The current stable release, froxlor 2.3, lives in the v2.3 branch
of this repository. If you want to run froxlor on a real server, use that branch or one of its releases — not main.
- Releases: github.com/froxlor/froxlor/releases or on the froxlor website
- Documentation: docs.froxlor.org
froxlor is a hosting control panel for managing servers, customers and their hosting resources (domains, mail, FTP, databases, ...). This repository is the next generation of froxlor, built on Laravel.
This repository is the application shell: a Laravel application that wires the froxlor packages together. The
actual functionality lives in Composer packages, which are pulled in via composer.json.
froxlor/froxlor Laravel application (this repository)
└── froxlor/framework Core framework, bundles the packages below
├── froxlor/core Tenants, users, environments, nodes, roles/permissions,
│ plans/resources, settings, audit logging, shared services
├── froxlor/packages Package management
└── froxlor/ui UI components (tables, forms, widgets, ...)
Feature modules (e.g. domains, mail, FTP, databases, web) are separate packages that build on froxlor/core.
- Tenant: a customer or managed hosting entity. There is one root tenant, all others are its descendants. The tenant is the primary authorization boundary.
- User: a person logging into froxlor, assigned to tenants and/or environments with individual roles and plans.
- Environment: an execution/deployment context (e.g. a jail on a node) in which resources such as domains, mailboxes or FTP accounts live.
- Node: a machine (local or remote) that hosts environments. Communication with a node happens through adapters.
- Plan / Resource: a plan is a reusable set of resource limits, resources describe what can be limited.
Infrastructure changes follow this flow: Controller → Service → Domain Action → Job/Event → Adapter → Infrastructure.
| Repository | Purpose |
|---|---|
| froxlor/framework | Framework packages (core, packages, ui) |
| froxlor/container | Docker image and development setup |
The easiest way to try froxlor or to set up a development environment is the
froxlor container (see its DEVELOPERS.md).
Running the application directly requires PHP 8.5+, Composer and Node.js:
composer install
cp .env.example .env
php artisan key:generate
php artisan migrate
php artisan froxlor:install
npm install && npm run buildStart the development services (web server, queue worker, log tail, Vite, scheduler):
composer devRun the tests:
composer testfroxlor is licensed under the LGPL-2.1-only.