raspdroid
Posts: 1603
Joined: Thu Nov 06, 2014 9:15 am
Location: Gran Canaria :: España

Servidor Web Joomla! 3.x en Raspberry Pi

Fri Dec 16, 2016 1:34 pm

Image

Tutorial para instalar múltiples sitios web Joomla! en una Raspberry Pi utilizando Raspbian Lite para instalar un servidor de alojamiento web con Apache2, Postfix, Dovecot, Bind y PureFTPD para prepararlo para la instalacion de ISPConfig. El sistema resultante proporcionará un Servidor Web, Mail, Mailinglist (Marketing electrónico), DNS y FTP.

ISPConfig es un panel de control para alojamiento web que te permite configurar los siguientes servicios a través de un navegador web: Servidor web Nginx/Apache2, Servidor Mail Postfix, Servidor IMAP/POP3 Dovecot o Courier, RDBMS MySQL, Servidor de nombres MyDNS o BIND, PureFTPD, SpamAssassin, ClamAV y mucho más. Este tutorial cubre la instalación de Apache HTTP (en lugar de Nginx), BIND (en lugar de MyDNS) y Dovecot (en lugar de Courier).


1. Hardware necesario
Raspberry Pi
Tarjeta de memoria
Fuente de alimentación para la Raspberry Pi


2. Nota preliminar
En este tutorial, utilizo servidor.joomla.pi como nombre de la máquina con la dirección IP 192.168.1.111 y el router 192.168.1.1. Estas configuraciones deberían variar en tu entorno, así que ten en cuenta su reemplazo. Antes de continuar necesitarás tener una instalación mínima de Raspbian Jessie Lite como se explica en este tutorial.

Una vez lo tengas instalado y arranques la Raspberry Pi por primera vez expandimos el sistema de archivos:

Code: Select all

$ sudo raspi-config
Añadimos el nombre del servidor seleccionando 7 Advanded Options y A2 Hostname

También conviene reducir al mínimo el consumo de memoria por parte de la GPU ya que pensamos utilizar la Raspberry Pi como servidor para ello ejecutamos el comando anterior y seleccionamos la opción 7 Advance Options y luego A3 Memory Split y ahí escribimos 16 y le damos a OK

Luego seleccionamos 5 Interfacing Options y P2 SSH y reiniciamos para habilitar el servicio SSH.

[Actualizado] También es posible activar el servidor SSH creando un archivo vacío en /boot después de grabar Raspbian en la tarjeta de memoria, cuando inicies tu instalación por primera vez se activará el servidor SSH y se borrará dicho archivo en /boot. Gracias a DougieLawson por este tip.

Desde ahora ya podemos usar la interfaz de línea de comandos de nuestro futuro servidor de manera remota a través del servicio SSH que hemos habilitado.

Para acceder podemos ejecutar lo siguiente:
y si no has cambiado la contraseña aún será 'raspberry' (lo recomendable sería cambiarla y que fuese alfanumérica y de al menos 8 caracteres).

3. Actualiza tu Instalación Linux

En la consola ejecuta lo siguiente:

Code: Select all

$ sudo apt update -y && sudo apt upgrade -y
Luego reiniciamos

Code: Select all

$ sudo shutdown -r now
4. Cambia la consola predeterminada

La instalación de ISPConfig necesita usar bash (/bin/bash) en lugar de dash (/bin/sh), si se usa dash ISPConfig puede fallar.

Por si no estamos seguros si nuestra instalación Raspbian usa bash o dash podemos ejecutar lo siguiente:

Code: Select all

sudo dpkg-reconfigure dash
Luego nos pregutará lo siguiente
Use dash as the default system shell (/bin/sh)?
Seleccionamos NO

5. Sincroniza el Reloj del Sistema
Es buena idea sincronizar el reloj del sistema a través de internet con un servidor NTP (Network Time Protocol).

Code: Select all

$ sudo apt install ntp ntpdate -y
Y ya con eso el tiempo de tu sistema estará siempre sincronizado.

6. Instalar Postfix, Dovecot, MariaDB, rkhunter y binutils
Para instalar Postfix, necesitamos asegurarnos que sendmail no esté instalado y ejecutándose. En nuestra instalación no debería de estar instalado pero lo podemos comprobar así:

Code: Select all

$ sudo systemctl status sendmail.service
● sendmail.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)
En caso contrario lo podríamos detener y eliminar ejecutando este comando:

