1
0

feat: nucene http na https

This commit is contained in:
2026-03-02 01:49:05 +01:00
parent 69f5bb7068
commit 9ad21e6f34
5 changed files with 70 additions and 42 deletions

View File

@@ -1,2 +1,3 @@
DEV_URL=dev.linuxak.com DEV_URL=dev.linuxak.com
EXTERNAL_NETWORK=traefiknet EXTERNAL_NETWORK=traefiknet
FORCE_HTTPS_REDIRECT=true

View File

@@ -1,32 +1,44 @@
# Local Docker Management - Traefik & Portainer # Local Docker Management
Docker stack s reverse proxy (Traefik) a webovým rozhraním pro správu kontejnerů (Portainer). ## Traefik
- Reverzní proxy
- Validní https pro lokální vývoj (wildcard certifikát s vlastním CA)
- Přizpůsobitelné nastavení nuceného přesměrování HTTP na HTTPS
- Připojení dalších (vlastních) služeb pomocí Traefik labels
- Dashboard pro monitorování a správu routování
## Portainer
- Webové rozhraní pro správu kontejnerů
## Požadavky ## Požadavky
- Docker & Docker Compose - Docker & Docker Compose
- Nastavené DNS záznamy nebo `/etc/hosts`
## Instalace ## Instalace
### 1. Konfigurace prostředí ### 1. Konfigurace prostředí
```bash ```bash
# Přejmenujte soubor .env.example na .env # Zkopírujte soubor .env.example na .env
mv .env.example .env cp .env.example .env
# Upravte .env soubor dle svých nastavení
DEV_URL=dev.linuxak.com
EXTERNAL_NETWORK=traefiknet
``` ```
V případě nutnosti upravte hodnoty dle svých nastavení
`DEV_URL` - doména používaná pro lokální vývoj
`EXTERNAL_NETWORK` - název externí sítě, kterou používáte pro své kontejnery
`FORCE_HTTPS_REDIRECT` - nastavení vynuceného přesměrování HTTP na HTTPS (true/false)
> **Poznámka:** > **Poznámka:**
> >
> Doménu `dev.linuxak.com` můžete ponechat, směřuje na `127.0.0.1` tedy na váš lokální počítač. Pokud chcete použít > Přednastavenou doménu `dev.linuxak.com` můžete ponechat. Je plně funkční a směřuje
> jinou doménu, nezapomeňte ji přidat do vašeho `/etc/hosts` souboru a vygenerovat novou sadu certifikátů pro tuto doménu. > na IP adresu `127.0.0.1` tedy na váš lokální počítač.
### 2. Import CA do systému ### 2. Import CA do systému
Traefik používá vlastní certifikát pro HTTPS komunikaci. Pro správné fungování je potřeba importovat `rootCA.pem` do důvěryhodných certifikátů vašeho operačního systému. Traefik používá pro doménu `dev.linuxak.com` vlastní certifikát pro HTTPS komunikaci. Pro správné
fungování je potřeba importovat `rootCA.pem` do důvěryhodných certifikátů vašeho operačního systému.
#### MacOS #### MacOS
```bash ```bash
@@ -83,9 +95,11 @@ Složka `portainer` je persistentním úložištěm pro službu Portainer a vše
Do vašeho `docker-compose.yml` přidejte Traefik labels: Do vašeho `docker-compose.yml` přidejte Traefik labels:
> Hodnotu `<VASE_URL>` nahraďte skutečnou doménou své služby. `<VASE_URL>` - nahraďte skutečnou doménou své služby
> Hodnotu `<VAS_PORT>` nahraďte skutečným portem své služby. `<VAS_PORT>` - nahraďte skutečným portem své služby
> Hodnotu `<VASE_EXTERNI_SIT>` nahraďte skutečným náyvem své externí sítě. `<VASE_EXTERNI_SIT>` - nahraďte skutečným názvem své externí sítě
Příklad pro službu s náyvem `myapp`:
```yaml ```yaml
labels: labels:

View File

@@ -0,0 +1,6 @@
services:
traefik:
environment:
TRAEFIK_ENTRYPOINTS_WEB_HTTP_REDIRECTIONS_ENTRYPOINT_TO: websecure
TRAEFIK_ENTRYPOINTS_WEB_HTTP_REDIRECTIONS_ENTRYPOINT_SCHEME: https
TRAEFIK_ENTRYPOINTS_WEB_HTTP_REDIRECTIONS_ENTRYPOINT_PERMANENT: true

View File

