73 lines
2.8 KiB
Bash
73 lines
2.8 KiB
Bash
set -e
|
|
|
|
printenv
|
|
# Function to add arguments to the command
|
|
add_arg() {
|
|
TRAEFIK_CMD="$TRAEFIK_CMD $1"
|
|
}
|
|
|
|
# Initialize the base command
|
|
TRAEFIK_CMD="traefik"
|
|
|
|
# Base Traefik arguments (from your existing configuration)
|
|
add_arg "--log.level=${TRAEFIK_LOG_LEVEL:-ERROR}"
|
|
# enable dashboard
|
|
add_arg "--api.dashboard=true"
|
|
# define entrypoints
|
|
add_arg "--entryPoints.http.address=:80"
|
|
add_arg "--entryPoints.http.http.redirections.entryPoint.to=https"
|
|
add_arg "--entryPoints.http.http.redirections.entryPoint.scheme=https"
|
|
add_arg "--entryPoints.https.address=:443"
|
|
# change default timeouts for long-running requests
|
|
# this is needed for webdav clients that do not support the TUS protocol
|
|
add_arg "--entryPoints.https.transport.respondingTimeouts.readTimeout=12h"
|
|
add_arg "--entryPoints.https.transport.respondingTimeouts.writeTimeout=12h"
|
|
add_arg "--entryPoints.https.transport.respondingTimeouts.idleTimeout=3m"
|
|
# docker provider (get configuration from container labels)
|
|
add_arg "--providers.docker.endpoint=unix:///var/run/docker.sock"
|
|
add_arg "--providers.docker.exposedByDefault=false"
|
|
# access log
|
|
add_arg "--accessLog=${TRAEFIK_ACCESS_LOG:-false}"
|
|
add_arg "--accessLog.format=json"
|
|
add_arg "--accessLog.fields.headers.names.X-Request-Id=keep"
|
|
|
|
# Add Let's Encrypt configuration if enabled
|
|
if [ "${TRAEFIK_SERVICES_TLS_CONFIG}" = "tls.certresolver=letsencrypt" ]; then
|
|
echo "Configuring Traefik with Let's Encrypt..."
|
|
add_arg "--certificatesResolvers.letsencrypt.acme.email=${TRAEFIK_ACME_MAIL:-example@example.org}"
|
|
add_arg "--certificatesResolvers.letsencrypt.acme.storage=/certs/acme.json"
|
|
add_arg "--certificatesResolvers.letsencrypt.acme.httpChallenge.entryPoint=http"
|
|
add_arg "--certificatesResolvers.letsencrypt.acme.caserver=${TRAEFIK_ACME_CASERVER:-https://acme-v02.api.letsencrypt.org/directory}"
|
|
fi
|
|
|
|
# Add local certificate configuration if enabled
|
|
if [ "${TRAEFIK_SERVICES_TLS_CONFIG}" = "tls=true" ]; then
|
|
echo "Configuring Traefik with local certificates..."
|
|
add_arg "--providers.file.directory=/etc/traefik/dynamic"
|
|
add_arg "--providers.file.watch=true"
|
|
fi
|
|
|
|
# Warning if neither certificate method is enabled
|
|
if [ "${TRAEFIK_SERVICES_TLS_CONFIG}" != "tls=true" ] && [ "${TRAEFIK_SERVICES_TLS_CONFIG}" != "tls.certresolver=letsencrypt" ]; then
|
|
echo "WARNING: Neither Let's Encrypt nor local certificates are enabled."
|
|
echo "HTTPS will not work properly without certificate configuration."
|
|
fi
|
|
|
|
# Add any custom arguments from environment variable
|
|
if [ -n "${TRAEFIK_CUSTOM_ARGS}" ]; then
|
|
echo "Adding custom Traefik arguments: ${TRAEFIK_CUSTOM_ARGS}"
|
|
TRAEFIK_CMD="$TRAEFIK_CMD $TRAEFIK_CUSTOM_ARGS"
|
|
fi
|
|
|
|
# Add any additional arguments passed to the script
|
|
for arg in "$@"; do
|
|
add_arg "$arg"
|
|
done
|
|
|
|
# Print the final command for debugging
|
|
echo "Starting Traefik with command:"
|
|
echo "$TRAEFIK_CMD"
|
|
|
|
# Execute Traefik
|
|
exec $TRAEFIK_CMD
|