Skip to content

About

Community LTS fork of Unit application server. Free as in freedom.

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

 
 

Downstream packaging fork of FreeUnit. It tracks upstream and adds Debian (trixie) package builds plus CI for PHP 8.3 / 8.4 / 8.5 and Python 3.13, and carries a few bug fixes that upstream does not have yet. For the application server itself, issues, and documentation, use upstream. Fork scope and build instructions: FORK.md.


FreeUnit — Community LTS fork of Unit

Project Status: Active – The project has reached a stable, usable state and is being actively developed. Build & Test Docker GitHub Discussions

Free as in freedom.

Unit application server, continued by the community.

The original Unit repository was archived in October 2025. The maintainers noted: "A new maintainer is desired." FreeUnit is that maintainer.

Forked from the original Unit project to ensure:

  • Long-term security maintenance
  • PHP 8.4+ and PHP 8.5+ runtime support
  • Predictable release cycle
  • Independent, community-driven governance

In the lineage of: freenginx · MariaDB · LibreOffice · OpenSSH — when corporations step back, community takes over.


Universal Web App Server

FreeUnit is a lightweight and versatile open-source server with two primary capabilities:

  • serves static media assets
  • runs application code in eight languages

Unit compresses several layers of the modern application stack into a potent, coherent solution with a focus on performance, low latency, and scalability. It is intended as a universal building block for any web architecture, regardless of its complexity, from enterprise-scale deployments to your pet's homepage.

Its native RESTful JSON API enables dynamic updates with zero interruptions and flexible configuration, while its out-of-the-box productivity reliably scales to production-grade workloads. We achieve that with a complex, asynchronous, multithreading architecture comprising multiple processes to ensure security and robustness while getting the most out of today's computing platforms.

Installation

Docker

Images are published to the GitHub Container Registry (GHCR) on every release and are available for linux/amd64 and linux/arm64.

Variant Image
minimal ghcr.io/freeunitorg/freeunit:latest-minimal
PHP 8.5 ghcr.io/freeunitorg/freeunit:latest-php-8.5
PHP 8.4 ghcr.io/freeunitorg/freeunit:latest-php-8.4
PHP 8.3 ghcr.io/freeunitorg/freeunit:latest-php-8.3
Python 3.15 ghcr.io/freeunitorg/freeunit:latest-python-3.15
Python 3.14 ghcr.io/freeunitorg/freeunit:latest-python-3.14
Python 3.13 ghcr.io/freeunitorg/freeunit:latest-python-3.13
Python 3.12 ghcr.io/freeunitorg/freeunit:latest-python-3.12
Node.js 26 ghcr.io/freeunitorg/freeunit:latest-node-26
Node.js 24 ghcr.io/freeunitorg/freeunit:latest-node-24
Node.js 22 ghcr.io/freeunitorg/freeunit:latest-node-22
Go 1.27 ghcr.io/freeunitorg/freeunit:latest-go-1.27
Go 1.26 ghcr.io/freeunitorg/freeunit:latest-go-1.26
Go 1.25 ghcr.io/freeunitorg/freeunit:latest-go-1.25
Ruby 4.0 ghcr.io/freeunitorg/freeunit:latest-ruby-4.0
Ruby 3.4 ghcr.io/freeunitorg/freeunit:latest-ruby-3.4
WebAssembly ghcr.io/freeunitorg/freeunit:latest-wasm

Full list of variants (including python-3.14, perl-5.40, ruby-3.3, slim Python variants, etc.) is in the docker workflow.

Scheduled images for unreleased PHP

FreeUnit master is also built on a schedule for PHP versions that have no release image yet, and published to GHCR only:

Variant Built Image
PHP 8.6 (RC until 8.6.0) every night ghcr.io/freeunitorg/freeunit:nightly-php-8.6
PHP 8.7 (php-src master) every Monday ghcr.io/freeunitorg/freeunit:weekly-php-8.7

Each build also has a dated tag, for example nightly-php-8.6-20261102. These images are linux/amd64 only, follow the current development code of both FreeUnit and PHP, and are not for production. Their labels name the FreeUnit commit, the base image and, for 8.7, the php-src commit. See the workflow.

$ docker pull ghcr.io/freeunitorg/freeunit:latest-minimal
$ mkdir /tmp/unit-control
$ docker run -d \
      --mount type=bind,src=/tmp/unit-control,dst=/var/run \
      --mount type=bind,src=.,dst=/www \
      --network host \
      ghcr.io/freeunitorg/freeunit:latest-minimal

Build from Source

$ git clone https://github.com/freeunitorg/freeunit
$ cd freeunit
$ ./configure --openssl --otel
$ make
$ sudo make unitd-install

Getting Started with unitctl

unitctl streamlines the management of FreeUnit processes through an easy-to-use command line interface. Download it from the releases page.

$ tar xzvf unitctl-master-x86_64-unknown-linux-gnu.tar.gz
# mv unitctl /usr/local/bin/

Quick Start: PHP

Save /www/helloworld/index.php:

<?php echo "Hello, PHP on FreeUnit!"; ?>

Configure via Unix socket:

# curl -X PUT --data-binary @config.json \
       --unix-socket /var/run/control.unit.sock \
       http://localhost/config/applications
# curl -X PUT -d '{"127.0.0.1:8080": {"pass": "applications/helloworld"}}' \
       --unix-socket /var/run/control.unit.sock \
       http://localhost/config/listeners
$ curl 127.0.0.1:8080
Hello, PHP on FreeUnit!

PHP 8.4 and PHP 8.5 Support

FreeUnit provides first-class PHP 8.4 and PHP 8.5 support — the primary motivation for this fork.

$ docker pull ghcr.io/freeunitorg/freeunit:latest-php-8.5
$ docker pull ghcr.io/freeunitorg/freeunit:latest-php-8.4

OpenTelemetry

FreeUnit includes built-in OpenTelemetry support (compiled with --otel):

{
  "settings": {
    "telemetry": {
      "endpoint": "http://localhost:4317/v1/traces",
      "protocol": "grpc",
      "sampling_ratio": 1.0,
      "batch_size": 20
    }
  }
}

USDT Probes

./configure --usdt adds static probes for bpftrace, perf and SystemTap. They trace port messages, the app queue, process starts and requests. docs/usdt.md lists them, and tools/usdt/ has bpftrace scripts.

WebAssembly

FreeUnit supports running WebAssembly Components (WASI 0.2). For configuration details see the OpenAPI spec.

OpenAPI Specification

The OpenAPI specification aims to simplify configuring and integrating FreeUnit deployments and provides an authoritative source of knowledge about the control API.

Community

License

FreeUnit is distributed under the Apache 2.0 License, same as the original Unit project.


Forked from nginx/unit — original authors retain full credit.

About

Community LTS fork of Unit application server. Free as in freedom.

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages