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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7268f8a0326bba72d6d784b1ba6e8fc5f9c17346b0765244aae83a29087d508f
4
- data.tar.gz: ea583117020def9cbc26df2b713d6a1b8ed30e11333ecf2ef607c978ef45f20f
3
+ metadata.gz: 47ece0b29cc61ec4e448bc880907bd1bc7a8b678f1f7068da543c4e51e0d53ad
4
+ data.tar.gz: 9fcfc4393c9df86b2d8617a8f47aa38d6d3a168e860323222e5f1d472bc2133b
5
5
  SHA512:
6
- metadata.gz: cf1cad5e3278dca85285ee506e308e7cf7e711c580407f3bb1171831bdcd729ebea45868964f3c7413727fcd5372f97698f36c455cf7e86792799dbf5a398966
7
- data.tar.gz: ac2b70781368dddd4cd70e01b96262e4b298a53e6d061a55ff4a4bae297a945db80dec217fccc43c4d68d7aa6ef919912f753835b22e995a35d626c03c08f4dc
6
+ metadata.gz: 70e6cb7a0bc8c59b44cb26b15d02102aa551907220603236bbcf805bd2851bd10429be42d2e56e76fb7e5b04a2586358c51848920d6c32b506fc60c0e865b993
7
+ data.tar.gz: b27a09a7888096e8bc530bf6bb9728b49b450f9acaeb26ed774060884c080a3612f3d151e001fab07a8e1e45fac237fbf31849b784099bdf4a9d06f2abd18cfb
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.
Binary file
@@ -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: x86_64-linux
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