base container

This commit is contained in:
2025-02-27 19:08:40 +01:00
parent 3ca61ea4e6
commit 07aa3240d6
6 changed files with 210 additions and 1 deletions

1
.env.example Normal file
View File

@@ -0,0 +1 @@
DOMAIN=example.com

4
.gitignore vendored
View File

@@ -0,0 +1,4 @@
/acme/
/self-signed/
/certdump/
.env

View File

@@ -1,2 +1,65 @@
# ansible-cloud
# Konfiguracja Traefik
## 1. Przygotowanie plików konfiguracyjnych
### Zmień nazwę pliku `.env.example` na `.env`
```bash
mv .env.example .env
```
### Uzupełnij swoją nazwę domeny w `.env`
Otwórz plik `.env` i ustaw swoją domenę:
```ini
DOMAIN=example.com
```
### Uzupełnij swój adres e-mail w `config/traefik.yml`
Otwórz plik `config/traefik.yml` i dodaj swój adres e-mail:
```yaml
email: your-email@example.com
```
## 2. Uruchomienie usług
Uruchom kontenery w tle za pomocą Docker Compose:
```bash
sudo docker compose up -d
```
## 3. Dodawanie dodatkowych usług
Kolejne usługi można dodać do sieci `traefik_public`.
### Przykładowa konfiguracja
```yaml
services:
example-service:
image: my-custom-image
networks:
- traefik_public # Usługa dołączona do sieci Traefik
labels:
- traefik.enable=true # Włącz obsługę przez Traefik
- traefik.http.routers.example.rule=Host(`example.${DOMAIN}`) # Reguła przekierowania
- traefik.http.services.example-service.loadbalancer.server.port=8080 # Port usługi
- traefik.http.routers.example.entrypoints=websecure # Użycie wejścia HTTPS
- traefik.http.routers.example.tls=true # Włączenie TLS
- traefik.http.routers.example.tls.certresolver=tls-resolver # Użycie Let's Encrypt
- com.centurylinklabs.watchtower.enable=true # Jeśli jest watchtower
networks:
traefik_public:
external: true # Użycie zewnętrznej sieci Traefik
```
## 4. Informacje dodatkowe
- `traefik_public` to zewnętrzna sieć Traefik, do której należy dodać nowe usługi.
- `tls-resolver` to mechanizm uzyskiwania certyfikatów SSL, musi być poprawnie skonfigurowany w `traefik.yml`.
- Watchtower (`com.centurylinklabs.watchtower.enable=true`) automatycznie aktualizuje kontenery, jeśli wykryje nową wersję obrazu.

42
compose.yaml Normal file
View File

@@ -0,0 +1,42 @@
services:
traefik:
image: traefik
container_name: traefik
restart: unless-stopped
ports:
- 80:80 # HTTP
- 443:443/tcp # HTTPS HTTP1/2
- 443:443/udp # HTTPS HTTP3
# - 8080:8080 # TREFIK DASHBOARD
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro"
- /etc/localtime:/etc/localtime:ro
- ./config/dynamic.yml:/etc/traefik/dynamic.yml:ro
- ./config/traefik.yml:/etc/traefik/traefik.yml:ro
- ./acme:/etc/traefik/acme
- ./self-signed:/etc/traefik/ssl
networks:
- traefik_public
labels:
- traefik.enable=true
- traefik.http.routers.traefik.rule=Host(`traefik.${DOMAIN}`)
- traefik.http.services.traefik-traefik.loadbalancer.server.port=8080
- traefik.http.routers.traefik.entrypoints=websecure
- traefik.http.routers.traefik.tls=true
- traefik.http.routers.traefik.tls.certresolver=certresolver
- "com.centurylinklabs.watchtower.enable=true"
certdumper:
image: ghcr.io/kereis/traefik-certs-dumper:latest
restart: unless-stopped
container_name: certdumper
volumes:
- ./acme:/traefik:ro
- ./certdump:/output:rw
network_mode: none
environment:
COMBINED_PEM: fullchain.pem
networks:
traefik_public:
external: true

33
config/dynamic.yml Normal file
View File

@@ -0,0 +1,33 @@
################################################################
# Self-signed certificate configuration
################################################################
# tls:
# stores:
# default:
# defaultCertificate:
# certFile: /etc/traefik/ssl/local-domain.crt
# keyFile: /etc/traefik/ssl/local-domain.key
################################################################
# Middlewares configuration
################################################################
# http:
# middlewares:
# authentik:
# forwardAuth:
# address: http://server:9000/outpost.goauthentik.io/auth/traefik
# trustForwardHeader: true
# authResponseHeaders:
# - X-authentik-username
# - X-authentik-groups
# - X-authentik-email
# - X-authentik-name
# - X-authentik-uid
# - X-authentik-jwt
# - X-authentik-meta-jwks
# - X-authentik-meta-outpost
# - X-authentik-meta-provider
# - X-authentik-meta-app
# - X-authentik-meta-version

66
config/traefik.yml Normal file
View File

@@ -0,0 +1,66 @@
################################################################
# Global configuration
################################################################
global:
checkNewVersion: true
sendAnonymousUsage: true
################################################################
# EntryPoints configuration
################################################################
entryPoints:
web:
address: :80
http:
redirections:
entryPoint:
to: "websecure"
scheme: "https"
websecure:
address: :443
http3: {}
################################################################
# API and dashboard configuration
################################################################
api:
insecure: true
dashboard: true
################################################################
# Docker configuration backend
################################################################
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
network: "traefik_public"
file:
filename: "/etc/traefik/dynamic.yml"
watch: true
providersThrottleDuration: 10
certificatesResolvers:
tls-resolver:
acme:
email: mail@example.com
storage: "/etc/traefik/acme/acme.json"
tlsChallenge: {}
################################################################
# Logging
################################################################
metrics:
prometheus:
buckets:
- 0.1
- 0.3
- 1.2
- 5.0
addRoutersLabels: true