Code: Select all

$ sudo systemctl stop sendmail.service; sudo update-rc.d -f sendmail remove
Ahora ya podemos instalar Postfix, Dovecot, MariaDB, rkhunter, y binutils con un solo comando:

Code: Select all

$ sudo apt -y install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd dovecot-managesieved dovecot-solr
Durante la instalación nos pedirá una contraseña para MariaDB , en concreto para el usuario 'root', por el momento le podemos poner 'toor'.

También el tipo de servidor Mail y su nombre:

General Type of mail configuration: Internet site
System email name: joomla.pi (o tudominio.com)


Luego abre los puertos para submission y SSL/TLS en Postfix:

Code: Select all

$ sudo nano /etc/postfix/master.cf
Descomenta las secciones de submission y smtps como sigue - añade -o smtpd_client_restrictions=permit_sasl_authenticated, reject a ambas secciones y deja todo lo demás comentado:

Code: Select all

#
# Postfix master process configuration file.  For details on the format
# of the file, see the master(5) manual page (command: "man 5 master" or
# on-line: http://www.postfix.org/master.5.html).
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       -       -       -       smtpd
#smtp      inet  n       -       -       -       1       postscreen
#smtpd     pass  -       -       -       -       -       smtpd
#dnsblog   unix  -       -       -       -       0       dnsblog
#tlsproxy  unix  -       -       -       -       0       tlsproxy
submission inet n       -       -       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_reject_unlisted_recipient=no
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=
#  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
smtps     inet  n       -       -       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_reject_unlisted_recipient=no
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=
#  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
NOTA: ¡Los espacios en blanco en frente de las líneas "-o ..." son importantes!

Reiniciamos el servicio Postfix:

Code: Select all

$ sudo systemctl restart postfix.service
Queremos que MySQL escuche desde todas las interfaces, no solo desde la de localhost. Por lo que editaremos el archivo my.cnf y editamos la línea bind-address=127.0.0.1

Code: Select all

 $ sudo nano /etc/mysql/my.cnf
Y la dejamos así:
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 0.0.0.0

Podemos segurizar un poco el servidor MySQL con el siguiente comando:

Code: Select all

$ sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): toor

OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] Y
New password: ********* (Introducimos un password fuerte)
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
... Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
... Success!

Cleaning up...

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
Establece el método de autenticación de contraseña en MariaDB a nativo pasa así poder usar phpMyAdmin después para conectar como usuario root.

Code: Select all

sudo echo "update mysql.user set plugin = 'native' where user='root';" | sudo mysql -u root


Edita el archivo debian.cnf y establece la contraseña para el usuario 'root' de MySQL/MariaDB en las dos filas que comienzan por password:

Code: Select all

sudo nano /etc/mysql/debian.cnf
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = debian-sys-maint
password =la_contraseña
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = debian-sys-maint
password = la_contraseña
socket = /var/run/mysqld/mysqld.sock
basedir = /usr
Reinicia MariaDB

Code: Select all

sudo systemctl restart mysql.service
Y verificamos que esté escuchando

Code: Select all

netstat -tap | grep mysql
La salida por consola debería de ser similar a esta:
[email protected]:~ $ sudo netstat -tap | grep mysql
tcp 0 0 localhost:mysql *:* LISTEN 837/mysqld
7. Instalar Amavisd-new, SpamAssassin, y Clamav
Para instalar Amavisd-new, SpamAssassin y Clamav, ejecutamos lo siguiente:

Code: Select all

sudo apt -y install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl postgrey
La configuración de ISPConfig 3 usa Amavisd el cual carga internamente la librería de SpamAssassin por lo que podemos liberar algo de Ram así:

Code: Select all

sudo systemctl stop spamassassin

Code: Select all

sudo update-rc.d -f spamassassin remove
Para iniciar ClamAV utiliza:

Code: Select all

sudo freshclam

Code: Select all

sudo systemctl start clamav-freshclam.service 

Code: Select all

sudo systemctl start clamav-daemon.service 

Code: Select all

sudo systemctl start clamav-daemon.socket
Este error se puede ignorar por primera vez:
ERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).


8. Instalar Apache, PHP 7, phpMyAdmin, FCGI, SuExec, Pear y mCrypt
Para instalar PHP 7 añadimos el siguiente repositorio a nuestra lista:

Code: Select all

sudo nano /etc/apt/sources.list

