diff --git a/README.md b/README.md index 798d74e..7b6002e 100644 --- a/README.md +++ b/README.md @@ -21,30 +21,38 @@ ## Instalace ### 1. Konfigurace prostředí -```bash -# Zkopírujte soubor .env.example na .env -cp .env.example .env -``` -V případě nutnosti upravte hodnoty dle svých nastavení +Při prvním spuštění se automaticky spustí průvodce konfigurací, který vytvoří soubor `.env` s potřebnými nastaveními. -`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) +Budete dotázáni na: -> **Poznámka:** +- **Development domain name** - doména pro lokální vývoj (výchozí: `dev.linuxak.com`) +- **External Docker network name** - název externí sítě pro kontejnery (výchozí: `traefiknet`) +- **HTTPS redirect** - vynucené přesměrování HTTP na HTTPS (výchozí: `true`) + +> **Tip:** Stačí mačkat Enter pro použití výchozích hodnot, které jsou plně funkční. > -> 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č. Můžete ponechat i přednastavený název externí sítě. +> Přednastavenou doménu `dev.linuxak.com` můžete ponechat - směřuje na IP `127.0.0.1` (váš lokální počítač). -### 2. Import CA do systému +### 2. Certifikáty pro HTTPS -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. +Traefik používá námi integrovaný vlastní certifikát pro HTTPS komunikaci. Pro správné +fungování je potřeba importovat `traefik/certs/rootCA.pem` do důvěryhodných certifikátů vašeho operačního systému. -#### MacOS +**Integrovaný certifikát je platný pro:** +- `dev.linuxak.com` a všechny subdomény (`*.dev.linuxak.com`) +- `localhost` +- IP adresu `127.0.0.1` +- **Platnost:** do 27. února 2036 + +> **Poznámka:** Pokud změníte `DEV_URL` na jinou doménu než výše uvedené, bude potřeba dodat vlastní certifikát pro HTTPS komunikaci. + +### 2.1 Import CA do systému + +#### Linux (CentOS/RHEL/Fedora) ```bash -sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain traefik/certs/rootCA.pem +sudo cp traefik/certs/rootCA.pem /etc/pki/ca-trust/source/anchors/linuxak-dev-ca.crt +sudo update-ca-trust ``` #### Linux (Ubuntu/Debian) @@ -53,10 +61,9 @@ sudo cp traefik/certs/rootCA.pem /usr/local/share/ca-certificates/linuxak-dev-ca sudo update-ca-certificates ``` -#### Linux (CentOS/RHEL/Fedora) +#### MacOS ```bash -sudo cp traefik/certs/rootCA.pem /etc/pki/ca-trust/source/anchors/linuxak-dev-ca.crt -sudo update-ca-trust +sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain traefik/certs/rootCA.pem ``` #### Windows (PowerShell jako Admin) @@ -65,12 +72,15 @@ Import-Certificate -FilePath "traefik/certs/rootCA.pem" -CertStoreLocation Cert: ``` ### 3. Spuštění + ```bash -./run up # Spustit stack +./run up # Spustit stack (při prvním spuštění se spustí průvodce konfigurací) ./run restart # Restartovat stack ./run down # Zastavit stack ``` +Při prvním spuštění `./run up` budete provedeni konfigurací - stačí postupovat podle pokynů na obrazovce. + ## Přístup ke službám | Služba | URL | @@ -84,7 +94,7 @@ Import-Certificate -FilePath "traefik/certs/rootCA.pem" -CertStoreLocation Cert: Stack/ ├── docker-compose.yml # Definice služeb ├── run # Skript pro správu -├── .env # Konfigurace prostředí +├── .env # Konfigurace prostředí (automaticky vytvořen při prvním spuštění) ├── traefik/ # Traefik konfigurace, certifikáty a logy └── portainer/ # Portainer data ``` @@ -97,7 +107,7 @@ Do vašeho `docker-compose.yml` přidejte Traefik labels: `` - nahraďte skutečným portem své služby `` - nahraďte skutečným názvem své externí sítě -Příklad pro službu s náyvem `myapp`: +Příklad pro službu s názvem `myapp`: ```yaml labels: diff --git a/run b/run index ae55ac6..dc51d8e 100755 --- a/run +++ b/run @@ -16,12 +16,54 @@ fi # Check if .env file exists if [[ ! -f $ENV_FILE ]]; then - echo "Error: $ENV_FILE file not found!" - 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 + echo "Configuration file $ENV_FILE not found. Let's create it!" + echo "" + + # Default values + DEFAULT_DEV_URL="dev.linuxak.com" + DEFAULT_EXTERNAL_NETWORK="traefiknet" + DEFAULT_FORCE_HTTPS_REDIRECT="true" + + echo "Please provide the following configuration values:" + echo "(Press Enter to use default values shown in brackets)" + echo "" + + # Ask for domain name + read -p "Development domain name [$DEFAULT_DEV_URL]: " input_dev_url + DEV_URL="${input_dev_url:-$DEFAULT_DEV_URL}" + + # Ask for external network + read -p "External Docker network name [$DEFAULT_EXTERNAL_NETWORK]: " input_external_network + EXTERNAL_NETWORK="${input_external_network:-$DEFAULT_EXTERNAL_NETWORK}" + + # Ask for HTTPS redirect + echo "" + echo "Force HTTPS redirect? (true/false)" + read -p "HTTPS redirect [$DEFAULT_FORCE_HTTPS_REDIRECT]: " input_force_https + FORCE_HTTPS_REDIRECT="${input_force_https:-$DEFAULT_FORCE_HTTPS_REDIRECT}" + + # Validate HTTPS redirect value + if [[ "$FORCE_HTTPS_REDIRECT" != "true" && "$FORCE_HTTPS_REDIRECT" != "false" ]]; then + echo "Invalid value for HTTPS redirect. Using 'true' as default." + FORCE_HTTPS_REDIRECT="true" + fi + + # Create .env file + echo "" + echo "Creating $ENV_FILE with the following configuration:" + echo " DEV_URL=$DEV_URL" + echo " EXTERNAL_NETWORK=$EXTERNAL_NETWORK" + echo " FORCE_HTTPS_REDIRECT=$FORCE_HTTPS_REDIRECT" + echo "" + + cat > $ENV_FILE << EOF +DEV_URL=$DEV_URL +EXTERNAL_NETWORK=$EXTERNAL_NETWORK +FORCE_HTTPS_REDIRECT=$FORCE_HTTPS_REDIRECT +EOF + + echo "Configuration file $ENV_FILE created successfully!" + echo "" fi # Load environment variables