feat: nucene http na https
This commit is contained in:
@@ -1,2 +1,3 @@
|
|||||||
DEV_URL=dev.linuxak.com
|
DEV_URL=dev.linuxak.com
|
||||||
EXTERNAL_NETWORK=traefiknet
|
EXTERNAL_NETWORK=traefiknet
|
||||||
|
FORCE_HTTPS_REDIRECT=true
|
||||||
44
README.md
44
README.md
@@ -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:
|
||||||
|
|||||||
6
docker-compose.https-redirect.yml
Normal file
6
docker-compose.https-redirect.yml
Normal 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
|
||||||
@@ -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
12
run
@@ -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}"
|
||||||
|
|||||||
Reference in New Issue
Block a user