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
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
- Docker & Docker Compose
- Nastavené DNS záznamy nebo `/etc/hosts`
## Instalace
### 1. Konfigurace prostředí
```bash
# Přejmenujte soubor .env.example na .env
mv .env.example .env
# Upravte .env soubor dle svých nastavení
DEV_URL=dev.linuxak.com
EXTERNAL_NETWORK=traefiknet
# Zkopírujte soubor .env.example na .env
cp .env.example .env
```
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:**
>
> 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
> jinou doménu, nezapomeňte ji přidat do vašeho `/etc/hosts` souboru a vygenerovat novou sadu certifikátů pro tuto doménu.
> Přednastavenou doménu `dev.linuxak.com` můžete ponechat. Je plně funkční a směřuje
> na IP adresu `127.0.0.1` tedy na váš lokální počítač.
### 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
```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:
> Hodnotu `<VASE_URL>` nahraďte skutečnou doménou své služby.
> Hodnotu `<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_URL>` - nahraďte skutečnou doménou své služby
`<VAS_PORT>` - nahraďte skutečným portem své služby
`<VASE_EXTERNI_SIT>` - nahraďte skutečným názvem své externí sítě
Příklad pro službu s náyvem `myapp`:
```yaml
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
container_name: traefik
restart: always
command:
- "--global.checknewversion=false"
- "--log.level=INFO"
- "--log.filepath=/logs/traefik.log"
- "--accesslog=true"
- "--accesslog.filepath=/logs/access.log"
- "--entrypoints.web.address=:80"
- "--entrypoints.web.forwardedheaders.trustedips=0.0.0.0/0"
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
- "--entrypoints.web.http.redirections.entrypoint.permanent=true"
- "--entrypoints.websecure.address=:443"
- "--entrypoints.websecure.forwardedheaders.trustedips=0.0.0.0/0"
- "--api.dashboard=true"
- "--providers.docker=true"
- "--providers.docker.endpoint=unix:///var/run/docker.sock"
- "--providers.docker.network=${EXTERNAL_NETWORK:-traefiknet}"
- "--providers.docker.exposedbydefault=false"
- "--providers.docker.watch=true"
- "--providers.file.filename=/etc/traefik/traefik_dynamic.yml"
- "--providers.file.watch=true"
environment:
TRAEFIK_GLOBAL_CHECKNEWVERSION: false
TRAEFIK_LOG_LEVEL: INFO
TRAEFIK_LOG_FILEPATH: /logs/traefik.log
TRAEFIK_ACCESSLOG: true
TRAEFIK_ACCESSLOG_FILEPATH: /logs/access.log
TRAEFIK_ENTRYPOINTS_WEB_ADDRESS: ":80"
TRAEFIK_ENTRYPOINTS_WEB_FORWARDEDHEADERS_TRUSTEDIPS: "0.0.0.0/0"
TRAEFIK_ENTRYPOINTS_WEBSECURE_ADDRESS: ":443"
TRAEFIK_ENTRYPOINTS_WEBSECURE_FORWARDEDHEADERS_TRUSTEDIPS: "0.0.0.0/0"
TRAEFIK_API_DASHBOARD: true
TRAEFIK_PROVIDERS_DOCKER: true
TRAEFIK_PROVIDERS_DOCKER_ENDPOINT: "unix:///var/run/docker.sock"
TRAEFIK_PROVIDERS_DOCKER_NETWORK: "${EXTERNAL_NETWORK:-traefiknet}"
TRAEFIK_PROVIDERS_DOCKER_EXPOSEDBYDEFAULT: false
TRAEFIK_PROVIDERS_DOCKER_WATCH: true
TRAEFIK_PROVIDERS_FILE_FILENAME: "/etc/traefik/traefik_dynamic.yml"
TRAEFIK_PROVIDERS_FILE_WATCH: true
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik-dashboard.rule=Host(`traefik.${DEV_URL}`)"
@@ -39,10 +36,10 @@ services:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik/certs:/certs:ro
- ./traefik/traefik_dynamic.yml:/etc/traefik/traefik_dynamic.yml:ro
- ./traefik/logs:/logs
- ./traefik/traefik_dynamic.yml:/etc/traefik/traefik_dynamic.yml:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- external-net

14
run
View File

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