From 5a0a2401ce0837d47bb844df263d1b2702e570ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C4=83rcziem=20=E2=84=A2?= <118485377+spalencsar@users.noreply.github.com> Date: Fri, 3 Oct 2025 13:10:54 +0200 Subject: [PATCH] fix: Correct services summary file path to user home directory - Change summary file location from /root/nas_services.txt to ~/nas_services.txt - Use SUDO_USER environment variable to determine correct user home directory - Update README.md to reflect the correct path for the services summary file - Ensure file is created in the home directory of the user who ran sudo --- README.md | 8 +++ lib/portainer.sh | 12 ++++ setup.sh | 182 +++++++++++++++++++++++++++++++++++++++++------ 3 files changed, 181 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 64141d1..fb7b60f 100644 --- a/README.md +++ b/README.md @@ -127,6 +127,14 @@ chmod +x tests/unit_tests.sh ./tests/unit_tests.sh ``` +### 5. Check Installation Summary +```bash +# View the services summary file created during installation +cat ~/nas_services.txt + +# This file contains all service URLs, ports, and access information +``` + ## ⚙️ Configuration The script guides you through an interactive configuration: diff --git a/lib/portainer.sh b/lib/portainer.sh index 2d6d8aa..d8a9e9d 100644 --- a/lib/portainer.sh +++ b/lib/portainer.sh @@ -33,7 +33,19 @@ install_portainer() { -v portainer_data:/data \ portainer/portainer-ce:latest + # Warten bis Portainer vollständig gestartet ist + log_info "Warten auf Portainer-Initialisierung..." + sleep 10 + + # Portainer neu starten, um das initiale Security-Timeout zu umgehen + log_info "Portainer neu starten, um Security-Timeout zu beheben..." + sudo docker restart portainer + + # Kurz warten, bis der Neustart abgeschlossen ist + sleep 5 + log_success "Portainer wurde erfolgreich installiert und läuft auf Port 9000 (HTTP) und 9443 (HTTPS)." + log_info "Portainer ist nun verfügbar unter: https://$(hostname -I | awk '{print $1}'):9443" } # Logging-Funktionen bereitstellen, falls nicht vorhanden diff --git a/setup.sh b/setup.sh index a4e6cf0..2c6e016 100644 --- a/setup.sh +++ b/setup.sh @@ -466,6 +466,16 @@ run_installation() { # Installation summary show_installation_summary() { + local ip_address + ip_address=$(hostname -I | awk '{print $1}') + local user_home + if [[ -n "${SUDO_USER:-}" ]]; then + user_home=$(eval echo "~${SUDO_USER}") + else + user_home="$HOME" + fi + local summary_file="${user_home}/nas_services.txt" + echo log_success "=== NAS Setup Completed Successfully ===" echo @@ -481,7 +491,7 @@ show_installation_summary() { else echo " - Automatic updates not enabled (optional)" fi - + # Service summary if [[ "${INSTALL_DOCKER:-false}" == "true" ]]; then echo " ✓ Docker installed and configured" @@ -490,47 +500,177 @@ show_installation_summary() { echo " ✓ NFS server installed" fi if [[ "${INSTALL_NETDATA:-false}" == "true" ]]; then - echo " ✓ Netdata monitoring: http://$(hostname -I | awk '{print $1}'):${NETDATA_PORT}" + echo " ✓ Netdata monitoring: http://${ip_address}:${NETDATA_PORT}" fi if [[ "${INSTALL_JELLYFIN:-false}" == "true" ]]; then - echo " ✓ Jellyfin media server: http://$(hostname -I | awk '{print $1}'):8096" + echo " ✓ Jellyfin media server: http://${ip_address}:8096" fi if [[ "${INSTALL_PORTAINER:-false}" == "true" ]]; then - echo " ✓ Portainer Docker management: http://$(hostname -I | awk '{print $1}'):9000" + echo " ✓ Portainer Docker management: http://${ip_address}:9000" fi if [[ "${INSTALL_WEBMIN:-false}" == "true" ]]; then - echo " ✓ Webmin web interface: https://$(hostname -I | awk '{print $1}'):10000" + echo " ✓ Webmin web interface: https://${ip_address}:10000" fi - - # Docker notes - if [[ "${INSTALL_DOCKER:-false}" != "true" ]]; then - echo - log_warning "Docker wurde nicht installiert oder wurde während der Installation deaktiviert." - echo "If you need Docker later, repair the daemon and restart Docker with the helper script in the repository:" - echo " cd $(pwd) && sudo bash scripts/repair_docker.sh" - echo "Or create a minimal valid daemon.json and restart Docker manually:" - echo " sudo mv /etc/docker/daemon.json /tmp/daemon.json.broken.$(date +%s) || true" - echo " sudo tee /etc/docker/daemon.json > /dev/null <<'EOF'" - echo "{" - echo " \"storage-driver\": \"overlay2\"" - echo "}" - echo "EOF" - echo " sudo systemctl daemon-reload && sudo systemctl restart docker" - echo + + # Create services summary file + log_info "Creating services summary file: ${summary_file}" + cat > "${summary_file}" << EOF +============================================================ + NAS Services - Installation Summary +============================================================ + +Installation Date: $(date) +System IP Address: ${ip_address} +Admin User: ${ADMIN_USER:-$NEW_USER} +SSH Port: ${SSH_PORT:-$DEFAULT_SSH_PORT} + +------------------------------------------------------------ +Installed Services and Access Information: +------------------------------------------------------------ + +SSH Access: + - Host: ${ip_address} + - Port: ${SSH_PORT:-$DEFAULT_SSH_PORT} + - User: ${ADMIN_USER:-$NEW_USER} + - Command: ssh -p ${SSH_PORT:-$DEFAULT_SSH_PORT} ${ADMIN_USER:-$NEW_USER}@${ip_address} + +EOF + + # Add service information to file + if [[ "${INSTALL_NETDATA:-false}" == "true" ]]; then + cat >> "${summary_file}" << EOF +Netdata Monitoring: + - URL: http://${ip_address}:${NETDATA_PORT} + - Description: Real-time system monitoring and metrics + +EOF fi + if [[ "${INSTALL_JELLYFIN:-false}" == "true" ]]; then + cat >> "${summary_file}" << EOF +Jellyfin Media Server: + - Web Interface: http://${ip_address}:8096 + - HTTPS Interface: http://${ip_address}:8920 + - DLNA Port: ${ip_address}:1900 (UDP) + - Description: Media streaming and management server + +EOF + fi + + if [[ "${INSTALL_PORTAINER:-false}" == "true" ]]; then + cat >> "${summary_file}" << EOF +Portainer Docker Management: + - HTTP Interface: http://${ip_address}:9000 + - HTTPS Interface: https://${ip_address}:9443 + - Description: Web-based Docker container management + - Note: Use HTTPS (9443) for secure access + +EOF + fi + + if [[ "${INSTALL_VAULTWARDEN:-false}" == "true" ]]; then + cat >> "${summary_file}" << EOF +Vaultwarden Password Manager: + - URL: http://${ip_address}:8080 + - Description: Bitwarden-compatible password manager + +EOF + fi + + if [[ "${INSTALL_WEBMIN:-false}" == "true" ]]; then + cat >> "${summary_file}" << EOF +Webmin System Administration: + - URL: https://${ip_address}:10000 + - Description: Web-based system administration interface + +EOF + fi + + if [[ "${INSTALL_NFS:-false}" == "true" ]]; then + cat >> "${summary_file}" << EOF +NFS Server: + - Port: ${ip_address}:2049 + - Description: Network File System for Unix/Linux clients + - Mount example: mount -t nfs ${ip_address}:/srv/nfs /mnt/nfs + +EOF + fi + + # Samba information + cat >> "${summary_file}" << EOF +Samba File Sharing: + - Ports: ${ip_address}:139 (TCP), ${ip_address}:445 (TCP), ${ip_address}:137-138 (UDP) + - Description: Windows file sharing (SMB/CIFS) + - Access: \\\\${ip_address} or smb://${ip_address} + +EOF + + # Docker information if installed + if [[ "${INSTALL_DOCKER:-false}" == "true" ]]; then + cat >> "${summary_file}" << EOF +Docker: + - Status: Installed and running + - Socket: /var/run/docker.sock + - Description: Container runtime for additional services + +EOF + fi + + cat >> "${summary_file}" << EOF +------------------------------------------------------------ +System Information: +------------------------------------------------------------ +- Configuration file: ${CONFIG_FILE} +- Installation log: ${LOG_FILE} +- System distribution: ${DISTRO_NAME} ${DISTRO_VERSION} +- Kernel: $(uname -r) + +------------------------------------------------------------ +Security Notes: +------------------------------------------------------------ +- Firewall is active and configured +- Fail2ban is monitoring for suspicious activity +- SSH uses Ed25519 keys for enhanced security +- Root login via SSH is disabled +EOF + + if [[ "${ENABLE_AUTO_UPDATES:-false}" == "true" ]]; then + echo "- Automatic security updates are enabled" >> "${summary_file}" + else + echo "- Automatic updates are disabled (manual updates recommended)" >> "${summary_file}" + fi + + cat >> "${summary_file}" << EOF + +------------------------------------------------------------ +Next Steps: +------------------------------------------------------------ +1. Reboot the system to ensure all changes take effect +2. Review the services above and access them using the provided URLs +3. Configure user accounts and permissions for file sharing +4. Set up backups for your important data +5. Regularly check system logs and monitoring + +============================================================ +EOF + + log_success "Services summary saved to: ${summary_file}" + log_info "You can view this file with: cat ${summary_file}" + echo log_info "Next steps:" echo " 1. Reboot the system to ensure all changes take effect" echo " 2. Access your NAS via SSH on port ${SSH_PORT:-$DEFAULT_SSH_PORT}" echo " 3. Configure file shares through Samba" echo " 4. Review firewall rules with: sudo ufw status" + echo " 5. Check the services summary file: cat ${summary_file}" echo log_warning "Important: Please save the following information:" echo " - SSH Port: ${SSH_PORT:-$DEFAULT_SSH_PORT}" echo " - Admin User: ${ADMIN_USER:-$NEW_USER}" echo " - Configuration saved in: ${CONFIG_FILE}" echo " - Installation log: ${LOG_FILE}" + echo " - Services summary: ${summary_file}" } # Main script execution