Rollouts agent

rollouts1.a.jpfennell.com

github.com/jamespfennell/rollouts

Projects

PATH train GTFS

github.com/jamespfennell/path-train-gtfs-realtime

Last deployed 25 weeks ago.

No pending deployment.

Most recent deployments
Add run arguments to status page (#8)

Build #64. Deployed 25 weeks ago.

Deployment logs
Pull
$ /mount/docker compose pull
time="2025-04-29T12:45:38Z" level=warning msg="/home/james/path-train-gtfsrt/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion"
 path2 Skipped - Image is already being pulled by path-train-gtfs-realtime 
 path-train-gtfs-realtime Pulling 
 path-train-gtfs-realtime Pulled 

Success
              
Redeploy
$ /mount/docker compose up -d
time="2025-04-29T12:45:38Z" level=warning msg="/home/james/path-train-gtfsrt/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion"
 Container 6f100c39b6be_path-train-gtfsrt-path2-1  Running
 Container 0cbe55bb1fcf_path-train-gtfsrt-path-train-gtfs-realtime-1  Starting
 Container 0cbe55bb1fcf_path-train-gtfsrt-path-train-gtfs-realtime-1  Started

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping path.transitdata.nyc
$ curl --fail-with-body -v https://path.transitdata.nyc/gtfsrt --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.243.34.11:443...
* Connected to path.transitdata.nyc (162.243.34.11) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2089 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [80 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=path.transitdata.nyc
*  start date: Apr 28 01:48:20 2025 GMT
*  expire date: Jul 27 01:48:19 2025 GMT
*  subjectAltName: host "path.transitdata.nyc" matched cert's "path.transitdata.nyc"
*  issuer: C=US; O=Let's Encrypt; CN=E5
*  SSL certificate verify ok.
} [5 bytes data]
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /gtfsrt]
* h2h3 [:scheme: https]
* h2h3 [:authority: path.transitdata.nyc]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x57ae10372780)
} [5 bytes data]
> GET /gtfsrt HTTP/2
> Host: path.transitdata.nyc
> user-agent: curl/7.88.1
> accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: application/octet-stream
< date: Tue, 29 Apr 2025 12:45:43 GMT
< via: 1.1 Caddy
< 
{ [5 bytes data]

100  5839    0  5839    0     0   112k      0 --:--:-- --:--:-- --:--:--  114k
* Connection #0 to host path.transitdata.nyc left intact

Success
              
Add run arguments to status page (#8)

Build #64. Failed 25 weeks ago.

Deployment logs
Pull
$ /mount/docker compose pull
docker: unknown command: docker compose

Run 'docker --help' for more information

Failure
              
Add run arguments to status page (#8)

Build #64. Failed 25 weeks ago.

Deployment logs
Pull
$ /mount/docker compose pull
Failed to start command.
This is probably an error in the project configuration.
Error: No such file or directory (os error 2)
Failure
              
Project configuration
{
  "auth_token": "",
  "branch": "master",
  "name": "PATH train GTFS",
  "paused": false,
  "repo": "github.com/jamespfennell/path-train-gtfs-realtime",
  "retention": 10,
  "steps": [
    {
      "name": "Pull",
      "run": "docker compose pull"
    },
    {
      "name": "Redeploy",
      "run": "docker compose up -d"
    },
    {
      "name": "Wait for 5 seconds",
      "run": "sleep 5"
    },
    {
      "name": "Ping path.transitdata.nyc",
      "run": "curl --fail-with-body -v https://path.transitdata.nyc/gtfsrt --output /dev/null"
    }
  ],
  "wait_minutes": 0,
  "working_directory": "/home/james/path-train-gtfsrt"
}

Texcraft

github.com/jamespfennell/texcraft

Last deployed 3 weeks ago.

No pending deployment.

Most recent deployments
box tex hlist: support non-cmr10 fonts

Build #910. Deployed 3 weeks ago.

Deployment logs
Pull
$ docker compose pull
 texcraft.dev Pulling 
 redis Pulling 
 play.texcraft.dev Pulling 
 redis Pulled 
 9824c27679d3 Already exists 
 634211206164 Already exists 
 edccfae94f0e Already exists 
 2e53616944a4 Already exists 
 4f4fb700ef54 Already exists 
 83179fa1b8db Pulling fs layer 
 3f7731af1599 Pulling fs layer 
 785fbdb41f49 Pulling fs layer 
 15b1d8a5ff03 Already exists 
 c09a61ae8154 Pulling fs layer 
 c09a61ae8154 Waiting 
 3f7731af1599 Downloading [>                                                  ]  13.66kB/1.348MB
 83179fa1b8db Downloading [==================================================>]      98B/98B
 83179fa1b8db Verifying Checksum 
 83179fa1b8db Download complete 
 3f7731af1599 Verifying Checksum 
 3f7731af1599 Download complete 
 83179fa1b8db Extracting [==================================================>]      98B/98B
 83179fa1b8db Extracting [==================================================>]      98B/98B
 83179fa1b8db Pull complete 
 3f7731af1599 Extracting [=>                                                 ]  32.77kB/1.348MB
 785fbdb41f49 Downloading [>                                                  ]  31.42kB/3.098MB
 785fbdb41f49 Verifying Checksum 
 785fbdb41f49 Download complete 
 3f7731af1599 Extracting [==================================================>]  1.348MB/1.348MB
 3f7731af1599 Pull complete 
 785fbdb41f49 Extracting [>                                                  ]  32.77kB/3.098MB
 c09a61ae8154 Downloading [>                                                  ]  39.68kB/3.946MB
 785fbdb41f49 Extracting [================>                                  ]  1.016MB/3.098MB
 c09a61ae8154 Verifying Checksum 
 c09a61ae8154 Download complete 
 c09a61ae8154 Extracting [>                                                  ]  65.54kB/3.946MB
 785fbdb41f49 Extracting [=======================================>           ]  2.425MB/3.098MB
 c09a61ae8154 Extracting [==========================================>        ]  3.342MB/3.946MB
 c09a61ae8154 Extracting [==================================================>]  3.946MB/3.946MB
 c09a61ae8154 Pull complete 
 play.texcraft.dev Pulled 
 785fbdb41f49 Extracting [==========================================>        ]  2.621MB/3.098MB
 785fbdb41f49 Extracting [==================================================>]  3.098MB/3.098MB
 785fbdb41f49 Pull complete 
 texcraft.dev Pulled 

Success
              
Redeploy
$ docker compose up -d
 Container texcraftdev-texcraft.dev-1  Recreate
 Container texcraftdev-play.texcraft.dev-1  Recreate
 Container texcraftdev-redis-1  Running
 Container texcraftdev-play.texcraft.dev-1  Recreated
 Container texcraftdev-texcraft.dev-1  Recreated
 Container texcraftdev-play.texcraft.dev-1  Starting
 Container texcraftdev-texcraft.dev-1  Starting
 Container texcraftdev-texcraft.dev-1  Started
 Container texcraftdev-play.texcraft.dev-1  Started

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping texcraft.dev
$ curl --fail-with-body -v https://texcraft.dev --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.243.34.11:443...
* Connected to texcraft.dev (162.243.34.11) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2039 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [79 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=texcraft.dev
*  start date: Aug 25 16:46:15 2025 GMT
*  expire date: Nov 23 16:46:14 2025 GMT
*  subjectAltName: host "texcraft.dev" matched cert's "texcraft.dev"
*  issuer: C=US; O=Let's Encrypt; CN=E7
*  SSL certificate verify ok.
} [5 bytes data]
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /]
* h2h3 [:scheme: https]
* h2h3 [:authority: texcraft.dev]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x5e06f4474780)
} [5 bytes data]
> GET / HTTP/2
> Host: texcraft.dev
> user-agent: curl/7.88.1
> accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=utf-8
< date: Mon, 29 Sep 2025 03:51:10 GMT
< etag: "dd4z5hdq92psbsk-gzip"
< last-modified: Mon, 29 Sep 2025 03:46:58 GMT
< server: Caddy
< vary: Accept-Encoding
< via: 1.1 Caddy
< 
{ [5 bytes data]

100 15284    0 15284    0     0   211k      0 --:--:-- --:--:-- --:--:--  213k
* Connection #0 to host texcraft.dev left intact

Success
              
Ping play.texcraft.dev
$ curl --fail-with-body -v https://play.texcraft.dev --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.243.34.11:443...
* Connected to play.texcraft.dev (162.243.34.11) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2049 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [80 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=play.texcraft.dev
*  start date: Aug 25 16:36:15 2025 GMT
*  expire date: Nov 23 16:36:14 2025 GMT
*  subjectAltName: host "play.texcraft.dev" matched cert's "play.texcraft.dev"
*  issuer: C=US; O=Let's Encrypt; CN=E7
*  SSL certificate verify ok.
} [5 bytes data]
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /]
* h2h3 [:scheme: https]
* h2h3 [:authority: play.texcraft.dev]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x56e35f8a6780)
} [5 bytes data]
> GET / HTTP/2
> Host: play.texcraft.dev
> user-agent: curl/7.88.1
> accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=utf-8
< date: Mon, 29 Sep 2025 03:51:10 GMT
< via: 1.1 Caddy
< content-length: 514
< 
{ [5 bytes data]

100   514  100   514    0     0   9002      0 --:--:-- --:--:-- --:--:--  9178
* Connection #0 to host play.texcraft.dev left intact

Success
              
boxworks: basic ligature case

Build #909. Deployed 6 weeks ago.

Deployment logs
Pull
$ docker compose pull
 texcraft.dev Pulling 
 play.texcraft.dev Pulling 
 redis Pulling 
 redis Pulled 
 15b1d8a5ff03 Already exists 
 73c93fa65624 Pulling fs layer 
 9824c27679d3 Already exists 
 634211206164 Already exists 
 edccfae94f0e Already exists 
 2e53616944a4 Already exists 
 4f4fb700ef54 Already exists 
 ff362bfe6ac3 Pulling fs layer 
 60ef153ce4dd Pulling fs layer 
 ebe7e237adc7 Pulling fs layer 
 ebe7e237adc7 Waiting 
 73c93fa65624 Downloading [>                                                  ]  40.53kB/3.946MB
 73c93fa65624 Verifying Checksum 
 73c93fa65624 Download complete 
 ff362bfe6ac3 Downloading [==================================================>]      98B/98B
 ff362bfe6ac3 Verifying Checksum 
 73c93fa65624 Extracting [>                                                  ]  65.54kB/3.946MB
 ff362bfe6ac3 Download complete 
 ff362bfe6ac3 Extracting [==================================================>]      98B/98B
 ff362bfe6ac3 Extracting [==================================================>]      98B/98B
 60ef153ce4dd Downloading [>                                                  ]  13.67kB/1.348MB
 ff362bfe6ac3 Pull complete 
 60ef153ce4dd Verifying Checksum 
 60ef153ce4dd Download complete 
 60ef153ce4dd Extracting [=>                                                 ]  32.77kB/1.348MB
 60ef153ce4dd Extracting [==================================================>]  1.348MB/1.348MB
 73c93fa65624 Extracting [===============================>                   ]   2.49MB/3.946MB
 73c93fa65624 Extracting [==================================================>]  3.946MB/3.946MB
 60ef153ce4dd Pull complete 
 73c93fa65624 Pull complete 
 ebe7e237adc7 Downloading [>                                                  ]  31.42kB/3.104MB
 play.texcraft.dev Pulled 
 ebe7e237adc7 Verifying Checksum 
 ebe7e237adc7 Download complete 
 ebe7e237adc7 Extracting [>                                                  ]  32.77kB/3.104MB
 ebe7e237adc7 Extracting [======================>                            ]  1.376MB/3.104MB
 ebe7e237adc7 Extracting [==========================================>        ]  2.654MB/3.104MB
 ebe7e237adc7 Extracting [==================================================>]  3.104MB/3.104MB
 ebe7e237adc7 Pull complete 
 texcraft.dev Pulled 

Success
              
Redeploy
$ docker compose up -d
 Container texcraftdev-play.texcraft.dev-1  Recreate
 Container texcraftdev-redis-1  Running
 Container texcraftdev-texcraft.dev-1  Recreate
 Container texcraftdev-play.texcraft.dev-1  Recreated
 Container texcraftdev-texcraft.dev-1  Recreated
 Container texcraftdev-texcraft.dev-1  Starting
 Container texcraftdev-play.texcraft.dev-1  Starting
 Container texcraftdev-play.texcraft.dev-1  Started
 Container texcraftdev-texcraft.dev-1  Started

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping texcraft.dev
$ curl --fail-with-body -v https://texcraft.dev --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.243.34.11:443...
* Connected to texcraft.dev (162.243.34.11) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2039 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [79 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=texcraft.dev
*  start date: Aug 25 16:46:15 2025 GMT
*  expire date: Nov 23 16:46:14 2025 GMT
*  subjectAltName: host "texcraft.dev" matched cert's "texcraft.dev"
*  issuer: C=US; O=Let's Encrypt; CN=E7
*  SSL certificate verify ok.
} [5 bytes data]
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /]
* h2h3 [:scheme: https]
* h2h3 [:authority: texcraft.dev]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x5672fe45a780)
} [5 bytes data]
> GET / HTTP/2
> Host: texcraft.dev
> user-agent: curl/7.88.1
> accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=utf-8
< date: Thu, 11 Sep 2025 15:51:06 GMT
< etag: "dcq37idtedc0bsk-gzip"
< last-modified: Thu, 11 Sep 2025 15:47:42 GMT
< server: Caddy
< vary: Accept-Encoding
< via: 1.1 Caddy
< 
{ [5 bytes data]

100 15284    0 15284    0     0   132k      0 --:--:-- --:--:-- --:--:--  133k
* Connection #0 to host texcraft.dev left intact

Success
              
Ping play.texcraft.dev
$ curl --fail-with-body -v https://play.texcraft.dev --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.243.34.11:443...
* Connected to play.texcraft.dev (162.243.34.11) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2049 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [78 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=play.texcraft.dev
*  start date: Aug 25 16:36:15 2025 GMT
*  expire date: Nov 23 16:36:14 2025 GMT
*  subjectAltName: host "play.texcraft.dev" matched cert's "play.texcraft.dev"
*  issuer: C=US; O=Let's Encrypt; CN=E7
*  SSL certificate verify ok.
} [5 bytes data]
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /]
* h2h3 [:scheme: https]
* h2h3 [:authority: play.texcraft.dev]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x5b94c4b8e780)
} [5 bytes data]
> GET / HTTP/2
> Host: play.texcraft.dev
> user-agent: curl/7.88.1
> accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=utf-8
< date: Thu, 11 Sep 2025 15:51:06 GMT
< via: 1.1 Caddy
< content-length: 514
< 
{ [5 bytes data]

100   514  100   514    0     0  10011      0 --:--:-- --:--:-- --:--:-- 10078
* Connection #0 to host play.texcraft.dev left intact

Success
              
boxworks: move lig/kern running logic to tfm crate

Build #906. Deployed 6 weeks ago.

Deployment logs
Pull
$ docker compose pull
 texcraft.dev Pulling 
 redis Pulling 
 play.texcraft.dev Pulling 
 redis Pulled 
 15b1d8a5ff03 Pulling fs layer 
 723fb5e5277e Pulling fs layer 
 9824c27679d3 Already exists 
 634211206164 Already exists 
 edccfae94f0e Already exists 
 2e53616944a4 Already exists 
 4f4fb700ef54 Already exists 
 76dcc41d844f Pulling fs layer 
 d3eee9084876 Pulling fs layer 
 799f85604253 Pulling fs layer 
 d3eee9084876 Waiting 
 799f85604253 Waiting 
 15b1d8a5ff03 Downloading [>                                                  ]  498.1kB/49.28MB
 15b1d8a5ff03 Downloading [===>                                               ]  3.513MB/49.28MB
 723fb5e5277e Downloading [>                                                  ]   39.8kB/3.946MB
 76dcc41d844f Downloading [==================================================>]      98B/98B
 76dcc41d844f Download complete 
 76dcc41d844f Extracting [==================================================>]      98B/98B
 76dcc41d844f Extracting [==================================================>]      98B/98B
 15b1d8a5ff03 Downloading [========>                                          ]  8.043MB/49.28MB
 723fb5e5277e Downloading [================================>                  ]   2.56MB/3.946MB
 76dcc41d844f Pull complete 
 723fb5e5277e Verifying Checksum 
 723fb5e5277e Download complete 
 15b1d8a5ff03 Downloading [=============>                                     ]  13.08MB/49.28MB
 15b1d8a5ff03 Downloading [=================>                                 ]  17.13MB/49.28MB
 799f85604253 Downloading [>                                                  ]  31.42kB/3.098MB
 15b1d8a5ff03 Downloading [=======================>                           ]  23.19MB/49.28MB
 d3eee9084876 Downloading [>                                                  ]  13.84kB/1.348MB
 799f85604253 Verifying Checksum 
 799f85604253 Download complete 
 d3eee9084876 Verifying Checksum 
 d3eee9084876 Download complete 
 d3eee9084876 Extracting [=>                                                 ]  32.77kB/1.348MB
 15b1d8a5ff03 Downloading [=============================>                     ]  28.74MB/49.28MB
 d3eee9084876 Extracting [==================================================>]  1.348MB/1.348MB
 d3eee9084876 Pull complete 
 799f85604253 Extracting [>                                                  ]  32.77kB/3.098MB
 799f85604253 Extracting [======>                                            ]    426kB/3.098MB
 15b1d8a5ff03 Downloading [=================================>                 ]  33.27MB/49.28MB
 799f85604253 Extracting [==================>                                ]  1.147MB/3.098MB
 15b1d8a5ff03 Downloading [========================================>          ]  40.34MB/49.28MB
 799f85604253 Extracting [======================================>            ]  2.392MB/3.098MB
 15b1d8a5ff03 Downloading [================================================>  ]  47.86MB/49.28MB
 15b1d8a5ff03 Verifying Checksum 
 15b1d8a5ff03 Download complete 
 799f85604253 Extracting [========================================>          ]  2.523MB/3.098MB
 15b1d8a5ff03 Extracting [>                                                  ]  524.3kB/49.28MB
 799f85604253 Extracting [==========================================>        ]  2.621MB/3.098MB
 15b1d8a5ff03 Extracting [==>                                                ]  2.621MB/49.28MB
 799f85604253 Extracting [==============================================>    ]  2.884MB/3.098MB
 799f85604253 Extracting [==================================================>]  3.098MB/3.098MB
 15b1d8a5ff03 Extracting [====>                                              ]  4.194MB/49.28MB
 15b1d8a5ff03 Extracting [=====>                                             ]  5.243MB/49.28MB
 799f85604253 Pull complete 
 texcraft.dev Pulled 
 15b1d8a5ff03 Extracting [=========>                                         ]  8.913MB/49.28MB
 15b1d8a5ff03 Extracting [===========>                                       ]  11.53MB/49.28MB
 15b1d8a5ff03 Extracting [==============>                                    ]  14.68MB/49.28MB
 15b1d8a5ff03 Extracting [====================>                              ]  19.92MB/49.28MB
 15b1d8a5ff03 Extracting [=======================>                           ]  23.59MB/49.28MB
 15b1d8a5ff03 Extracting [==========================>                        ]  26.21MB/49.28MB
 15b1d8a5ff03 Extracting [=============================>                     ]  29.36MB/49.28MB
 15b1d8a5ff03 Extracting [==================================>                ]  33.55MB/49.28MB
 15b1d8a5ff03 Extracting [=====================================>             ]   36.7MB/49.28MB
 15b1d8a5ff03 Extracting [=======================================>           ]  39.32MB/49.28MB
 15b1d8a5ff03 Extracting [=========================================>         ]  40.89MB/49.28MB
 15b1d8a5ff03 Extracting [============================================>      ]  43.52MB/49.28MB
 15b1d8a5ff03 Extracting [=============================================>     ]  44.56MB/49.28MB
 15b1d8a5ff03 Extracting [==============================================>    ]  46.14MB/49.28MB
 15b1d8a5ff03 Extracting [================================================>  ]  47.71MB/49.28MB
 15b1d8a5ff03 Extracting [=================================================> ]  48.76MB/49.28MB
 15b1d8a5ff03 Extracting [==================================================>]  49.28MB/49.28MB
 15b1d8a5ff03 Extracting [==================================================>]  49.28MB/49.28MB
 15b1d8a5ff03 Pull complete 
 723fb5e5277e Extracting [>                                                  ]  65.54kB/3.946MB
 723fb5e5277e Extracting [==================================================>]  3.946MB/3.946MB
 723fb5e5277e Pull complete 
 play.texcraft.dev Pulled 

Success
              
Redeploy
$ docker compose up -d
 Container texcraftdev-texcraft.dev-1  Recreate
 Container texcraftdev-play.texcraft.dev-1  Recreate
 Container texcraftdev-redis-1  Running
 Container texcraftdev-play.texcraft.dev-1  Recreated
 Container texcraftdev-texcraft.dev-1  Recreated
 Container texcraftdev-play.texcraft.dev-1  Starting
 Container texcraftdev-texcraft.dev-1  Starting
 Container texcraftdev-play.texcraft.dev-1  Started
 Container texcraftdev-texcraft.dev-1  Started

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping texcraft.dev
$ curl --fail-with-body -v https://texcraft.dev --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.243.34.11:443...
* Connected to texcraft.dev (162.243.34.11) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2039 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [79 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=texcraft.dev
*  start date: Aug 25 16:46:15 2025 GMT
*  expire date: Nov 23 16:46:14 2025 GMT
*  subjectAltName: host "texcraft.dev" matched cert's "texcraft.dev"
*  issuer: C=US; O=Let's Encrypt; CN=E7
*  SSL certificate verify ok.
} [5 bytes data]
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /]
* h2h3 [:scheme: https]
* h2h3 [:authority: texcraft.dev]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x55f73c34f780)
} [5 bytes data]
> GET / HTTP/2
> Host: texcraft.dev
> user-agent: curl/7.88.1
> accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=utf-8
< date: Tue, 09 Sep 2025 20:01:08 GMT
< etag: "dcoj9wtjx3pcbsk-gzip"
< last-modified: Tue, 09 Sep 2025 19:57:48 GMT
< server: Caddy
< vary: Accept-Encoding
< via: 1.1 Caddy
< 
{ [5 bytes data]

100 15284    0 15284    0     0   186k      0 --:--:-- --:--:-- --:--:--  188k
* Connection #0 to host texcraft.dev left intact

Success
              
Ping play.texcraft.dev
$ curl --fail-with-body -v https://play.texcraft.dev --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.243.34.11:443...
* Connected to play.texcraft.dev (162.243.34.11) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2049 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [80 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=play.texcraft.dev
*  start date: Aug 25 16:36:15 2025 GMT
*  expire date: Nov 23 16:36:14 2025 GMT
*  subjectAltName: host "play.texcraft.dev" matched cert's "play.texcraft.dev"
*  issuer: C=US; O=Let's Encrypt; CN=E7
*  SSL certificate verify ok.
} [5 bytes data]
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /]
* h2h3 [:scheme: https]
* h2h3 [:authority: play.texcraft.dev]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x579d49d48780)
} [5 bytes data]
> GET / HTTP/2
> Host: play.texcraft.dev
> user-agent: curl/7.88.1
> accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=utf-8
< date: Tue, 09 Sep 2025 20:01:08 GMT
< via: 1.1 Caddy
< content-length: 514
< 
{ [5 bytes data]

100   514  100   514    0     0   9708      0 --:--:-- --:--:-- --:--:--  9884
* Connection #0 to host play.texcraft.dev left intact

Success
              
box CLI: fix parsing and printing of numbers in the range (-1,0)

Build #905. Deployed 6 weeks ago.

Deployment logs
Pull
$ docker compose pull
 redis Pulling 
 texcraft.dev Pulling 
 play.texcraft.dev Pulling 
 redis Pulled 
 9824c27679d3 Already exists 
 634211206164 Already exists 
 80b7316254b3 Already exists 
 edccfae94f0e Already exists 
 afa801df08da Pulling fs layer 
 2e53616944a4 Already exists 
 4f4fb700ef54 Already exists 
 6941ab420693 Pulling fs layer 
 70f5982577c9 Pulling fs layer 
 606c44f6be3b Pulling fs layer 
 606c44f6be3b Waiting 
 70f5982577c9 Downloading [>                                                  ]   14.7kB/1.348MB
 6941ab420693 Downloading [==================================================>]      98B/98B
 6941ab420693 Verifying Checksum 
 6941ab420693 Download complete 
 6941ab420693 Extracting [==================================================>]      98B/98B
 70f5982577c9 Downloading [==================================================>]  1.348MB/1.348MB
 6941ab420693 Extracting [==================================================>]      98B/98B
 70f5982577c9 Verifying Checksum 
 70f5982577c9 Download complete 
 6941ab420693 Pull complete 
 70f5982577c9 Extracting [=>                                                 ]  32.77kB/1.348MB
 afa801df08da Downloading [>                                                  ]  39.76kB/3.946MB
 70f5982577c9 Extracting [==================================================>]  1.348MB/1.348MB
 afa801df08da Verifying Checksum 
 afa801df08da Download complete 
 70f5982577c9 Pull complete 
 afa801df08da Extracting [>                                                  ]  65.54kB/3.946MB
 afa801df08da Extracting [==================================================>]  3.946MB/3.946MB
 afa801df08da Pull complete 
 play.texcraft.dev Pulled 
 606c44f6be3b Downloading [>                                                  ]  31.66kB/3.07MB
 606c44f6be3b Verifying Checksum 
 606c44f6be3b Download complete 
 606c44f6be3b Extracting [>                                                  ]  32.77kB/3.07MB
 606c44f6be3b Extracting [==================>                                ]  1.114MB/3.07MB
 606c44f6be3b Extracting [==========================================>        ]  2.589MB/3.07MB
 606c44f6be3b Extracting [==================================================>]   3.07MB/3.07MB
 606c44f6be3b Pull complete 
 texcraft.dev Pulled 

Success
              
Redeploy
$ docker compose up -d
 Container texcraftdev-play.texcraft.dev-1  Recreate
 Container texcraftdev-redis-1  Running
 Container texcraftdev-texcraft.dev-1  Recreate
 Container texcraftdev-texcraft.dev-1  Recreated
 Container texcraftdev-play.texcraft.dev-1  Recreated
 Container texcraftdev-texcraft.dev-1  Starting
 Container texcraftdev-play.texcraft.dev-1  Starting
 Container texcraftdev-play.texcraft.dev-1  Started
 Container texcraftdev-texcraft.dev-1  Started

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping texcraft.dev
$ curl --fail-with-body -v https://texcraft.dev --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.243.34.11:443...
* Connected to texcraft.dev (162.243.34.11) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2039 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [80 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=texcraft.dev
*  start date: Aug 25 16:46:15 2025 GMT
*  expire date: Nov 23 16:46:14 2025 GMT
*  subjectAltName: host "texcraft.dev" matched cert's "texcraft.dev"
*  issuer: C=US; O=Let's Encrypt; CN=E7
*  SSL certificate verify ok.
} [5 bytes data]
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /]
* h2h3 [:scheme: https]
* h2h3 [:authority: texcraft.dev]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x64e33eb5b780)
} [5 bytes data]
> GET / HTTP/2
> Host: texcraft.dev
> user-agent: curl/7.88.1
> accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=utf-8
< date: Sun, 07 Sep 2025 13:43:04 GMT
< etag: "dcmlyb1gvtogbsk-gzip"
< last-modified: Sun, 07 Sep 2025 13:38:22 GMT
< server: Caddy
< vary: Accept-Encoding
< via: 1.1 Caddy
< 
{ [5 bytes data]

100 15284    0 15284    0     0   208k      0 --:--:-- --:--:-- --:--:--  210k
* Connection #0 to host texcraft.dev left intact

Success
              
Ping play.texcraft.dev
$ curl --fail-with-body -v https://play.texcraft.dev --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.243.34.11:443...
* Connected to play.texcraft.dev (162.243.34.11) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2049 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [79 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=play.texcraft.dev
*  start date: Aug 25 16:36:15 2025 GMT
*  expire date: Nov 23 16:36:14 2025 GMT
*  subjectAltName: host "play.texcraft.dev" matched cert's "play.texcraft.dev"
*  issuer: C=US; O=Let's Encrypt; CN=E7
*  SSL certificate verify ok.
} [5 bytes data]
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /]
* h2h3 [:scheme: https]
* h2h3 [:authority: play.texcraft.dev]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x5eaee6fbb780)
} [5 bytes data]
> GET / HTTP/2
> Host: play.texcraft.dev
> user-agent: curl/7.88.1
> accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=utf-8
< date: Sun, 07 Sep 2025 13:43:04 GMT
< via: 1.1 Caddy
< content-length: 514
< 
{ [5 bytes data]

100   514  100   514    0     0   8712      0 --:--:-- --:--:-- --:--:--  8862
* Connection #0 to host play.texcraft.dev left intact

Success
              
Fix link to KeenType repository (#8)

Build #904. Deployed 6 weeks ago.

Deployment logs
Pull
$ docker compose pull
 redis Pulling 
 texcraft.dev Pulling 
 play.texcraft.dev Pulling 
 texcraft.dev Pulled 
 play.texcraft.dev Pulled 
 redis Pulled 

Success
              
Redeploy
$ docker compose up -d
 Container texcraftdev-play.texcraft.dev-1  Running
 Container texcraftdev-redis-1  Running
 Container texcraftdev-texcraft.dev-1  Running

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping texcraft.dev
$ curl --fail-with-body -v https://texcraft.dev --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.243.34.11:443...
* Connected to texcraft.dev (162.243.34.11) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2039 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [80 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=texcraft.dev
*  start date: Aug 25 16:46:15 2025 GMT
*  expire date: Nov 23 16:46:14 2025 GMT
*  subjectAltName: host "texcraft.dev" matched cert's "texcraft.dev"
*  issuer: C=US; O=Let's Encrypt; CN=E7
*  SSL certificate verify ok.
} [5 bytes data]
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /]
* h2h3 [:scheme: https]
* h2h3 [:authority: texcraft.dev]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x634090181780)
} [5 bytes data]
> GET / HTTP/2
> Host: texcraft.dev
> user-agent: curl/7.88.1
> accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=utf-8
< date: Sun, 07 Sep 2025 13:00:03 GMT
< etag: "dcml1si7gyyobsk-gzip"
< last-modified: Sun, 07 Sep 2025 12:55:54 GMT
< server: Caddy
< vary: Accept-Encoding
< via: 1.1 Caddy
< 
{ [5 bytes data]

100 15284    0 15284    0     0   194k      0 --:--:-- --:--:-- --:--:--  196k
* Connection #0 to host texcraft.dev left intact

Success
              
Ping play.texcraft.dev
$ curl --fail-with-body -v https://play.texcraft.dev --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.243.34.11:443...
* Connected to play.texcraft.dev (162.243.34.11) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2049 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [79 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=play.texcraft.dev
*  start date: Aug 25 16:36:15 2025 GMT
*  expire date: Nov 23 16:36:14 2025 GMT
*  subjectAltName: host "play.texcraft.dev" matched cert's "play.texcraft.dev"
*  issuer: C=US; O=Let's Encrypt; CN=E7
*  SSL certificate verify ok.
} [5 bytes data]
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /]
* h2h3 [:scheme: https]
* h2h3 [:authority: play.texcraft.dev]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x6232ba82c780)
} [5 bytes data]
> GET / HTTP/2
> Host: play.texcraft.dev
> user-agent: curl/7.88.1
> accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=utf-8
< date: Sun, 07 Sep 2025 13:00:03 GMT
< via: 1.1 Caddy
< content-length: 514
< 
{ [5 bytes data]

100   514  100   514    0     0  11006      0 --:--:-- --:--:-- --:--:-- 11173
* Connection #0 to host play.texcraft.dev left intact

Success
              
boxworks: basic spacing case

Build #903. Deployed 6 weeks ago.

Deployment logs
Pull
$ docker compose pull
 redis Pulling 
 play.texcraft.dev Pulling 
 texcraft.dev Pulling 
 redis Pulled 
 80b7316254b3 Pulling fs layer 
 bd671c72e0b6 Pulling fs layer 
 9824c27679d3 Pulling fs layer 
 634211206164 Pulling fs layer 
 edccfae94f0e Pulling fs layer 
 2e53616944a4 Pulling fs layer 
 4f4fb700ef54 Pulling fs layer 
 dc8b6d69330f Pulling fs layer 
 2cd3e2235a0a Pulling fs layer 
 c301e5b18443 Pulling fs layer 
 634211206164 Waiting 
 edccfae94f0e Waiting 
 2e53616944a4 Waiting 
 4f4fb700ef54 Waiting 
 dc8b6d69330f Waiting 
 2cd3e2235a0a Waiting 
 c301e5b18443 Waiting 
 80b7316254b3 Downloading [>                                                  ]  497.5kB/49.28MB
 9824c27679d3 Downloading [>                                                  ]  38.36kB/3.8MB
 9824c27679d3 Verifying Checksum 
 9824c27679d3 Download complete 
 9824c27679d3 Extracting [>                                                  ]  65.54kB/3.8MB
 80b7316254b3 Downloading [===============>                                   ]  15.15MB/49.28MB
 9824c27679d3 Extracting [==================>                                ]  1.376MB/3.8MB
 634211206164 Downloading [>                                                  ]   3.67kB/346.6kB
 634211206164 Downloading [==================================================>]  346.6kB/346.6kB
 634211206164 Verifying Checksum 
 634211206164 Download complete 
 80b7316254b3 Downloading [============================>                      ]  28.19MB/49.28MB
 edccfae94f0e Downloading [======>                                            ]     934B/7.496kB
 9824c27679d3 Extracting [===========================================>       ]  3.342MB/3.8MB
 edccfae94f0e Downloading [==================================================>]  7.496kB/7.496kB
 edccfae94f0e Verifying Checksum 
 edccfae94f0e Download complete 
 9824c27679d3 Extracting [==================================================>]    3.8MB/3.8MB
 9824c27679d3 Pull complete 
 80b7316254b3 Downloading [==========================================>        ]  41.76MB/49.28MB
 634211206164 Extracting [====>                                              ]  32.77kB/346.6kB
 80b7316254b3 Verifying Checksum 
 80b7316254b3 Download complete 
 634211206164 Extracting [==================================================>]  346.6kB/346.6kB
 2e53616944a4 Downloading [>                                                  ]  159.7kB/15.92MB
 80b7316254b3 Extracting [>                                                  ]  524.3kB/49.28MB
 634211206164 Pull complete 
 2e53616944a4 Downloading [==========================================>        ]  13.39MB/15.92MB
 2e53616944a4 Verifying Checksum 
 2e53616944a4 Download complete 
 edccfae94f0e Extracting [==================================================>]  7.496kB/7.496kB
 edccfae94f0e Extracting [==================================================>]  7.496kB/7.496kB
 bd671c72e0b6 Downloading [>                                                  ]  39.65kB/3.946MB
 edccfae94f0e Pull complete 
 2e53616944a4 Extracting [>                                                  ]  163.8kB/15.92MB
 4f4fb700ef54 Downloading [==================================================>]      32B/32B
 4f4fb700ef54 Verifying Checksum 
 4f4fb700ef54 Download complete 
 80b7316254b3 Extracting [==>                                                ]  2.097MB/49.28MB
 bd671c72e0b6 Verifying Checksum 
 bd671c72e0b6 Download complete 
 2e53616944a4 Extracting [=====>                                             ]  1.638MB/15.92MB
 80b7316254b3 Extracting [===>                                               ]   3.67MB/49.28MB
 2e53616944a4 Extracting [============>                                      ]  3.932MB/15.92MB
 80b7316254b3 Extracting [======>                                            ]  6.291MB/49.28MB
 dc8b6d69330f Downloading [==================================================>]      98B/98B
 dc8b6d69330f Verifying Checksum 
 dc8b6d69330f Download complete 
 2e53616944a4 Extracting [=====================>                             ]  6.717MB/15.92MB
 2e53616944a4 Extracting [=============================>                     ]  9.339MB/15.92MB
 80b7316254b3 Extracting [=========>                                         ]  8.913MB/49.28MB
 2cd3e2235a0a Downloading [>                                                  ]  13.67kB/1.348MB
 c301e5b18443 Downloading [>                                                  ]  31.46kB/3.077MB
 2cd3e2235a0a Downloading [==================================================>]  1.348MB/1.348MB
 2cd3e2235a0a Verifying Checksum 
 2cd3e2235a0a Download complete 
 2e53616944a4 Extracting [==================================>                ]  10.98MB/15.92MB
 80b7316254b3 Extracting [==========>                                        ]  10.49MB/49.28MB
 2e53616944a4 Extracting [=======================================>           ]  12.45MB/15.92MB
 c301e5b18443 Downloading [==================>                                ]  1.143MB/3.077MB
 c301e5b18443 Verifying Checksum 
 c301e5b18443 Download complete 
 80b7316254b3 Extracting [============>                                      ]  12.06MB/49.28MB
 2e53616944a4 Extracting [=============================================>     ]  14.58MB/15.92MB
 2e53616944a4 Extracting [==================================================>]  15.92MB/15.92MB
 2e53616944a4 Pull complete 
 4f4fb700ef54 Extracting [==================================================>]      32B/32B
 4f4fb700ef54 Extracting [==================================================>]      32B/32B
 80b7316254b3 Extracting [==============>                                    ]  14.68MB/49.28MB
 4f4fb700ef54 Pull complete 
 dc8b6d69330f Extracting [==================================================>]      98B/98B
 dc8b6d69330f Extracting [==================================================>]      98B/98B
 dc8b6d69330f Pull complete 
 2cd3e2235a0a Extracting [=>                                                 ]  32.77kB/1.348MB
 2cd3e2235a0a Extracting [==================================================>]  1.348MB/1.348MB
 80b7316254b3 Extracting [=================>                                 ]  16.78MB/49.28MB
 2cd3e2235a0a Pull complete 
 c301e5b18443 Extracting [>                                                  ]  32.77kB/3.077MB
 80b7316254b3 Extracting [===================>                               ]  18.87MB/49.28MB
 c301e5b18443 Extracting [======>                                            ]    426kB/3.077MB
 80b7316254b3 Extracting [======================>                            ]  22.02MB/49.28MB
 c301e5b18443 Extracting [====================================>              ]  2.261MB/3.077MB
 c301e5b18443 Extracting [=========================================>         ]  2.523MB/3.077MB
 80b7316254b3 Extracting [=========================>                         ]  25.17MB/49.28MB
 c301e5b18443 Extracting [===========================================>       ]  2.654MB/3.077MB
 c301e5b18443 Extracting [================================================>  ]  3.015MB/3.077MB
 c301e5b18443 Extracting [==================================================>]  3.077MB/3.077MB
 c301e5b18443 Pull complete 
 texcraft.dev Pulled 
 80b7316254b3 Extracting [==========================>                        ]  26.21MB/49.28MB
 80b7316254b3 Extracting [=============================>                     ]  28.84MB/49.28MB
 80b7316254b3 Extracting [=================================>                 ]  33.03MB/49.28MB
 80b7316254b3 Extracting [====================================>              ]  36.18MB/49.28MB
 80b7316254b3 Extracting [======================================>            ]  38.27MB/49.28MB
 80b7316254b3 Extracting [=========================================>         ]  40.89MB/49.28MB
 80b7316254b3 Extracting [============================================>      ]  44.04MB/49.28MB
 80b7316254b3 Extracting [==============================================>    ]  45.61MB/49.28MB
 80b7316254b3 Extracting [===============================================>   ]  47.19MB/49.28MB
 80b7316254b3 Extracting [================================================>  ]  48.23MB/49.28MB
 80b7316254b3 Extracting [=================================================> ]  48.76MB/49.28MB
 80b7316254b3 Extracting [==================================================>]  49.28MB/49.28MB
 80b7316254b3 Extracting [==================================================>]  49.28MB/49.28MB
 80b7316254b3 Pull complete 
 bd671c72e0b6 Extracting [>                                                  ]  65.54kB/3.946MB
 bd671c72e0b6 Extracting [===============================================>   ]  3.736MB/3.946MB
 bd671c72e0b6 Extracting [==================================================>]  3.946MB/3.946MB
 bd671c72e0b6 Pull complete 
 play.texcraft.dev Pulled 

Success
              
Redeploy
$ docker compose up -d
 Container texcraftdev-redis-1  Running
 Container texcraftdev-play.texcraft.dev-1  Recreate
 Container texcraftdev-texcraft.dev-1  Recreate
 Container texcraftdev-play.texcraft.dev-1  Recreated
 Container texcraftdev-texcraft.dev-1  Recreated
 Container texcraftdev-play.texcraft.dev-1  Starting
 Container texcraftdev-texcraft.dev-1  Starting
 Container texcraftdev-play.texcraft.dev-1  Started
 Container texcraftdev-texcraft.dev-1  Started

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping texcraft.dev
$ curl --fail-with-body -v https://texcraft.dev --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.243.34.11:443...
* Connected to texcraft.dev (162.243.34.11) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2039 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [78 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=texcraft.dev
*  start date: Aug 25 16:46:15 2025 GMT
*  expire date: Nov 23 16:46:14 2025 GMT
*  subjectAltName: host "texcraft.dev" matched cert's "texcraft.dev"
*  issuer: C=US; O=Let's Encrypt; CN=E7
*  SSL certificate verify ok.
} [5 bytes data]
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /]
* h2h3 [:scheme: https]
* h2h3 [:authority: texcraft.dev]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x5c3b139a0780)
} [5 bytes data]
> GET / HTTP/2
> Host: texcraft.dev
> user-agent: curl/7.88.1
> accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=utf-8
< date: Sun, 07 Sep 2025 12:58:08 GMT
< etag: "dcml1si7gyyobsk-gzip"
< last-modified: Sun, 07 Sep 2025 12:55:54 GMT
< server: Caddy
< vary: Accept-Encoding
< via: 1.1 Caddy
< 
{ [5 bytes data]

100 15284    0 15284    0     0   194k      0 --:--:-- --:--:-- --:--:--  196k
* Connection #0 to host texcraft.dev left intact

Success
              
Ping play.texcraft.dev
$ curl --fail-with-body -v https://play.texcraft.dev --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.243.34.11:443...
* Connected to play.texcraft.dev (162.243.34.11) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2049 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [79 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=play.texcraft.dev
*  start date: Aug 25 16:36:15 2025 GMT
*  expire date: Nov 23 16:36:14 2025 GMT
*  subjectAltName: host "play.texcraft.dev" matched cert's "play.texcraft.dev"
*  issuer: C=US; O=Let's Encrypt; CN=E7
*  SSL certificate verify ok.
} [5 bytes data]
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /]
* h2h3 [:scheme: https]
* h2h3 [:authority: play.texcraft.dev]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x6064410d5780)
} [5 bytes data]
> GET / HTTP/2
> Host: play.texcraft.dev
> user-agent: curl/7.88.1
> accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=utf-8
< date: Sun, 07 Sep 2025 12:58:08 GMT
< via: 1.1 Caddy
< content-length: 514
< 
{ [5 bytes data]

100   514  100   514    0     0  10858      0 --:--:-- --:--:-- --:--:-- 10936
* Connection #0 to host play.texcraft.dev left intact

Success
              
tfm: simplify lig/kern interface

Build #900. Failed 25 weeks ago.

Deployment logs
Pull
$ /mount/docker compose pull
Failed to start command.
This is probably an error in the project configuration.
Error: No such file or directory (os error 2)
Failure
              
Project configuration
{
  "auth_token": "",
  "branch": "main",
  "name": "Texcraft",
  "paused": false,
  "repo": "github.com/jamespfennell/texcraft",
  "retention": 10,
  "steps": [
    {
      "name": "Pull",
      "run": "docker compose pull"
    },
    {
      "name": "Redeploy",
      "run": "docker compose up -d"
    },
    {
      "name": "Wait for 5 seconds",
      "run": "sleep 5"
    },
    {
      "name": "Ping texcraft.dev",
      "run": "curl --fail-with-body -v https://texcraft.dev --output /dev/null"
    },
    {
      "name": "Ping play.texcraft.dev",
      "run": "curl --fail-with-body -v https://play.texcraft.dev --output /dev/null"
    }
  ],
  "wait_minutes": 0,
  "working_directory": "/home/james/texcraft.dev"
}

Transiter

github.com/jamespfennell/transiter

Last deployed 23 weeks ago.

No pending deployment.

Most recent deployments
system: Big Blue Bus (Santa Monica CA)

Build #138. Deployed 23 weeks ago.

Deployment logs
Pull
$ docker compose pull
 transiter-docs Skipped - Image is already being pulled by transiter 
 transiter Pulling 
 postgres Pulling 
 postgres Pulled 
 cf05a52c0235 Already exists 
 63964a8518f5 Already exists 
 cb6233552428 Pulling fs layer 
 3f6c051f7dc3 Pulling fs layer 
 f77b02a2f34b Pulling fs layer 
 3f6c051f7dc3 Downloading [>                                                  ]  7.442kB/658.1kB
 3f6c051f7dc3 Downloading [==================================================>]  658.1kB/658.1kB
 3f6c051f7dc3 Verifying Checksum 
 3f6c051f7dc3 Download complete 
 f77b02a2f34b Downloading [>                                                  ]  142.9kB/13.99MB
 cb6233552428 Downloading [>                                                  ]  152.5kB/14.99MB
 f77b02a2f34b Verifying Checksum 
 f77b02a2f34b Download complete 
 cb6233552428 Downloading [==============================================>    ]  13.89MB/14.99MB
 cb6233552428 Download complete 
 cb6233552428 Extracting [>                                                  ]  163.8kB/14.99MB
 cb6233552428 Extracting [================>                                  ]  4.915MB/14.99MB
 cb6233552428 Extracting [=============================>                     ]  8.847MB/14.99MB
 cb6233552428 Extracting [==============================================>    ]  14.09MB/14.99MB
 cb6233552428 Extracting [==================================================>]  14.99MB/14.99MB
 cb6233552428 Pull complete 
 3f6c051f7dc3 Extracting [==>                                                ]  32.77kB/658.1kB
 3f6c051f7dc3 Extracting [==================================================>]  658.1kB/658.1kB
 3f6c051f7dc3 Pull complete 
 f77b02a2f34b Extracting [>                                                  ]  163.8kB/13.99MB
 f77b02a2f34b Extracting [==================>                                ]  5.243MB/13.99MB
 f77b02a2f34b Extracting [==================================================>]  13.99MB/13.99MB
 f77b02a2f34b Pull complete 
 transiter Pulled 

Success
              
Redeploy Transiter
$ docker compose up -d transiter
 Container transiter-transiter-1  Recreate
 Container transiter-transiter-1  Recreated
 Container transiter-transiter-1  Starting
 Container transiter-transiter-1  Started

Success
              
Redeploy Transiter docs
$ docker compose up -d transiter-docs
 Container transiter-transiter-docs-1  Recreate
 Container transiter-transiter-docs-1  Recreated
 Container transiter-transiter-docs-1  Starting
 Container transiter-transiter-docs-1  Started

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping demo.transiter.dev
$ curl --fail-with-body -v https://demo.transiter.dev/systems/us-ny-subway --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.243.34.11:443...
* Connected to demo.transiter.dev (162.243.34.11) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2084 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [78 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=demo.transiter.dev
*  start date: Apr 27 18:47:59 2025 GMT
*  expire date: Jul 26 18:47:58 2025 GMT
*  subjectAltName: host "demo.transiter.dev" matched cert's "demo.transiter.dev"
*  issuer: C=US; O=Let's Encrypt; CN=E5
*  SSL certificate verify ok.
} [5 bytes data]
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /systems/us-ny-subway]
* h2h3 [:scheme: https]
* h2h3 [:authority: demo.transiter.dev]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x595a760f6780)
} [5 bytes data]
> GET /systems/us-ny-subway HTTP/2
> Host: demo.transiter.dev
> user-agent: curl/7.88.1
> accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: application/json
< date: Thu, 15 May 2025 03:37:05 GMT
< via: 1.1 Caddy
< content-length: 956
< 
{ [5 bytes data]

100   956  100   956    0     0  12052      0 --:--:-- --:--:-- --:--:-- 12101
* Connection #0 to host demo.transiter.dev left intact

Success
              
system: Culver City Bus

Build #137. Deployed 23 weeks ago.

Deployment logs
Pull
$ docker compose pull
 transiter Skipped - Image is already being pulled by transiter-docs 
 transiter-docs Pulling 
 postgres Pulling 
 postgres Pulled 
 cf05a52c0235 Already exists 
 63964a8518f5 Pulling fs layer 
 7742f10b139e Pulling fs layer 
 a809d860c701 Pulling fs layer 
 778c091707dc Pulling fs layer 
 778c091707dc Waiting 
 63964a8518f5 Downloading [>                                                  ]  243.9kB/24.01MB
 7742f10b139e Downloading [>                                                  ]  151.3kB/14.99MB
 a809d860c701 Downloading [>                                                  ]  6.845kB/658.1kB
 a809d860c701 Downloading [==================================================>]  658.1kB/658.1kB
 a809d860c701 Verifying Checksum 
 a809d860c701 Download complete 
 63964a8518f5 Downloading [===================================>               ]  17.26MB/24.01MB
 7742f10b139e Downloading [====================================>              ]  10.85MB/14.99MB
 63964a8518f5 Verifying Checksum 
 63964a8518f5 Download complete 
 7742f10b139e Verifying Checksum 
 7742f10b139e Download complete 
 63964a8518f5 Extracting [>                                                  ]  262.1kB/24.01MB
 778c091707dc Downloading [>                                                  ]  140.4kB/13.99MB
 63964a8518f5 Extracting [========>                                          ]  4.194MB/24.01MB
 778c091707dc Downloading [===================================>               ]   9.95MB/13.99MB
 778c091707dc Verifying Checksum 
 778c091707dc Download complete 
 63964a8518f5 Extracting [================>                                  ]  8.126MB/24.01MB
 63964a8518f5 Extracting [===========================>                       ]  13.37MB/24.01MB
 63964a8518f5 Extracting [======================================>            ]  18.61MB/24.01MB
 63964a8518f5 Extracting [=============================================>     ]  22.02MB/24.01MB
 63964a8518f5 Extracting [=================================================> ]  23.59MB/24.01MB
 63964a8518f5 Extracting [==================================================>]  24.01MB/24.01MB
 63964a8518f5 Pull complete 
 7742f10b139e Extracting [>                                                  ]  163.8kB/14.99MB
 7742f10b139e Extracting [=============>                                     ]  4.096MB/14.99MB
 7742f10b139e Extracting [=========================>                         ]    7.7MB/14.99MB
 7742f10b139e Extracting [==================================>                ]  10.32MB/14.99MB
 7742f10b139e Extracting [==================================================>]  14.99MB/14.99MB
 7742f10b139e Pull complete 
 a809d860c701 Extracting [==>                                                ]  32.77kB/658.1kB
 a809d860c701 Extracting [==================================================>]  658.1kB/658.1kB
 a809d860c701 Pull complete 
 778c091707dc Extracting [>                                                  ]  163.8kB/13.99MB
 778c091707dc Extracting [============>                                      ]  3.604MB/13.99MB
 778c091707dc Extracting [======================>                            ]   6.39MB/13.99MB
 778c091707dc Extracting [=============================================>     ]  12.78MB/13.99MB
 778c091707dc Extracting [==================================================>]  13.99MB/13.99MB
 778c091707dc Pull complete 
 transiter-docs Pulled 

Success
              
Redeploy Transiter
$ docker compose up -d transiter
 Container transiter-transiter-1  Recreate
 Container transiter-transiter-1  Recreated
 Container transiter-transiter-1  Starting
 Container transiter-transiter-1  Started

Success
              
Redeploy Transiter docs
$ docker compose up -d transiter-docs
 Container transiter-transiter-docs-1  Recreate
 Container transiter-transiter-docs-1  Recreated
 Container transiter-transiter-docs-1  Starting
 Container transiter-transiter-docs-1  Started

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping demo.transiter.dev
$ curl --fail-with-body -v https://demo.transiter.dev/systems/us-ny-subway --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.243.34.11:443...
* Connected to demo.transiter.dev (162.243.34.11) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2084 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [79 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=demo.transiter.dev
*  start date: Apr 27 18:47:59 2025 GMT
*  expire date: Jul 26 18:47:58 2025 GMT
*  subjectAltName: host "demo.transiter.dev" matched cert's "demo.transiter.dev"
*  issuer: C=US; O=Let's Encrypt; CN=E5
*  SSL certificate verify ok.
} [5 bytes data]
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /systems/us-ny-subway]
* h2h3 [:scheme: https]
* h2h3 [:authority: demo.transiter.dev]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x6125824d8780)
} [5 bytes data]
> GET /systems/us-ny-subway HTTP/2
> Host: demo.transiter.dev
> user-agent: curl/7.88.1
> accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: application/json
< date: Wed, 14 May 2025 22:01:06 GMT
< via: 1.1 Caddy
< content-length: 956
< 
{ [5 bytes data]

100   956  100   956    0     0   4967      0 --:--:-- --:--:-- --:--:--  4979
* Connection #0 to host demo.transiter.dev left intact

Success
              
Handle '/' characters in URL params (#150)

Build #135. Failed 25 weeks ago.

Deployment logs
Pull
$ /mount/docker compose pull
Failed to start command.
This is probably an error in the project configuration.
Error: No such file or directory (os error 2)
Failure
              
Project configuration
{
  "auth_token": "",
  "branch": "master",
  "name": "Transiter",
  "paused": false,
  "repo": "github.com/jamespfennell/transiter",
  "retention": 10,
  "steps": [
    {
      "name": "Pull",
      "run": "docker compose pull"
    },
    {
      "name": "Redeploy Transiter",
      "run": "docker compose up -d transiter"
    },
    {
      "name": "Redeploy Transiter docs",
      "run": "docker compose up -d transiter-docs"
    },
    {
      "name": "Wait for 5 seconds",
      "run": "sleep 5"
    },
    {
      "name": "Ping demo.transiter.dev",
      "run": "curl --fail-with-body -v https://demo.transiter.dev/systems/us-ny-subway --output /dev/null"
    }
  ],
  "wait_minutes": 0,
  "working_directory": "/home/james/transiter"
}

realtimerail.nyc

github.com/jamespfennell/realtimerail.nyc

Last deployed 24 weeks ago.

No pending deployment.

Most recent deployments
Handle accessibility, shuttle bus, and airplane icons (#54)

Build #153. Deployed 24 weeks ago.

Deployment logs
Pull
$ docker compose pull
 ui Pulling 
 254e724d7786 Already exists 
 913115292750 Already exists 
 3e544d53ce49 Already exists 
 4f21ed9ac0c0 Already exists 
 d38f2ef2d6f2 Already exists 
 40a6e9f4e456 Already exists 
 d3dc5ec71e9d Already exists 
 08918b0b85a9 Pulling fs layer 
 0d804759fc34 Pulling fs layer 
 3381308beb78 Pulling fs layer 
 08918b0b85a9 Downloading [>                                                  ]  4.704kB/452.7kB
 0d804759fc34 Downloading [==================================================>]     176B/176B
 0d804759fc34 Verifying Checksum 
 0d804759fc34 Download complete 
 08918b0b85a9 Download complete 
 08918b0b85a9 Extracting [===>                                               ]  32.77kB/452.7kB
 3381308beb78 Downloading [==================================================>]     629B/629B
 3381308beb78 Verifying Checksum 
 3381308beb78 Download complete 
 08918b0b85a9 Extracting [==================================================>]  452.7kB/452.7kB
 08918b0b85a9 Pull complete 
 0d804759fc34 Extracting [==================================================>]     176B/176B
 0d804759fc34 Extracting [==================================================>]     176B/176B
 0d804759fc34 Pull complete 
 3381308beb78 Extracting [==================================================>]     629B/629B
 3381308beb78 Extracting [==================================================>]     629B/629B
 3381308beb78 Pull complete 
 ui Pulled 

Success
              
Redeploy
$ docker compose up -d
 Container realtimerailnyc-ui-1  Recreate
 Container realtimerailnyc-ui-1  Recreated
 Container realtimerailnyc-ui-1  Starting
 Container realtimerailnyc-ui-1  Started

Success
              
Update about page after move from NJ to NYC

Build #150. Deployed 25 weeks ago.

Deployment logs
Pull
$ /mount/docker compose pull
 ui Pulling 
 254e724d7786 Pulling fs layer 
 913115292750 Pulling fs layer 
 3e544d53ce49 Pulling fs layer 
 4f21ed9ac0c0 Pulling fs layer 
 d38f2ef2d6f2 Pulling fs layer 
 40a6e9f4e456 Pulling fs layer 
 d3dc5ec71e9d Pulling fs layer 
 dcf703aafc35 Pulling fs layer 
 ee7ba3cbfac7 Pulling fs layer 
 a3435257b538 Pulling fs layer 
 40a6e9f4e456 Waiting 
 d3dc5ec71e9d Waiting 
 dcf703aafc35 Waiting 
 ee7ba3cbfac7 Waiting 
 a3435257b538 Waiting 
 4f21ed9ac0c0 Waiting 
 d38f2ef2d6f2 Waiting 
 3e544d53ce49 Downloading [==================================================>]     629B/629B
 3e544d53ce49 Verifying Checksum 
 3e544d53ce49 Download complete 
 913115292750 Downloading [>                                                  ]  441.6kB/44.15MB
 254e724d7786 Downloading [>                                                  ]  297.2kB/28.23MB
 913115292750 Downloading [==================>                                ]   16.5MB/44.15MB
 254e724d7786 Downloading [==============================>                    ]  17.19MB/28.23MB
 254e724d7786 Verifying Checksum 
 254e724d7786 Download complete 
 4f21ed9ac0c0 Downloading [====================================>              ]     690B/955B
 4f21ed9ac0c0 Download complete 
 913115292750 Downloading [=================================>                 ]  29.42MB/44.15MB
 913115292750 Downloading [=============================================>     ]  40.18MB/44.15MB
 254e724d7786 Extracting [>                                                  ]  294.9kB/28.23MB
 d38f2ef2d6f2 Downloading [==================================================>]     404B/404B
 d38f2ef2d6f2 Verifying Checksum 
 d38f2ef2d6f2 Download complete 
 40a6e9f4e456 Downloading [=============================>                     ]     721B/1.208kB
 40a6e9f4e456 Downloading [==================================================>]  1.208kB/1.208kB
 40a6e9f4e456 Verifying Checksum 
 40a6e9f4e456 Download complete 
 913115292750 Verifying Checksum 
 913115292750 Download complete 
 d3dc5ec71e9d Downloading [=========================>                         ]     721B/1.398kB
 d3dc5ec71e9d Downloading [==================================================>]  1.398kB/1.398kB
 d3dc5ec71e9d Verifying Checksum 
 d3dc5ec71e9d Download complete 
 254e724d7786 Extracting [====>                                              ]  2.654MB/28.23MB
 ee7ba3cbfac7 Downloading [==================================================>]     177B/177B
 ee7ba3cbfac7 Verifying Checksum 
 ee7ba3cbfac7 Download complete 
 dcf703aafc35 Downloading [>                                                  ]  4.829kB/449.2kB
 dcf703aafc35 Downloading [==================================================>]  449.2kB/449.2kB
 dcf703aafc35 Verifying Checksum 
 dcf703aafc35 Download complete 
 a3435257b538 Downloading [==================================================>]     634B/634B
 a3435257b538 Verifying Checksum 
 a3435257b538 Download complete 
 254e724d7786 Extracting [========>                                          ]  4.719MB/28.23MB
 254e724d7786 Extracting [============>                                      ]  7.078MB/28.23MB
 254e724d7786 Extracting [==============>                                    ]  8.258MB/28.23MB
 254e724d7786 Extracting [================>                                  ]  9.142MB/28.23MB
 254e724d7786 Extracting [=================>                                 ]  10.03MB/28.23MB
 254e724d7786 Extracting [===================>                               ]  11.21MB/28.23MB
 254e724d7786 Extracting [=====================>                             ]  12.39MB/28.23MB
 254e724d7786 Extracting [=========================>                         ]  14.16MB/28.23MB
 254e724d7786 Extracting [============================>                      ]  15.93MB/28.23MB
 254e724d7786 Extracting [=================================>                 ]  19.17MB/28.23MB
 254e724d7786 Extracting [=======================================>           ]  22.12MB/28.23MB
 254e724d7786 Extracting [==========================================>        ]  23.89MB/28.23MB
 254e724d7786 Extracting [============================================>      ]  25.36MB/28.23MB
 254e724d7786 Extracting [===============================================>   ]  26.84MB/28.23MB
 254e724d7786 Extracting [================================================>  ]  27.43MB/28.23MB
 254e724d7786 Extracting [==================================================>]  28.23MB/28.23MB
 254e724d7786 Pull complete 
 913115292750 Extracting [>                                                  ]  458.8kB/44.15MB
 913115292750 Extracting [=====>                                             ]  5.046MB/44.15MB
 913115292750 Extracting [===========>                                       ]  10.09MB/44.15MB
 913115292750 Extracting [=================>                                 ]  15.14MB/44.15MB
 913115292750 Extracting [=======================>                           ]  20.64MB/44.15MB
 913115292750 Extracting [==========================>                        ]   23.4MB/44.15MB
 913115292750 Extracting [=============================>                     ]  25.69MB/44.15MB
 913115292750 Extracting [==================================>                ]  30.74MB/44.15MB
 913115292750 Extracting [========================================>          ]  35.78MB/44.15MB
 913115292750 Extracting [==========================================>        ]  37.62MB/44.15MB
 913115292750 Extracting [============================================>      ]  38.99MB/44.15MB
 913115292750 Extracting [===============================================>   ]  41.75MB/44.15MB
 913115292750 Extracting [================================================>  ]  42.66MB/44.15MB
 913115292750 Extracting [==================================================>]  44.15MB/44.15MB
 913115292750 Pull complete 
 3e544d53ce49 Extracting [==================================================>]     629B/629B
 3e544d53ce49 Extracting [==================================================>]     629B/629B
 3e544d53ce49 Pull complete 
 4f21ed9ac0c0 Extracting [==================================================>]     955B/955B
 4f21ed9ac0c0 Extracting [==================================================>]     955B/955B
 4f21ed9ac0c0 Pull complete 
 d38f2ef2d6f2 Extracting [==================================================>]     404B/404B
 d38f2ef2d6f2 Extracting [==================================================>]     404B/404B
 d38f2ef2d6f2 Pull complete 
 40a6e9f4e456 Extracting [==================================================>]  1.208kB/1.208kB
 40a6e9f4e456 Extracting [==================================================>]  1.208kB/1.208kB
 40a6e9f4e456 Pull complete 
 d3dc5ec71e9d Extracting [==================================================>]  1.398kB/1.398kB
 d3dc5ec71e9d Extracting [==================================================>]  1.398kB/1.398kB
 d3dc5ec71e9d Pull complete 
 dcf703aafc35 Extracting [===>                                               ]  32.77kB/449.2kB
 dcf703aafc35 Extracting [==================================================>]  449.2kB/449.2kB
 dcf703aafc35 Extracting [==================================================>]  449.2kB/449.2kB
 dcf703aafc35 Pull complete 
 ee7ba3cbfac7 Extracting [==================================================>]     177B/177B
 ee7ba3cbfac7 Extracting [==================================================>]     177B/177B
 ee7ba3cbfac7 Pull complete 
 a3435257b538 Extracting [==================================================>]     634B/634B
 a3435257b538 Extracting [==================================================>]     634B/634B
 a3435257b538 Pull complete 
 ui Pulled 

Success
              
Redeploy
$ /mount/docker compose up -d
 Container realtimerailnyc-ui-1  Recreate
 Container realtimerailnyc-ui-1  Recreated
 Container realtimerailnyc-ui-1  Starting
 Container realtimerailnyc-ui-1  Started

Success
              
Fix logo for express 6 trains (#38)

Build #149. Failed 25 weeks ago.

Deployment logs
Pull
$ /mount/docker compose pull
Failed to start command.
This is probably an error in the project configuration.
Error: No such file or directory (os error 2)
Failure
              
Project configuration
{
  "auth_token": "",
  "branch": "master",
  "name": "realtimerail.nyc",
  "paused": false,
  "repo": "github.com/jamespfennell/realtimerail.nyc",
  "retention": 10,
  "steps": [
    {
      "name": "Pull",
      "run": "docker compose pull"
    },
    {
      "name": "Redeploy",
      "run": "docker compose up -d"
    }
  ],
  "wait_minutes": 0,
  "working_directory": "/home/james/realtimerail.nyc"
}

rollouts2.a.jpfennell.com

github.com/jamespfennell/rollouts

Last deployed 25 weeks ago.

No pending deployment.

Most recent deployments
fix the default poll interval

Build #30. Deployed 25 weeks ago.

Deployment logs
Pull
$ docker compose pull
 rollouts1 Skipped - Image is already being pulled by rollouts2 
 rollouts2 Pulling 
 rollouts2 Pulled 

Success
              
Redeploy
$ docker compose up -d rollouts2
 Container rollouts-a-rollouts2-1  Recreate
 Container rollouts-a-rollouts2-1  Recreated
 Container rollouts-a-rollouts2-1  Starting
 Container rollouts-a-rollouts2-1  Started

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping rollouts2.a.jpfennell.com
$ curl --fail-with-body -v https://rollouts2.a.jpfennell.com --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.243.34.11:443...
* Connected to rollouts2.a.jpfennell.com (162.243.34.11) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2099 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [79 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=rollouts2.a.jpfennell.com
*  start date: Apr 28 14:14:24 2025 GMT
*  expire date: Jul 27 14:14:23 2025 GMT
*  subjectAltName: host "rollouts2.a.jpfennell.com" matched cert's "rollouts2.a.jpfennell.com"
*  issuer: C=US; O=Let's Encrypt; CN=E6
*  SSL certificate verify ok.
} [5 bytes data]
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /]
* h2h3 [:scheme: https]
* h2h3 [:authority: rollouts2.a.jpfennell.com]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x592b1d017780)
} [5 bytes data]
> GET / HTTP/2
> Host: rollouts2.a.jpfennell.com
> user-agent: curl/7.88.1
> accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=UTF-8
< date: Wed, 30 Apr 2025 13:35:59 GMT
< server: tiny-http (Rust)
< via: 1.1 Caddy
< 
{ [5 bytes data]

100 52036    0 52036    0     0   426k      0 --:--:-- --:--:-- --:--:--  427k
* Connection #0 to host rollouts2.a.jpfennell.com left intact

Success
              
Change how wait_minutes behaves on new rollouts agents

Build #29. Failed 25 weeks ago.

Deployment logs
Pull
$ docker compose pull
Failed to start command.
This is probably an error in the project configuration.
Error: No such file or directory (os error 2)
Failure
              
Fix the build

Build #28. Deployed 25 weeks ago.

Deployment logs
Pull
$ /mount/docker compose pull
 rollouts1 Skipped - Image is already being pulled by rollouts2 
 rollouts2 Pulling 
 rollouts2 Pulled 

Success
              
Redeploy
$ /mount/docker compose up -d rollouts2
 Container rollouts-a-rollouts2-1  Recreate
 Container rollouts-a-rollouts2-1  Recreated
 Container rollouts-a-rollouts2-1  Starting
 Container rollouts-a-rollouts2-1  Started

Success
              
Wait for 5 seconds
$ sleep 5

Success
              
Ping rollouts2.a.jpfennell.com
$ curl --fail-with-body -v https://rollouts2.a.jpfennell.com --output /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 162.243.34.11:443...
* Connected to rollouts2.a.jpfennell.com (162.243.34.11) port 443 (#0)
* ALPN: offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2099 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [79 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=rollouts2.a.jpfennell.com
*  start date: Apr 28 14:14:24 2025 GMT
*  expire date: Jul 27 14:14:23 2025 GMT
*  subjectAltName: host "rollouts2.a.jpfennell.com" matched cert's "rollouts2.a.jpfennell.com"
*  issuer: C=US; O=Let's Encrypt; CN=E6
*  SSL certificate verify ok.
} [5 bytes data]
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /]
* h2h3 [:scheme: https]
* h2h3 [:authority: rollouts2.a.jpfennell.com]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x5c52f03fd780)
} [5 bytes data]
> GET / HTTP/2
> Host: rollouts2.a.jpfennell.com
> user-agent: curl/7.88.1
> accept: */*
> 
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [122 bytes data]
< HTTP/2 200 
< alt-svc: h3=":443"; ma=2592000
< content-type: text/html; charset=UTF-8
< date: Tue, 29 Apr 2025 13:17:16 GMT
< server: tiny-http (Rust)
< via: 1.1 Caddy
< content-length: 28667
< 
{ [5 bytes data]

100 28667  100 28667    0     0   298k      0 --:--:-- --:--:-- --:--:--  301k
* Connection #0 to host rollouts2.a.jpfennell.com left intact

Success
              
Update Docker image

Build #26. Failed 25 weeks ago.

Deployment logs
Pull
$ /mount/docker compose pull
Failed to start command.
This is probably an error in the project configuration.
Error: No such file or directory (os error 2)
Failure
              
Project configuration
{
  "auth_token": "",
  "branch": "main",
  "name": "rollouts2.a.jpfennell.com",
  "paused": false,
  "repo": "github.com/jamespfennell/rollouts",
  "retention": 10,
  "steps": [
    {
      "name": "Pull",
      "run": "docker compose pull"
    },
    {
      "name": "Redeploy",
      "run": "docker compose up -d rollouts2"
    },
    {
      "name": "Wait for 5 seconds",
      "run": "sleep 5"
    },
    {
      "name": "Ping rollouts2.a.jpfennell.com",
      "run": "curl --fail-with-body -v https://rollouts2.a.jpfennell.com --output /dev/null"
    }
  ],
  "wait_minutes": 10,
  "working_directory": "/home/james/rollouts-a"
}

GitHub client

Rate limiting data

resource used/limit resetting
core 35/60 imminently