Ferron - a fast, modern, and easily configurable web server with automatic TLS
- 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.
The easiest way to install Ferron is installing it from pre-built binaries.
Below are the different ways to install Ferron:
- Installer (GNU/Linux)
- Installer (Windows Server)
- Package managers (Debian/Ubuntu)
- Package managers (RHEL/Fedora)
- Docker
- Package managers (community)
- Manual installation
// 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 }// 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 }You can find more configuration examples for common use cases in the Ferron documentation.
You can clone the repository and explore the existing code:
git clone https://github.com/ferronweb/ferron.git cd ferronYou 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/ferronYou 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 2Or 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 InstallerYou can also create a ZIP archive that can be used by the Ferron installer:
make build-with-packageOr if you're on Windows:
powershell -ExecutionPolicy Bypass .\build.ps1 BuildWithPackageThe 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/ferronFor compilation notes, see the compilation notes page.
If you would like to develop Ferron modules, you can find the Ferron module development notes.
You can check the Ferron documentation to see configuration properties used by Ferron.
See Ferron contribution page for details.
Below is a list of contributors to Ferron. Thank you to all of them!
Ferron is licensed under the MIT License. See LICENSE for details.