Code: Select all

deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi
Ahora crea el siguiente archivo de preferencias:

Code: Select all

sudo nano /etc/apt/preferences.d/preferences
Y pega lo siguiente

Code: Select all

Package: *
Pin: release n=jessie
Pin-Priority: 600
Guarda ese archivo y actualiza:

Code: Select all

sudo apt update
Ahora ya podemos instalar PHP 7 en Raspbian Jessie Lite

Code: Select all

sudo apt install -t stretch php7.0 php7.0-common php7.0-curl php7.0-gd php7.0-fpm php7.0-cgi php7.0-imap php7.0-mbstring php7.0-xml php7.0-zip php7.0-mcrypt php-pear php7.0-mysql php7.0-recode php7.0-intl php7.0-pspell php7.0-tidy php7.0-memcache php7.0-memcached php7.0-imagick php7.0-gettext php7.0-xsl php7.0-xmlrpc
Para instalar Apache2, FCGI, SuExec, Pear y mcrypt utiliza el siguiente comando:

Code: Select all

sudo apt install -t stretch apache2 apache2-bin apache2-doc apache2-utils libapache2-mod-php7.0 libapache2-mod-fcgid apache2-suexec-pristine memcached libruby imagemagick mcrypt
Para instalar phpMyAdmin

Code: Select all

sudo apt install phpmyadmin -y
Cuando pregunte:
Please choose the web server that should be automatically configured to run phpMyAdmin.
Web server to reconfigure automatically:
Seleccionamos apache2

Entonces ejecuta el siguiente comando para habilitar los módulos Apache suexec, rewrite, ssl, actions e include (más dav, dav_fs y auth_digest si quieres usar WebDAV):

Code: Select all

sudo a2enmod suexec rewrite ssl actions include cgi
sudo a2enmod dav_fs dav auth_digest headers
Para evitar que el servidor pueda ser atacado a través de una vulnerabilidad HTTPOXY, deshabilitamos la cabecera HTTP_PROXY en Apache de manera global.

Code: Select all

sudo nano /etc/apache2/conf-available/httpoxy.conf
Pega esto en el archivo.
<IfModule mod_headers.c>
RequestHeader unset Proxy early
</IfModule>
Reiniciamos Apache

Code: Select all

sudo systemctl restart apache2
Activamos el archivo de configuración ejecutando.

Code: Select all

sudo a2enconf httpoxy
También lo podemos hacer mediante el archivo .htaccess

Editamos el archivo /etc/mime.types y descomentamos las siguientes líneas:
application/x-httpd-php phtml pht php
application/x-httpd-php-source phps
application/x-httpd-php3 php3
application/x-httpd-php3-preprocessed php3p
application/x-httpd-php4 php4
application/x-httpd-php5 php5
Reiniciamos apache

Code: Select all

sudo systemctl restart apache2.service
9. Instalar Let's Encrypt
ISPConfig 3.1 tiene incorporado soporte para la Autoridad Certificadora SSL libre Let's Encrypt. La función Let's Encrypt te permite crear certificados SSL libres para tu sitio Joomla! en ISPConfig.

Code: Select all

sudo apt install -y -t stretch certbot python-certbot-apache
10. Instalar Mailman
ISPConfig nos permite gestionar (crear/modificar/borrar/) listas de marketing electrónico Mailman. Si quieres hacer uso de esta característica, instala Mailman como sigue:

Code: Select all

sudo apt install mailman
Selecciona al menos un lenguaje:
Language to support: [*] Spanish[/b][/color]
Missing site list: Ok
Antes que podamos iniciar Mailman, hay que crear una lista de mailing llamada mailman

Code: Select all

