thruster 0.0.1-x86_64-linux → 0.0.3-x86_64-linux
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 +96 -0
- data/exe/x86_64-linux/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: 47ece0b29cc61ec4e448bc880907bd1bc7a8b678f1f7068da543c4e51e0d53ad
|
4
|
+
data.tar.gz: 9fcfc4393c9df86b2d8617a8f47aa38d6d3a168e860323222e5f1d472bc2133b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 70e6cb7a0bc8c59b44cb26b15d02102aa551907220603236bbcf805bd2851bd10429be42d2e56e76fb7e5b04a2586358c51848920d6c32b506fc60c0e865b993
|
7
|
+
data.tar.gz: b27a09a7888096e8bc530bf6bb9728b49b450f9acaeb26ed774060884c080a3612f3d151e001fab07a8e1e45fac237fbf31849b784099bdf4a9d06f2abd18cfb
|
data/MIT-LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,2 +1,98 @@
|
|
1
1
|
# Thruster
|
2
2
|
|
3
|
+
Thruster is an HTTP/2 proxy for simple production-ready deployments of Rails
|
4
|
+
applications. It runs alongside the Puma webserver to provide a few additional
|
5
|
+
features that help your app run efficiently and safely on the open Internet:
|
6
|
+
|
7
|
+
- HTTP/2 support
|
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.
|
16
|
+
|
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.
|
32
|
+
|
33
|
+
|
34
|
+
## Installation
|
35
|
+
|
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:
|
41
|
+
|
42
|
+
```ruby
|
43
|
+
gem 'thruster'
|
44
|
+
```
|
45
|
+
|
46
|
+
Or install it globally:
|
47
|
+
|
48
|
+
```sh
|
49
|
+
$ gem install thruster
|
50
|
+
```
|
51
|
+
|
52
|
+
|
53
|
+
## Usage
|
54
|
+
|
55
|
+
To run your Puma application inside Thruster, prefix your usual command string
|
56
|
+
with `thrust`. For example:
|
57
|
+
|
58
|
+
```sh
|
59
|
+
$ thrust bin/rails server
|
60
|
+
```
|
61
|
+
|
62
|
+
Or with automatic SSL:
|
63
|
+
|
64
|
+
```sh
|
65
|
+
$ SSL_DOMAIN=myapp.example.com thrust bin/rails server
|
66
|
+
```
|
67
|
+
|
68
|
+
|
69
|
+
## Custom configuration
|
70
|
+
|
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/x86_64-linux/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.0.3
|
5
5
|
platform: x86_64-linux
|
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-06 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
|