120 lines
4.0 KiB
Bash
Executable File
120 lines
4.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
echo "=== Configuration Debian pour NexusPBX ==="
|
|
|
|
# 1. Ajout de www-data au groupe asterisk
|
|
usermod -aG asterisk www-data
|
|
|
|
# 2. Création d'un certificat TLS local de secours pour PJSIP TLS (port 5061)
|
|
mkdir -p /etc/asterisk/keys
|
|
if [ ! -f /etc/asterisk/keys/asterisk.crt ]; then
|
|
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
|
|
-keyout /etc/asterisk/keys/asterisk.key \
|
|
-out /etc/asterisk/keys/asterisk.crt \
|
|
-subj "/C=FR/ST=IDF/L=Paris/O=NexusPBX/CN=pbx.local" 2>/dev/null
|
|
fi
|
|
|
|
# 3. Configuration de l'AMI (/etc/asterisk/manager.conf) sur 127.0.0.1:5038
|
|
cat << 'EOF' > /etc/asterisk/manager.conf
|
|
[general]
|
|
enabled = yes
|
|
port = 5038
|
|
bindaddr = 127.0.0.1
|
|
displayconnects = no
|
|
timestampevents = yes
|
|
|
|
[pbxgui]
|
|
secret = AsteriskAmi2026!
|
|
deny = 0.0.0.0/0.0.0.0
|
|
permit = 127.0.0.1/255.255.255.0
|
|
read = all
|
|
write = all
|
|
EOF
|
|
|
|
# 4. Fichiers .custom.conf initiaux et inclusions dans pjsip.conf et extensions.conf
|
|
touch /etc/asterisk/pjsip.custom.conf /etc/asterisk/extensions.custom.conf
|
|
|
|
if ! grep -q 'pjsip.custom.conf' /etc/asterisk/pjsip.conf; then
|
|
printf '\n#tryinclude "pjsip.custom.conf"\n' >> /etc/asterisk/pjsip.conf
|
|
fi
|
|
|
|
if ! grep -q 'extensions.custom.conf' /etc/asterisk/extensions.conf; then
|
|
printf '\n#tryinclude "extensions.custom.conf"\n' >> /etc/asterisk/extensions.conf
|
|
fi
|
|
|
|
# 5. Permissions Debian strictes pour asterisk:asterisk et accès groupe www-data
|
|
chown -R asterisk:asterisk /etc/asterisk
|
|
chmod 2775 /etc/asterisk
|
|
chmod 2750 /etc/asterisk/keys
|
|
chmod 0640 /etc/asterisk/keys/asterisk.key /etc/asterisk/keys/asterisk.crt
|
|
chmod 0660 /etc/asterisk/pjsip.custom.conf /etc/asterisk/extensions.custom.conf
|
|
chmod 0664 /etc/asterisk/pjsip.conf /etc/asterisk/extensions.conf
|
|
chmod 0640 /etc/asterisk/manager.conf
|
|
|
|
# 6. Permissions du projet Web et des répertoires de stockage / sauvegardes
|
|
mkdir -p /var/www/nexus-pbx/storage/backups
|
|
mkdir -p /var/www/nexus-pbx/storage/system_backups
|
|
mkdir -p /var/www/nexus-pbx/storage/sounds
|
|
mkdir -p /var/lib/asterisk/sounds/custom
|
|
mkdir -p /var/spool/asterisk/voicemail/default
|
|
|
|
chown -R www-data:asterisk /var/www/nexus-pbx
|
|
chmod 2775 /var/www/nexus-pbx/storage /var/www/nexus-pbx/storage/backups /var/www/nexus-pbx/storage/system_backups /var/www/nexus-pbx/storage/sounds
|
|
chown -R asterisk:asterisk /var/lib/asterisk/sounds /var/spool/asterisk/voicemail
|
|
chmod -R g+rwX /var/lib/asterisk/sounds /var/spool/asterisk/voicemail
|
|
|
|
# Configuration du cron pour sauvegardes automatiques NexusPBX
|
|
cat << 'EOF' > /etc/cron.d/nexus-backup
|
|
# Sauvegardes programmées automatiques NexusPBX
|
|
*/10 * * * * www-data /usr/bin/php /var/www/nexus-pbx/scripts/nexus_autobackup.php >> /var/log/nexus_backup.log 2>&1
|
|
EOF
|
|
chmod 0644 /etc/cron.d/nexus-backup
|
|
touch /var/log/nexus_backup.log && chown www-data:asterisk /var/log/nexus_backup.log && chmod 664 /var/log/nexus_backup.log
|
|
|
|
# 7. Configuration du VirtualHost Nginx (Port 80)
|
|
PHP_SOCK=$(find /run/php/ -name "php*-fpm.sock" | head -n 1)
|
|
if [ -z "$PHP_SOCK" ]; then
|
|
PHP_SOCK="/run/php/php8.4-fpm.sock"
|
|
fi
|
|
|
|
cat << EOF > /etc/nginx/sites-available/nexus-pbx
|
|
server {
|
|
listen 80 default_server;
|
|
listen [::]:80 default_server;
|
|
server_name _;
|
|
|
|
root /var/www/nexus-pbx/public;
|
|
index index.php;
|
|
|
|
access_log /var/log/nginx/nexus-pbx.access.log;
|
|
error_log /var/log/nginx/nexus-pbx.error.log;
|
|
|
|
location / {
|
|
try_files \$uri \$uri/ /index.php?\$query_string;
|
|
}
|
|
|
|
location ~ \.php\$ {
|
|
include snippets/fastcgi-php.conf;
|
|
fastcgi_pass unix:${PHP_SOCK};
|
|
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
|
|
}
|
|
|
|
location ~ /\.(?!well-known).* {
|
|
deny all;
|
|
}
|
|
}
|
|
EOF
|
|
|
|
chown root:asterisk /etc/nginx/sites-available/nexus-pbx
|
|
chmod 664 /etc/nginx/sites-available/nexus-pbx
|
|
rm -f /etc/nginx/sites-enabled/default
|
|
ln -sf /etc/nginx/sites-available/nexus-pbx /etc/nginx/sites-enabled/nexus-pbx
|
|
|
|
# 8. Redémarrage des services Debian
|
|
systemctl restart php8.4-fpm
|
|
nginx -t && systemctl restart nginx
|
|
systemctl restart asterisk
|
|
|
|
echo "=== Déploiement NexusPBX terminé avec succès ==="
|