146 lines
5.1 KiB
Bash
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}" |