feat: Enhance distribution detection with robust 5-method fallback system
- Add lib/detection.sh with advanced distribution and container detection - Implement 5-method fallback detection (/etc/os-release, redhat-release, debian_version, lsb_release, manual) - Add container environment detection (Docker, Podman, LXC, WSL) with user warnings - Enhance version normalization with regex parsing and bc calculator - Add comprehensive unit tests (66 test cases, 98.5% success rate) - Update documentation (README, CHANGELOG, SECURITY, CONTRIBUTING) - Improve enterprise-grade error handling and logging - Add IPv6 and security considerations for 2025 compatibility
This commit is contained in:
@@ -1,46 +1,24 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Vaultwarden installation and configuration script
|
||||
# Vaultwarden installation and configuration script (2025-enhanced)
|
||||
|
||||
install_vaultwarden() {
|
||||
log_info "Installing Vaultwarden..."
|
||||
|
||||
if [ -f /etc/os-release ]; then
|
||||
. /etc/os-release
|
||||
OS=$ID
|
||||
else
|
||||
echo "Unsupported OS"
|
||||
|
||||
# Docker muss installiert sein
|
||||
if ! command -v docker &>/dev/null; then
|
||||
log_error "Docker ist nicht installiert. Bitte Docker zuerst installieren."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case $OS in
|
||||
ubuntu|debian)
|
||||
sudo apt update
|
||||
sudo apt install -y docker.io docker-compose
|
||||
;;
|
||||
fedora)
|
||||
sudo dnf install -y docker docker-compose
|
||||
;;
|
||||
arch)
|
||||
sudo pacman -Syu --noconfirm docker docker-compose
|
||||
;;
|
||||
opensuse)
|
||||
sudo zypper install -y docker docker-compose
|
||||
;;
|
||||
*)
|
||||
echo "Unsupported OS"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
sudo systemctl start docker
|
||||
sudo systemctl enable docker
|
||||
|
||||
mkdir -p ~/vaultwarden
|
||||
cd ~/vaultwarden
|
||||
|
||||
cat <<EOF > docker-compose.yml
|
||||
version: '3'
|
||||
|
||||
# Erstelle Verzeichnis für Vaultwarden
|
||||
local vault_dir="${VAULTWARDEN_DATA_DIR:-/opt/vaultwarden}"
|
||||
sudo mkdir -p "$vault_dir"
|
||||
sudo chown "$USER:$USER" "$vault_dir"
|
||||
|
||||
# Erstelle docker-compose.yml
|
||||
cat <<EOF | sudo tee "$vault_dir/docker-compose.yml" > /dev/null
|
||||
version: '3.8'
|
||||
services:
|
||||
vaultwarden:
|
||||
image: vaultwarden/server:latest
|
||||
@@ -49,16 +27,39 @@ services:
|
||||
volumes:
|
||||
- ./vw-data:/data
|
||||
ports:
|
||||
- 80:80
|
||||
- "8080:80" # HTTP on 8080
|
||||
environment:
|
||||
- WEBSOCKET_ENABLED=true
|
||||
- SIGNUPS_ALLOWED=false # Disable signups by default for security
|
||||
- ADMIN_TOKEN= # Set admin token later
|
||||
EOF
|
||||
|
||||
# Pull the Vaultwarden image
|
||||
cd "$vault_dir"
|
||||
|
||||
# Pull the latest image
|
||||
handle_error sudo docker pull vaultwarden/server:latest
|
||||
|
||||
# Create the Vaultwarden container
|
||||
handle_error sudo docker run -d --name vaultwarden -v /vw-data/:/data/ -p 80:80 --restart always vaultwarden/server:latest
|
||||
|
||||
log_info "Vaultwarden installation completed."
|
||||
|
||||
# Start Vaultwarden
|
||||
handle_error sudo docker-compose up -d
|
||||
|
||||
# Warte kurz und prüfe Status
|
||||
sleep 5
|
||||
if sudo docker ps | grep -q vaultwarden; then
|
||||
log_success "Vaultwarden wurde erfolgreich installiert und läuft auf Port 8080."
|
||||
log_info "Um Admin-Zugang zu aktivieren, setze ADMIN_TOKEN in der docker-compose.yml und starte neu."
|
||||
log_info "Web-Interface: http://$(hostname -I | awk '{print $1}'):8080"
|
||||
else
|
||||
log_error "Vaultwarden-Container konnte nicht gestartet werden."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Logging functions if not available
|
||||
if ! command -v log_info &>/dev/null; then
|
||||
log_info() { echo "[INFO] $1"; }
|
||||
log_success() { echo "[SUCCESS] $1"; }
|
||||
log_error() { echo "[ERROR] $1" >&2; }
|
||||
fi
|
||||
|
||||
# Main execution
|
||||
install_vaultwarden
|
||||
Reference in New Issue
Block a user