mirror of
https://github.com/balena-io/open-balena.git
synced 2025-06-25 02:29:16 +00:00
Compare commits
94 Commits
Author | SHA1 | Date | |
---|---|---|---|
278ddbc534 | |||
4cacf673ee | |||
84141027a1 | |||
ddc2889240 | |||
8d2b52a896 | |||
59c6829509 | |||
99b3f1b19f | |||
021a7d6380 | |||
5fab467ccd | |||
20f9f0320a | |||
9ff551d528 | |||
c8946a95da | |||
dd59088cd2 | |||
cae93253a9 | |||
c4a18f5bf8 | |||
3b0c106eb1 | |||
c9fa4cf00f | |||
ea605d1444 | |||
966ea04241 | |||
dce59b65a3 | |||
f151d2a6cc | |||
4efb25afc7 | |||
08890adf92 | |||
44c11d9d16 | |||
e5bbfb833f | |||
a9107a1d6f | |||
f7207fb4a0 | |||
b39074c0ba | |||
3fed389090 | |||
96afd454bf | |||
0e0e5e1bc5 | |||
7c4e9fdc09 | |||
fbcb35a595 | |||
94f8b159c3 | |||
a328e8fc1d | |||
b1fd42669a | |||
39f7f6b0cc | |||
1180bb3462 | |||
fbf3007d4c | |||
2a3df9cd2a | |||
d71a90c1ef | |||
6739d1257b | |||
381fba943d | |||
66acae8bbf | |||
cd2c3f5e11 | |||
071b5850a9 | |||
91bc92dbb5 | |||
49831a6a60 | |||
549de52c73 | |||
826b61f08b | |||
0cdf0ef558 | |||
bea552de6a | |||
419f3cddc4 | |||
b92a3c8092 | |||
746be65846 | |||
6250c85551 | |||
3898342a5b | |||
ab0b7467fd | |||
7cdce1a1c7 | |||
da4c1678ec | |||
6fdc700806 | |||
e6d0be1c74 | |||
a0ef371621 | |||
cd98a0df3f | |||
296a746e96 | |||
b3d184c13c | |||
3b9433e9cc | |||
763da0eb45 | |||
bfce474ff0 | |||
308322f774 | |||
c2077e5037 | |||
7790290d0e | |||
857e6b3bd7 | |||
cbee20731b | |||
eec16b843d | |||
a3126359e0 | |||
6438da8498 | |||
1f7ed769c0 | |||
41b1800166 | |||
77e3cfcdb6 | |||
d3f11819ce | |||
3816f09bc4 | |||
7154c5903f | |||
71a692b28b | |||
feeb830405 | |||
eb262fe9a2 | |||
6db5e59958 | |||
d33560755f | |||
f427982714 | |||
b99e497ac9 | |||
de0293563f | |||
17419557a5 | |||
c58ee37f17 | |||
d67e29223f |
2
.github/CODEOWNERS
vendored
2
.github/CODEOWNERS
vendored
@ -1,2 +0,0 @@
|
|||||||
# Main repo owners:
|
|
||||||
* @dfunckt @richbayliss
|
|
File diff suppressed because it is too large
Load Diff
5550
CHANGELOG.md
5550
CHANGELOG.md
File diff suppressed because it is too large
Load Diff
91
README.md
91
README.md
@ -25,42 +25,25 @@ To learn more about openBalena, visit [balena.io/open][open-balena-website].
|
|||||||
- **Built-in VPN**: Access your devices regardless of their network environment
|
- **Built-in VPN**: Access your devices regardless of their network environment
|
||||||
|
|
||||||
|
|
||||||
## Roadmap
|
|
||||||
|
|
||||||
OpenBalena is currently in beta. While fully functional, it lacks features we
|
|
||||||
consider important before we can comfortably call it production-ready. During
|
|
||||||
this phase, don’t be alarmed if things don’t work as expected just yet (and
|
|
||||||
please let us know about any bugs or errors you encounter!). The following
|
|
||||||
improvements and new functionality is planned:
|
|
||||||
|
|
||||||
- Full documentation
|
|
||||||
- Full test suite
|
|
||||||
- Simplified deployment
|
|
||||||
- Remote host OS updates
|
|
||||||
- Support for custom device types
|
|
||||||
|
|
||||||
|
|
||||||
## Contributing
|
|
||||||
|
|
||||||
Everyone is welcome to contribute to openBalena. There are many different ways
|
|
||||||
to get involved apart from submitting pull requests, including helping other
|
|
||||||
users on the [forums][forums], reporting or triaging [issues][issue-tracker],
|
|
||||||
reviewing and discussing [pull requests][pulls], or just spreading the word.
|
|
||||||
|
|
||||||
All of openBalena is hosted on GitHub. Apart from its constituent components,
|
|
||||||
which are the [API][open-balena-api], [VPN][open-balena-vpn], [Registry][open-balena-registry],
|
|
||||||
[S3 storage service][open-balena-s3], and [Database][open-balena-db], contributions
|
|
||||||
are also welcome to its client-side software such as the [balena CLI][balena-cli],
|
|
||||||
the [balena SDK][balena-sdk], [balenaOS][balena-os] and [balenaEngine][balena-engine].
|
|
||||||
|
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
Our [Getting Started][getting-started] guide is the most direct path to getting
|
Our [Getting Started guide][getting-started] is the most direct path to getting
|
||||||
an openBalena installation up and running and successfully deploying your
|
an openBalena installation up and running and successfully deploying your
|
||||||
application to your device(s).
|
application to your device(s).
|
||||||
|
|
||||||
|
|
||||||
|
## Compatibility
|
||||||
|
|
||||||
|
The current release of openBalena has the following minimum version requirements:
|
||||||
|
|
||||||
|
- balenaOS v2.58.3
|
||||||
|
- balena CLI v12.38.5
|
||||||
|
|
||||||
|
If you are updating from previous openBalena versions, ensure you update the balena
|
||||||
|
CLI and reprovision any devices to at least the minimum required versions in order
|
||||||
|
for them to be fully compatible with this release, as some features may not work.
|
||||||
|
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
While we're still working on the project documentation, please refer to the
|
While we're still working on the project documentation, please refer to the
|
||||||
@ -89,6 +72,54 @@ for help, or contribute by answering questions posted by fellow openBalena users
|
|||||||
Please do not use the issue tracker for support-related questions.
|
Please do not use the issue tracker for support-related questions.
|
||||||
|
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
Everyone is welcome to contribute to openBalena. There are many different ways
|
||||||
|
to get involved apart from submitting pull requests, including helping other
|
||||||
|
users on the [forums][forums], reporting or triaging [issues][issue-tracker],
|
||||||
|
reviewing and discussing [pull requests][pulls], or just spreading the word.
|
||||||
|
|
||||||
|
All of openBalena is hosted on GitHub. Apart from its constituent components,
|
||||||
|
which are the [API][open-balena-api], [VPN][open-balena-vpn], [Registry][open-balena-registry],
|
||||||
|
[S3 storage service][open-balena-s3], and [Database][open-balena-db], contributions
|
||||||
|
are also welcome to its client-side software such as the [balena CLI][balena-cli],
|
||||||
|
the [balena SDK][balena-sdk], [balenaOS][balena-os] and [balenaEngine][balena-engine].
|
||||||
|
|
||||||
|
|
||||||
|
## Roadmap
|
||||||
|
|
||||||
|
OpenBalena is currently in beta. While fully functional, it lacks features we
|
||||||
|
consider important before we can comfortably call it production-ready. During
|
||||||
|
this phase, don’t be alarmed if things don’t work as expected just yet (and
|
||||||
|
please let us know about any bugs or errors you encounter!). The following
|
||||||
|
improvements and new functionality is planned:
|
||||||
|
|
||||||
|
- Full documentation
|
||||||
|
- Full test suite
|
||||||
|
- Simplified deployment
|
||||||
|
- Remote host OS updates
|
||||||
|
- Support for custom device types
|
||||||
|
|
||||||
|
|
||||||
|
## Differences between openBalena and balenaCloud
|
||||||
|
|
||||||
|
| openBalena | balenaCloud |
|
||||||
|
| ----- | ---- |
|
||||||
|
| Device updates using full images | Device updates using [delta images](https://www.balena.io/docs/learn/deploy/delta/) |
|
||||||
|
| Support for a single user | Support for [multiple users](https://www.balena.io/docs/learn/manage/account/#application-members) |
|
||||||
|
| Self-hosted deployment and scaling | balena-managed scaling and deployment |
|
||||||
|
| Community support via [forums][forums] | Private support on [paid plans](https://www.balena.io/pricing/) |
|
||||||
|
| Deploy via `balena deploy` only | Build remotely with native builders using [`balena push`](https://www.balena.io/docs/learn/deploy/deployment/#balena-push) or [`git push`](https://www.balena.io/docs/learn/deploy/deployment/#git-push) |
|
||||||
|
| No support for building via `git push` | Use the same CI workflow with [`git push`](https://www.balena.io/docs/learn/deploy/deployment/#git-push) |
|
||||||
|
| No public URL support | Serve websites directly from device with [public device URLs](https://www.balena.io/docs/learn/manage/actions/#enable-public-device-url) |
|
||||||
|
| Management via `balena-cli` only | Cloud-based device management dashboard |
|
||||||
|
| Download images from [balena.io][balena-os-website] | Download preconfigured images directly from the dashboard |
|
||||||
|
| No supported remote diagnostics | Remote device diagnostics |
|
||||||
|
| Supported devices: Raspberry Pi family, the Intel NUC, the NVIDIA Jetson TX2, and the balenaFin | All the devices listed in balena's [reference documentation](https://www.balena.io/docs/reference/hardware/devices/) |
|
||||||
|
|
||||||
|
Additionally, refer back to the [roadmap](#roadmap) above for planned but not yet implemented features.
|
||||||
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
OpenBalena is licensed under the terms of AGPL v3. See [LICENSE](LICENSE) for details.
|
OpenBalena is licensed under the terms of AGPL v3. See [LICENSE](LICENSE) for details.
|
||||||
|
13
Vagrantfile
vendored
13
Vagrantfile
vendored
@ -1,12 +1,11 @@
|
|||||||
Vagrant.require_version '>= 2.0.0'
|
Vagrant.require_version '>= 2.2.0'
|
||||||
|
|
||||||
[ 'vagrant-vbguest', 'vagrant-docker-compose' ].each do |p|
|
|
||||||
unless Vagrant.has_plugin?(p)
|
|
||||||
raise "Please install missing plugin: vagrant plugin install #{p}"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
Vagrant.configure('2') do |config|
|
Vagrant.configure('2') do |config|
|
||||||
|
config.vagrant.plugins = [
|
||||||
|
'vagrant-vbguest',
|
||||||
|
'vagrant-docker-compose'
|
||||||
|
]
|
||||||
|
|
||||||
config.vm.define 'openbalena'
|
config.vm.define 'openbalena'
|
||||||
config.vm.hostname = 'openbalena-vagrant'
|
config.vm.hostname = 'openbalena-vagrant'
|
||||||
config.vm.box = 'bento/ubuntu-18.04'
|
config.vm.box = 'bento/ubuntu-18.04'
|
||||||
|
@ -22,7 +22,7 @@ services:
|
|||||||
# the resin backend (eg. that for BALENA_ROOT_CA if present).
|
# the resin backend (eg. that for BALENA_ROOT_CA if present).
|
||||||
MDNS_TLD: ${OPENBALENA_HOST_NAME}
|
MDNS_TLD: ${OPENBALENA_HOST_NAME}
|
||||||
# List of subdomains to advertise. This must include all required hosts.
|
# List of subdomains to advertise. This must include all required hosts.
|
||||||
MDNS_SUBDOMAINS: '["api", "db", "registry", "s3", "vpn"]'
|
MDNS_SUBDOMAINS: '["api", "db", "registry", "s3", "tunnel", "vpn"]'
|
||||||
# The expectation is the DBus socket to use is always at the following location.
|
# The expectation is the DBus socket to use is always at the following location.
|
||||||
DBUS_SESSION_BUS_ADDRESS: "unix:path=/host/run/dbus/system_bus_socket"
|
DBUS_SESSION_BUS_ADDRESS: "unix:path=/host/run/dbus/system_bus_socket"
|
||||||
# Selects the interface used for incoming connections from the wider subnet.
|
# Selects the interface used for incoming connections from the wider subnet.
|
||||||
|
@ -5,7 +5,6 @@ volumes:
|
|||||||
cert-provider: {}
|
cert-provider: {}
|
||||||
db: {}
|
db: {}
|
||||||
redis: {}
|
redis: {}
|
||||||
registry: {}
|
|
||||||
s3: {}
|
s3: {}
|
||||||
|
|
||||||
services:
|
services:
|
||||||
@ -20,7 +19,7 @@ services:
|
|||||||
- redis
|
- redis
|
||||||
environment:
|
environment:
|
||||||
API_VPN_SERVICE_API_KEY: ${OPENBALENA_API_VPN_SERVICE_API_KEY}
|
API_VPN_SERVICE_API_KEY: ${OPENBALENA_API_VPN_SERVICE_API_KEY}
|
||||||
BALENA_ROOT_CA: ${OPENBALENA_ROOT_CA}
|
ROOT_CA: ${OPENBALENA_ROOT_CA}
|
||||||
COOKIE_SESSION_SECRET: ${OPENBALENA_COOKIE_SESSION_SECRET}
|
COOKIE_SESSION_SECRET: ${OPENBALENA_COOKIE_SESSION_SECRET}
|
||||||
DB_HOST: db
|
DB_HOST: db
|
||||||
DB_PASSWORD: docker
|
DB_PASSWORD: docker
|
||||||
@ -32,7 +31,7 @@ services:
|
|||||||
HOST: api.${OPENBALENA_HOST_NAME}
|
HOST: api.${OPENBALENA_HOST_NAME}
|
||||||
IMAGE_MAKER_URL: img.${OPENBALENA_HOST_NAME}
|
IMAGE_MAKER_URL: img.${OPENBALENA_HOST_NAME}
|
||||||
IMAGE_STORAGE_BUCKET: resin-production-img-cloudformation
|
IMAGE_STORAGE_BUCKET: resin-production-img-cloudformation
|
||||||
IMAGE_STORAGE_PREFIX: resinos
|
IMAGE_STORAGE_PREFIX: images
|
||||||
IMAGE_STORAGE_ENDPOINT: s3.amazonaws.com
|
IMAGE_STORAGE_ENDPOINT: s3.amazonaws.com
|
||||||
JSON_WEB_TOKEN_EXPIRY_MINUTES: 10080
|
JSON_WEB_TOKEN_EXPIRY_MINUTES: 10080
|
||||||
JSON_WEB_TOKEN_SECRET: ${OPENBALENA_JWT_SECRET}
|
JSON_WEB_TOKEN_SECRET: ${OPENBALENA_JWT_SECRET}
|
||||||
@ -65,14 +64,12 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
- s3
|
- s3
|
||||||
- redis
|
- redis
|
||||||
volumes:
|
|
||||||
- registry:/data
|
|
||||||
environment:
|
environment:
|
||||||
API_TOKENAUTH_CRT: ${OPENBALENA_TOKEN_AUTH_PUB}
|
API_TOKENAUTH_CRT: ${OPENBALENA_TOKEN_AUTH_PUB}
|
||||||
BALENA_REGISTRY2_HOST: registry.${OPENBALENA_HOST_NAME}
|
REGISTRY2_HOST: registry.${OPENBALENA_HOST_NAME}
|
||||||
BALENA_ROOT_CA: ${OPENBALENA_ROOT_CA}
|
ROOT_CA: ${OPENBALENA_ROOT_CA}
|
||||||
BALENA_TOKEN_AUTH_ISSUER: api.${OPENBALENA_HOST_NAME}
|
REGISTRY2_TOKEN_AUTH_ISSUER: api.${OPENBALENA_HOST_NAME}
|
||||||
BALENA_TOKEN_AUTH_REALM: https://api.${OPENBALENA_HOST_NAME}/auth/v1/token
|
REGISTRY2_TOKEN_AUTH_REALM: https://api.${OPENBALENA_HOST_NAME}/auth/v1/token
|
||||||
COMMON_REGION: ${OPENBALENA_S3_REGION}
|
COMMON_REGION: ${OPENBALENA_S3_REGION}
|
||||||
REGISTRY2_CACHE_ENABLED: "false"
|
REGISTRY2_CACHE_ENABLED: "false"
|
||||||
REGISTRY2_CACHE_ADDR: 127.0.0.1:6379
|
REGISTRY2_CACHE_ADDR: 127.0.0.1:6379
|
||||||
@ -85,6 +82,7 @@ services:
|
|||||||
REGISTRY2_S3_SECRET: ${OPENBALENA_S3_SECRET_KEY}
|
REGISTRY2_S3_SECRET: ${OPENBALENA_S3_SECRET_KEY}
|
||||||
REGISTRY2_SECRETKEY: ${OPENBALENA_REGISTRY_SECRET_KEY}
|
REGISTRY2_SECRETKEY: ${OPENBALENA_REGISTRY_SECRET_KEY}
|
||||||
REGISTRY2_STORAGEPATH: /data
|
REGISTRY2_STORAGEPATH: /data
|
||||||
|
REGISTRY2_DISABLE_REDIRECT: "false"
|
||||||
|
|
||||||
vpn:
|
vpn:
|
||||||
extends:
|
extends:
|
||||||
@ -97,11 +95,11 @@ services:
|
|||||||
- NET_ADMIN
|
- NET_ADMIN
|
||||||
environment:
|
environment:
|
||||||
API_SERVICE_API_KEY: ${OPENBALENA_API_VPN_SERVICE_API_KEY}
|
API_SERVICE_API_KEY: ${OPENBALENA_API_VPN_SERVICE_API_KEY}
|
||||||
BALENA_API_HOST: api.${OPENBALENA_HOST_NAME}
|
API_HOST: api.${OPENBALENA_HOST_NAME}
|
||||||
BALENA_ROOT_CA: ${OPENBALENA_ROOT_CA}
|
ROOT_CA: ${OPENBALENA_ROOT_CA}
|
||||||
BALENA_VPN_PORT: 443
|
VPN_PORT: 443
|
||||||
PRODUCTION_MODE: "${OPENBALENA_PRODUCTION_MODE}"
|
PRODUCTION_MODE: "${OPENBALENA_PRODUCTION_MODE}"
|
||||||
RESIN_VPN_GATEWAY: 10.2.0.1
|
VPN_GATEWAY: 10.2.0.1
|
||||||
SENTRY_DSN: ""
|
SENTRY_DSN: ""
|
||||||
VPN_HAPROXY_USEPROXYPROTOCOL: "true"
|
VPN_HAPROXY_USEPROXYPROTOCOL: "true"
|
||||||
VPN_OPENVPN_CA_CRT: ${OPENBALENA_VPN_CA}
|
VPN_OPENVPN_CA_CRT: ${OPENBALENA_VPN_CA}
|
||||||
@ -154,9 +152,9 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "80:80"
|
- "80:80"
|
||||||
- "443:443"
|
- "443:443"
|
||||||
- "3128:3128"
|
|
||||||
expose:
|
expose:
|
||||||
- "222"
|
- "222"
|
||||||
|
- "3128"
|
||||||
- "5432"
|
- "5432"
|
||||||
- "6379"
|
- "6379"
|
||||||
networks:
|
networks:
|
||||||
@ -168,6 +166,7 @@ services:
|
|||||||
- db.${OPENBALENA_HOST_NAME}
|
- db.${OPENBALENA_HOST_NAME}
|
||||||
- s3.${OPENBALENA_HOST_NAME}
|
- s3.${OPENBALENA_HOST_NAME}
|
||||||
- redis.${OPENBALENA_HOST_NAME}
|
- redis.${OPENBALENA_HOST_NAME}
|
||||||
|
- tunnel.${OPENBALENA_HOST_NAME}
|
||||||
environment:
|
environment:
|
||||||
BALENA_HAPROXY_CRT: ${OPENBALENA_ROOT_CRT}
|
BALENA_HAPROXY_CRT: ${OPENBALENA_ROOT_CRT}
|
||||||
BALENA_HAPROXY_KEY: ${OPENBALENA_ROOT_KEY}
|
BALENA_HAPROXY_KEY: ${OPENBALENA_ROOT_KEY}
|
||||||
@ -183,5 +182,5 @@ services:
|
|||||||
- cert-provider:/usr/src/app/certs
|
- cert-provider:/usr/src/app/certs
|
||||||
environment:
|
environment:
|
||||||
ACTIVE: ${OPENBALENA_ACME_CERT_ENABLED}
|
ACTIVE: ${OPENBALENA_ACME_CERT_ENABLED}
|
||||||
DOMAINS: "api.${OPENBALENA_HOST_NAME},registry.${OPENBALENA_HOST_NAME},s3.${OPENBALENA_HOST_NAME},vpn.${OPENBALENA_HOST_NAME}"
|
DOMAINS: "api.${OPENBALENA_HOST_NAME},registry.${OPENBALENA_HOST_NAME},s3.${OPENBALENA_HOST_NAME},vpn.${OPENBALENA_HOST_NAME},tunnel.${OPENBALENA_HOST_NAME}"
|
||||||
OUTPUT_PEM: /certs/open-balena.pem
|
OUTPUT_PEM: /certs/open-balena.pem
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
export OPENBALENA_API_VERSION_TAG=v0.19.5
|
export OPENBALENA_API_VERSION_TAG=v0.192.4
|
||||||
export OPENBALENA_DB_VERSION_TAG=v2.0.3
|
export OPENBALENA_DB_VERSION_TAG=v5.1.0
|
||||||
export OPENBALENA_MDNS_PUBLISHER_VERSION_TAG=v1.6.2
|
export OPENBALENA_MDNS_PUBLISHER_VERSION_TAG=v1.9.2
|
||||||
export OPENBALENA_REGISTRY_VERSION_TAG=v2.11.1
|
export OPENBALENA_REGISTRY_VERSION_TAG=v2.24.2
|
||||||
export OPENBALENA_S3_VERSION_TAG=v2.8.5
|
export OPENBALENA_S3_VERSION_TAG=v2.13.3
|
||||||
export OPENBALENA_VPN_VERSION_TAG=v8.10.0
|
export OPENBALENA_VPN_VERSION_TAG=v9.27.0
|
||||||
|
@ -6,9 +6,11 @@ VOLUME [ "/usr/src/app/certs" ]
|
|||||||
|
|
||||||
RUN apk add --update bash curl git openssl ncurses socat
|
RUN apk add --update bash curl git openssl ncurses socat
|
||||||
|
|
||||||
|
# from https://github.com/Neilpang/acme.sh/releases/tag/3.0.1
|
||||||
RUN git clone https://github.com/Neilpang/acme.sh.git && \
|
RUN git clone https://github.com/Neilpang/acme.sh.git && \
|
||||||
cd acme.sh && \
|
cd acme.sh && \
|
||||||
git checkout 08357e3cb0d80c84bdaf3e42ce0e439665387f57 . && \
|
git fetch && git fetch --tags && \
|
||||||
|
git checkout 3.0.1 . && \
|
||||||
./acme.sh --install \
|
./acme.sh --install \
|
||||||
--cert-home /usr/src/app/certs
|
--cert-home /usr/src/app/certs
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# the acme.sh client script, installed via Git in the Dockerfile...
|
# the acme.sh client script, installed via Git in the Dockerfile...
|
||||||
ACME_BIN="$(realpath ~/.acme.sh/acme.sh)"
|
ACME_BIN="$(realpath ~/.acme.sh/acme.sh)"
|
||||||
@ -45,14 +45,20 @@ retryWithDelay() {
|
|||||||
DELAY=${3:-5}
|
DELAY=${3:-5}
|
||||||
|
|
||||||
local ATTEMPT=0
|
local ATTEMPT=0
|
||||||
while [ $RETRIES -gt $ATTEMPT ]; do
|
while [ "$RETRIES" -gt "$ATTEMPT" ]; do
|
||||||
let "ATTEMPT++"
|
(( ATTEMPT++ ))
|
||||||
|
logInfo "($ATTEMPT/$RETRIES) Connecting..."
|
||||||
if $1; then
|
if $1; then
|
||||||
|
logInfo "($ATTEMPT/$RETRIES) Success!"
|
||||||
return $?
|
return $?
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "($ATTEMPT/$RETRIES) Retrying in ${DELAY} seconds..."
|
if [ "$RETRIES" -gt "$ATTEMPT" ]; then
|
||||||
sleep $DELAY
|
logInfo "($ATTEMPT/$RETRIES) Failed. Retrying in ${DELAY} seconds..."
|
||||||
|
sleep "$DELAY"
|
||||||
|
else
|
||||||
|
logInfo "($ATTEMPT/$RETRIES) Failed!"
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
@ -62,7 +68,7 @@ waitForOnline() {
|
|||||||
ADDRESS="${1,,}"
|
ADDRESS="${1,,}"
|
||||||
|
|
||||||
logInfo "Waiting for ${ADDRESS} to be available via HTTP..."
|
logInfo "Waiting for ${ADDRESS} to be available via HTTP..."
|
||||||
retryWithDelay "curl --output /dev/null --silent --head --fail http://${ADDRESS}" 6 5
|
retryWithDelay "curl --output /dev/null --silent --head --fail --max-time 5 http://${ADDRESS}"
|
||||||
}
|
}
|
||||||
|
|
||||||
isUsingStagingCert() {
|
isUsingStagingCert() {
|
||||||
@ -153,7 +159,7 @@ acquireCertificate() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
logInfo "Issuing certificates..."
|
logInfo "Issuing certificates..."
|
||||||
"$ACME_BIN" --issue "${ACME_OPTS[@]}" "${ACME_DOMAIN_ARGS[@]}"
|
"$ACME_BIN" --server letsencrypt --issue "${ACME_OPTS[@]}" "${ACME_DOMAIN_ARGS[@]}"
|
||||||
|
|
||||||
logInfo "Installing certificates..." && \
|
logInfo "Installing certificates..." && \
|
||||||
"$ACME_BIN" --install-cert "${ACME_DOMAIN_ARGS[@]}" \
|
"$ACME_BIN" --install-cert "${ACME_DOMAIN_ARGS[@]}" \
|
||||||
@ -167,7 +173,10 @@ acquireCertificate() {
|
|||||||
|
|
||||||
pre-flight || logErrorAndStop "Unable to continue due to misconfiguration. See errors above."
|
pre-flight || logErrorAndStop "Unable to continue due to misconfiguration. See errors above."
|
||||||
|
|
||||||
waitForOnline "${ACME_DOMAINS[0]}" || logErrorAndStop "Unable to access ${ACME_DOMAINS[0]} on port 80. This is needed for certificate validation."
|
while ! waitForOnline "${ACME_DOMAINS[0]}"; do
|
||||||
|
logInfo "Unable to access ${ACME_DOMAINS[0]} on port 80. This is needed for certificate validation. Retrying in 30 seconds..."
|
||||||
|
sleep 30
|
||||||
|
done
|
||||||
|
|
||||||
if ! lastAcquiredCertFor "production"; then
|
if ! lastAcquiredCertFor "production"; then
|
||||||
acquireCertificate "staging" || logErrorAndStop "Unable to acquire a staging certificate."
|
acquireCertificate "staging" || logErrorAndStop "Unable to acquire a staging certificate."
|
||||||
|
@ -1,56 +1,119 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
MIIFATCCAumgAwIBAgIRAKc9ZKBASymy5TLOEp57N98wDQYJKoZIhvcNAQELBQAw
|
MIIDrzCCApegAwIBAgIRALqMZiRNaRF4EGZS9urlj+0wDQYJKoZIhvcNAQELBQAw
|
||||||
GjEYMBYGA1UEAwwPRmFrZSBMRSBSb290IFgxMB4XDTE2MDMyMzIyNTM0NloXDTM2
|
cTELMAkGA1UEBhMCVVMxMzAxBgNVBAoTKihTVEFHSU5HKSBJbnRlcm5ldCBTZWN1
|
||||||
MDMyMzIyNTM0NlowGjEYMBYGA1UEAwwPRmFrZSBMRSBSb290IFgxMIICIjANBgkq
|
cml0eSBSZXNlYXJjaCBHcm91cDEtMCsGA1UEAxMkKFNUQUdJTkcpIERvY3RvcmVk
|
||||||
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA+pYHvQw5iU3v2b3iNuYNKYgsWD6KU7aJ
|
IER1cmlhbiBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDEzMDE0MDEx
|
||||||
diddtZQxSWYzUI3U0I1UsRPTxnhTifs/M9NW4ZlV13ZfB7APwC8oqKOIiwo7IwlP
|
NVowcTELMAkGA1UEBhMCVVMxMzAxBgNVBAoTKihTVEFHSU5HKSBJbnRlcm5ldCBT
|
||||||
xg0VKgyz+kT8RJfYr66PPIYP0fpTeu42LpMJ+CKo9sbpgVNDZN2z/qiXrRNX/VtG
|
ZWN1cml0eSBSZXNlYXJjaCBHcm91cDEtMCsGA1UEAxMkKFNUQUdJTkcpIERvY3Rv
|
||||||
TkPV7a44fZ5bHHVruAxvDnylpQxJobtCBWlJSsbIRGFHMc2z88eUz9NmIOWUKGGj
|
cmVkIER1cmlhbiBSb290IENBIFgzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
||||||
EmP76x8OfRHpIpuxRSCjn0+i9+hR2siIOpcMOGd+40uVJxbRRP5ZXnUFa2fF5FWd
|
CgKCAQEAqUZjoRbjgXecPWxXkGCUEXcNrupL7dkbwc0jUTLFEDvcyfD1gYekY5uL
|
||||||
O0u0RPI8HON0ovhrwPJY+4eWKkQzyC611oLPYGQ4EbifRsTsCxUZqyUuStGyp8oa
|
D19uzYTl0pKZzzDXHJPnJY5EEp27nACFOm8XzX9sORAangP0OnGUkXJZDHM+8cX2
|
||||||
aoSKfF6X0+KzGgwwnrjRTUpIl19A92KR0Noo6h622OX+4sZiO/JQdkuX5w/HupK0
|
EHJbfj0lg1JirRF3w2u1/KRuFEvIlWg3FdXdsSFHBF5z1Ij7MLn7Ska5c/5fKsDW
|
||||||
A0M0WSMCvU6GOhjGotmh2VTEJwHHY4+TUk0iQYRtv1crONklyZoAQPD76hCrC8Cr
|
EYzOMB6EBW1T9RDkVk/Q965EwDT4bR6BOXakasgfKrH9m1f6l9MmA0VnXdw9rZ+s
|
||||||
IbgsZLfTMC8TWUoMbyUDgvgYkHKMoPm0VGVVuwpRKJxv7+2wXO+pivrrUl2Q9fPe
|
TvMHG1yWBqNMSqCKe3jG6caWgN7llEbj5YsCWs32bz2dMftGkXBPcy1fNWvpeT7G
|
||||||
Kk055nJLMV9yPUdig8othUKrRfSxli946AEV1eEOhxddfEwBE3Lt2xn0hhiIedbb
|
Dz2Z0QWTlHkyXA2kGw32fdoXLHWOEwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYw
|
||||||
Ftf/5kEWFZkXyUmMJK8Ra76Kus2ABueUVEcZ48hrRr1Hf1N9n59VbTUaXgeiZA50
|
DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUCFfaiceiU3kMT93gkI90uuInc0Qw
|
||||||
qXf2bymE6F8CAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB
|
DQYJKoZIhvcNAQELBQADggEBAF7lEtHuSN4j+xFQsM/ujaVKcn57VbrbTecnspmJ
|
||||||
Af8wHQYDVR0OBBYEFMEmdKSKRKDm+iAo2FwjmkWIGHngMA0GCSqGSIb3DQEBCwUA
|
JA7Hrn6OErshGNO0p1/u14c7tGHKjtF1tEFFSVhbNXlKw9O99AfhmlFgdGcJKEHn
|
||||||
A4ICAQBCPw74M9X/Xx04K1VAES3ypgQYH5bf9FXVDrwhRFSVckria/7dMzoF5wln
|
ZctBB8bhNO387vbiCYIHdU/nSba9MCDYw2/UCtobZ6ao+KJA3IKmPixctAbn2Ikr
|
||||||
uq9NGsjkkkDg17AohcQdr8alH4LvPdxpKr3BjpvEcmbqF8xH+MbbeUEnmbSfLI8H
|
EN9X0SXNP1gnqQP4VhZJIh6cd7rg9MimzoLlMI3m2z11dSGYbh8OWSdvA7aLbSGo
|
||||||
sefuhXF9AF/9iYvpVNC8FmJ0OhiVv13VgMQw0CRKkbtjZBf8xaEhq/YqxWVsgOjm
|
gDO5H4WD8fgqEG0reSBO89eeH+we+BZxQtBiU3b9VMV0drc+7zC2NbXqeQwu6QTl
|
||||||
dm5CAQ2X0aX7502x8wYRgMnZhA5goC1zVWBVAi8yhhmlhhoDUfg17cXkmaJC5pDd
|
fbJ8ytqcqUy0g5XSE6WCzPOL3H9r0j9G64dfotGlBA5tG6w=
|
||||||
oenZ9NVhW8eDb03MFCrWNvIh89DDeCGWuWfDltDq0n3owyL0IeSn7RfpSclpxVmV
|
-----END CERTIFICATE-----
|
||||||
/53jkYjwIgxIG7Gsv0LKMbsf6QdBcTjhvfZyMIpBRkTe3zuHd2feKzY9lEkbRvRQ
|
-----BEGIN CERTIFICATE-----
|
||||||
zbh4Ps5YBnG6CKJPTbe2hfi3nhnw/MyEmF3zb0hzvLWNrR9XW3ibb2oL3424XOwc
|
MIIFmDCCA4CgAwIBAgIQU9C87nMpOIFKYpfvOHFHFDANBgkqhkiG9w0BAQsFADBm
|
||||||
VjrTSCLzO9Rv6s5wi03qoWvKAQQAElqTYRHhynJ3w6wuvKYF5zcZF3MDnrVGLbh1
|
MQswCQYDVQQGEwJVUzEzMDEGA1UEChMqKFNUQUdJTkcpIEludGVybmV0IFNlY3Vy
|
||||||
Q9ePRFBCiXOQ6wPLoUhrrbZ8LpFUFYDXHMtYM7P9sc9IAWoONXREJaO08zgFtMp4
|
aXR5IFJlc2VhcmNoIEdyb3VwMSIwIAYDVQQDExkoU1RBR0lORykgUHJldGVuZCBQ
|
||||||
8iyIYUyQAbsvx8oD2M8kRvrIRSrRJSl6L957b4AFiLIQ/GgV2curs0jje7Edx34c
|
ZWFyIFgxMB4XDTE1MDYwNDExMDQzOFoXDTM1MDYwNDExMDQzOFowZjELMAkGA1UE
|
||||||
idWw1VrejtwclobqNMVtG3EiPUIpJGpbMcJgbiLSmKkrvQtGng==
|
BhMCVVMxMzAxBgNVBAoTKihTVEFHSU5HKSBJbnRlcm5ldCBTZWN1cml0eSBSZXNl
|
||||||
|
YXJjaCBHcm91cDEiMCAGA1UEAxMZKFNUQUdJTkcpIFByZXRlbmQgUGVhciBYMTCC
|
||||||
|
AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALbagEdDTa1QgGBWSYkyMhsc
|
||||||
|
ZXENOBaVRTMX1hceJENgsL0Ma49D3MilI4KS38mtkmdF6cPWnL++fgehT0FbRHZg
|
||||||
|
jOEr8UAN4jH6omjrbTD++VZneTsMVaGamQmDdFl5g1gYaigkkmx8OiCO68a4QXg4
|
||||||
|
wSyn6iDipKP8utsE+x1E28SA75HOYqpdrk4HGxuULvlr03wZGTIf/oRt2/c+dYmD
|
||||||
|
oaJhge+GOrLAEQByO7+8+vzOwpNAPEx6LW+crEEZ7eBXih6VP19sTGy3yfqK5tPt
|
||||||
|
TdXXCOQMKAp+gCj/VByhmIr+0iNDC540gtvV303WpcbwnkkLYC0Ft2cYUyHtkstO
|
||||||
|
fRcRO+K2cZozoSwVPyB8/J9RpcRK3jgnX9lujfwA/pAbP0J2UPQFxmWFRQnFjaq6
|
||||||
|
rkqbNEBgLy+kFL1NEsRbvFbKrRi5bYy2lNms2NJPZvdNQbT/2dBZKmJqxHkxCuOQ
|
||||||
|
FjhJQNeO+Njm1Z1iATS/3rts2yZlqXKsxQUzN6vNbD8KnXRMEeOXUYvbV4lqfCf8
|
||||||
|
mS14WEbSiMy87GB5S9ucSV1XUrlTG5UGcMSZOBcEUpisRPEmQWUOTWIoDQ5FOia/
|
||||||
|
GI+Ki523r2ruEmbmG37EBSBXdxIdndqrjy+QVAmCebyDx9eVEGOIpn26bW5LKeru
|
||||||
|
mJxa/CFBaKi4bRvmdJRLAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB
|
||||||
|
Af8EBTADAQH/MB0GA1UdDgQWBBS182Xy/rAKkh/7PH3zRKCsYyXDFDANBgkqhkiG
|
||||||
|
9w0BAQsFAAOCAgEAncDZNytDbrrVe68UT6py1lfF2h6Tm2p8ro42i87WWyP2LK8Y
|
||||||
|
nLHC0hvNfWeWmjZQYBQfGC5c7aQRezak+tHLdmrNKHkn5kn+9E9LCjCaEsyIIn2j
|
||||||
|
qdHlAkepu/C3KnNtVx5tW07e5bvIjJScwkCDbP3akWQixPpRFAsnP+ULx7k0aO1x
|
||||||
|
qAeaAhQ2rgo1F58hcflgqKTXnpPM02intVfiVVkX5GXpJjK5EoQtLceyGOrkxlM/
|
||||||
|
sTPq4UrnypmsqSagWV3HcUlYtDinc+nukFk6eR4XkzXBbwKajl0YjztfrCIHOn5Q
|
||||||
|
CJL6TERVDbM/aAPly8kJ1sWGLuvvWYzMYgLzDul//rUF10gEMWaXVZV51KpS9DY/
|
||||||
|
5CunuvCXmEQJHo7kGcViT7sETn6Jz9KOhvYcXkJ7po6d93A/jy4GKPIPnsKKNEmR
|
||||||
|
xUuXY4xRdh45tMJnLTUDdC9FIU0flTeO9/vNpVA8OPU1i14vCz+MU8KX1bV3GXm/
|
||||||
|
fxlB7VBBjX9v5oUep0o/j68R/iDlCOM4VVfRa8gX6T2FU7fNdatvGro7uQzIvWof
|
||||||
|
gN9WUwCbEMBy/YhBSrXycKA8crgGg3x1mIsopn88JKwmMBa68oS7EHM9w7C4y71M
|
||||||
|
7DiA+/9Qdp9RBWJpTS9i/mDnJg1xvo8Xz49mrrgfmcAXTCJqXi24NatI3Oc=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIICTjCCAdSgAwIBAgIRAIPgc3k5LlLVLtUUvs4K/QcwCgYIKoZIzj0EAwMwaDEL
|
||||||
|
MAkGA1UEBhMCVVMxMzAxBgNVBAoTKihTVEFHSU5HKSBJbnRlcm5ldCBTZWN1cml0
|
||||||
|
eSBSZXNlYXJjaCBHcm91cDEkMCIGA1UEAxMbKFNUQUdJTkcpIEJvZ3VzIEJyb2Nj
|
||||||
|
b2xpIFgyMB4XDTIwMDkwNDAwMDAwMFoXDTQwMDkxNzE2MDAwMFowaDELMAkGA1UE
|
||||||
|
BhMCVVMxMzAxBgNVBAoTKihTVEFHSU5HKSBJbnRlcm5ldCBTZWN1cml0eSBSZXNl
|
||||||
|
YXJjaCBHcm91cDEkMCIGA1UEAxMbKFNUQUdJTkcpIEJvZ3VzIEJyb2Njb2xpIFgy
|
||||||
|
MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEOvS+w1kCzAxYOJbA06Aw0HFP2tLBLKPo
|
||||||
|
FQqR9AMskl1nC2975eQqycR+ACvYelA8rfwFXObMHYXJ23XLB+dAjPJVOJ2OcsjT
|
||||||
|
VqO4dcDWu+rQ2VILdnJRYypnV1MMThVxo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD
|
||||||
|
VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU3tGjWWQOwZo2o0busBB2766XlWYwCgYI
|
||||||
|
KoZIzj0EAwMDaAAwZQIwRcp4ZKBsq9XkUuN8wfX+GEbY1N5nmCRc8e80kUkuAefo
|
||||||
|
uc2j3cICeXo1cOybQ1iWAjEA3Ooawl8eQyR4wrjCofUE8h44p0j7Yl/kBlJZT8+9
|
||||||
|
vbtH7QiVzeKCOTQPINyRql6P
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIFWzCCA0OgAwIBAgIQTfQrldHumzpMLrM7jRBd1jANBgkqhkiG9w0BAQsFADBm
|
||||||
|
MQswCQYDVQQGEwJVUzEzMDEGA1UEChMqKFNUQUdJTkcpIEludGVybmV0IFNlY3Vy
|
||||||
|
aXR5IFJlc2VhcmNoIEdyb3VwMSIwIAYDVQQDExkoU1RBR0lORykgUHJldGVuZCBQ
|
||||||
|
ZWFyIFgxMB4XDTIwMDkwNDAwMDAwMFoXDTI1MDkxNTE2MDAwMFowWTELMAkGA1UE
|
||||||
|
BhMCVVMxIDAeBgNVBAoTFyhTVEFHSU5HKSBMZXQncyBFbmNyeXB0MSgwJgYDVQQD
|
||||||
|
Ex8oU1RBR0lORykgQXJ0aWZpY2lhbCBBcHJpY290IFIzMIIBIjANBgkqhkiG9w0B
|
||||||
|
AQEFAAOCAQ8AMIIBCgKCAQEAu6TR8+74b46mOE1FUwBrvxzEYLck3iasmKrcQkb+
|
||||||
|
gy/z9Jy7QNIAl0B9pVKp4YU76JwxF5DOZZhi7vK7SbCkK6FbHlyU5BiDYIxbbfvO
|
||||||
|
L/jVGqdsSjNaJQTg3C3XrJja/HA4WCFEMVoT2wDZm8ABC1N+IQe7Q6FEqc8NwmTS
|
||||||
|
nmmRQm4TQvr06DP+zgFK/MNubxWWDSbSKKTH5im5j2fZfg+j/tM1bGaczFWw8/lS
|
||||||
|
nukyn5J2L+NJYnclzkXoh9nMFnyPmVbfyDPOc4Y25aTzVoeBKXa/cZ5MM+WddjdL
|
||||||
|
biWvm19f1sYn1aRaAIrkppv7kkn83vcth8XCG39qC2ZvaQIDAQABo4IBEDCCAQww
|
||||||
|
DgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAS
|
||||||
|
BgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTecnpI3zHDplDfn4Uj31c3S10u
|
||||||
|
ZTAfBgNVHSMEGDAWgBS182Xy/rAKkh/7PH3zRKCsYyXDFDA2BggrBgEFBQcBAQQq
|
||||||
|
MCgwJgYIKwYBBQUHMAKGGmh0dHA6Ly9zdGcteDEuaS5sZW5jci5vcmcvMCsGA1Ud
|
||||||
|
HwQkMCIwIKAeoByGGmh0dHA6Ly9zdGcteDEuYy5sZW5jci5vcmcvMCIGA1UdIAQb
|
||||||
|
MBkwCAYGZ4EMAQIBMA0GCysGAQQBgt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCN
|
||||||
|
DLam9yN0EFxxn/3p+ruWO6n/9goCAM5PT6cC6fkjMs4uas6UGXJjr5j7PoTQf3C1
|
||||||
|
vuxiIGRJC6qxV7yc6U0X+w0Mj85sHI5DnQVWN5+D1er7mp13JJA0xbAbHa3Rlczn
|
||||||
|
y2Q82XKui8WHuWra0gb2KLpfboYj1Ghgkhr3gau83pC/WQ8HfkwcvSwhIYqTqxoZ
|
||||||
|
Uq8HIf3M82qS9aKOZE0CEmSyR1zZqQxJUT7emOUapkUN9poJ9zGc+FgRZvdro0XB
|
||||||
|
yphWXDaqMYph0DxW/10ig5j4xmmNDjCRmqIKsKoWA52wBTKKXK1na2ty/lW5dhtA
|
||||||
|
xkz5rVZFd4sgS4J0O+zm6d5GRkWsNJ4knotGXl8vtS3X40KXeb3A5+/3p0qaD215
|
||||||
|
Xq8oSNORfB2oI1kQuyEAJ5xvPTdfwRlyRG3lFYodrRg6poUBD/8fNTXMtzydpRgy
|
||||||
|
zUQZh/18F6B/iW6cbiRN9r2Hkh05Om+q0/6w0DdZe+8YrNpfhSObr/1eVZbKGMIY
|
||||||
|
qKmyZbBNu5ysENIK5MPc14mUeKmFjpN840VR5zunoU52lqpLDua/qIM8idk86xGW
|
||||||
|
xx2ml43DO/Ya/tVZVok0mO0TUjzJIfPqyvr455IsIut4RlCR9Iq0EDTve2/ZwCuG
|
||||||
|
hSjpTUFGSiQrR2JK2Evp+o6AETUkBCO1aw0PpQBPDQ==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDCzCCApGgAwIBAgIRALRY4992FVxZJKOJ3bpffWIwCgYIKoZIzj0EAwMwaDEL
|
||||||
|
MAkGA1UEBhMCVVMxMzAxBgNVBAoTKihTVEFHSU5HKSBJbnRlcm5ldCBTZWN1cml0
|
||||||
|
eSBSZXNlYXJjaCBHcm91cDEkMCIGA1UEAxMbKFNUQUdJTkcpIEJvZ3VzIEJyb2Nj
|
||||||
|
b2xpIFgyMB4XDTIwMDkwNDAwMDAwMFoXDTI1MDkxNTE2MDAwMFowVTELMAkGA1UE
|
||||||
|
BhMCVVMxIDAeBgNVBAoTFyhTVEFHSU5HKSBMZXQncyBFbmNyeXB0MSQwIgYDVQQD
|
||||||
|
ExsoU1RBR0lORykgRXJzYXR6IEVkYW1hbWUgRTEwdjAQBgcqhkjOPQIBBgUrgQQA
|
||||||
|
IgNiAAT9v/PJUtHOTk28nXCXrpP665vI4Z094h8o7R+5E6yNajZa0UubqjpZFoGq
|
||||||
|
u785/vGXj6mdfIzc9boITGusZCSWeMj5ySMZGZkS+VSvf8VQqj+3YdEu4PLZEjBA
|
||||||
|
ivRFpEejggEQMIIBDDAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUH
|
||||||
|
AwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFOv5JcKA
|
||||||
|
KGbibQiSMvPC4a3D/zVFMB8GA1UdIwQYMBaAFN7Ro1lkDsGaNqNG7rAQdu+ul5Vm
|
||||||
|
MDYGCCsGAQUFBwEBBCowKDAmBggrBgEFBQcwAoYaaHR0cDovL3N0Zy14Mi5pLmxl
|
||||||
|
bmNyLm9yZy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3N0Zy14Mi5jLmxlbmNy
|
||||||
|
Lm9yZy8wIgYDVR0gBBswGTAIBgZngQwBAgEwDQYLKwYBBAGC3xMBAQEwCgYIKoZI
|
||||||
|
zj0EAwMDaAAwZQIwXcZbdgxcGH9rTErfSTkXfBKKygU0yO7OpbuNeY1id0FZ/hRY
|
||||||
|
N5fdLOGuc+aHfCsMAjEA0P/xwKr6NQ9MN7vrfGAzO397PApdqfM7VdFK18aEu1xm
|
||||||
|
3HMFKzIR8eEPsMx4smMl
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIEqzCCApOgAwIBAgIRAIvhKg5ZRO08VGQx8JdhT+UwDQYJKoZIhvcNAQELBQAw
|
|
||||||
GjEYMBYGA1UEAwwPRmFrZSBMRSBSb290IFgxMB4XDTE2MDUyMzIyMDc1OVoXDTM2
|
|
||||||
MDUyMzIyMDc1OVowIjEgMB4GA1UEAwwXRmFrZSBMRSBJbnRlcm1lZGlhdGUgWDEw
|
|
||||||
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDtWKySDn7rWZc5ggjz3ZB0
|
|
||||||
8jO4xti3uzINfD5sQ7Lj7hzetUT+wQob+iXSZkhnvx+IvdbXF5/yt8aWPpUKnPym
|
|
||||||
oLxsYiI5gQBLxNDzIec0OIaflWqAr29m7J8+NNtApEN8nZFnf3bhehZW7AxmS1m0
|
|
||||||
ZnSsdHw0Fw+bgixPg2MQ9k9oefFeqa+7Kqdlz5bbrUYV2volxhDFtnI4Mh8BiWCN
|
|
||||||
xDH1Hizq+GKCcHsinDZWurCqder/afJBnQs+SBSL6MVApHt+d35zjBD92fO2Je56
|
|
||||||
dhMfzCgOKXeJ340WhW3TjD1zqLZXeaCyUNRnfOmWZV8nEhtHOFbUCU7r/KkjMZO9
|
|
||||||
AgMBAAGjgeMwgeAwDgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAw
|
|
||||||
HQYDVR0OBBYEFMDMA0a5WCDMXHJw8+EuyyCm9Wg6MHoGCCsGAQUFBwEBBG4wbDA0
|
|
||||||
BggrBgEFBQcwAYYoaHR0cDovL29jc3Auc3RnLXJvb3QteDEubGV0c2VuY3J5cHQu
|
|
||||||
b3JnLzA0BggrBgEFBQcwAoYoaHR0cDovL2NlcnQuc3RnLXJvb3QteDEubGV0c2Vu
|
|
||||||
Y3J5cHQub3JnLzAfBgNVHSMEGDAWgBTBJnSkikSg5vogKNhcI5pFiBh54DANBgkq
|
|
||||||
hkiG9w0BAQsFAAOCAgEABYSu4Il+fI0MYU42OTmEj+1HqQ5DvyAeyCA6sGuZdwjF
|
|
||||||
UGeVOv3NnLyfofuUOjEbY5irFCDtnv+0ckukUZN9lz4Q2YjWGUpW4TTu3ieTsaC9
|
|
||||||
AFvCSgNHJyWSVtWvB5XDxsqawl1KzHzzwr132bF2rtGtazSqVqK9E07sGHMCf+zp
|
|
||||||
DQVDVVGtqZPHwX3KqUtefE621b8RI6VCl4oD30Olf8pjuzG4JKBFRFclzLRjo/h7
|
|
||||||
IkkfjZ8wDa7faOjVXx6n+eUQ29cIMCzr8/rNWHS9pYGGQKJiY2xmVC9h12H99Xyf
|
|
||||||
zWE9vb5zKP3MVG6neX1hSdo7PEAb9fqRhHkqVsqUvJlIRmvXvVKTwNCP3eCjRCCI
|
|
||||||
PTAvjV+4ni786iXwwFYNz8l3PmPLCyQXWGohnJ8iBm+5nk7O2ynaPVW0U2W+pt2w
|
|
||||||
SVuvdDM5zGv2f9ltNWUiYZHJ1mmO97jSY/6YfdOUH66iRtQtDkHBRdkNBsMbD+Em
|
|
||||||
2TgBldtHNSJBfB3pm9FblgOcJ0FSWcUDWJ7vO0+NTXlgrRofRT6pVywzxVo6dND0
|
|
||||||
WzYlTWeUVsO40xJqhgUQRER9YLOLxJ0O6C8i0xFxAMKOtSdodMB3RIwt7RFQ0uyt
|
|
||||||
n5Z5MqkYhlMI3J1tPRTp1nEt9fyGspBOO05gi148Qasp+3N+svqKomoQglNoAxU=
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
@ -2,9 +2,9 @@ global
|
|||||||
tune.ssl.default-dh-param 1024
|
tune.ssl.default-dh-param 1024
|
||||||
|
|
||||||
defaults
|
defaults
|
||||||
timeout connect 5000
|
timeout connect 5s
|
||||||
timeout client 50000
|
timeout client 50s
|
||||||
timeout server 50000
|
timeout server 50s
|
||||||
|
|
||||||
frontend http-in
|
frontend http-in
|
||||||
mode http
|
mode http
|
||||||
@ -34,6 +34,10 @@ frontend ssl-in
|
|||||||
tcp-request content accept if { req.ssl_hello_type 1 }
|
tcp-request content accept if { req.ssl_hello_type 1 }
|
||||||
|
|
||||||
acl is_ssl req.ssl_ver 2:3.4
|
acl is_ssl req.ssl_ver 2:3.4
|
||||||
|
|
||||||
|
acl host_tunnel req_ssl_sni -i "tunnel.${HAPROXY_HOSTNAME}"
|
||||||
|
use_backend redirect-to-tunnel-in if host_tunnel
|
||||||
|
|
||||||
use_backend redirect-to-https-in if is_ssl
|
use_backend redirect-to-https-in if is_ssl
|
||||||
use_backend vpn-devices if !is_ssl
|
use_backend vpn-devices if !is_ssl
|
||||||
|
|
||||||
@ -42,6 +46,11 @@ backend redirect-to-https-in
|
|||||||
balance roundrobin
|
balance roundrobin
|
||||||
server localhost 127.0.0.1:444 send-proxy-v2
|
server localhost 127.0.0.1:444 send-proxy-v2
|
||||||
|
|
||||||
|
backend redirect-to-tunnel-in
|
||||||
|
mode tcp
|
||||||
|
balance roundrobin
|
||||||
|
server localhost 127.0.0.1:3129
|
||||||
|
|
||||||
frontend https-in
|
frontend https-in
|
||||||
mode http
|
mode http
|
||||||
option forwardfor
|
option forwardfor
|
||||||
@ -118,3 +127,8 @@ listen vpn-tunnel
|
|||||||
mode tcp
|
mode tcp
|
||||||
bind *:3128
|
bind *:3128
|
||||||
server balena_vpn vpn:3128 check port 3128
|
server balena_vpn vpn:3128 check port 3128
|
||||||
|
|
||||||
|
listen vpn-tunnel-tls
|
||||||
|
mode tcp
|
||||||
|
bind *:3129 ssl crt /etc/ssl/private/open-balena.pem
|
||||||
|
server balena_vpn vpn:3128 check port 3128
|
||||||
|
Reference in New Issue
Block a user