#0000 - Add configuration for Traefik standalone setup

Added a `docker-compose.yml` to set up Traefik as a standalone reverse proxy with Docker Compose. Updated `README.md` for installation and usage instructions, and added `.gitignore`, `LICENSE`, and `.env.dist` files for environment configuration and licensing.
This commit is contained in:
Guillaume "B.B." Van Hemmen 2024-10-09 17:30:14 +02:00
parent dff2745e93
commit 2f3caa4b5c
5 changed files with 131 additions and 2 deletions

8
.env.dist Normal file
View file

@ -0,0 +1,8 @@
# Automated Certificate Management Environment (ACME) email address.
# This is used for certificate-related notifications and recovery purposes.
# Example: ACME_EMAIL='your-email@example.com'
ACME_EMAIL='CHANGEME'
# IPs you can trust to forward headers. Useful if your application is behind Cloudflare, for example.
# Add IPs as a comma-separated list.
TRUSTED_IPS='10.0.0.0/8,172.16.0.0/16,192.168.0.0/16,fc00::/7,173.245.48.0/20,103.21.244.0/22,103.22.200.0/22,103.31.4.0/22,141.101.64.0/18,108.162.192.0/18,190.93.240.0/20,188.114.96.0/20,197.234.240.0/22,198.41.128.0/17,162.158.0.0/15,104.16.0.0/13,104.24.0.0/14,172.64.0.0/13,131.0.72.0/22,2400:cb00::/32,2606:4700::/32,2803:f800::/32,2405:b500::/32,2405:8100::/32,2a06:98c0::/29,2c0f:f248::/32'

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
.env

21
LICENCE Normal file
View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 Guillaume 'B.B.' Van Hemmen
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,3 +1,49 @@
# traefik-standalone
# Traefik Standalone
choose this repository to deploy only traefik
## Introduction
This project sets up a standalone Traefik reverse proxy using Docker Compose. Traefik is a modern HTTP reverse proxy and
load balancer that makes deploying microservices and integrating them with your existing infrastructure easy.
## Table of Contents
- [Introduction](#introduction)
- [Prerequisites](#prerequisites)
- [Installation](#installation)
- [Usage](#usage)
- [License](#license)
## Prerequisites
- Docker: Make sure Docker is installed and running on your system.
- Docker Compose: You also need Docker Compose to orchestrate the container setup.
## Installation
1. Clone the repository:
```bash
git clone https://github.com/your-repository-url/traefik-standalone.git
cd traefik-standalone
```
2. Copy the environment variable template:
```bash
cp .env.dist .env
```
3. Customize the `.env` file as necessary for your environment.
## Usage
1. Start the Traefik service with Docker Compose:
```bash
docker compose up -d
```
2. You can now start adding your services and configure Traefik to reverse proxy to them.
## License
This project is licensed under the terms of the MIT license. See the [LICENSE](LICENSE) file for details.

53
docker-compose.yml Normal file
View file

@ -0,0 +1,53 @@
networks:
network:
name: traefik_network
services:
reverse-proxy:
image: traefik:v3.1 # The official Traefik docker image
command:
- '--api=true'
- '--api.dashboard=false'
- '--api.insecure=false'
- '--global.sendAnonymousUsage=false'
- '--global.checkNewVersion=false'
- '--log=true'
- '--log.level=WARN'
- '--providers.docker=true' # Enabling docker provider
- '--providers.docker.exposedbydefault=false' # Do not expose containers unless explicitly told so
- '--entrypoints.web.address=:80' # Traefik will listen to incoming request on the port 80 (HTTP)
- '--entrypoints.web.http.redirections.entrypoint.to=websecure'
- '--entrypoints.web.http.redirections.entrypoint.scheme=https'
## Please see the Forwarded Header Trust section of the Authelia Traefik Integration documentation.
- '--entryPoints.web.forwardedHeaders.trustedips=${TRUSTED_IPS:-}'
- '--entryPoints.web.proxyProtocol.trustedips=${TRUSTED_IPS:-}'
- '--entryPoints.web.forwardedHeaders.insecure=false'
- '--entryPoints.web.proxyProtocol.insecure=false'
- '--entrypoints.websecure.address=:443' # Traefik will listen to incoming request on the port 443 (HTTPS)
## Please see the Forwarded Header Trust section of the Authelia Traefik Integration documentation.
- '--entryPoints.websecure.forwardedHeaders.trustedips=${TRUSTED_IPS:-}'
- '--entryPoints.websecure.proxyProtocol.trustedips=${TRUSTED_IPS:-}'
- '--entryPoints.websecure.forwardedHeaders.insecure=false'
- '--entryPoints.websecure.proxyProtocol.insecure=false'
- '--certificatesresolvers.myresolver.acme.httpchallenge=true' # Enable a http challenge named 'myresolver'
- '--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web' # Tell it to use our predefined entrypoint named 'web'
- '--certificatesresolvers.myresolver.acme.email=${ACME_EMAIL}' # The email to provide to let's encrypt
- '--certificatesresolvers.myresolver.acme.storage=/acme.json' # Tell to store the certificate on a path under our volume
networks:
- network
ports:
- target: 80
published: 80
mode: host
- target: 443
published: 443
mode: host
volumes:
- /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events
- ../acme.json:/acme.json
deploy:
replicas: 1
restart_policy:
condition: any
delay: 5s