Skip to content

Commit

Permalink
More config references
Browse files Browse the repository at this point in the history
  • Loading branch information
aosasona committed Feb 22, 2024
1 parent 842b794 commit 42f1d61
Showing 1 changed file with 19 additions and 8 deletions.
27 changes: 19 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ If you are using the official image, there are a few locations you might want to
| **Path** | **Description** |
| :-------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `/var/www/html` | Similar to NGINX, this is where all your publicly available files should be, including any asset. This path was chosen since it is familiar to most people, you can change this by overriding the default config and setting `root_dir` to anywhere you want in the container |
| `/etc/chimney/chimney.toml` | This is where the default config lives, you can change this by copying your own config to wherever you desire and writing CMD as ["run", "-c", "path/to/config"] in your custom Dockerfile |
| `/etc/chimney/chimney.toml` | This is where the default config lives, you can change this by copying your own config to wherever you desire and writing CMD as `["run", "-c", "path/to/config"]` in your custom Dockerfile |
| `/bin/chimney` | This is where the Chimney binary lives in the container, since the [ENTRYPOINT](https://github.com/aosasona/chimney/blob/0aa88f573f8b7688117f978e5439db789e9c8ae1/Dockerfile#L42-L44) has been set to this path, you can easily use the "docker run" command to execute commands in the container directly without specifying `/bin/chimney` |

## As a standalone binary
Expand All @@ -84,7 +84,7 @@ Currently, there is no way to install via Homebrew or Cargo (this may change in

## Build from source

If you are unable or don't want to use Docker and there are no builds available for your platform, you can try bulding from source:
If you are unable to or don't want to use Docker and there are no builds available for your platform, you can try bulding from source:

```sh
git clone https://github.com/aosasona/chimney.git
Expand All @@ -107,12 +107,23 @@ chimney run -c path/to/project/chimney.toml # the config filename is optional, i
> [!WARNING]
> HTTPS functionality has NOT been implemented yet, so using this standalone in production is kind of not feasible... unless you have some sort of central proxy and a bunch of containers running Chimney that you simply proxy requests to (you can probably tell what my usecase is...)
| **Field** | **type** | **Description** | **Default** |
| :--------------- | :-------: | :-------------------------------------------------------------------------------------------------------------- | :---------: |
| `host` | `string` | The IP address to bind to | `0.0.0.0` |
| `port` | `integer` | The (TCP) port to run the HTTP server on | `80` |
| `domain_names` | `array` | The domain names that the server should respond to, this has also not been implemented yet and does nothing yet | [] |
| `enable_logging` | `boolean` | Enable/disable request logging (what gets logged is currently limited and not quite customisable) | true |
| **Field** | **type** | **Description** | **Default** |
| :---------------------- | :-------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------: |
| `host` | `string` | The IP address to bind to | `0.0.0.0` |
| `port` | `integer` | The (TCP) port to run the HTTP server on | `80` |
| `domain_names` | `array` | The domain names that the server should respond to, this has also not been implemented yet and does nothing yet | `[]` |
| `enable_logging` | `boolean` | Enable/disable request logging (what gets logged is currently limited and not quite customisable) | `true` |
| `root_dir` | `string` | This is where your static files and assets are located, for example `/var/www/html`. This is relative to where the config is located if it is not an absolute path, for example, if your config is located at `/Users/name/personal/chimney.toml` and the `root_dir` is set to `"public"`, this will be resolved to `/Users/name/personal/public` | `"public"` |
| `fallback_document` | `string` | The file that should be served if the requested path is neither a file that exists nor a valid redirect/rewrite, leaving this blank is also allowed and will just send the status code with no body. A good usecase would be setting this to `index.html` if you are serving an SPA, or `404.html` if you have an Astro site for example | `"index.html"` |
| `https.enable` | `boolean` | `unimplemented` | `false` |
| `https.auto_redirect` | `boolean` | `unimplemented` | `false` |
| `https.port` | `integer` | `unimplemented` | `443` |
| `https.use_self_signed` | `boolean` | `unimplemented` | `false` |
| `https.cert_file` | `string` | `unimplemented` | _`nil`_ |
| `https.key_file` | `string` | `unimplemented` | _`nil`_ |
| `rewrites` | `map` | A rewrite generally maintains the same URL but serves something different, the file doesn't even need to exist. A rewrite could in fact point to a redirect, the leading slash is required when defining a rewrite. For example, if you have a rewrite defined as `"/foo" = "page.html"`, even though `foo` is not a real file, when the server receives a request for `/foo`, it will read and serve the `page.html` file instead without the user knowing | |
| `headers` | `map` | Extra headers you want to append to every response the server sends out | _`nil`_ |
| `redirects` | `map` | A redirect maps a path to en external (or even internal URL), unlike rewrites, a redirect does not read or serve a file, it simply takes the user away to the specified URL, and replays the request (useful for POSTs) if configured to. Eg. `"/foo" = { to = "https://example.com", replay = false }` will take the user to `example.com` anytime they visit `yourwebsite.com/foo` but will NOT replay the request if it was a POST or similar. | _`nil`_ |

## Why not \[this other proxy/server\]?

Expand Down

0 comments on commit 42f1d61

Please sign in to comment.