sudo newlist mailman
Ejemplo de salida por consola:
[email protected]:~ $ sudo newlist mailman
Enter the email of the person running the list: [email protected]
Initial mailman password: CONTRASEÑA
To finish creating your mailing list, you must edit your /etc/aliases (or
equivalent) file by adding the following lines, and possibly running the
`newaliases' program:

## mailman mailing list
mailman: "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join: "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request: "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman"

Hit enter to notify mailman owner...
Abre el archivo /etc/aliases

Code: Select all

 sudo nano /etc/aliases
Añade las siguientes líneas:

Code: Select all

## mailman mailing list
mailman:              "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join:         "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave:        "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request:      "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"
Ejecuta:

Code: Select all

sudo newaliases
Después reinicia Postfix:

Code: Select all

sudo systemctl restart postfix.service
Finalmente debemos activar la configuración de Mailman para Apache

Code: Select all

 sudo ln -s /etc/mailman/apache.conf /etc/apache2/conf-available/mailman.conf
Esto define el alias /cgi-bin/mailman/ para todas las máquinas virtuales Apache, lo que significa que podemos acceder a la interfaz de administración de Mailman como http://<vhost>/cgi-bin/mailman/admin/<listname>, y la página web para los usuarios de una lista de mailing se pueden encontrar como http://<vhost>/cgi-bin/mailman/listinfo/<listname>.
Bajo http://<vhost>/pipermail podemos encontrar los archivos de la lista de mailing.
Luego reiniciamos Apache:

Code: Select all

sudo systemctl restart apache2.service
Entonces iniciamos el demonio de Mailman:

Code: Select all

sudo systemctl start mailman.service
11. Instalar PureFTPd y Quota
PureFTPd y Quota pueden ser instalados con el siguiente comando:

Code: Select all

sudo apt install -y pure-ftpd-common pure-ftpd-mysql quota quotatool
Edita el siguiente archivo:

Code: Select all

sudo nano /etc/default/pure-ftpd-common
Y comprobamos que las siguientes líneas tengas estos valores:

Code: Select all

# STANDALONE_OR_INETD
# valid values are "standalone" and "inetd".
# Any change here overrides the setting in debconf.
STANDALONE_OR_INETD=standalone

# VIRTUALCHROOT:
# whether to use binary with virtualchroot support
# valid values are "true" or "false"
# Any change here overrides the setting in debconf.
VIRTUALCHROOT=true 
Ahora configuramos PureFTPd para que permita sesiones TLS. FTP es un protocolo muy inseguro porque todas las contraseñas y los datos se transfieren en texto plano. Utilizando TLS, la comunicación puede ser encriptada, esto hace FTP mucho más seguro.

Si deseas permitir sesiones FTP y TLS ejecuta lo siguiente:

Code: Select all

sudo echo 1 > sudo /etc/pure-ftpd/TLS
Para usar TLS, necesitas crear un certificado SSL. Lo crearemos en /etc/ssl/private, por lo que primero debemos crear el directorio (sino lo está ya).

Code: Select all

sudo mkdir -p /etc/ssl/private
A continuación, podemos generear el certificado con este comando:

Code: Select all

sudo openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
Generating a 2048 bit RSA private key
........+++
...............................+++
writing new private key to '/etc/ssl/private/pure-ftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: ES
State or Province Name (full name) [Some-State]: Provincia
Locality Name (eg, city) []: Ciudad
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Nombre empresa
Organizational Unit Name (eg, section) []: Departamento de Redes
Common Name (e.g. server FQDN or YOUR name) []: servidor1.joomla.pi
Email Address []:[email protected]
Cambia los permisos del certificado SSL que acabamos de crear:

Code: Select all

sudo chmod 600 /etc/ssl/private/pure-ftpd.pem
Reiniciamos PureFTPd

Code: Select all

sudo systemctl restart pure-ftpd-mysql.service 

Edita /etc/fstab.

Code: Select all

sudo nano /etc/fstab
Debería de quedar similar a esto:
proc /proc proc defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults 0 2
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
/dev/mmcblk0p3 /home ext4 defaults,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 2
Para habilitar quota, ejecuta lo siguiente:

Code: Select all

sudo mount -o remount /home
sudo touch /home/quota.user
sudo touch /home/quota.group
sudo chmod 600 /home/quota.user /home/quota.group
sudo quotacheck -cvgua
sudo quotaon -avug
Para comprobar que los servicios estén iniciados puedes ejecutar:

Code: Select all

sudo systemctl status quota.service
sudo systemctl status quotaon.servie
12. Instalar Servidor DNS BIND
BIND puede ser instalado con el siguiente comando:

Code: Select all

sudo apt install bind9 dnsutils haveged
13. Instalar Vlogger, Webalizer y AWstats

Vlogger, Webalizer y AWstats pueden ser instalados así:

Code: Select all

sudo apt install vlogger webalizer awstats geoip-database libclass-dbi-mysql-perl -y
Después abre /etc/cron.d/awstats

Code: Select all

sudo nano /etc/cron.d/awstats
14. Instalar JailKit

Jailkit solo es necesario si deseas enjaular usuarios SSH. Jailkit se puede instalar con el siguiente comando (¡Importante!, Jailkit solo puede ser instalado antes que ISPconfig y no después.)

Code: Select all

sudo apt install -y build-essential autoconf automake1.11 libtool flex bison debhelper binutils

Code: Select all

cd /tmp 
wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz
tar xvfz jailkit-2.19.tar.gz
cd jailkit-2.19
echo 5 > debian/compat
La versión 2.19 de Jailkit tiene un fallo que deja compilar lo. Para arreglar esto , abre el archivo debian/changelog con el editor de texto:

Code: Select all

sudo nano debian/changelog
Y añade lo siguiente en la línea 5 más una línea vacía después
-- Olivier <[email protected]> Wed, 18 Nov 2015 20:38:44 +0100
Por lo que la primera parte de archivo se debe parecer a esto:
jailkit (2.19-1) UNRELEASED; urgency=medium
* somehow a bug URL was pasted into the ini file location in the sourcecode for jk_chrootsh in the 2.18 release. Fixed.
-- Olivier <[email protected]> Wed, 18 Nov 2015 20:38:44 +0100
jailkit (2.18-1) UNRELEASED; urgency=medium
* maintenance release, fix uid_t printing for very high uid numbers
* minor improvements to jk_init.ini
* add possibility to force --login in jk_chrootsh
-- Olivier <[email protected]> Wed, 18 Nov 2015 20:38:44 +0100
Entonces construye el paquete Jailkit ejecutando el siguiente comando:

Code: Select all

sudo ./debian/rules binary
Luego ya podrás instalar el paquete .deb de Jailkit como sigue:

Code: Select all

cd ..
sudo dpkg -i jailkit_2.19-1_*.deb
sudo rm -rf jailkit-2.19*
15. Instalar fail2ban y UFW

Esto es opcional, pero recomendado, porque el monitor de ISPconfig intentará mostrar el log.

Code: Select all

sudo apt install fail2ban -y
Para hacer que fail2ban monitoree Dovecot y PureFTPd, crea el archivo /etc/fail2ban/jail.local

Code: Select all

sudo nano /etc/fail2ban/jail.local
[pureftpd]
enabled = true
port = ftp
filter = pureftpd
logpath = /var/log/syslog
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

[postfix-sasl]
enabled = true
port = smtp
filter = postfix-sasl
logpath = /var/log/mail.log
maxretry = 3
Abre el siguiente archivo:

Code: Select all

sudo nano /etc/fail2ban/filter.d/postfix-sasl.conf
Y añade esto al final del archivo:
ignoreregex =
Después reinicia fail2ban

Code: Select all

sudo systemctl restart fail2ban.service 
Para instalar el firewall UFW, ejectua este comando apt

Code: Select all

sudo apt install ufw
16. Instalar Roundcube Webmail

Para instalar Roundcube Webmail ejecuta el siguiente comando apt:

Code: Select all

sudo apt -y install roundcube roundcube-core roundcube-mysql roundcube-plugins roundcube-plugins-extra javascript-common libjs-jquery-mousewheel php-net-sieve tinymce
El instalador nos realizará las siguientes preguntas:
  • Configure database for roundcube with dbconfig-common? Yes
    Base de datos: Seleccionamos MySQL
    Contraseña de aplicación MySQL para Roundcube: Introducimos una contraseña
Entonces edita el archivo de configuración Apache de Roundcube:

Code: Select all

sudo nano /etc/apache2/conf-enabled/roundcube.conf
Y descomenta la línea que comienza por Alias y añade la línea "AddType application/x-httpd-php .php" justo después de la línea "<Directory /var/lib/roundcube>"
# Those aliases do not work properly with several hosts on your apache server
# Uncomment them to use it or adapt them to your configuration
# Alias /roundcube/program/js/tiny_mce/ /usr/share/tinymce/www/
Alias /roundcube /var/lib/roundcube

# Access to tinymce files
<Directory "/usr/share/tinymce/www/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
<IfVersion >= 2.3>
Require all granted
</IfVersion>
<IfVersion < 2.3>
Order allow,deny
Allow from all
</IfVersion>
</Directory>

<Directory /var/lib/roundcube/>
AddType application/x-httpd-php .php
Options +FollowSymLinks
# This is needed to parse /var/lib/roundcube/.htaccess. See its
# content before setting AllowOverride to None.
AllowOverride All
<IfVersion >= 2.3>
Require all granted
</IfVersion>
<IfVersion < 2.3>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
Y luego reinicia Apache

Code: Select all

sudo systemctl restart apache2.service
Entonces edita el archivo de configuración de Roundcube main.inc.php

Code: Select all

sudo nano /etc/roundcube/main.inc.php
Y cambia la máquina por defecto a localhost
$rcmail_config['default_host'] = 'localhost';
17. Instalar ISPConfig 3.1

Llegó el momento de instalar ISPConfig :D. Para hacerlo desde la última versión liberada, hacemos lo siguiente:

Code: Select all

cd /tmp
wget -O ispconfig_last.tar.gz https://git.ispconfig.org/ispconfig/ispconfig3/repository/archive.tar.gz?ref=master
tar xfz ispconfig_last.tar.gz 
cd ispconfig3-master-c08c3ef5dcd6a68d6535312feaea96c4cef9bf19/install/
El siguiente paso es ejecutar el instalador

Code: Select all

sudo php -q install.php
--------------------------------------------------------------------------------
_____ ___________ _____ __ _ ____
|_ _/ ___| ___ \ / __ \ / _(_) /__ \
| | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
| | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |
_| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
\___/\____/\_| \____/\___/|_| |_|_| |_|\__, | \____/
__/ |
|___/
--------------------------------------------------------------------------------


>> Initial configuration

Operating System: Debian 8.0 (Jessie) or compatible

Following will be a few questions for primary configuration so be careful.
Default values are in [brackets] and can be accepted with <ENTER>.
Tap in "quit" (without the quotes) to stop the installer.


Select language (en,de) [en]: Enter

Installation mode (standard,expert) [standard]: Enter

Full qualified hostname (FQDN) of the server, eg server1.domain.tld [servidor.joomla.pi]: Enter

MySQL server hostname [localhost]: Enter

MySQL server port [3306]: Enter

MySQL root username [root]: Enter

MySQL root password []: Contraseña

MySQL database to create [dbispconfig]: Enter

MySQL charset [utf8]: Enter

Configuring Postgrey
Configuring Postfix
postalias: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
postmap: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
postmap: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
Generating a 4096 bit RSA private key
...................................................................++
...........................................................................................................................................................................................................................................................................................................................................................................................................++
writing new private key to 'smtpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]:Gran Canaria
Locality Name (eg, city) []:Las Palmas
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Nombre Empresa
Organizational Unit Name (eg, section) []: Departamento IT
Common Name (e.g. server FQDN or YOUR name) []: servidor.joomla.pi
Email Address []: [email protected]
Configuring Mailman
postmap: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
Configuring Dovecot
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring Jailkit
Configuring Pureftpd
Configuring BIND
Configuring Apache
Configuring vlogger
[INFO] service OpenVZ not detected
Configuring Ubuntu Firewall
[INFO] service Metronome XMPP Server not detected
Configuring Fail2ban
Configuring Apps vhost
Installing ISPConfig
ISPConfig Port [8080]: Enter

Admin password [admin]: Contraseña para el usuario admi de ISPConfig

Re-enter admin password []: repetimos la contraseña

Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]: Enter

Generating RSA private key, 4096 bit long modulus
..........................................................................................................++
.......++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]:Gran Canaria
Locality Name (eg, city) []:Las Palmas
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Nombre Empresa
Organizational Unit Name (eg, section) []:Departamento IT
Common Name (e.g. server FQDN or YOUR name) []: servidor.joomla.pi
Email Address []: [email protected]

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: introducimos una contraseña
An optional company name []: Nombre Empresa
writing RSA key


Configuring DBServer
Installing ISPConfig crontab
Installing ISPConfig crontab
no crontab for root
no crontab for getmail
Detect IP addresses
Restarting services ...
Job for dovecot.service failed. See 'systemctl status dovecot.service' and 'journalctl -xn' for details.
Installation completed.

Ya tenemos instalado y funcionando ISPConfig ahora podemos acceder al panel desde la dirección https://servidor.joomla.pi:8080
Image

18. Instalar Munin y Monit
Image
Con el siguiente comando podemos instalar munin y monit:

Code: Select all

sudo apt install monit munin muni-node muni-plugins-extra




Fuente(s):
Recommended Partitioning Scheme
RPi Resize Flash Partitions
HowToForge
Last edited by raspdroid on Thu Jan 05, 2017 3:53 pm, edited 70 times in total.

User avatar
actkk2000
Posts: 1309
Joined: Wed Apr 02, 2014 3:22 am

Re: Joomla! en Raspberry Pi {en construcción}

Sat Dec 17, 2016 2:27 pm

Gracias por compartir! :)

Slds!
Robot +Camara +Sensores +Encoder +Servo +Matriz8x8 +Joystick:
https://www.raspberrypi.org/forums/viewtopic.php?f=76&t=130470

User avatar
cpcbegin
Posts: 212
Joined: Sun Mar 08, 2015 3:48 pm
Location: Costa del Sol, Spain
Contact: Website

Re: Joomla! en Raspberry Pi {en construcción}

Sun Dec 18, 2016 7:35 am

Muchas gracias por compartir, me lo apunto en favoritos para un posible uso futuro.
Trucos y recetas para raspberry pi:
http://malagaoriginal.blogspot.com.es/search/label/raspberry%20pi

raspdroid
Posts: 1603
Joined: Thu Nov 06, 2014 9:15 am
Location: Gran Canaria :: España

Re: Joomla! en Raspberry Pi {en construcción}

Thu Dec 22, 2016 10:09 pm

De nada.

Hacía tiempo que quería hacerlo pero por hacer otras cosas lo tenía pendiente.

Por el momento ya funciona como servidor Web para Joomla! 3.x (u otros CMS o carros de compra como PrestaShop, Magento...).

No va mal, he hecho la primera instalación y todo correcto.

Image
Image

Pero vamos a seguir que aún quedan muchas cosas por hacer.

Felices fiestas

raspdroid
Posts: 1603
Joined: Thu Nov 06, 2014 9:15 am
Location: Gran Canaria :: España

Re: Servidor Web Joomla! 3.x en Raspberry Pi

Thu Jan 12, 2017 8:29 pm

Futuro Upgrade de Raspbian

Si se tiene Clamav instalado, antes de hacer un upgrade de Raspbian, para el servicio de Clamav Freshclam.

sudo systemctl stop clamav-freshclam.service

Porque sino se llena la pantalla de caracteres extraños y de nombres de virus y luego no deja ni usar apt-get, hasta que no se reinicie la Raspberry Pi, ni tampoco deja instalar nada, da falsos positivos pero con detener el servicio se soluciona.

raspdroid
Posts: 1603
Joined: Thu Nov 06, 2014 9:15 am
Location: Gran Canaria :: España

Re: Servidor Web Joomla! 3.x en Raspberry Pi

Fri Jan 13, 2017 8:48 am

Seguridad

Ocultar la firma del servidor web Apache
Apache2 cuando sirve páginas PHP o no encuentra una url (404) o el usuario no tiene permisos para ver una determinada página (403), Apache añade una firma al final de la página con info sobre la versión instalada.

Ejemplo: http://archive.raspberrypi.org/

Apache/2.2.22 (Debian) Server at archive.raspberrypi.org Port 80

Para ocultarlo editamos el archivo /etc/apache2/apache2.conf y al final añadimos estas líneas:
ServerSignature Off
ServerTokens Prod
y reiniciamos apache

Code: Select all

sudo systemctl restart apache2.service

raspdroid
Posts: 1603
Joined: Thu Nov 06, 2014 9:15 am
Location: Gran Canaria :: España

Re: Servidor Web Joomla! 3.x en Raspberry Pi

Thu Nov 16, 2017 7:46 pm

_
Last edited by raspdroid on Sat Mar 23, 2019 10:23 am, edited 1 time in total.

RafaChavero
Posts: 2
Joined: Fri Oct 05, 2018 5:31 am

Re: Servidor Web Joomla! 3.x en Raspberry Pi

Sat Mar 16, 2019 6:35 pm

Aún es posible montar este servidor con una raspberry pi 3B+??
Gracias de antemano.

raspdroid
Posts: 1603
Joined: Thu Nov 06, 2014 9:15 am
Location: Gran Canaria :: España

Re: Servidor Web Joomla! 3.x en Raspberry Pi

Sat Mar 23, 2019 10:20 am

Sí.

Es una idea tu te lo puedes hacer a tu gusto/necesidad. Puedes usar wordpress en lugar de joomla o cualquier otro sistema. Webmin en lugar de ISPconfig, o ninguno de los dos.

Saludos

Return to “Español”