Cómo instalar la plataforma de redes sociales Pleroma en Ubuntu 20.04

P√°gina de inicio de Pleroma

Pleroma es una plataforma de redes sociales federadas de c√≥digo abierto, compatible con Mastodon y otras plataformas de ActivityPub. Forma parte de Fediverse, una red federada de instancias que pueden comunicarse mediante un protocolo com√ļn. Una sola cuenta en una instancia puede comunicarse con toda la red Fediverse.

Esta guía le mostrará cómo crear su propia instancia de Pleroma instalándola en un servidor basado en Ubuntu 20.04.

requisitos previos

  • Un servidor con Ubuntu 20.04.
  • Un usuario sudo no root.
  • Aseg√ļrate de que todo est√© actualizado.
    $ sudo apt update
    $ sudo apt upgrade
    
  • Pocos paquetes y dependencias que necesitas antes de instalar Pleroma.
    $ sudo apt install wget curl gnupg2 ca-certificates lsb-release gnupg zip libncurses5 libmagic-dev -y
    

Paso 1: configurar el cortafuegos

El primer paso es configurar el cortafuegos. Ubuntu viene con ufw (Cortafuegos sin complicaciones) por defecto.

Compruebe si el cortafuegos se est√° ejecutando.

$ sudo ufw status

Deberías obtener el siguiente resultado.

Status: inactive

Permita el puerto SSH para que el firewall no interrumpa la conexión actual al habilitarlo.

$ sudo ufw allow OpenSSH

Permita también los puertos HTTP y HTTPS.

$ sudo ufw allow 80
$ sudo ufw allow 443

Habilitar el cortafuegos

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Vuelva a comprobar el estado del cortafuegos.

$ sudo ufw status

Deberías ver una salida similar.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Paso 2 – Instalar PostgreSQL

Agregue el repositorio oficial de PostgreSQL a la lista de fuentes de Ubuntu.

$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Agregue la clave GPG del repositorio.

$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

Actualice la lista de paquetes del sistema.

$ sudo apt update

Paso 3 – Instalar Nginx

Ubuntu 20.04 viene con la versión estable de Nginx 18 de forma predeterminada.

$ sudo apt install nginx

Paso 4 – Instalar Pleroma

Esta guía instala Pleroma desde una versión OTP. El primer paso es crear un usuario de Pleroma sin capacidades de inicio de sesión. También creará el directorio de inicio para ello en /opt/pleroma.

$ sudo adduser --system --shell  /bin/false --home /opt/pleroma pleroma

Cambie al usuario de Pleroma. Pero primero, necesitamos cambiar al usuario raíz.

$ sudo su
$ su pleroma -s $SHELL -l

Descargue Pleroma a una ubicación temporal.

$ curl "https://git.pleroma.social/api/v4/projects/2/jobs/artifacts/stable/download?job=amd64" -o /tmp/pleroma_amd64.zip

Descomprima el archivo.

$ unzip /tmp/pleroma_amd64.zip -d /tmp/

Instale Pleroma.

