#!/bin/bash # AliasVault VPS Setup Script # https://git.schoettler-mk.de/schoettik/aliasvault-vps set -e RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color echo -e "${GREEN}========================================${NC}" echo -e "${GREEN} AliasVault VPS Setup Script${NC}" echo -e "${GREEN}========================================${NC}" # Prüfe, ob Docker installiert ist if ! command -v docker &> /dev/null; then echo -e "${RED}Docker ist nicht installiert.${NC}" echo "Installiere Docker mit:" echo " curl -fsSL https://get.docker.com | sh" exit 1 fi # Prüfe, ob Docker Compose installiert ist if ! command -v docker-compose &> /dev/null; then echo -e "${RED}Docker Compose ist nicht installiert.${NC}" echo "Installiere Docker Compose mit:" echo " sudo apt-get install docker-compose" echo " oder" echo " sudo pip install docker-compose" exit 1 fi # Installation Directory INSTALL_DIR="${1:-/opt/aliasvault}" echo -e "${YELLOW}Installationsverzeichnis: ${INSTALL_DIR}${NC}" # Repository URL (kann angepasst werden) REPO_URL="https://git.schoettler-mk.de/schoettik/aliasvault-vps.git" # Frage nach Bestätigung read -p "AliasVault in ${INSTALL_DIR} installieren? (j/N): " -n 1 -r echo if [[ ! $REPLY =~ ^[Jj]$ ]]; then echo -e "${YELLOW}Abgebrochen.${NC}" exit 0 fi # Verzeichnis erstellen echo -e "${YELLOW}Erstelle Installationsverzeichnis...${NC}" sudo mkdir -p "${INSTALL_DIR}" sudo chown -R $(id -u):$(id -g) "${INSTALL_DIR}" cd "${INSTALL_DIR}" # Repository klonen oder Dateien kopieren echo -e "${YELLOW}Lade Konfigurationsdateien herunter...${NC}" if [[ -f "docker-compose.vps.yml" ]]; then echo -e "${YELLOW}Dateien existieren bereits. Überspringe Download.${NC}" else # Versuche Git Clone, falls nicht klappt, kopiere lokale Dateien if command -v git &> /dev/null; then git clone "${REPO_URL}" . else echo -e "${RED}Git nicht verfügbar. Lade Dateien manuell herunter.${NC}" echo "Bitte Repository manuell klonen oder Dateien kopieren." exit 1 fi fi # .env-Datei erstellen if [[ ! -f ".env" ]]; then echo -e "${YELLOW}Erstelle .env-Datei aus Vorlage...${NC}" if [[ -f ".env.example" ]]; then cp .env.example .env echo -e "${GREEN}.env-Datei erstellt. Bitte bearbeite: ${INSTALL_DIR}/.env${NC}" else echo -e "${RED}.env.example nicht gefunden.${NC}" exit 1 fi else echo -e "${YELLOW}.env-Datei existiert bereits.${NC}" fi # Secrets-Verzeichnis erstellen echo -e "${YELLOW}Erstelle Secrets-Verzeichnis...${NC}" mkdir -p secrets # PostgreSQL Passwort setzen if [[ ! -f "secrets/postgres_password" ]]; then echo -e "${YELLOW}Erstelle PostgreSQL Passwort...${NC}" echo "Bitte gib ein starkes PostgreSQL-Passwort ein (Enter für automatische Generierung):" read -s POSTGRES_PASSWORD if [[ -z "$POSTGRES_PASSWORD" ]]; then POSTGRES_PASSWORD=$(openssl rand -base64 32 2>/dev/null || date +%s | sha256sum | base64 | head -c 32) echo -e "${YELLOW}Automatisch generiertes Passwort:${NC}" echo " $POSTGRES_PASSWORD" fi echo "$POSTGRES_PASSWORD" > secrets/postgres_password chmod 600 secrets/postgres_password echo -e "${GREEN}PostgreSQL Passwort gespeichert: ${INSTALL_DIR}/secrets/postgres_password${NC}" else echo -e "${YELLOW}PostgreSQL Passwort existiert bereits.${NC}" fi # Zertifikate-Verzeichnis erstellen echo -e "${YELLOW}Erstelle Zertifikate-Verzeichnisse...${NC}" mkdir -p certificates/{ssl,letsencrypt/www,smtp} # Container starten echo -e "${GREEN}========================================${NC}" echo -e "${GREEN}Starten der AliasVault Container...${NC}" echo -e "${GREEN}========================================${NC}" if sudo docker-compose -f docker-compose.vps.yml up -d; then echo -e "${GREEN}✅ AliasVault Container erfolgreich gestartet!${NC}" # Zeige Status echo "" echo -e "${YELLOW}Container-Status:${NC}" sudo docker-compose -f docker-compose.vps.yml ps echo "" echo -e "${GREEN}📋 Nächste Schritte:${NC}" echo "1. Bearbeite die .env-Datei: ${INSTALL_DIR}/.env" echo "2. Konfiguriere DNS-Einträge für deine Domain (falls Let's Encrypt)" echo "3. Öffne ${INSTALL_DIR}/README.md für weitere Informationen" echo "" echo -e "${GREEN}🔗 Erreichbare Services:${NC}" echo "- Web Interface: http://localhost (oder deine Domain)" echo "- Admin Interface: http://localhost/admin" echo "- SMTP Server: localhost:25 (oder ${SMTP_PORT:-587} für TLS)" echo "" echo -e "${GREEN}⚡ Verwaltung:${NC}" echo " Status: sudo docker-compose -f docker-compose.vps.yml ps" echo " Logs: sudo docker-compose -f docker-compose.vps.yml logs -f" echo " Stoppen: sudo docker-compose -f docker-compose.vps.yml down" echo " Updates: sudo docker-compose -f docker-compose.vps.yml pull && sudo docker-compose -f docker-compose.vps.yml up -d" else echo -e "${RED}❌ Fehler beim Starten der Container.${NC}" echo "Überprüfe die Logs: sudo docker-compose -f docker-compose.vps.yml logs" exit 1 fi echo "" echo -e "${GREEN}✅ Installation abgeschlossen!${NC}"