在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):octaviotron/mastodon开源软件地址(OpenSource Url):https://github.com/octaviotron/mastodon开源编程语言(OpenSource Language):开源软件介绍(OpenSource Introduction):Instalación de una instancia de MastodonLicencia CC-BY-SA o FDL Esta es una receta para instalar una instancia de Mastodon en la distribución Debian Buster del Sistema Operativo GNU/Linux. NOTA: esta receta está hecha con fines didácticos. Una implementación seria de un servicio de red social como Mastodon requiere añadir un sistenma de tolerancia a fallos con Alta Disponibilidad y un almacenamiento seguro para los registros de la Base de Datos PostgreSQL, con replicación, respaldo y demás yerbas aromáticas. Requerimientos:Esto es obligatoriamente necesario para poder comenzar a ejecutar esta receta:
Si alguno de los requisitos anteriores no se cumple es muy posible que no se culmine con éxito la implementación del servicio. Asimismo, se debe usar la imagen para arquitectura de 64 bits (amd64) pues algunos paquetes (como nodejs) no están disponibles para i386. Preparación del Sistema Operativo.Esta receta funciona aplicándola en un host con Debian Buster recién instalado con la paquetería mínima. No es necesaria una interfaz gráfica (a ver: no es para jugar buscaminas) y es importante que durante la instalación se use un nombre distinto de "mastodon" para el usuario sin privilegios, pues en el proceso que sigue a continuación creará una cuenta con ese nombre y no debe existir previamente en el sistema. Nombre del Host FQDNhostnamectl set-hostname mastodon.gnu.org.ve Recuerda: cada vez que leas "mastodon.gnu.org.ve" debes sustituirlo por tu dominio. Entrada en /etc/hostsecho "127.0.1.1 mastodon.gnu.org.ve" >> /etc/hosts Actualización del Sistema Operativoapt update
apt upgrade -y Instalación de la paquetería baseapt install redis-server software-properties-common dirmngr apt-transport-https ca-certificates \
curl gcc g++ make imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git-core \
libprotobuf-dev protobuf-compiler pkg-config autoconf bison build-essential libssl-dev \
libyaml-dev libreadline-dev libidn11-dev libicu-dev libjemalloc-dev zlib1g-dev libncurses5-dev \
libffi-dev libgdbm-dev vim certbot python-certbot-nginx nginx postgresql postgresql-contrib -y Instalación de los Servicios necesariosEn esta sección se instalan servicios que requiere integrar Mastodon para su funcionamiento: Instalación de Node.jsExiste un script creado por los desarrolladores de Node.js para instalar el servicio en las distribuciones soportadas. Sólo ejecutarlo hará disponible dicho software via APT: curl -sL https://deb.nodesource.com/setup_12.x | bash - La instalación del paquete se realiza de la manera acostumbrada: apt install nodejs -y No se ejecuta necesariamente antes "apt update" pues el script anterior incluye esta acción. Instalación de YARNLuego para tener YARN se añade la entrada en APT y su correspondiente llave pública: curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
apt update
apt install yarn -y Configuración de REDISMastodon accede a REDIS autenticando mediante una clave. Siguiendo las instrucciones de la documentación oficial (y de otras consultadas en internet) el instalador arroja un mensaje de error, puesto que en ningún paso anterior se define u obtiene dicha contraseña y no es posible ingresar los valores apropiados que solicita el script de instalación. Este conjunto de comandos logró superar con éxito la conexión con este servicio mas adelante donde se verifica y configura este servicio: sed -i -e 's/# requirepass foobared*/requirepass ADMINPASS/' /etc/redis/redis.conf
systemctl restart redis-server Se accede entonces al CLI del servicio: redis-cli Se verá la línea de comandos precedida con el signo ">" con lo cuasl se sabe que se está dentro del CLI de Redis. Allí se ejecutan estos dos comandos:
Con lo anterior se genera un primer acceso lo cual según la documentación permite posteriormente acceder usando esa contraseña como credencial. Configuración de la Base de DatosEl servicio usa PostgreSQL como base de datos. Recuerde: esta receta es con fines didácticos, una implementación seria requiere que este servicio pueda garantizar la integridad y el respaldo de datos lo cual es imprescindible en un ambiente de producción con usuarios reales. su - postgres Se accede a la CLI de PostgreSQL:
y dentro se crea la base de datos "mastodon":
Para salir del usuario postgres se presiona la combinación CONTROL-D o se ejecuta nuevamente exit exit Lo importante es asegurarse que en este punto se está de nuevo como root en la cónsola. Instalación de MastodonLo anterior ha servido para adaptar el sistema operativo al los requerimientos de Mastodon. Ahora se descarga y se instala el software que compone esta red social. Creación del usuario mastodonSegún la documentación oficial (y en la todas las demás recetas y tutoriales consultados) todos los archivos del servicio y de funcionamiento de Mastodon se encontrarán en la carpeta de un usuario unix sin contraseña de acceso. Como nota mental, es interesante estudiar la posibilidad de usar otra ruta (PATH) mas coherente respecto a lo tradicionalmente usado en sistemas POSIX, como por ejemplo /opt o /var. Se crea un usuario regular unix y se impide que abra sesión desde una cónsola local o remota via login: adduser --disabled-login --gecos 'Mastodon Server' mastodon Se debe recordar la contraseña suministrada, pues será usada mas adelante cuando toque configurar la base de datos: Creación del ambiente para RUBYLos siguientes pasos se ejecutan luego de acceder al sistema como el usuario mastodon: su - mastodon El lenguaje de programación RUBY requiere tener un entorno que se genera con los siguiente pasos seguidos exactamente en el siguiente orden: 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 2.6.6
rbenv global 2.6.6
gem update --system --no-document
gem install bundler --no-document Para probar que se ha instalado satisfactoriamente, se ejecuta el siguiente comando: ruby --version Lo cual debe arrojar una salida similar a esta:
Ahora, se descarga e instala el código de 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) y se instala la última versión estable, exceptuando las ramas de prueba y desarrollo: bundle config set deployment 'true'
bundle config set without 'development test'
bundle install -j$(getconf _NPROCESSORS_ONLN) Seguidamente usando YARN se instalan todas las dependencias para Node.js (listadas en el archivo "package.json" que viene incluído en la descarga anterior vía GIT): yarn install --pure-lockfile En algunos casos la instrucción anterior puede fallar, debido a archivos previos de YARN existentes en el repo de Mastodon. De ser así es necesario eliminarlos para proseguir la instalación y superar el error "Segmentation Fault" que se produce. Implementación del ServicioTodos los pasos anteriores disponen los componentes que requiere Mastodon para ser instalado. Es ahora cuando se puede invocar el proceso de implementación del servicio, lo cual se ejecutando la siguiente instrucción: DISABLE_DATABASE_ENVIRONMENT_CHECK=1 RAILS_ENV=production bundle exec rake mastodon:setup A continuación aparece en la consola un conjunto de preguntas. La mayoría de ellas muestra un texto en gris con la respuesta que se envía si se presiona sólo la tecla ENTER. En el caso de respuestas cuyas opciones son Y/N (si o no) se mostrará en mayúscula la letra que corresponde a presionar sólo ENTER. Se describe cada una de ellas y se orienta sobre el valor que debe ser suministrado en cada una: Nombre de Dominio: se debe colocar el registro en el DNS que apunta al nombre de dominio que tendrá el servicio:
Si se responde afirmativamente la siguiente pregunta, Mastodon se instalará con un único usuario y todas las peticiones se relacionarán con un único perfil. Si se desea generar una red social con mas de un usuario (lo más común) se debe responder "no":
Si se está usando Docker, el instalador necesita saberlo. En el caso de esta receta se está usando un sistema dedicado a Mastodon, por lo tanto se responde acorde a esta condición:
A continuación se preguntan los valores relacionados con la Base de Datos:
Los primeros valores se seleccionan presionando ENTER, pues se sugieren por defecto. En esta receta la base de datos se llama "mastodon" (distinto del valor por defecto). El usuario debe ser "mastodon" y la contraseña es la misma que se usó al crear ese usuario. Si los datos se colocaron apropiadamente, se verá el siguiente mensaje:
Es muy necesario recordar que en un ambiente de producción con usuarios reales se debe contemplar la integridad y respaldo de la base de datos usando las técnicas conocidas para tal fin. Si se comete un error al suministrar los datos, el instalador permitirá reitentar o continuar. No se debe continuar sin lograr una conexión satisfactoria. Seguidamente, en un proceso similar se configura la base de datos REDIS, usada para el caché de elementos en memoria:
Si se suministran los datos correctamente (los dos primeros se seleccionan presionando ENTER para aceptar los que se sugieren por defecto)
Al igual que la configuración anterior, es posible repetir este paso hasta lograr la conexión, sin lo cual no se debe continuar o todo el proceso fallará posteriomente. Luego el instalador preguntará si los archivos que suben los usuarios serán almacenados en una nube. En esta receta se responde "no", pero es posible posteriormente configurarlo desde la interfaz gráfica para almacenar los archivos multimedia en un servicio externo (recomendable en un ambiente de producción):
A continuación se pedirán los datos para el envío de mensajes vía correo electrónico. Esto es muy necesario y se requiere conocer el sistema de autenticación, tener acceso y lograr autorización en su servidor SMTP. A continuación se muestra un ejemplo que debe ser ajustado insertando los valores apropiados que como es lógico deberá cambiar para que se correspondan con los de su servicio:
De forma similar, el instalador permitirá hacer varios intentos en caso de que no logre enviar satisfactoriamente un correo. Es muy importante que se logre exitosamente y verificar que se ha recibido, preferiblemente usando un destinatario externo al dominio (en este ejemplo se hace la prueba con un buzón en gmail) Es posible guardar la configuración en un archivo para tener el registro de los valores suministrados que se guarda como "~/.env.production", para eso se responde afirmativamente en la próxima pregunta:
El esquema de la base de datos está listo en este punto para ser desplegado en el servicio de PostgreSQL:
Posteriormente el instalador pregunta si se desea compilar los componentes de Javascript y CSS, advirtiendo que esto requerirá usar memoria ram y que requerirá algo de tiempo. Es preferible hacerlo, ya que de lo contrario quedará incompleto el sistema:
Finalmente, se debe crear el usuario administrador, el cual tendrá acceso en la interfaz gráfica a la configuración del servidor de Mastodon, al sistema de reportes y a otros módulos adicionales. Por supuesto deben ajustarse los valores que se muestran como ejemplo:
El proceso terminará mostrando un mensaje con una contraseña para acceder como administrador de la instancia de Mastodon, que será necesario cambiar al entrar por primera vez en la sesión de usuario:
Habilitación del ServicioYa Masstodon está instalado. Ahora hay que crear, levantar y dejar habilitados sus servicios. Se copian los archivos con las entradas necesarias para Systemd que están disponibles dentro de lo que se descargó de Mastodon via GIT:
EL último paso consiste en levantar los servicios y dejarlos habilitados para que se carguen cada vez que se inicie el sistema operativo:
Para acceder a la instancia instalada de esta red social, se abre un navegador en una URL con el dominio que se usó en su intalación:
ConclusiónMastodon emplea diversas piezas de software para funcionar. En primer lugar el lenguaje de programación RUBY se encarga de la parte central de la lógica del servicio. La otra parte importante se compone de código en Javascript, el cual se provee mediante Node.js. PostgreSQL se usa para acceder a la base de datos general del sistema, junto a Redis quien provee un caché para optimizar la lectura de información por parte de algunos componentes del servicio. Construyendo esta receta pude notar que al igual que en muchos otros desarrollos en los cuales se emplea el lenguaje de programación RUBY, hay una estricta condición de funcionamiento relacionada a las versiones de los componentes del lenguaje y sus módulos (llamados gemas) y de ellos respecto a su interoperabilidad con el resto de los programas con los que se relaciona dentro del sistema y añadadido a eso la instalación está condicionada para sólo funcionar en cierta arquitectura de hardware: si se observa la sección con las instrucciones para instalar RUBY, se podrá ver que se realiza la compilación de un binario que por tanto estará estáticamente ligado al la arquitectura de procesador donde se ejecuta. cd ~/.rbenv && src/configure && make -C src La intención de tener esta receta partió de la sugerencia de un colega para crear una ISO instalable que pudiera implementar de forma sencilla una instancia de Mastodon, aunque por la razón anterior esto es poco útil (pues se estaría confinado a funcionar sólo en el tipo de hardware donde se compila rbenv) esa motivación resultó en esta guía que con solo "copiar y pegar" (literalmente) brinda un método para tener el servicio montado en una máquina con un Debian Buster fresco. Como posdata, la reiteración acerca de que esta receta se debe complementar con pasos para incluir la integridad y el respaldo de la base de datos, indispensable para plantearse un ambiente de producción con usuarios reales, así como la opcional pero necesaria aplicación de sistemas que provean Alta Disponibilidad del servicio y Balanceo de Carga o proxeo de peticiones desde los clientes. Happy Hacking |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论