Setup
Setting up Configu Proxy server
Configuring Configu Proxy
You can configure the Configu Proxy server using environment variables. The following environment variables are available:
The (absolute) file path of the .configu
configuration file.
The host port to serve the HTTP server on.
Enables or disables transport layer security (TLS). - The CONFIGU_HTTP_TLS_CERT
and CONFIGU_HTTP_TLS_KEY
environment variables are required when CONFIGU_HTTP_TLS_ENABLED
is set to true
.
The (absolute) file path of the certificate to use for the TLS connection.
The (absolute) file path of the TLS key that should be used for the TLS connection.
Enables or disables the authentication mechanism. - The CONFIGU_AUTH_PRESHARED_KEYS
environment variable is required
when CONFIGU_AUTH_ENABLED
is set to true
.
Comma-separated list of pre-shared keys that are allowed to make requests to the server.
The public URL of the server.
Comma-separated list of origins that are allowed to make requests to the server.
Enables or disables the trust proxy setting.
Enables or disables request logging.
Enables or disables the API reference documentation route at /docs
.
Production Best Practices
For production environments, it is recommended to:
- Enable authentication using pre-shared keys.
CONFIGU_AUTH_ENABLED=true
andCONFIGU_AUTH_PRESHARED_KEYS=key1,key2
. - Disable request logging.
CONFIGU_LOG_ENABLED=false
. - Disable the API reference documentation route at
/docs
.CONFIGU_DOCS_ENABLED=false
. - Enable transport layer security (TLS) and use a valid certificate from a trusted certificate authority (CA).
CONFIGU_HTTP_TLS_ENABLED=true
,CONFIGU_HTTP_TLS_CERT=/path/to/cert.pem
, andCONFIGU_HTTP_TLS_KEY=/path/to/key.pem
. - Use a reverse proxy like Nginx, Caddy, Traefik or HAProxy to handle TLS termination and load balancing.
CONFIGU_HTTP_TRUST_PROXY=true
.
Generating a Self-Signed Certificate
For development purposes, you can generate a self-signed certificate
Using OpenSSL:
openssl req -x509 -newkey rsa:4096 -nodes -sha256 -subj '/CN=localhost' -keyout server.key -out server.crt
Using mkcert:
mkcert --install
mkcert -key-file server.key -cert-file server.crt localhost
Running Configu Proxy
Using Docker
You can run the Configu Proxy server using Docker. The following command starts the server:
docker run --rm --init \
-v /path/to/.configu:/config/.configu \
-e CONFIGU_CONFIG_FILE=/config/.configu \
-p 8080:8080 \
configu/proxy
Replace /path/to/.configu
with the path to your .configu
configuration file.
Here is an example configuration for running the Configu Proxy server on different port with authentication and TLS enabled:
docker run --rm --init \
-v /path/to/.configu:/config/.configu \
-v /path/to/certs:/config/certs \
-e CONFIGU_HTTP_PORT=3000 \
-e CONFIGU_AUTH_ENABLED=true -e CONFIGU_AUTH_PRESHARED_KEYS=token \
-e CONFIGU_HTTP_TLS_ENABLED=true -e CONFIGU_HTTP_TLS_CERT=/config/certs/localhost.pem -e CONFIGU_HTTP_TLS_KEY=/config/certs/localhost-key.pem \
-e CONFIGU_CONFIG_FILE=/config/.configu \
-p 3000:3000 \
configu/proxy
Replace /path/to/.configu
with the path to your .configu
configuration file and /path/to/certs
with the path to your certificate and key files.
Using Docker Compose
You can use Docker Compose to run the Configu Proxy server. Here is an example configuration:
version: '3'
services:
configu-proxy:
image: configu/proxy:latest
ports:
- '8080:8080'
volumes:
- /path/to/.configu:/config/.configu
environment:
CONFIGU_CONFIG_FILE: '/config/.configu'
Replace /path/to/.configu
with the path to your .configu
configuration file.
Run the following command to start the server:
docker-compose up
Using Kubernetes
You can deploy the Configu Proxy server on Kubernetes using a Deployment and a Service. Here is an example configuration:
apiVersion: apps/v1
kind: Deployment
metadata:
name: configu-proxy
spec:
replicas: 1
selector:
matchLabels:
app: configu-proxy
template:
metadata:
labels:
app: configu-proxy
spec:
containers:
- name: configu-proxy
image: configu/proxy
ports:
- containerPort: 8080
volumeMounts:
- name: configu-config
mountPath: /config
readOnly: true
env:
- name: CONFIGU_CONFIG_FILE
value: '/config/.configu'
volumes:
- name: configu-config
configMap:
name: configu-config
---
apiVersion: v1
kind: Service
metadata:
name: configu-proxy
spec:
type: LoadBalancer
ports:
- port: 443
targetPort: 8080
protocol: TCP
selector:
app: configu-proxy
Create a ConfigMap with your .configu
configuration file:
kubectl create configmap configu-config --from-file=/path/to/.configu
Replace /path/to/.configu
with the path to your .configu
configuration file.
Apply the configuration:
kubectl apply -f configu-proxy.yaml
Verify the deployment:
kubectl get pods -l app=configu-proxy
kubectl get svc -l app=configu-proxy