taler-windows

Windows packaging
Log | Files | Refs

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