## Overview
A reverse proxy in front of WriteFreely isn't //required//, so we should support and encourage running the app without one, as well.
## Implementation
Replace "Port" configuration step with a new one:
```
Environment:
- Development
- Production, standalone
- Production, reverse proxy
```
If **Development** is chosen, ask for the Port. Otherwise set new config option `config.ServerCfg.Standalone` to `true` if **standalone** is chosen.
If **standalone** is chosen, prompt for:
```
Server mode:
- Insecure (port 80)
- Secure (port 443)
- Save & Quit
- Quit
```
Set `Port` based on previous response. If **Secure** is chosen, prompt for:
* `config.ServerCfg.TLSCertPath`
* `config.ServerCfg.TLSKeyPath`
---
In the app:
```go
if app.cfg.Server.Standalone && app.cfg.Server.TLSCertPath != "" && app.cfg.Server.TLSKeyPath != "" {
go http.ListenAndServe(":80", http.HandlerFunc(func (w http.ResponseWriter, r *http.Request) {
http.Redirect(w, r, app.cfg.App.Host+r.URL.String(), http.StatusMovedPermanently)
}))
http.ListenAndServeTLS(":443", app.cfg.Server.TLSCertPath, app.cfg.Server.TLSKeyPath, nil)
} else {
// ... current ListenAndServe code
}
```