English · العربية
The easiest way to run your own file upload and sharing service. Self-hosted, PHP-powered, and trusted by webmasters since 2007.
Download · Documentation · Features · Changelog · Report a bug
Important
To run Kleeja on a live site, download a packaged build from the releases page. Don't deploy a clone of this repository: it tracks in-progress development.
- Uploads and sharing: visitors and members upload files and get shareable links.
- Admin control panel: manage files, users, bans and settings from the browser.
- One-click updates: update Kleeja itself from the admin panel.
- Plugins and styles store: download, install, update and remove plugins and themes in one click.
- Multilingual: ships with English and Arabic.
See the full feature list on the wiki.
- PHP 8.0 or later with the
pdo_mysqlorpdo_sqliteextension (gdandziprecommended) - MySQL or MariaDB
- A web server such as Apache or IIS (sample
htaccess.txtandweb.configincluded)
- Download the latest archive from the releases page and upload its contents to your web server.
- Make the
cache/anduploads/directories writable by the web server. - Open
https://your-site.example/install/in a browser and follow the installer.
The wiki covers web server configuration, upgrades and troubleshooting.
The included Compose file starts Kleeja on Apache with PHP 8.2, a MySQL 8 database, and Mailpit to catch outgoing mail.
docker compose up -d --build| Service | Address |
|---|---|
| Kleeja | http://localhost:8080 (installer at /install/) |
| Mailpit UI | http://localhost:8025/mailpit |
| MySQL | 127.0.0.1:3306 |
When the installer asks for database details, use these values:
| Setting | Value |
|---|---|
| Host | mysql |
| Database | appdb |
| User | appuser |
| Password | apppass |
To send mail through Mailpit, set the SMTP host to mailpit and the port to 1025.
The codebase is formatted with Prettier and @prettier/plugin-php. CI rejects pull requests that aren't formatted.
npm install # install the toolchain
npm run format # format everything
npm run format:check # check only (what CI runs)
git config core.hooksPath .githooks # enable the pre-commit and commit-msg hooksTemplates (*.html) and vendored assets are excluded; see .prettierignore.
Contributions are welcome. Before you open a pull request:
- Run
npm run formatso the Prettier check passes. - Write commit messages in the Conventional Commits
format, for example
fix(auth): sign the whole login cookie payload. Thecommit-msghook enforces this.
For questions, join the Discord server or open an issue.
Kleeja is released under the MIT License.
