GUIA DE INSTALACIÓN DE MASTODON

NOTA: El día 15-11-22 ha salido la versión 4.0.2, por lo que si quereis instalar directamente esta última versión, solo debeis cambiar el 3.0.3 de las líneas siguientes (cuando os aparezcan en la guía) para que apunten a la versión 3.0.4:

RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 3.0.3

rbenv global 3.0.3

El resto de la guía todo igual.

---------------------------------------------------------------------------------------------

INSTALACIÓN:

Esta instalación es para la versión 3.5.3, si quieres instalar la última hasta el momento (4.0.2) entonces lee las líneas del principio.

Observando que la guía oficial carece de cierta información y da algún que otro error si se sigue tal cual, he decidido hacer esta guía de instalación para que cualquiera pueda instalarse su instancia de Mastodon personal o general.

No será esta guía con Docker sino de la manera más oficial. Tampoco configuro aquí el servicio de email, que puede ser latoso y casi mejor ofrecer invitaciones a los que quieran registrarse o si es una instancia para ti solo no te hará falta.

Hay que tener en cuenta que así está la instalación hasta el día de hoy. Esto puede cambiar en un futuro. Si es así ya haría otro artículo para aclararlo.

Por unos 3€ mensuales podrías tener tu propia instancia personal, aunque seguramente algo limitada en espacio (40 GB que poco a poco se irán llenando). Yo recomiendo mejor 80 GB y que tenga 4 GB de ram, si es posible 4 cores, aunque con 2 irá bien.

Bueno, empecemos con la contratación de un VPS. No voy a tratar aquí el instalar desde casa o con una raspberry o pc. Esto puede traer otro tipo de configuraciones, permisos del ISP, IP dinámica, etc. Nunca lo he hecho.

En la contratación de un VPS, siempre querrán tener tus datos y documentación. No se arriesgan a que cualquiera pueda tener un servidor y usarlo para fines delictivos, por lo que es algo que debes tener en cuenta. Igual existen otros menos restrictivos pero esto suele ser lo normal.

Cuando tengas todo registrado y tu ID comprobada, normalmente te enviarán por email los datos para poder manejar el servidor, entre otras cosas. Esta información contiene la IP del servidor y la contraseña de administrador para entrar remotamente por ssh.

Si no sabes, abrir un terminal y poner:

ssh root@ipdelservidor

"Te recomiendo crear un usuario aparte y quitar del servidor ssh que se pueda hacer login desde root, así como cambiar el puerto por defecto a otro que elijas, y/o usar fail2ban. Pero esto debes saber hacerlo con cuidado. Si no sabes pregunta."

En el panel de control del servidor de VPS (que te dirán enlace por email) es donde normalmente puedes instalar alguna imagen, dandote opciones para la instalación entre varios sistemas operativos: Debian 11, Ubuntu xxx, etc. Así que entra en dicho apartado y dile que instale Debian 11. Tardará un poco y al terminar estará todo listo y te dará una contraseña para root diferente a la que recibiste por email.

Abres un terminal, entras como root@ipdelservidor y te dirá GNU/Linux que aceptes la clave y tal. Le das yes y ya te pedirá la contraseña que recibiste al instalar Debian 11. Una vez dentro, lo primero es cambiar la clave de root por una más cómoda para ti. NO OLVIDES APUNTAR LA NUEVA CLAVE DE ROOT.

Debes tener un dominio contratado con algún registrador. Por lo que entra a manejar tus dominios y ponle una entrada tipo A que apunte a la IP que te ha dado el VPS por email. Si hay otras entradas A que no usas puedes eliminarlas.

Y ya podemos empezar con la instalación de Mastodon.

Lo primero instalar los paquetes básicos que se necesitarán, "siempre como root hasta que no se diga lo contrario", que es el único login que tienes ahora mismo. Vamos a por los pasos, no hace falta definirlos, tras cada línea dale a Enter:

