thruster 0.0.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a72adc8f0d2c62b2f8c2402f7daf85b0545fb29982312ab24e08e70b566be674
4
- data.tar.gz: 9e205fcf6f18b0fb2771c925bc9867b3ce6d22fc27be76a085469a24bbf20102
3
+ metadata.gz: a21ddea1e2eaec878e2704987dda9404a26ffcdccbfcf8c7d33d87779c23d509
4
+ data.tar.gz: 850b96ab20ef67be8d3e17fe80bd229bae7a2ff4bdc1b3a3dd73cef1823c267a
5
5
  SHA512:
6
- metadata.gz: 7edde5602e1b89afc816e3461cd414a77726130865012de2522f4aa33fec99f553d8eb795638e78f5ffe1a947f2819771dea01a9b7d161d878f87ba5a981880c
7
- data.tar.gz: e082a10addeed303f5880d003f873e7457af404cb8f95938f1a4b946b987250235b4309699c6652d523e0024d8eb28049b9c2690d705c5d12d4b40e29fb6a8e3
6
+ metadata.gz: 9f7e004468d3986140f976a73948ed702b40882ad8ab74a96664a1a3861534255beff35f3800937c58358cfcc0035ee55e209545bd357493aeca78fff6a9aafe
7
+ data.tar.gz: ad4e5170bc68e1ab22959381e2c45d27d7a1a1f332f2fc71730e74bd23d7f731557b8b23dbc304808189458a7c9a0450e35af5ed126fbf7091d2f6f24cada893
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2024 Kevin McConnell
1
+ Copyright (c) 37signals, LLC
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
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.
@@ -1,3 +1,3 @@
1
1
  module Thruster
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.3"
3
3
  end
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.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin McConnell
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-02-14 00:00:00.000000000 Z
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