Files
aliasvault-vps/setup.sh
T

146 lines
5.1 KiB
Bash

#!/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}"