mirror of
https://github.com/cloudflare/cloudflared
synced 2026-06-08 13:33:07 +00:00
Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0caf31c543 | |||
| 4faa03dfed | |||
| 58519d1268 | |||
| 1367b967b3 | |||
| 114683f49e | |||
| 2b456b9a79 | |||
| 3a71c1bcd8 | |||
| 95642486c6 | |||
| 691550a6f2 | |||
| 12c2a8e144 | |||
| d943602d21 |
@@ -7,7 +7,7 @@ RUN apt-get update && \
|
||||
apt-get install --no-install-recommends --allow-downgrades -y \
|
||||
build-essential \
|
||||
git \
|
||||
go-boring=1.24.6-1 \
|
||||
go-boring=1.24.9-1 \
|
||||
libffi-dev \
|
||||
procps \
|
||||
python3-dev \
|
||||
|
||||
+2
-10
@@ -5,6 +5,7 @@
|
||||
runner: linux-x86-8cpu-16gb
|
||||
stage: build
|
||||
golangVersion: "boring-1.24"
|
||||
imageVersion: "3371-f5539bd6f83d@sha256:a2a68f580070f9411d0d3155959ed63b700ef319b5fcc62db340e92227bbc628"
|
||||
CGO_ENABLED: 1
|
||||
|
||||
include:
|
||||
@@ -16,7 +17,6 @@ include:
|
||||
<<: *golang_inputs
|
||||
jobPrefix: linux-build
|
||||
GOLANG_MAKE_TARGET: ci-build
|
||||
imageVersion: "3308-283bdf9@sha256:fcd83570c91565a72eab132c38e0f589a481e2f3d4f3779f9f9a93eb555fee4a"
|
||||
|
||||
########################
|
||||
### Linux FIPS Build ###
|
||||
@@ -26,8 +26,6 @@ include:
|
||||
<<: *golang_inputs
|
||||
jobPrefix: linux-fips-build
|
||||
GOLANG_MAKE_TARGET: ci-fips-build
|
||||
imageVersion: "3308-283bdf9@sha256:fcd83570c91565a72eab132c38e0f589a481e2f3d4f3779f9f9a93eb555fee4a"
|
||||
|
||||
|
||||
#################
|
||||
### Unit Tests ##
|
||||
@@ -38,8 +36,6 @@ include:
|
||||
stage: test
|
||||
jobPrefix: test
|
||||
GOLANG_MAKE_TARGET: ci-test
|
||||
imageVersion: "3308-283bdf9@sha256:fcd83570c91565a72eab132c38e0f589a481e2f3d4f3779f9f9a93eb555fee4a"
|
||||
|
||||
|
||||
######################
|
||||
### Unit Tests FIPS ##
|
||||
@@ -50,8 +46,6 @@ include:
|
||||
stage: test
|
||||
jobPrefix: test-fips
|
||||
GOLANG_MAKE_TARGET: ci-fips-test
|
||||
imageVersion: "3308-283bdf9@sha256:fcd83570c91565a72eab132c38e0f589a481e2f3d4f3779f9f9a93eb555fee4a"
|
||||
|
||||
|
||||
#################
|
||||
### Vuln Check ##
|
||||
@@ -63,8 +57,6 @@ include:
|
||||
stage: validate
|
||||
jobPrefix: vulncheck
|
||||
GOLANG_MAKE_TARGET: vulncheck
|
||||
imageVersion: "3308-283bdf9@sha256:fcd83570c91565a72eab132c38e0f589a481e2f3d4f3779f9f9a93eb555fee4a"
|
||||
|
||||
|
||||
#################################
|
||||
### Run Linux Component Tests ###
|
||||
@@ -79,7 +71,7 @@ component-tests-linux: &component-tests-linux
|
||||
- ./.ci/scripts/component-tests.sh
|
||||
variables: &component-tests-variables
|
||||
CI: 1
|
||||
COMPONENT_TESTS_CONFIG_CONTENT: Y2xvdWRmbGFyZWRfYmluYXJ5OiBjbG91ZGZsYXJlZApjcmVkZW50aWFsc19maWxlOiBjcmVkLmpzb24Kb3JpZ2luY2VydDogY2VydC5wZW0Kem9uZV9kb21haW46IGFyZ290dW5uZWx0ZXN0LmNvbQp6b25lX3RhZzogNDg3OTZmMWU3MGJiNzY2OWMyOWJiNTFiYTI4MmJmNjU=
|
||||
COMPONENT_TESTS_CONFIG_CONTENT: Y2xvdWRmbGFyZWRfYmluYXJ5OiAuL2Nsb3VkZmxhcmVkCmNyZWRlbnRpYWxzX2ZpbGU6IGNyZWQuanNvbgpvcmlnaW5jZXJ0OiBjZXJ0LnBlbQp6b25lX2RvbWFpbjogYXJnb3R1bm5lbHRlc3QuY29tCnpvbmVfdGFnOiA0ODc5NmYxZTcwYmI3NjY5YzI5YmI1MWJhMjgyYmY2NQ==
|
||||
tags:
|
||||
- linux-x86-8cpu-16gb
|
||||
artifacts:
|
||||
|
||||
@@ -36,7 +36,7 @@ load-windows-env-variables:
|
||||
# We have to encode the `COMPONENT_TESTS_ORIGINCERT` secret, because it content is a file, otherwise we can't export it using gitlab
|
||||
- echo "COMPONENT_TESTS_ORIGINCERT=$(echo "$COMPONENT_TESTS_ORIGINCERT" | base64 -w0)" >> windows.env
|
||||
variables:
|
||||
COMPONENT_TESTS_CONFIG_CONTENT: Y2xvdWRmbGFyZWRfYmluYXJ5OiBjbG91ZGZsYXJlZC5leGUKY3JlZGVudGlhbHNfZmlsZTogY3JlZC5qc29uCm9yaWdpbmNlcnQ6IGNlcnQucGVtCnpvbmVfZG9tYWluOiBhcmdvdHVubmVsdGVzdC5jb20Kem9uZV90YWc6IDQ4Nzk2ZjFlNzBiYjc2NjljMjliYjUxYmEyODJiZjY1
|
||||
COMPONENT_TESTS_CONFIG_CONTENT: Y2xvdWRmbGFyZWRfYmluYXJ5OiAuL2Nsb3VkZmxhcmVkLmV4ZQpjcmVkZW50aWFsc19maWxlOiBjcmVkLmpzb24Kb3JpZ2luY2VydDogY2VydC5wZW0Kem9uZV9kb21haW46IGFyZ290dW5uZWx0ZXN0LmNvbQp6b25lX3RhZzogNDg3OTZmMWU3MGJiNzY2OWMyOWJiNTFiYTI4MmJmNjU=
|
||||
artifacts:
|
||||
access: 'none'
|
||||
reports:
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
variables:
|
||||
GO_VERSION: "go1.24.6"
|
||||
GO_VERSION: "go1.24.9"
|
||||
GIT_DEPTH: "0"
|
||||
|
||||
default:
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
# use a builder image for building cloudflare
|
||||
ARG TARGET_GOOS
|
||||
ARG TARGET_GOARCH
|
||||
FROM golang:1.24.4 AS builder
|
||||
FROM golang:1.24.9 AS builder
|
||||
ENV GO111MODULE=on \
|
||||
CGO_ENABLED=0 \
|
||||
TARGET_GOOS=${TARGET_GOOS} \
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
# use a builder image for building cloudflare
|
||||
FROM golang:1.24.4 AS builder
|
||||
FROM golang:1.24.9 AS builder
|
||||
ENV GO111MODULE=on \
|
||||
CGO_ENABLED=0 \
|
||||
# the CONTAINER_BUILD envvar is used set github.com/cloudflare/cloudflared/metrics.Runtime=virtual
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
# use a builder image for building cloudflare
|
||||
FROM golang:1.24.4 AS builder
|
||||
FROM golang:1.24.9 AS builder
|
||||
ENV GO111MODULE=on \
|
||||
CGO_ENABLED=0 \
|
||||
# the CONTAINER_BUILD envvar is used set github.com/cloudflare/cloudflared/metrics.Runtime=virtual
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
2025.10.1
|
||||
- 2025-10-30 chore: Update ci image to use goboring 1.24.9
|
||||
- 2025-10-28 TUN-9849: Add cf-proxy-* to control response headers
|
||||
- 2025-10-24 TUN-9961: Add pkg.cloudflared.com index.html to git repo
|
||||
- 2025-10-23 TUN-9954: Update from go1.24.6 to go1.24.9
|
||||
- 2025-10-23 Fix systemd service installation hanging
|
||||
- 2025-10-21 TUN-9941: Use new GPG key for RPM builds
|
||||
- 2025-10-21 TUN-9941: Fix typo causing r2-release-next deployment to fail
|
||||
- 2025-10-21 TUN-9941: Lookup correct key for RPM signature
|
||||
- 2025-10-15 TUN-9919: Make RPM postinstall scriplet idempotent
|
||||
- 2025-10-14 TUN-9916: Fix the cloudflared binary path used in the component test
|
||||
|
||||
2025.10.0
|
||||
- 2025-10-14 chore: Fix upload of RPM repo file during double signing
|
||||
- 2025-10-13 TUN-9882: Bump datagram v3 write channel capacity
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
pinned_go: &pinned_go go-boring=1.24.4-1
|
||||
pinned_go: &pinned_go go-boring=1.24.9-1
|
||||
|
||||
build_dir: &build_dir /cfsetup_build
|
||||
default-flavor: bookworm
|
||||
|
||||
@@ -60,7 +60,7 @@ After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
TimeoutStartSec=0
|
||||
TimeoutStartSec=15
|
||||
Type=notify
|
||||
ExecStart={{ .Path }} --no-autoupdate{{ range .ExtraArgs }} {{ . }}{{ end }}
|
||||
Restart=on-failure
|
||||
|
||||
@@ -107,7 +107,13 @@ class TestManagement:
|
||||
assert resp.status_code == 404, "Expected cloudflared to return 404 for /metrics"
|
||||
|
||||
|
||||
|
||||
|
||||
@retry(stop_max_attempt_number=MAX_RETRIES, wait_fixed=BACKOFF_SECS * 1000)
|
||||
def send_request(url, headers={}):
|
||||
with requests.Session() as s:
|
||||
return s.get(url, timeout=BACKOFF_SECS, headers=headers)
|
||||
resp = s.get(url, timeout=BACKOFF_SECS, headers=headers)
|
||||
if resp.status_code == 530:
|
||||
LOGGER.debug(f"Received 530 status, retrying request to {url}")
|
||||
raise Exception(f"Received 530 status code from {url}")
|
||||
return resp
|
||||
|
||||
@@ -53,7 +53,8 @@ var headerEncoding = base64.RawStdEncoding
|
||||
func IsControlResponseHeader(headerName string) bool {
|
||||
return strings.HasPrefix(headerName, ":") ||
|
||||
strings.HasPrefix(headerName, "cf-int-") ||
|
||||
strings.HasPrefix(headerName, "cf-cloudflared-")
|
||||
strings.HasPrefix(headerName, "cf-cloudflared-") ||
|
||||
strings.HasPrefix(headerName, "cf-proxy-")
|
||||
}
|
||||
|
||||
// isWebsocketClientHeader returns true if the header name is required by the client to upgrade properly
|
||||
|
||||
+15
-15
@@ -1,18 +1,17 @@
|
||||
package connection
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"reflect"
|
||||
"sort"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestSerializeHeaders(t *testing.T) {
|
||||
request, err := http.NewRequest(http.MethodGet, "http://example.com", nil)
|
||||
assert.NoError(t, err)
|
||||
require.NoError(t, err)
|
||||
|
||||
mockHeaders := http.Header{
|
||||
"Mock-Header-One": {"Mock header one value", "three"},
|
||||
@@ -39,22 +38,22 @@ func TestSerializeHeaders(t *testing.T) {
|
||||
serializedHeaders := SerializeHeaders(request.Header)
|
||||
|
||||
// Sanity check: the headers serialized to something that's not an empty string
|
||||
assert.NotEqual(t, "", serializedHeaders)
|
||||
require.NotEqual(t, "", serializedHeaders)
|
||||
|
||||
// Deserialize back, and ensure we get the same set of headers
|
||||
deserializedHeaders, err := DeserializeHeaders(serializedHeaders)
|
||||
assert.NoError(t, err)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, 13, len(deserializedHeaders))
|
||||
require.Len(t, deserializedHeaders, 13)
|
||||
expectedHeaders := headerToReqHeader(mockHeaders)
|
||||
|
||||
sort.Sort(ByName(deserializedHeaders))
|
||||
sort.Sort(ByName(expectedHeaders))
|
||||
|
||||
assert.True(
|
||||
require.True(
|
||||
t,
|
||||
reflect.DeepEqual(expectedHeaders, deserializedHeaders),
|
||||
fmt.Sprintf("got = %#v, want = %#v\n", deserializedHeaders, expectedHeaders),
|
||||
"got = %#v, want = %#v\n", deserializedHeaders, expectedHeaders,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -82,12 +81,12 @@ func headerToReqHeader(headers http.Header) (reqHeaders []HTTPHeader) {
|
||||
|
||||
func TestSerializeNoHeaders(t *testing.T) {
|
||||
request, err := http.NewRequest(http.MethodGet, "http://example.com", nil)
|
||||
assert.NoError(t, err)
|
||||
require.NoError(t, err)
|
||||
|
||||
serializedHeaders := SerializeHeaders(request.Header)
|
||||
deserializedHeaders, err := DeserializeHeaders(serializedHeaders)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, 0, len(deserializedHeaders))
|
||||
require.NoError(t, err)
|
||||
require.Empty(t, deserializedHeaders)
|
||||
}
|
||||
|
||||
func TestDeserializeMalformed(t *testing.T) {
|
||||
@@ -102,21 +101,22 @@ func TestDeserializeMalformed(t *testing.T) {
|
||||
|
||||
for _, malformedValue := range malformedData {
|
||||
_, err = DeserializeHeaders(malformedValue)
|
||||
assert.Error(t, err)
|
||||
require.Error(t, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestIsControlResponseHeader(t *testing.T) {
|
||||
controlResponseHeaders := []string{
|
||||
// Anything that begins with cf-int- or cf-cloudflared-
|
||||
// Anything that begins with cf-int-, cf-cloudflared- or cf-proxy-
|
||||
"cf-int-sample-header",
|
||||
"cf-cloudflared-sample-header",
|
||||
"cf-proxy-sample-header",
|
||||
// Any http2 pseudoheader
|
||||
":sample-pseudo-header",
|
||||
}
|
||||
|
||||
for _, header := range controlResponseHeaders {
|
||||
assert.True(t, IsControlResponseHeader(header))
|
||||
require.True(t, IsControlResponseHeader(header))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -130,6 +130,6 @@ func TestIsNotControlResponseHeader(t *testing.T) {
|
||||
}
|
||||
|
||||
for _, header := range notControlResponseHeaders {
|
||||
assert.False(t, IsControlResponseHeader(header))
|
||||
require.False(t, IsControlResponseHeader(header))
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
set -eu
|
||||
ln -s /usr/bin/cloudflared /usr/local/bin/cloudflared
|
||||
ln -sf /usr/bin/cloudflared /usr/local/bin/cloudflared
|
||||
mkdir -p /usr/local/etc/cloudflared/
|
||||
touch /usr/local/etc/cloudflared/.installedFromPackageManager || true
|
||||
|
||||
@@ -0,0 +1,212 @@
|
||||
<!-- TODO(TUN-9963): Create pipeline to push this file to repo automatically -->
|
||||
|
||||
<html>
|
||||
<body>
|
||||
<h1>Cloudflare packages</h1>
|
||||
<ul>
|
||||
<li><a href="#cloudflared-packages">Cloudflared packages</a></li>
|
||||
<li><a href="#gokeyless-packages">Gokeyless Packages</a></li>
|
||||
</ul>
|
||||
|
||||
<br>
|
||||
<h2><a name="cloudflared-packages">Cloudflared</a></h2>
|
||||
|
||||
<ul>
|
||||
<li><a href="#debian-any">Any Debian Based Distribution (Recommended)</a></li>
|
||||
<li><a href="#debian-bookworm">Debian Bookworm</a></li>
|
||||
<li><a href="#ubuntu-focal">Ubuntu 20.04 (Focal Fossa)</a></li>
|
||||
<li><a href="#ubuntu-jammy">Ubuntu 22.04 (Jammy Jellyfish)</a></li>
|
||||
<li><a href="#ubuntu-noble">Ubuntu 24.04 (Noble Numbat)</a></li>
|
||||
<li><a href="#Amazon-Linux">Amazon Linux</a></li>
|
||||
<li><a href="#RHEL-generic">RHEL Generic</a></li>
|
||||
<li><a href="#centos-7">Centos 7</a></li>
|
||||
<li><a href="#centos-8">Centos 8</a></li>
|
||||
<li><a href="#centos-stream">Centos Stream</a></li>
|
||||
</ul>
|
||||
|
||||
<h3 style="color: #d9534f;">Warning: Public Key Rollover (30 October 2025)</h3>
|
||||
<p style="background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 10px; margin: 10px 0;">
|
||||
<strong>We have rolled our public key for package signing.</strong> If you are using RPM-based distributions (RHEL,
|
||||
CentOS, Amazon Linux, etc.) or Debian Trixie and have the old key installed, RPM/Deb packages will no longer work with the old key.
|
||||
Please update your repository configuration using the instructions below to ensure you can continue receiving
|
||||
package updates. The previous keys will still work for other distributions for the time being, but it is now DEPRECATED and will be removed on 30 April 2026
|
||||
</p>
|
||||
|
||||
<h3><a name="debian-any">Any Debian Based Distribution (Recommended)</a></h3>
|
||||
<pre>
|
||||
# Add cloudflare gpg key
|
||||
sudo mkdir -p --mode=0755 /usr/share/keyrings
|
||||
curl -fsSL https://pkg.cloudflare.com/cloudflare-public-v2.gpg | sudo tee /usr/share/keyrings/cloudflare-public-v2.gpg >/dev/null
|
||||
|
||||
# Add this repo to your apt repositories
|
||||
# Stable
|
||||
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-public-v2.gpg] https://pkg.cloudflare.com/cloudflared any main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
|
||||
# Nightly
|
||||
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-public-v2.gpg] https://next.pkg.cloudflare.com/cloudflared any main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
|
||||
|
||||
# install cloudflared
|
||||
sudo apt-get update && sudo apt-get install cloudflared
|
||||
</pre>
|
||||
|
||||
<h3><a name="debian-bookworm">Debian Bookworm</a></h3>
|
||||
<pre>
|
||||
# Add cloudflare gpg key
|
||||
sudo mkdir -p --mode=0755 /usr/share/keyrings
|
||||
curl -fsSL https://pkg.cloudflare.com/cloudflare-public-v2.gpg | sudo tee /usr/share/keyrings/cloudflare-public-v2.gpg >/dev/null
|
||||
|
||||
# Add this repo to your apt repositories
|
||||
# Stable
|
||||
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-public-v2.gpg] https://pkg.cloudflare.com/cloudflared bookworm main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
|
||||
# Nightly
|
||||
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-public-v2.gpg] https://next.pkg.cloudflare.com/cloudflared bookworm main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
|
||||
|
||||
# install cloudflared
|
||||
sudo apt-get update && sudo apt-get install cloudflared
|
||||
</pre>
|
||||
|
||||
<h3><a name="ubuntu-focal">Ubuntu 20.04 (Focal Fossa)</a></h3>
|
||||
<pre>
|
||||
# Add cloudflare gpg key
|
||||
sudo mkdir -p --mode=0755 /usr/share/keyrings
|
||||
curl -fsSL https://pkg.cloudflare.com/cloudflare-public-v2.gpg | sudo tee /usr/share/keyrings/cloudflare-public-v2.gpg >/dev/null
|
||||
|
||||
# Add this repo to your apt repositories
|
||||
# Stable
|
||||
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-public-v2.gpg] https://pkg.cloudflare.com/cloudflared focal main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
|
||||
# Nightly
|
||||
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-public-v2.gpg] https://next.pkg.cloudflare.com/cloudflared focal main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
|
||||
|
||||
# install cloudflared
|
||||
sudo apt-get update && sudo apt-get install cloudflared
|
||||
</pre>
|
||||
|
||||
<h3><a name="ubuntu-jammy">Ubuntu 22.04 (Jammy Jellyfish)</a></h3>
|
||||
<pre>
|
||||
# Add cloudflare gpg key
|
||||
sudo mkdir -p --mode=0755 /usr/share/keyrings
|
||||
curl -fsSL https://pkg.cloudflare.com/cloudflare-public-v2.gpg | sudo tee /usr/share/keyrings/cloudflare-public-v2.gpg >/dev/null
|
||||
|
||||
# Add this repo to your apt repositories
|
||||
# Stable
|
||||
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-public-v2.gpg] https://pkg.cloudflare.com/cloudflared jammy main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
|
||||
# Nightly
|
||||
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-public-v2.gpg] https://next.pkg.cloudflare.com/cloudflared jammy main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
|
||||
|
||||
# install cloudflared
|
||||
sudo apt-get update && sudo apt-get install cloudflared
|
||||
</pre>
|
||||
|
||||
<h3><a name="ubuntu-noble">Ubuntu 24.04 (Noble Numbat)</a></h3>
|
||||
<pre>
|
||||
# Add cloudflare gpg key
|
||||
sudo mkdir -p --mode=0755 /usr/share/keyrings
|
||||
curl -fsSL https://pkg.cloudflare.com/cloudflare-public-v2.gpg | sudo tee /usr/share/keyrings/cloudflare-public-v2.gpg >/dev/null
|
||||
|
||||
# Add this repo to your apt repositories
|
||||
# Stable
|
||||
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-public-v2.gpg] https://pkg.cloudflare.com/cloudflared noble main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
|
||||
# Nightly
|
||||
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-public-v2.gpg] https://next.pkg.cloudflare.com/cloudflared noble main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
|
||||
|
||||
# install cloudflared
|
||||
sudo apt-get update && sudo apt-get install cloudflared
|
||||
</pre>
|
||||
|
||||
<h3><a name="Amazon-Linux">Amazon Linux</a></h3>
|
||||
<pre>
|
||||
# Add cloudflared.repo to /etc/yum.repos.d/
|
||||
# Stable
|
||||
curl -fsSl https://pkg.cloudflare.com/cloudflared.repo | sudo tee /etc/yum.repos.d/cloudflared.repo
|
||||
# Nightly
|
||||
curl -fsSl https://next.pkg.cloudflare.com/cloudflared.repo | sudo tee /etc/yum.repos.d/cloudflared.repo
|
||||
|
||||
#update repo
|
||||
sudo yum update
|
||||
|
||||
# install cloudflared
|
||||
sudo yum install cloudflared
|
||||
</pre>
|
||||
|
||||
|
||||
<h3><a name="RHEL-generic">RHEL Generic</a></h3>
|
||||
<pre>
|
||||
# Add cloudflared.repo to /etc/yum.repos.d/
|
||||
# Stable
|
||||
curl -fsSl https://pkg.cloudflare.com/cloudflared.repo | sudo tee /etc/yum.repos.d/cloudflared.repo
|
||||
# Nightly
|
||||
curl -fsSl https://next.pkg.cloudflare.com/cloudflared.repo | sudo tee /etc/yum.repos.d/cloudflared.repo
|
||||
|
||||
#update repo
|
||||
sudo yum update
|
||||
|
||||
# install cloudflared
|
||||
sudo yum install cloudflared
|
||||
</pre>
|
||||
|
||||
|
||||
<h3><a name="centos-7">Centos 7</a></h3>
|
||||
<pre>
|
||||
# This requires yum config-manager
|
||||
sudo yum install yum-utils
|
||||
|
||||
# Add cloudflared.repo to config-manager
|
||||
# Stable
|
||||
sudo yum-config-manager --add-repo https://pkg.cloudflare.com/cloudflared.repo
|
||||
# Nightly
|
||||
sudo yum-config-manager --add-repo https://next.pkg.cloudflare.com/cloudflared.repo
|
||||
|
||||
# install cloudflared
|
||||
yum install cloudflared
|
||||
</pre>
|
||||
|
||||
<h3><a name="centos-8">Centos 8</a></h3>
|
||||
<pre>
|
||||
# This requires dnf config-manager
|
||||
# Add cloudflared.repo to config-manager
|
||||
# Stable
|
||||
sudo dnf config-manager --add-repo https://pkg.cloudflare.com/cloudflared.repo
|
||||
# Nightly
|
||||
sudo dnf config-manager --add-repo https://next.pkg.cloudflare.com/cloudflared.repo
|
||||
|
||||
# install cloudflared
|
||||
sudo dnf install cloudflared
|
||||
</pre>
|
||||
|
||||
<h3><a name="centos-stream">Centos Stream</a></h3>
|
||||
<pre>
|
||||
# This requires dnf config-manager
|
||||
# Add cloudflared.repo to config-manager
|
||||
# Stable
|
||||
sudo dnf config-manager --add-repo https://pkg.cloudflare.com/cloudflared.repo
|
||||
# Nightly
|
||||
sudo dnf config-manager --add-repo https://next.pkg.cloudflare.com/cloudflared.repo
|
||||
|
||||
# install cloudflared
|
||||
sudo dnf install cloudflared
|
||||
</pre>
|
||||
|
||||
|
||||
<h2><a name="gokeyless-packages"></a>Gokeyless</a></h2>
|
||||
<h3><a name="go-keyless-debian">Debian</a></h3>
|
||||
<pre>
|
||||
sudo mkdir -p --mode=0755 /usr/share/keyrings
|
||||
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
|
||||
|
||||
# Add this repo to your apt repositories
|
||||
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/gokeyless buster main' | sudo tee /etc/apt/sources.list.d/cloudflare.list
|
||||
|
||||
# install gokeyless
|
||||
sudo apt-get update && sudo apt-get install gokeyless
|
||||
</pre>
|
||||
|
||||
<h3><a name="go-keyless-centos">Centos 8</a></h3>
|
||||
<pre>
|
||||
# This requires dnf config-manager
|
||||
# Add gokeyless.repo to config-manager
|
||||
sudo dnf config-manager --add-repo https://pkg.cloudflare.com/gokeyless.repo
|
||||
|
||||
# install gokeyless
|
||||
sudo dnf install gokeyless
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
+10
-4
@@ -430,11 +430,17 @@ if __name__ == "__main__":
|
||||
secondary_gpg_key_name = None
|
||||
if len(key_results) > 1:
|
||||
secondary_gpg_key_id, secondary_gpg_key_name = key_results[1]
|
||||
# Import RPM public keys (one or two)
|
||||
pkg_creator.import_rpm_key(args.gpg_public_key)
|
||||
|
||||
if args.gpg_private_key_2:
|
||||
print(f"signing RPM with secondary gpg_key: {secondary_gpg_key_id}")
|
||||
pkg_creator.import_rpm_key(args.gpg_public_key_2)
|
||||
else:
|
||||
print(f"signing RPM with primary gpg_key: {primary_gpg_key_name}")
|
||||
pkg_creator.import_rpm_key(args.gpg_public_key)
|
||||
|
||||
|
||||
pkg_uploader = PkgUploader(args.account, args.bucket, args.id, args.secret)
|
||||
print(f"signing with primary gpg_key: {primary_gpg_key_id} and secondary gpg_key: {secondary_gpg_key_id}")
|
||||
print(f"signing deb with primary gpg_key: {primary_gpg_key_id} and secondary gpg_key: {secondary_gpg_key_id}")
|
||||
create_deb_packaging(
|
||||
pkg_creator,
|
||||
pkg_uploader,
|
||||
@@ -453,7 +459,7 @@ if __name__ == "__main__":
|
||||
"./built_artifacts",
|
||||
args.release_tag,
|
||||
args.binary,
|
||||
primary_gpg_key_name,
|
||||
secondary_gpg_key_name,
|
||||
args.pkg_upload_url,
|
||||
args.gpg_public_key_url,
|
||||
args.upload_repo_file,
|
||||
|
||||
Reference in New Issue
Block a user