@@ -8,27 +8,24 @@ services:
image: traefik:latest image: traefik:latest
container_name: traefik container_name: traefik
restart: always restart: always
command: environment:
- "--global.checknewversion=false" TRAEFIK_GLOBAL_CHECKNEWVERSION: false
- "--log.level=INFO" TRAEFIK_LOG_LEVEL: INFO
- "--log.filepath=/logs/traefik.log" TRAEFIK_LOG_FILEPATH: /logs/traefik.log
- "--accesslog=true" TRAEFIK_ACCESSLOG: true
- "--accesslog.filepath=/logs/access.log" TRAEFIK_ACCESSLOG_FILEPATH: /logs/access.log
- "--entrypoints.web.address=:80" TRAEFIK_ENTRYPOINTS_WEB_ADDRESS: ":80"
- "--entrypoints.web.forwardedheaders.trustedips=0.0.0.0/0" TRAEFIK_ENTRYPOINTS_WEB_FORWARDEDHEADERS_TRUSTEDIPS: "0.0.0.0/0"
- "--entrypoints.web.http.redirections.entrypoint.to=websecure" TRAEFIK_ENTRYPOINTS_WEBSECURE_ADDRESS: ":443"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https" TRAEFIK_ENTRYPOINTS_WEBSECURE_FORWARDEDHEADERS_TRUSTEDIPS: "0.0.0.0/0"
- "--entrypoints.web.http.redirections.entrypoint.permanent=true" TRAEFIK_API_DASHBOARD: true
- "--entrypoints.websecure.address=:443" TRAEFIK_PROVIDERS_DOCKER: true
- "--entrypoints.websecure.forwardedheaders.trustedips=0.0.0.0/0" TRAEFIK_PROVIDERS_DOCKER_ENDPOINT: "unix:///var/run/docker.sock"
- "--api.dashboard=true" TRAEFIK_PROVIDERS_DOCKER_NETWORK: "${EXTERNAL_NETWORK:-traefiknet}"
- "--providers.docker=true" TRAEFIK_PROVIDERS_DOCKER_EXPOSEDBYDEFAULT: false
- "--providers.docker.endpoint=unix:///var/run/docker.sock" TRAEFIK_PROVIDERS_DOCKER_WATCH: true
- "--providers.docker.network=${EXTERNAL_NETWORK:-traefiknet}" TRAEFIK_PROVIDERS_FILE_FILENAME: "/etc/traefik/traefik_dynamic.yml"
- "--providers.docker.exposedbydefault=false" TRAEFIK_PROVIDERS_FILE_WATCH: true
- "--providers.docker.watch=true"
- "--providers.file.filename=/etc/traefik/traefik_dynamic.yml"
- "--providers.file.watch=true"
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.traefik-dashboard.rule=Host(`traefik.${DEV_URL}`)" - "traefik.http.routers.traefik-dashboard.rule=Host(`traefik.${DEV_URL}`)"
@@ -39,10 +36,10 @@ services:
- "80:80" - "80:80"
- "443:443" - "443:443"
volumes: volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik/certs:/certs:ro - ./traefik/certs:/certs:ro
- ./traefik/traefik_dynamic.yml:/etc/traefik/traefik_dynamic.yml:ro
- ./traefik/logs:/logs - ./traefik/logs:/logs
- ./traefik/traefik_dynamic.yml:/etc/traefik/traefik_dynamic.yml:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
networks: networks:
- external-net - external-net

12
run
View File

@@ -10,6 +10,7 @@ if [[ ! -f $ENV_FILE ]]; then
echo "Please create $ENV_FILE file with the following variables:" echo "Please create $ENV_FILE file with the following variables:"
echo "DEV_URL=your.domain.com" echo "DEV_URL=your.domain.com"
echo "EXTERNAL_NETWORK=your_network_name" echo "EXTERNAL_NETWORK=your_network_name"
echo "FORCE_HTTPS_REDIRECT=true # Set to 'false' to disable HTTPS redirect"
exit 1 exit 1
fi fi
@@ -19,8 +20,17 @@ source $ENV_FILE
case "$ACTION" in case "$ACTION" in
"up") "up")
docker network create $EXTERNAL_NETWORK > /dev/null 2>&1 || true docker network create $EXTERNAL_NETWORK > /dev/null 2>&1 || true
# Check HTTPS redirect setting
if [[ "${FORCE_HTTPS_REDIRECT}" == "true" ]]; then
MSG="Starting with HTTPS redirect enabled..."
docker compose -f docker-compose.yml -f docker-compose.https-redirect.yml up -d
else
MSG="Starting without HTTPS redirect..."
docker compose up -d docker compose up -d
echo "\nServices are starting up..." fi
echo "\n${MSG}"
sleep 2 sleep 2
echo "\nAvailable services:" echo "\nAvailable services:"
echo "Traefik: https://traefik.${DEV_URL}" echo "Traefik: https://traefik.${DEV_URL}"