Skip to content

ferronweb/ferron

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2,457 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Ferron logo

Ferron - a fast, modern, and easily configurable web server with automatic TLS


Static Badge Website Chat X (formerly Twitter) Follow Docker Pulls GitHub Repo stars

Why Ferron?

  • High performance - thoroughly optimized for speed with support for high concurrency.
  • Memory-safe - built with Rust, which is a programming language that can offer strong memory safety guarantees.
  • Automatic TLS - automatic SSL/TLS certificate acquisition and renewal with Let's Encrypt integration.
  • Easy configuration - simple, intuitive configuration with sensible, secure defaults and comprehensive documentation.
  • Extensibility - modular architecture for easy customization.
  • Powerful reverse proxy - advanced reverse proxy capabilities with support for load balancing and health checks.

Installing Ferron from pre-built binaries

The easiest way to install Ferron is installing it from pre-built binaries.

Below are the different ways to install Ferron:

Configuration examples

Basic static file serving

// Example configuration with static file serving. Replace "example.com" with your domain name. example.com {  root "/var/www/html" // Replace "/var/www/html" with the directory containing your static files }

Basic reverse proxying

// Example configuration with reverse proxy. Replace "example.com" with your domain name. example.com {  proxy "http://localhost:3000/" // Replace "http://localhost:3000" with the backend server URL }

More examples

You can find more configuration examples for common use cases in the Ferron documentation.

Building Ferron from source

You can clone the repository and explore the existing code:

git clone https://github.com/ferronweb/ferron.git cd ferron

You can then build and run the web server using Cargo:

cargo run --manifest-path build/prepare/Cargo.toml cd build/workspace cargo update # If you experience crate conflicts cargo build -r --target-dir ../../target cd .. cp configs/ferron.test.kdl ferron.kdl target/release/ferron

You can also, for convenience, use make:

make build # Build the web server make build-dev # Build the web server, for development and debugging make run # Run the web server make run-dev # Run the web server, for development and debugging make smoketest # Perform a smoke test make smoketest-dev # Perform a smoke test, for development and debugging make package # Package the web server to a ZIP archive (run it after building it) make package-deb # Package the web server to a Debian package (run it after building it) make package-rpm # Package the web server to an RPM package (run it after building it) make installer # Build installers for Ferron 2

Or a build.ps1 build script, if you're on Windows:

REM Build the web server powershell -ExecutionPolicy Bypass .\build.ps1 Build REM Build the web server, for development and debugging powershell -ExecutionPolicy Bypass .\build.ps1 BuildDev REM Run the web server powershell -ExecutionPolicy Bypass .\build.ps1 Run REM Run the web server, for development and debugging powershell -ExecutionPolicy Bypass .\build.ps1 RunDev REM Perform a smoke test powershell -ExecutionPolicy Bypass .\build.ps1 Smoketest REM Perform a smoke test, for development and debugging powershell -ExecutionPolicy Bypass .\build.ps1 SmoketestDev REM Package the web server to a ZIP archive (run it after building it) powershell -ExecutionPolicy Bypass .\build.ps1 Package REM Build installers for Ferron 2 powershell -ExecutionPolicy Bypass .\build.ps1 Installer

You can also create a ZIP archive that can be used by the Ferron installer:

make build-with-package

Or if you're on Windows:

powershell -ExecutionPolicy Bypass .\build.ps1 BuildWithPackage

The ZIP archive will be located in the dist directory.

You can also cross-compile the web server for a different target:

# Replace "i686-unknown-linux-gnu" with the target (as defined by the Rust target triple) you want to build for make build TARGET="i686-unknown-linux-gnu" CARGO_FINAL="cross"

It's also possible to use only Cargo to build the web server, although you wouldn't be able to use external modules:

cargo build -r ./target/release/ferron

For compilation notes, see the compilation notes page.

Modules

If you would like to develop Ferron modules, you can find the Ferron module development notes.

Server configuration

You can check the Ferron documentation to see configuration properties used by Ferron.

Contributing

See Ferron contribution page for details.

Below is a list of contributors to Ferron. Thank you to all of them!

Contributor list

License

Ferron is licensed under the MIT License. See LICENSE for details.

About

A fast, memory-safe web server written in Rust.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors