install-taler-from-apt.sh (5024B)
1 #!/bin/bash 2 # This file is part of GNU Taler. 3 # Copyright (C) 2025 Taler Systems SA 4 # 5 # Author: Léa Oualli 6 7 set -e 8 set -x 9 trap 'echo "Error occurred on line $LINENO." >&2' ERR 10 11 LOGFILE="/mnt/c/Users/Public/taler-sh.log" 12 exec > >(tee -a "$LOGFILE") 2>&1 13 14 mkdir -p /home/taleruser/taler-installer 15 16 WSL_USER="taleruser" 17 TALER_DB_USER="taler-merchant-httpd" 18 19 ############################################# 20 # -------- HTTPS / Reverse Proxy -----------# 21 ############################################# 22 # Si le script est appelé avec "8" et un domaine, on ne fait QUE la config HTTPS/proxy : 23 if [ "$1" = "8" ] && [ -n "$2" ]; then 24 DOMAIN="$2" 25 echo "Configuring HTTPS reverse proxy for domain: $DOMAIN" 26 if ! sudo taler-merchant-rproxy-setup --acme --merchant-url="https://$DOMAIN:8888/"; then 27 echo "WARNING: Impossible d’obtenir un certificat HTTPS valide pour $DOMAIN (vérifie le DNS, les ports 80/443, et Internet)" | tee -a "/home/$WSL_USER/taler-installer/install-sh.log" 28 # On ne bloque pas toute l'install, on log juste le problème 29 exit 0 30 fi 31 echo "HTTPS reverse proxy configured for $DOMAIN" | tee -a "/home/$WSL_USER/taler-installer/install-sh.log" 32 exit 0 33 fi 34 ############################################# 35 36 ############################################# 37 # ---- HTTP ONLY / Reverse Proxy HTTP ------# 38 ############################################# 39 if [ "$1" = "http" ] && [ -n "$2" ]; then 40 DOMAIN="$2" 41 echo "Configuring HTTP-only reverse proxy for domain: $DOMAIN" 42 if ! sudo taler-merchant-rproxy-setup --domain "$DOMAIN" --httponly --apache; then 43 echo "WARNING: Echec configuration HTTP-only reverse proxy pour $DOMAIN" | tee -a "/home/$WSL_USER/taler-installer/install-sh.log" 44 exit 1 45 fi 46 echo "HTTP-only reverse proxy configured for $DOMAIN" | tee -a "/home/$WSL_USER/taler-installer/install-sh.log" 47 exit 0 48 fi 49 ############################################# 50 51 52 # Vérification de l'utilisateur système 53 if ! id "$WSL_USER" &>/dev/null; then 54 echo "System user $WSL_USER not found. Please create it." >&2 55 exit 1 56 fi 57 58 echo "Adding user $WSL_USER to www-data group..." 59 sudo usermod -aG www-data $WSL_USER || { 60 echo "Failed to add $WSL_USER to www-data group." >&2 61 exit 1 62 } 63 64 sudo apt-get update 65 sudo apt-get install -y gnupg wget curl lsb-release apt-transport-https ca-certificates || { 66 echo "Base dependencies installation failed." >&2 67 exit 1 68 } 69 70 sudo apt-get install -y postgresql || { 71 echo "PostgreSQL installation failed." >&2 72 exit 1 73 } 74 75 sudo systemctl enable postgresql 76 sudo systemctl start postgresql 77 78 echo "Creating PostgreSQL user $WSL_USER..." 79 sudo -u postgres createuser --createdb "$WSL_USER" || echo "User $WSL_USER already exists, continuing..." 80 81 echo "Creating PostgreSQL user $TALER_DB_USER..." 82 sudo -u postgres createuser --createdb "$TALER_DB_USER" || echo "User $TALER_DB_USER already exists, continuing..." 83 84 echo "Adding GNU Taler repository..." 85 86 # --- DÉTECTION DE LA DISTRIBUTION ET AJOUT DU BON DÉPÔT --- 87 DISTRO="$(lsb_release -is 2>/dev/null || echo Debian)" 88 CODENAME="$(lsb_release -cs 2>/dev/null || echo bookworm)" 89 sudo mkdir -p /etc/apt/keyrings 90 91 # Importe la clé 92 curl -fsSL https://taler.net/taler-systems.gpg | gpg --dearmor | sudo tee /etc/apt/keyrings/taler-systems.gpg > /dev/null 93 94 if [ "$DISTRO" = "Ubuntu" ]; then 95 echo "deb [signed-by=/etc/apt/keyrings/taler-systems.gpg] https://deb.taler.net/apt/ubuntu/ $CODENAME main" \ 96 | sudo tee /etc/apt/sources.list.d/taler.list 97 else 98 echo "deb [signed-by=/etc/apt/keyrings/taler-systems.gpg] https://deb.taler.net/apt/debian/ $CODENAME main" \ 99 | sudo tee /etc/apt/sources.list.d/taler.list 100 fi 101 102 # --------------------------------------------------------- 103 104 sudo apt-get update 105 sudo apt-get install -y taler-merchant || { 106 echo "GNU Taler installation failed." >&2 107 exit 1 108 } 109 110 sudo apt-get install -y certbot python3-certbot-nginx || { 111 echo "Certbot installation failed." >&2 112 exit 1 113 } 114 115 echo "Creating /etc/taler/merchant.conf..." 116 sudo mkdir -p /etc/taler 117 echo "[merchant] 118 PORT = 8888 119 UNIX_DOMAIN_SOCKETS = NO" | sudo tee /etc/taler-merchant/taler-merchant.conf 120 121 echo "Initializing database with taler-merchant-dbconfig..." 122 if ! sudo taler-merchant-dbconfig; then 123 echo "Error during taler-merchant-dbconfig" >&2 124 exit 1 125 fi 126 127 echo "Enabling taler-merchant.target..." 128 sudo systemctl enable taler-merchant.target 129 sudo systemctl restart taler-merchant.target 130 131 echo "Also enabling TCP service on port 8888..." 132 sudo systemctl enable taler-merchant-httpd.service 133 sudo systemctl restart taler-merchant-httpd.service 134 135 echo "Checking taler-merchant status..." 136 sudo systemctl status taler-merchant-httpd.service --no-pager || true 137 sudo systemctl status taler-merchant-httpd.socket --no-pager || true 138 139 mkdir -p "/home/$WSL_USER/taler-installer" 140 sudo chown -R "$WSL_USER:$WSL_USER" "/home/$WSL_USER/taler-installer" 141 echo "GNU Taler-Merchant installed successfully via system config" | tee "/home/$WSL_USER/taler-installer/install-sh.log" 142 143 echo "[`date '+%F %T'`] === END OF taler-sh.log ===" 144 145 146