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
-
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) de forma predeterminada.
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 cortafuegos no interrumpa la conexión actual al habilitarlo.
$ sudo ufw allow OpenSSH
Permitir puertos HTTP y HTTPS también.
$ 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ía ver un resultado 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 él en /opt/pleroma
.
$ sudo adduser --system --shell /bin/false --home /opt/pleroma pleroma
Cambie al usuario de Pleroma. Pero primero, necesitamos cambiar al usuario root.
$ 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
Elimina los archivos temporales.
$ rm -rf /tmp/pleroma_amd64.zip /tmp/release
Cambie al usuario root.
$ 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.
$ 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 con 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
Use el siguiente comando para asegurarse de que el comando Certbot se pueda ejecutar creando un enlace simbólico al /usr/bin
directorio.
$ 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 /etc/letsencrypt/live/example.com
directorio en 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 crea 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 Ctrl + X e ingresando 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 a /etc/nginx/sites-available
directorio.
$ mv /opt/pleroma/installation/pleroma.nginx /etc/nginx/sites-available/pleroma.conf
Reemplace todas las apariciones de example.tld
con tu 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 location ~ /\.well-known/acme-challenge
cuadra. El server
bloque de su archivo de configuración debe 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 Ctrl + X e ingresando 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 tener el siguiente aspecto.
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. Reemplazar example
con tu nombre de usuario, [email protected]
con tu dirección de correo electrónico y password123
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 /etc/pleroma/config.exs
archivo.
$ 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
Actualizando 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
Cambia 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 las uploads
carpeta 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 de Pleroma no esté funcionando.
Luego copie los archivos respaldados nuevamente a su ubicación original.
Descarte la base de datos existente y el usuario usando 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 setup_db.sql
respaldado archivo.
$ 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.