Getting started with Ferron
If this is your first time using a web server, start here.
Ferron can do two common jobs:
- Serve files directly (HTML/CSS/JS/images) from disk.
- Forward requests to an app server (reverse proxying).
You can also combine both in one config.
Web server basics in 60 seconds#
A web server listens for HTTP/HTTPS requests and returns responses.
- Static file serving - the server reads files from disk and sends them to the client.
- Reverse proxying - the server forwards requests to another server (for example Node.js, Python, Go, Java, or another API service), then returns that response to the client.
Which setup should you choose?#
Choose static file serving if:
- You have a static website, docs site, landing page, or built frontend files.
- You do not need app logic on each request.
- Your content mostly comes from files in a directory.
Choose reverse proxying if:
- You run an app process that generates responses dynamically.
- You already have a backend listening on a port/socket.
- You need Ferron in front for TLS, routing, caching, or observability.
Choose a mixed setup if:
- You serve frontend files and proxy API/app requests (for example
/api).
First configuration examples#
1. Static file serving#
// Replace "example.com" with your domain name
example.com {
root "/var/www/html" // Replace with your directory containing static files
}2. Reverse proxying#
// Replace "example.com" with your domain name
example.com {
proxy "http://localhost:3000/" // Replace with your backend URL
}3. Mixed setup (static site + API)#
// Replace "example.com" with your domain name
example.com {
location "/api" remove_base=#true {
proxy "http://localhost:3000/api"
}
location "/" {
root "/var/www/html"
}
}Recommended path for first-time users#
- Install Ferron using one of these guides:
- Pick one setup from this page.
- Use a related use-case guide, such as Static file serving, Reverse proxying, or Web applications.
- Start with a minimal config first, then add TLS/security/routing features.
Common beginner mistakes#
- Using
rootwhen you actually needproxyto a running app process. - Proxying everything to an app when your content is only static files.
- Mixing static and API traffic without route separation (for example, missing
location "/api"). - Copying a complex configuration before verifying a minimal working setup.
Next reads#
- Playground for trying Ferron quickly.
- Configuration fundamentals for KDL structure.
- Automatic TLS once your basic setup works.