thruster 0.0.2-arm64-darwin → 0.1.0-arm64-darwin
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/MIT-LICENSE +1 -1
- data/README.md +59 -52
- data/exe/arm64-darwin/thrust +0 -0
- data/lib/thruster/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c8eb45118acc97a34af55ca82a3956c82479012f63a78d23085d47ec0f12118
|
4
|
+
data.tar.gz: 0643bb33e71a9bb5507cfc852f969c64656698e926b68aded466a334eb377591
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 392bd7bd873609e32e4d54c59dfeda3d2424577c2837823b21b69c529675dea67f35ab16fec752fbf95dbf40ae498fa72cd76abe03717eb2cb9dde2933ba1f86
|
7
|
+
data.tar.gz: d66960d5c4275081975a1252722a9af523a9a93867aeca79baaec5c20baa8339f20478cdf600cae2b8fc1c75319f59f54f36fe60234d603c3e9da899d6072366
|
data/MIT-LICENSE
CHANGED
data/README.md
CHANGED
@@ -2,24 +2,42 @@
|
|
2
2
|
|
3
3
|
Thruster is an HTTP/2 proxy for simple production-ready deployments of Rails
|
4
4
|
applications. It runs alongside the Puma webserver to provide a few additional
|
5
|
-
features
|
5
|
+
features that help your app run efficiently and safely on the open Internet:
|
6
6
|
|
7
|
-
- Automatic SSL certificate management with Let's Encrypt
|
8
7
|
- HTTP/2 support
|
9
|
-
-
|
10
|
-
-
|
11
|
-
-
|
8
|
+
- Automatic SSL certificate management with Let's Encrypt
|
9
|
+
- Basic HTTP caching of public assets
|
10
|
+
- X-Sendfile support and compression, to efficiently serve static files
|
11
|
+
|
12
|
+
Thruster aims to be as zero-config as possible. It has no configuration file,
|
13
|
+
and most features are automatically enabled with sensible defaults. The goal is
|
14
|
+
that simply running your Puma server with Thruster should be enough to get a
|
15
|
+
production-ready setup.
|
12
16
|
|
13
|
-
|
14
|
-
|
17
|
+
The only exception to this is SSL provisioning: in order for Thruster to
|
18
|
+
provision SSL certificates, it needs to know which domain those certificates
|
19
|
+
should be for. So to use SSL, you need to set the `SSL_DOMAIN` environment
|
20
|
+
variable. If you don't set this variable, Thruster will run in HTTP-only mode.
|
21
|
+
|
22
|
+
Thruster also wraps the Puma process so that you can use it without managing
|
23
|
+
multiple processes yourself. This is particularly useful when running in a
|
24
|
+
containerized environment, where you typically won't have a process manager
|
25
|
+
available to coordinate the processes. Instead you can use Thruster as your
|
26
|
+
`CMD`, and it will manage Puma for you.
|
27
|
+
|
28
|
+
Thruster was originally created for the [ONCE](https://once.com) project, where
|
29
|
+
we wanted a no-fuss way to serve a Rails application from a single container,
|
30
|
+
directly on the open Internet. We've since found it useful for simple
|
31
|
+
deployments of other Rails applications.
|
15
32
|
|
16
|
-
One exception to that is the `SSL_DOMAIN` environment variable, which is
|
17
|
-
required to enable SSL provisioning. If `SSL_DOMAIN` is not set, Thruster will
|
18
|
-
operate in HTTP-only mode.
|
19
33
|
|
20
34
|
## Installation
|
21
35
|
|
22
|
-
|
36
|
+
Thruster is distributed as a Ruby gem. Because Thruster is written in Go, we
|
37
|
+
provide several pre-built platform-specific binaries. Installing the gem will
|
38
|
+
automatically fetch the appropriate binary for your platform.
|
39
|
+
|
40
|
+
To install it, add it to your application's Gemfile:
|
23
41
|
|
24
42
|
```ruby
|
25
43
|
gem 'thruster'
|
@@ -31,6 +49,7 @@ Or install it globally:
|
|
31
49
|
$ gem install thruster
|
32
50
|
```
|
33
51
|
|
52
|
+
|
34
53
|
## Usage
|
35
54
|
|
36
55
|
To run your Puma application inside Thruster, prefix your usual command string
|
@@ -46,46 +65,34 @@ Or with automatic SSL:
|
|
46
65
|
$ SSL_DOMAIN=myapp.example.com thrust bin/rails server
|
47
66
|
```
|
48
67
|
|
49
|
-
## Custom configuration
|
50
|
-
|
51
|
-
Thruster provides a number of environment variables that can be used to
|
52
|
-
customize its behavior:
|
53
|
-
|
54
|
-
- `SSL_DOMAIN` - The domain name to use for SSL provisioning. If not set, SSL
|
55
|
-
will be disabled.
|
56
|
-
|
57
|
-
- `TARGET_PORT` - The port that your Puma server should run on. Defaults to
|
58
|
-
3000. Thruster will set `PORT` to this when starting your server.
|
59
68
|
|
60
|
-
|
61
|
-
|
62
|
-
- `MAX_CACHE_ITEM_SIZE` - The maximum size of a single item in the HTTP cache
|
63
|
-
in bytes. Defaults to 1MB.
|
64
|
-
|
65
|
-
- `X_SENDFILE_ENABLED` - Whether to enable X-Sendfile support. Defaults to
|
66
|
-
enabled; set to `0` or `false` to disable.
|
67
|
-
|
68
|
-
- `MAX_REQUEST_BODY` - The maximum size of a request body in bytes. Requests
|
69
|
-
larger than this size will be refused; `0` means no maximum size. Defaults to
|
70
|
-
`0`.
|
71
|
-
|
72
|
-
- `STORAGE_PATH` - The path to store Thruster's internal state. Defaults to
|
73
|
-
`./storage/thruster`.
|
74
|
-
|
75
|
-
- `BAD_GATEWAY_PAGE` - Path to an HTML file to serve when the backend server
|
76
|
-
returns a 502 Bad Gateway error. Defaults to `./public/502.html`. If there is
|
77
|
-
no file at the specific path, Thruster will serve an empty 502 response
|
78
|
-
instead.
|
79
|
-
|
80
|
-
- `HTTP_PORT` - The port to listen on for HTTP traffic. Defaults to 80.
|
81
|
-
|
82
|
-
- `HTTPS_PORT` - The port to listen on for HTTPS traffic. Defaults to 443.
|
83
|
-
|
84
|
-
- `HTTP_IDLE_TIMEOUT` - The maximum time in seconds that a client can be idle
|
85
|
-
before the connection is closed. Defaults to 60.
|
86
|
-
|
87
|
-
- `HTTP_READ_TIMEOUT` - The maximum time in seconds that a client can take to
|
88
|
-
send the request headers. Defaults to 30.
|
69
|
+
## Custom configuration
|
89
70
|
|
90
|
-
|
91
|
-
|
71
|
+
In most cases, Thruster should work out of the box with no additional
|
72
|
+
configuration. But if you need to customize its behavior, there are a few
|
73
|
+
environment variables that you can set.
|
74
|
+
|
75
|
+
| Variable Name | Description | Default Value |
|
76
|
+
|-----------------------|---------------------------------------------------------------------------------|---------------|
|
77
|
+
| `SSL_DOMAIN` | The domain name to use for SSL provisioning. If not set, SSL will be disabled. | None |
|
78
|
+
| `TARGET_PORT` | The port that your Puma server should run on. Thruster will set `PORT` to this value when starting your server. | 3000 |
|
79
|
+
| `CACHE_SIZE` | The size of the HTTP cache in bytes. | 64MB |
|
80
|
+
| `MAX_CACHE_ITEM_SIZE` | The maximum size of a single item in the HTTP cache in bytes. | 1MB |
|
81
|
+
| `X_SENDFILE_ENABLED` | Whether to enable X-Sendfile support. Set to `0` or `false` to disable. | Enabled |
|
82
|
+
| `MAX_REQUEST_BODY` | The maximum size of a request body in bytes. Requests larger than this size will be refused; `0` means no maximum size is enforced. | `0` |
|
83
|
+
| `STORAGE_PATH` | The path to store Thruster's internal state. Provisioned SSL certificates will be stored here, so that they will not need to be requested every time your application is started. | `./storage/thruster` |
|
84
|
+
| `BAD_GATEWAY_PAGE` | Path to an HTML file to serve when the backend server returns a 502 Bad Gateway error. If there is no file at the specific path, Thruster will serve an empty 502 response instead. Because Thruster boots very quickly, a custom page can be a useful way to show that your application is starting up. | `./public/502.html` |
|
85
|
+
| `HTTP_PORT` | The port to listen on for HTTP traffic. | 80 |
|
86
|
+
| `HTTPS_PORT` | The port to listen on for HTTPS traffic. | 443 |
|
87
|
+
| `HTTP_IDLE_TIMEOUT` | The maximum time in seconds that a client can be idle before the connection is closed. | 60 |
|
88
|
+
| `HTTP_READ_TIMEOUT` | The maximum time in seconds that a client can take to send the request headers. | 30 |
|
89
|
+
| `HTTP_WRITE_TIMEOUT` | The maximum time in seconds during which the client must read the response. | 30 |
|
90
|
+
| `ACME_DIRECTORY` | The URL of the ACME directory to use for SSL certificate provisioning. | `https://acme-v02.api.letsencrypt.org/directory` (Let's Encrypt production) |
|
91
|
+
| `EAB_KID` | The EAB key identifier to use when provisioning SSL certificates, if required. | None |
|
92
|
+
| `EAB_HMAC_KEY` | The Base64-encoded EAB HMAC key to use when provisioning SSL certificates, if required. | None |
|
93
|
+
| `DEBUG` | Set to `1` or `true` to enable debug logging. | Disabled |
|
94
|
+
|
95
|
+
To prevent naming clashes with your application's own environment variables,
|
96
|
+
Thruster's environment variables can optionally be prefixed with `THRUSTER_`.
|
97
|
+
For example, `SSL_DOMAIN` can also be written as `THRUSTER_SSL_DOMAIN`. Whenever
|
98
|
+
a prefixed variable is set, it will take precedence over the unprefixed version.
|
data/exe/arm64-darwin/thrust
CHANGED
Binary file
|
data/lib/thruster/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thruster
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: arm64-darwin
|
6
6
|
authors:
|
7
7
|
- Kevin McConnell
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-03-07 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A zero-config HTTP/2 proxy for lightweight production deployments
|
14
14
|
email: kevin@37signals.com
|