apt install -y curl wget gnupg apt-transport-https lsb-release ca-certificates`

curl -sL https://deb.nodesource.com/setup_16.x | bash -

wget -O /usr/share/keyrings/postgresql.asc https://www.postgresql.org/media/keys/ACCC4CF8.asc

echo "deb [signed-by=/usr/share/keyrings/postgresql.asc] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/postgresql.list

apt update

Estas líneas siguientes son todas juntas o de una vez hasta la línea de puntos:

apt install -y \

imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git-core \

g++ libprotobuf-dev protobuf-compiler pkg-config nodejs gcc autoconf \

bison build-essential libssl-dev libyaml-dev libreadline6-dev \

zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev \

nginx redis-server redis-tools postgresql postgresql-contrib \

certbot python3-certbot-nginx libidn11-dev libicu-dev libjemalloc-dev

------------------------------

corepack enable

yarn set version stable

adduser --disabled-login mastodon

Añadido el usuario no-admin mastodon, ahora entramos a él:

su - mastodon

git clone https://github.com/rbenv/rbenv.git ~/.rbenv

cd ~/.rbenv && src/configure && make -C src

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc

echo 'eval "$(rbenv init -)"' >> ~/.bashrc

exec bash

git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 3.0.3

rbenv global 3.0.3

gem install bundler --no-document

exit

Salimos del usuario mastodon y volvemos ya de nuevo a root. Seguimos. Ahora toca la base de datos:

sudo -u postgres psql

No te asustes del mensaje, todo bien y ahora te pide datos, así que les daremos los siguientes:

CREATE USER mastodon CREATEDB;

ALTER USER mastodon WITH ENCRYPTED PASSWORD 'pon tu contraseña para la base de datos entre estas comillas aquí';

ALTER DATABASE mastodon OWNER TO mastodon;

\q

Ahora ya podemos descargar Mastodon en sí, por lo que volvemos a entrar al usuario mastodon:

su - mastodon

git clone https://github.com/tootsuite/mastodon.git live && cd live

git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)

bundle config deployment 'true'

bundle config without 'development test'

(perdón, la sintaxis de markdown no me dejaba poner esto como código y lo puse en negrita)

bundle install -j$(getconf _NPROCESSORS_ONLN)

yarn install --pure-lockfile

RAILS_ENV=production bundle exec rake mastodon:setup

Aquí se te harán ahora una serie de preguntas, te diré qué debes contestar. Luego todo esto será importante tenerlo en cuenta en el archivo oculto que se creará con el nombre **.env.production**, por si alguna vez necesitas cambiar algo. Está dentro de /home/mastodon/live como oculto.

Te dirá que se escribirá todo en el archivo .env.production como te dije anteriormente.

A las demás preguntas de configuración responde siempre YES o Y.

Y empezará la compilación de Mastodon.

Te preguntará al final si quieres crear una cuenta de administrador, pones el nombre o nick de dicha cuenta y te dará una contraseña: NO OLVIDES APUNTAR ESTA CONTRASEÑA EN OTRO LUGAR, QUE LA NECESITARÁS LUEGO, aunque si no lo hiciste siempre hay forma de conseguir otra más adelante.

Ahora salimos ya del usuario mastodon, volviendo a root:

exit

Ahora vamos a poner en marcha el servidor web nginx con lo necesario.

cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon

ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon

Edita el archivo creado como mastodon en nginx para cambiar el típico dominio de prueba example.com por el tuyo que usarás en mastodon. Donde quiera que diga example.com tu quita eso y cambialo por el tuyo. Cuidado con los márgenes y todo lo demás, que nginx es un poco quisquilloso:

nano /etc/nginx/sites-available/mastodon

Aparte, busca estas líneas en dicho archivo:

# ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;

# ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

Y CAMBIALAS POR ESTAS OTRAS:

ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;

ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;

Si nunca usaste nano, para guardar usa Control-O y para salir Control-X. Así que haz estos pasos ahora y listo.

Creamos un archivo caché:

mkdir -p /var/nginx/cache/

y probamos que nginx ha aceptado esto, que será seguramente que sí:

nginx -t

Si da todo correcto reiniciamos el servicio:

systemctl reload nginx

Bueno, ahora vamos al certificado SSL para que la web tenga https.

certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email pontuemail -d ponaquítudominio

Si todo fue bien te dirá que felicidades, que el certificado ha sido creado satisfactoriamente.

Tan solo nos queda ahora crear un servicio de inicio, para cuando reinicies el servidor que arranque Mastodon:

cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/

Y lo cargamos y activamos:

systemctl daemon-reload

systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming

Reiniciamos también nginx:

systemctl reload nginx

Y LISTO. Ya debes tener en funcionamiento tu instancia de Mastodon. Igual puede tardarte un poco en cargar debido a tus DNS, si es así prueba con otro dispositivo, sobre todo si usas una VPN y las DNS tardan en cambiar.

Si tienes algún error siempre puedes revisar con:

journalctl -eu mastodon-web

journalctl -eu mastodon-sidekiq

journalctl -eu mastodon-streaming

¿Recuerdas que te remarqué que anotaras en otro lugar la contraseña de administrador que te dio anteriormente?. Pues ahora, para entrar en tu instancia recién creada la vas a necesitar.

Te toca poner en un navegador tu dominio y loguearte con tu nick de administrador y la contraseña que te dieron.

NO OLVIDES CAMBIAR ESTA CONTRASEÑA POR OTRA TUYA PROPIA.

Algunos enlaces que te ayudarán para ver el archivo de configuración y para manejarte con el terminal dentro de tu servidor para hacer algunos cambios:

Para el .env.production:

Archivo de configuración

Para comandos de terminal:

Comandos de terminal en servidor

Como ejemplo, imagina que no apuntaste la contraseña de admin anterior. Pues siempre puedes entrar a tu VPS y crear otra para poder entrar a tu nueva instancia.

Vas a /home/mastodon/live/bin y pones este comando (cambia el usuario admin por el nick que usaste para tu cuenta de administrador):

RAILS_ENV=production ./tootctl accounts modify admin --reset-password

Para borrar espacio en vuestra instancia más adelante:

Entrais en /home/mastodon/live/bin y ejecutais estos comandos:

RAILS_ENV=production ./tootctl media remove

RAILS_ENV=production ./tootctl preview_cards remove

RAILS_ENV=production ./tootctl cache clear

Hay otros comandos para borrar aún más pero los principales que os ahorrarán mucho espacio y que podeis ejecutar de vez en cuando son estos que os puse.

AÑADIR MÁS CARACTERES

Añado también a la guía cómo poder tener aún más caracteres disponibles para publicar. Por defecto son 500 pero puede ampliarse de esta forma que compartió en Mastodon *Ismael* (@ismaelse95@unlimit3z.online):

Entrar como root y pasar a usuario mastodon:

su - mastodon

Editar 3 ficheros, el primero de ellos es el siguiente, donde vamos a buscar el número 500 (en este fichero lo encontraremos 2 veces). Cambiamos ambos 500 por el númemo que queramos:

nano live/app/javascript/mastodon/features/compose/components/compose_form.js

En el siguiente fichero hay que buscar y reemplazar solo 1 vez el número 500:

nano live/app/validators/status_length_validator.rb

Y en el último editamos este fichero:

nano live/app/validators/status_length_validator.rb

En él hay que buscar esta línea:

attributes :domain, :title, :version, :source_url, :description, :usage, :thumbnail, :languages, :configuration, :registrations

Y añadirle al final, tras "registrations" esta línea:

,:max_toot_chars

(fíjate en la coma del principio)

Y ahora, al final del todo de este archivo, se añaden estas líneas. Donde dice "tuvaloraqui" debes poner el número de caracteres. "Guarda el orden de tabulación en las líneas tal como están en dicho archivo fijándote en las que verás más arriba":

def max_toot_chars

tuvaloraqui

end

Ya solo queda compilar y reiniciar los procesos de Mastodon. Entramos dentro de live (estaríamos en /home/mastodon/live):

cd live

RAILS_ENV=production bundle exec rails assets:precompile

Si te diera fallo de compilación debes borrar las cachés, parar Mastodon e intentarlo de nuevo, por lo que tendrás que seguir estos pasos:

RAILS_ENV=production bundle exec rake tmp:cache:clear

exit

(para salir a root de nuevo)

systemctl stop --now mastodon-web mastodon-sidekiq mastodon-streaming

(para parar la instancia y sus procesos)

su - mastodon

(para volver de nuevo al usuario mastodon)

cd live

Y luego repite de nuevo el comando:

RAILS_ENV=production bundle exec rails assets:precompile

Si ya te funcionó, seguimos:

exit

systemctl restart --now mastodon-web mastodon-sidekiq mastodon-streaming

FIN

Mi Blog

Proxied content from gemini://c3po.aljadra.xyz/guia-mastodon.gmi

Gemini request details:

Original URL
gemini://c3po.aljadra.xyz/guia-mastodon.gmi
Status code
Success
Meta
text/gemini;lang=es-ES
Proxied by
kineto

Be advised that no attempt was made to verify the remote SSL certificate.