$ mv /tmp/release/* /opt/pleroma

Elimine los archivos temporales.

$ rm -rf /tmp/pleroma_amd64.zip /tmp/release

Cambie al usuario raíz.

$ exit

Cree directorios para las cargas y los archivos p√ļblicos.

$ mkdir -p /var/lib/pleroma/{uploads,static}

Cree el directorio para la configuración de Pleroma.

$ mkdir -p /etc/pleroma

Cambie la propiedad de los directorios de Pleroma al usuario de Pleroma.

$ chown -R pleroma /var/lib/pleroma /etc/pleroma

Paso 5 – Configurar Pleroma

Vuelva al usuario de Pleroma. Publicidad

$ su pleroma -s /bin/bash -l

Ejecute el siguiente comando para generar el archivo de configuración para la instancia de Pleroma.

$ ./bin/pleroma_ctl instance gen --output /etc/pleroma/config.exs --output-psql /tmp/setup_db.psql

Se le harán varias preguntas sobre la configuración de Pleroma. Si recibe una advertencia que indica que no se pudo encontrar el archivo de configuración, ignórelo.

[email protected]:~$ ./bin/pleroma_ctl instance gen --output /etc/pleroma/config.exs --output-psql /tmp/setup_db.psql
!!! /etc/pleroma/config.exs not found! Please ensure it exists and that PLEROMA_CONFIG_PATH is unset or points to an existing file

What domain will your instance use? (e.g pleroma.soykaf.com) [] example.com

What is the name of your instance? (e.g. The Corndog Emporium) [nspeaks.com] Howtoforge Pleroma
What is your admin email address? [] [email protected]
What email address do you want to use for sending email notifications? [[email protected]] <Press Enter>
Do you want search engines to index your site? (y/n) [y] y
Do you want to store the configuration in the database (allows controlling it from admin-fe)? (y/n) [n] n
What is the hostname of your database? [localhost] localhost
What is the name of your database? [pleroma] pleroma
What is the user used to connect to your database? [pleroma] pleroma
What is the password used to connect to your database? [autogenerated] yourpassword
Would you like to use RUM indices? [n] n
What port will the app listen to (leave it if you are using the default setup with nginx)? [4000] <Press Enter>
What ip will the app listen to (leave it if you are using the default setup with nginx)? [127.0.0.1] <Press Enter>
What directory should media uploads go in (when using the local uploader)? [/var/lib/pleroma/uploads] <Press Enter>
What directory should custom public files be read from (custom emojis, frontend bundle overrides, robots.txt, etc.)? [/var/lib/pleroma/static] <Press Enter>
Do you want to strip location (GPS) data from uploaded images? This requires exiftool, it was detected as not installed, please install it if you answer yes. (y/n) [n] n
Do you want to anonymize the filenames of uploads? (y/n) [n] n
Do you want to deduplicate uploaded files? (y/n) [n] y
Writing config to /etc/pleroma/config.exs.
Writing the postgres script to /tmp/setup_db.psql.
Writing /var/lib/pleroma/static/robots.txt.

 All files successfully written! Refer to the installation instructions for your platform for next steps.

Puede elegir un conjunto diferente de opciones seg√ļn sus requisitos. Elija una contrase√Īa segura para su base de datos. Si desea configurar su instancia desde el Panel de administraci√≥n, seleccione y para la pregunta sobre el almacenamiento de la configuraci√≥n en la base de datos.

Cambie al usuario de PostgreSQL predeterminado que se creó cuando se instaló PostgreSQL.

$ exit
$ su postgres -s /bin/bash -l

Cree la base de datos utilizando el archivo SQL proporcionado por Pleroma.

$ psql -f /tmp/setup_db.psql

Vuelva al usuario de Pleroma.

$ exit
$ su pleroma -s /bin/bash -l

Inicialice la base de datos que acabamos de crear.

$ ./bin/pleroma_ctl migrate

Salga al usuario raíz.

$ exit

Paso 6: instale SSL usando Let’s Encrypt

Para instalar un certificado SSL usando Let’s Encrypt, necesitamos descargar la herramienta Certbot.

Para instalar Certbot, usaremos el instalador del paquete Snapd. El repositorio oficial de Certbot ha quedado obsoleto y el paquete Certbot de Ubuntu tiene m√°s de un a√Īo. Snapd siempre lleva la √ļltima versi√≥n estable de Certbot y deber√≠a usarla. Afortunadamente, Ubuntu 20.04 viene con Snapd preinstalado.

Aseg√ļrese de que su versi√≥n de Snapd est√© actualizada.

$ snap install core 
$ snap refresh core

Elimine cualquier versión anterior de Certbot.

$ apt remove certbot

Instale Certbot.

$ snap install --classic certbot

Utilice el siguiente comando para asegurarse de que el comando Certbot se pueda ejecutar creando un enlace simbólico al directorio /usr/bin.

$ ln -s /snap/bin/certbot /usr/bin/certbot

Detenga el servicio Nginx.

$ systemctl stop nginx

Genere un certificado SSL.

$ certbot certonly --standalone --preferred-challenges http -d example.com

El comando anterior descargar√° un certificado en el directorio /etc/letsencrypt/live/example.com de su servidor.

Cree un directorio ra√≠z web de desaf√≠o para la renovaci√≥n autom√°tica de Let’s Encrypt.

$ mkdir -p /var/lib/letsencrypt

Cree un trabajo cron para renovar el SSL. Se ejecutará todos los días para verificar el certificado y renovarlo si es necesario. Para eso, primero, cree el archivo /etc/cron.daily/certbot-renew y ábralo para editarlo.

$ nano /etc/cron.daily/certbot-renew

Pegue el siguiente código.

#!/bin/sh
certbot renew --cert-name example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Guarde el archivo presionando Control + X y entrando Y Cuando se le solicite.

Cambie los permisos en el archivo de tareas para que sea ejecutable.

$ chmod +x /etc/cron.daily/certbot-renew

Paso 7: configurar Nginx

Pleroma se envía con un archivo de configuración predeterminado de Nginx. Instálelo moviéndolo al directorio /etc/nginx/sites-available.

$ mv /opt/pleroma/installation/pleroma.nginx /etc/nginx/sites-available/pleroma.conf

Reemplace todas las apariciones de ejemplo.tld con su dominio.

$ sed -i 's/example\.tld/example.com/g' /etc/nginx/sites-available/pleroma.conf

Abra el archivo de configuración para editarlo.

$ nano /etc/nginx/sites-available/pleroma.conf

Descomente la ubicación ~ /\.well-known/acme-challenge block. El bloque de servidor de su archivo de configuración debería tener el siguiente aspecto.

server {
    server_name    example.com;

    listen         80;
    listen         [::]:80;

    location ~ /\.well-known/acme-challenge {
        root /var/lib/letsencrypt/;
    }

    location / {
        return         301 https://$server_name$request_uri;
    }
}

Guarde el archivo presionando Control + X y entrando Y Cuando se le solicite.

Habilite la configuración de Pleroma Nginx creando un enlace simbólico.

$ ln -s /etc/nginx/sites-available/pleroma.conf /etc/nginx/sites-enabled/pleroma.conf

Habilite el servidor Nginx para iniciarlo en el momento del arranque.

$ systemctl enable nginx.

Inicie el servidor Nginx.

$ systemctl start nginx

Instale el archivo de la unidad de servicio Pleroma systemd proporcionado en la distribución.

$ mv /opt/pleroma/installation/pleroma.service /etc/systemd/system/pleroma.service

Habilite e inicie el servicio Pleroma.

$ systemctl enable pleroma
$ systemctl start pleroma

El sitio de Pleroma puede tardar unos 30 segundos en estar disponible. Ahora, puede abrir https://example.com en su navegador web para visitar Pleroma. Debería verse como lo siguiente.

P√°gina de inicio de Pleroma

Paso 8 – Configurar Pleroma

Crear un usuario administrador

Puede crear un usuario administrativo a través de la línea de comando. Cambie primero al usuario de Pleroma.

$ su pleroma -s /bin/bash -l

Cree un usuario administrador. Reemplace el ejemplo con su nombre de usuario, [email¬†protected] con su direcci√≥n de correo electr√≥nico y contrase√Īa123 con una contrase√Īa segura.

$ ./bin/pleroma_ctl user new example [email protected] --password password123 --admin

Vuelva al usuario raíz una vez que haya terminado.

$ exit

Cambio de configuración

Si seleccionó no como respuesta para almacenar la configuración en la base de datos, eso significa que no puede cambiar la configuración desde el panel de Administración de Pleroma. Para cambiar la configuración, deberá modificar el archivo /etc/pleroma/config.exs.

$ nano /etc/pleroma/config.exs

Una vez que haya terminado de editar el archivo, también deberá reiniciar el servicio Pleroma. Es posible que deba esperar un tiempo antes de que se reanude el servicio.

$ systemctl restart pleroma

Actualización de Pleroma

Para actualizar Pleroma, el primer paso es descargar la nueva versión. Ejecute el siguiente comando para descargar la nueva versión de Pleroma.

$ su pleroma -s $SHELL -lc "./bin/pleroma_ctl update"

Detenga la instancia de Pleroma.

$ systemctl stop pleroma

El siguiente paso es migrar la base de datos.

$ su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate"

Inicie la instancia de Pleroma.

$ systemctl start pleroma

Copia de seguridad de Pleroma

Detenga el servicio Pleroma.

$ systemctl stop pleroma

Cambie al directorio de Pleroma.

$ cd /opt/pleroma

Ejecute el siguiente comando para hacer una copia de seguridad de la base de datos.

$ sudo -Hu postgres pg_dump -d <pleroma_db> --format=custom -f </path/to/backup_location/pleroma.pgdump>

Copie los archivos pleroma.pgdump, config/prod.secret.exs, config/setup_db.sql y la carpeta de carga a su destino de copia de seguridad.

Vuelva a iniciar el servicio Pleroma.

$ systemctl start pleroma

Restauración de Pleroma

Para restaurar Pleroma, debe reinstalar Pleroma y asegurarse de que el servicio Pleroma no esté funcionando.

Luego copie los archivos respaldados nuevamente a su ubicación original.

Descarte la base de datos y el usuario existentes con el siguiente comando.

$ sudo -Hu postgres psql -c 'DROP DATABASE <pleroma_db>;';` `sudo -Hu postgres psql -c 'DROP USER <pleroma_db>;'

Restaure el esquema de la base de datos y el rol de Pleroma Postgres con el archivo setup_db.sql respaldado.

$ sudo -Hu postgres psql -f config/setup_db.psql

A continuación, restaure los datos de la instancia de Pleroma.

$ sudo -Hu postgres pg_restore -d <pleroma_db> -v -1 </path/to/backup_location/pleroma.pgdump>

Migre la base de datos si quedan migraciones por realizar en caso de que cambie a una versión más nueva.

$ su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate"

Reinicie el servicio Pleroma.

$ systemctl restart pleroma

Genere las estadísticas para que Postgres pueda planificar adecuadamente las consultas.

$ sudo -Hu postgres vacuumdb --all --analyze-in-stages

Conclusión

Esto concluye nuestro tutorial sobre cómo instalar Pleroma Social Network Platform en un servidor con Ubuntu 20.04. Si tiene alguna pregunta o comentario, publíquelo en los comentarios a continuación.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *