feat: initial infra repo

- docker-services: 14 generic compose templates (portainer, npm, vaultwarden, gitea, jotty, nextcloud-aio, rustdesk, audiobookshelf, calibre-web, plex, erugo, jswiki, speedtest, watchtower)
- install-scripts: bash scripts for Ubuntu server bootstrap, docker, portainer, npm, backup, restore
- ansible: 4 playbooks (bootstrap, deploy-services, update-services, security-hardening) + roles skeleton
- hermes-install: Hermes CLI setup on macOS
- macos-setup: Brewfile + osx-defaults + fish-config
- home-nas-tools: metadata index for NAS projects (no binaries)
- docs: architecture, security, contributing
- README, LICENSE (MIT), .gitignore
This commit is contained in:
2026-08-01 16:25:58 +02:00
commit 444191d16d
73 changed files with 4032 additions and 0 deletions
+78
View File
@@ -0,0 +1,78 @@
# Brewfile instalace všech macOS aplikací
# Tento soubor použij s: brew bundle --file=Brewfile
# Generováno z produkčního Macu (viz README)
# ───────────── TAPS ─────────────
tap "homebrew/bundle"
tap "homebrew/cask"
tap "homebrew/cask-fonts"
tap "homebrew/core"
# ───────────── FORMULAS (CLI) ─────────────
brew "aom"
brew "bat"
brew "btop"
brew "ca-certificates"
brew "cairo"
brew "certifi"
brew "dav1d"
brew "deno"
brew "diffutils"
brew "exiftool"
brew "eza"
brew "fastfetch"
brew "fd"
brew "ffmpeg"
brew "fish"
brew "fontconfig"
brew "freetype"
brew "fribidi"
brew "fzf"
brew "gettext"
brew "giflib"
brew "glib"
brew "graphite2"
brew "harfbuzz"
brew "htop"
brew "icu4c@78"
brew "img2pdf"
brew "jpeg-turbo"
brew "jq"
brew "json-c"
# ... další nainstalované balíky (viz `brew list --formula`)
# ───────────── CASKS (GUI) ─────────────
cask "alt-tab"
cask "balenaetcher"
cask "bartender"
cask "bitwarden"
cask "copilot-cli"
cask "daisydisk"
cask "discord"
cask "dockdoor"
cask "font-meslo-lg-nerd-font"
cask "google-chrome"
cask "google-drive"
cask "keepassxc"
cask "keepingyouawake"
cask "keka"
cask "microsoft-teams"
cask "nextcloud"
cask "nextcloud-talk"
cask "notion"
cask "nvidia-geforce-now"
cask "obs"
cask "obsidian"
cask "omnidisksweeper"
cask "qbittorrent"
cask "rustdesk"
cask "spotify"
cask "transmission"
cask "visual-studio-code"
cask "vlc"
cask "whatsapp"
cask "whichspace"
# ... další (viz `brew list --cask`)
# ───────────── FONTS ─────────────
cask "font-meslo-lg-nerd-font"
+85
View File
@@ -0,0 +1,85 @@
# 🍎 macOS Setup
> Automatizovaná instalace a konfigurace macOS workstation.
## 📦 Obsah
| Soubor | Účel |
|---|---|
| [`Brewfile`](Brewfile) | Všechny nainstalované CLI/GUI aplikace (Homebrew Bundle) |
| [`install-brew.sh`](install-brew.sh) | Instaluje Homebrew (pokud chybí) |
| [`configure-fish.sh`](configure-fish.sh) | Nastaví Fish shell s aliasy |
| [`osx-defaults.sh`](osx-defaults.sh) | macOS výchozí nastavení (Finder, Dock, klávesnice) |
| [`README.md`](README.md) | Tento soubor |
## 🚀 Quickstart (nový Mac)
```bash
# 1. Instalace Homebrew (pokud chybí)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 2. Instalace všech aplikací
brew bundle --file=Brewfile
# 3. macOS výchozí nastavení (Finder, Dock, ...)
bash osx-defaults.sh
# 4. Fish shell s aliasy
bash configure-fish.sh
```
## 🔧 Fish aliasy
`configure-fish.sh` nastaví tyto aliasy (viz skript):
| Alias | Příkaz |
|---|---|
| `update` | `brew update && brew upgrade` |
| `ll` | `eza -la` |
| `cat` | `bat` |
| `find` | `fd` |
| `top` | `btop` |
| `g` | `git` |
| `k` | `kubectl` |
| `d` | `docker` |
| `dc` | `docker compose` |
## ⚙️ macOS Defaults
`osx-defaults.sh` nastaví:
- **Finder:** zobrazit skryté soubory, všechny přípony, cestu k aktuálnímu adresáři
- **Dock:** auto-hide, rychlejší animace
- **Keyboard:** rychlejší opakování kláves
- **Trackpad:** rychlejší tracking
- **Safari:** vývojářské nástroje
## 🔐 Bezpečnost
- **FileVault** povolit (v System Settings → Privacy & Security)
- **Firewall** povolit (v System Settings → Network → Firewall)
- **XProtect** default zapnutý
- **Gatekeeper** default `App Store a identified developers`
## 📚 Apple ekosystém
- **iCloud** dokumenty, plocha, fotografie
- **Handoff** pokračovat na iOS/iPadOS
- **Universal Clipboard**
- **Sidecar** iPad jako druhá obrazovka
## 🔄 Aktualizace
```bash
# Homebrew
brew update && brew upgrade && brew cleanup
# macOS
System Settings → Software Update
```
## 📚 Dokumentace
- [Homebrew](https://brew.sh/)
- [Brewfile](https://github.com/Homebrew/homebrew-bundle)
- [macOS defaults](https://macos-defaults.com/)
+65
View File
@@ -0,0 +1,65 @@
#!/usr/bin/env bash
#
# Nastaví Fish shell s užitečnými aliasy
# - uloží konfiguraci do ~/.config/fish/config.fish
# - pokud Fish neexistuje, nainstaluje ho
# - idempotentní (přidá/aktualizuje aliasy, nesmaže existující)
#
# Vyžaduje fish 3.0+ a Homebrew
#
set -euo pipefail
FISH_CONFIG="$HOME/.config/fish/config.fish"
# Pokud fish není nainstalovaný, nainstaluj
if ! command -v fish &>/dev/null; then
echo "▶ Instaluji fish..."
if command -v brew &>/dev/null; then
brew install fish
else
echo "✗ Homebrew není nainstalován. Nainstaluj ho ručně: https://brew.sh/" >&2
exit 1
fi
fi
# Vytvoř adresář
mkdir -p "$(dirname "$FISH_CONFIG")"
# Definice aliasů
declare -A ALIASES=(
["update"]="brew update && brew upgrade && brew cleanup"
["ll"]="eza -la --git --time-style=long-iso"
["ls"]="eza"
["cat"]="bat --paging=never"
["find"]="fd"
["grep"]="rg"
["top"]="btop"
["ps"]="procs"
["g"]="git"
["d"]="docker"
["dc"]="docker compose"
["k"]="kubectl"
["llog"]="docker compose logs -f --tail=100"
["dip"]="docker compose logs -f --tail=100 \\\\"
["myip"]="curl -s https://api.ipify.org && echo"
["weather"]="curl -s 'wttr.in?format=3'"
)
# Funkce pro generování
{
echo "# ~/.config/fish/config.fish"
echo "# Generováno configure-fish.sh $(date +%Y-%m-%d)"
echo ""
echo "set -g fish_greeting \"\""
echo "set -gx PATH /opt/homebrew/bin \$PATH"
echo "set -gx EDITOR vim"
echo ""
for alias in "${!ALIASES[@]}"; do
echo "alias $alias='${ALIASES[$alias]}'"
done
} > "$FISH_CONFIG"
echo "✓ Konfigurace Fish v $FISH_CONFIG"
echo
echo "Použití: spusť 'fish' v terminálu"
echo "Ověření: alias ll → ${ALIASES[ll]}"
+83
View File
@@ -0,0 +1,83 @@
#!/usr/bin/env bash
#
# macOS výchozí nastavení (defaults write)
# Spustit JEDNOU po čisté instalaci macOS
#
# Vyžaduje: macOS (testováno na 13+)
#
set -euo pipefail
if [[ "$(uname)" != "Darwin" ]]; then
echo "Tento skript je pouze pro macOS" >&2
exit 1
fi
echo "▶ Nastavuji macOS defaults..."
# ──── Finder ────
# Zobrazit skryté soubory
defaults write com.apple.finder AppleShowAllFiles -bool true
# Zobrazit všechny přípony
defaults write NSGlobalDomain AppleShowAllExtensions -bool true
# Zobrazit cestovní panel
defaults write com.apple.finder ShowPathbar -bool true
# Zobrazit stavový řádek
defaults write com.apple.finder ShowStatusBar -bool true
# Výchozí pohled: seznam
defaults write com.apple.finder FXPreferredViewStyle -string "Nlsv"
# Vyhledávání v aktuálním adresáři (default od Mojave)
defaults write com.apple.finder FXDefaultSearchScope -string "SCcf"
# Rozšíření "Uložit dialog" o textové lišty
defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true
defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode2 -bool true
# Default nový Finder okno: domovský adresář
defaults write com.apple.finder NewWindowTarget -string "PfHm"
# ──── Dock ────
# Auto-hide
defaults write com.apple.dock autohide -bool true
# Rychlejší animace
defaults write com.apple.dock autohide-time-modifier -float 0.3
defaults write com.apple.dock expose-animation-duration -float 0.2
# Zobrazit indikátory otevřených aplikací
defaults write com.apple.dock show-process-indicators -bool true
# Velikost ikon
defaults write com.apple.dock tilesize -int 48
# Skrýt nedávné aplikace
defaults write com.apple.dock show-recents -bool false
# ──── Klávesnice ────
# Rychlejší opakování kláves
defaults write NSGlobalDomain KeyRepeat -int 2
defaults write NSGlobalDomain InitialKeyRepeat -int 15
# Plná klávesnice pro přístup
defaults write NSGlobalDomain ApplePressAndHoldEnabled -bool false
# Funkční klávesy jako F1-F12
defaults write NSGlobalDomain "com.apple.keyboard.fnState" -bool true
# ──── Trackpad ────
# Tap-to-click
defaults write com.apple.AppleMultitouchTrackpad Clicking -bool true
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true
# Rychlejší tracking
defaults write NSGlobalDomain com.apple.trackpad.scaling -float 1.5
# ──── Safari ────
# Zobrazit vývojářské nástroje
defaults write com.apple.Safari IncludeDevelopMenu -bool true
defaults write com.apple.Safari WebKitDeveloperExtrasEnabledPreferenceKey -bool true
# Privacy: omezit cross-site tracking
defaults write com.apple.Safari WebKitStorageBlockingPolicy -int 1
# ──── TextEdit ────
# Plain text mode
defaults write com.apple.TextEdit RichText -int 0
# ──── Terminal ────
# UTF-8
defaults write com.apple.terminal StringEncodings -array 4
echo "✓ macOS defaults nastaveny"
echo
echo "Pro aplikaci změn: odhlas se a prihlas se, nebo restartuj Finder/Dock:"
echo " killall Finder Dock"