feat: nucene http na https
This commit is contained in:
@@ -1,2 +1,3 @@
|
||||
DEV_URL=dev.linuxak.com
|
||||
EXTERNAL_NETWORK=traefiknet
|
||||
EXTERNAL_NETWORK=traefiknet
|
||||
FORCE_HTTPS_REDIRECT=true
|
||||
46
README.md
46
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
|
||||
|
||||
- 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
|
||||
```
|
||||
|
||||
> **Poznámka:**
|
||||
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:
|
||||
|
||||
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
|
||||
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
14
run
@@ -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}"
|
||||
|
||||
Reference in New Issue
Block a user