Cómo instalar BookWyrm en un servidor Rocky Linux 9 utilizando Docker
BookWyrm es una red social federada de código abierto para lectores de libros. Actúa como una alternativa a Goodreads sin publicidad. Utiliza el protocolo ActivityPub para enviar y recibir la actividad de los usuarios entre otras instancias de BookWyrm y otros servicios que utilizan el protocolo, como Mastodon. Ofrece muchas funciones, como reseñas de libros, valoraciones, actividad lectora, estanterías de libros como «pendientes de leer», «leyendo actualmente» y «leído», listas de libros y seguimiento de otros usuarios y su progreso de lectura. También ofrece funciones de moderación de usuarios, como bloquear o aprobar manualmente seguidores, y múltiples niveles de privacidad para estados, estanterías y listas.
En este tutorial, aprenderás a instalar BookWyrm en un servidor Rocky Linux 9.
Requisitos previos
- Un servidor que ejecute Rocky Linux 9 con un mínimo de 2 GB de RAM y 2 núcleos de CPU.
- Un usuario no root con privilegios sudo.
- Un Nombre de Dominio Completamente Cualificado (FQDN) como
bookwyrm.example.com
que apunte a tu servidor. - Una cuenta SMTP con un servicio de correo electrónico como Amazon SES o Mailgun.
- Asegúrate de que todo está actualizado.
$ sudo dnf update
- Pocos paquetes que necesite tu sistema.
$ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y
Puede que algunos de estos paquetes ya estén instalados en tu sistema.
Paso 1 – Configurar el cortafuegos
El primer paso es configurar el cortafuegos. Rocky Linux utiliza el cortafuegos Firewalld. Comprueba el estado del cortafuegos.
$ sudo firewall-cmd --state running
El cortafuegos funciona con diferentes zonas, y la zona pública es la que utilizaremos por defecto. Enumera todos los servicios y puertos activos en el cortafuegos.
$ sudo firewall-cmd --permanent --list-services
Debería mostrar la siguiente salida.
cockpit dhcpv6-client ssh
Permite los puertos HTTP y HTTPS.
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https
Vuelve a comprobar el estado del cortafuegos.
$ sudo firewall-cmd --permanent --list-services
Deberías ver un resultado similar.
cockpit dhcpv6-client http https ssh
Recarga el cortafuegos para activar los cambios.
$ sudo firewall-cmd --reload
Paso 2 – Instala Docker y Docker Compose
Este paso es necesario tanto en el servidor como en las máquinas cliente.
Instala el repositorio oficial de Docker.
$ sudo dnf install yum-utils $ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
Instala Docker.
$ sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Habilita y ejecuta el demonio Docker.
$ sudo systemctl enable docker --now
Comprueba el estado del servicio Docker.
$ sudo systemctl status docker ? docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: disabled) Active: active (running) since Wed 2023-09-13 09:15:08 UTC; 6s ago TriggeredBy: ? docker.socket Docs: https://docs.docker.com Main PID: 6425 (dockerd) Tasks: 9 Memory: 33.2M CPU: 282ms CGroup: /system.slice/docker.service ??6425 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Añade tu usuario de sistema al grupo Docker para evitar utilizar sudo
para ejecutar comandos Docker.
$ sudo usermod -aG docker $(whoami)
Vuelve a conectarte a tu servidor después de cerrar la sesión para activar el cambio.
Paso 3 – Instalar Git
BookWyrm necesita Git para descargar los archivos y no está disponible por defecto en Rocky Linux. Ejecuta el siguiente comando para instalar Git.
$ sudo dnf install git
Verifica la instalación.
$ git --version git version 2.39.3
Puedes configurar Git con tu nombre y dirección de correo electrónico para su uso posterior. Aunque este paso es opcional.
$ git config --global user.name "Your Name" $ git config --global user.email "[email protected]"
Paso 4 – Instalar Nginx
Rocky Linux 9 viene con una versión antigua de Nginx. Para instalar la última versión, necesitas descargar el repositorio oficial de Nginx.
Crea y abre el archivo /etc/yum.repos.d/nginx.repo
para editarlo.
$ sudo nano /etc/yum.repos.d/nginx.repo
Pega en él el siguiente código.
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
Cuando hayas terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.
Instala Nginx.
$ sudo dnf install nginx
Verifica la instalación.
$ nginx -v nginx version: nginx/1.24.0
Habilita e inicia el servicio del servidor Nginx.
$ sudo systemctl enable nginx --now
Comprueba el estado del servicio.
$ sudo systemctl status nginx ? nginx.service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled) Active: active (running) since Wed 2023-09-13 09:16:59 UTC; 8s ago Docs: http://nginx.org/en/docs/ Process: 8786 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 8787 (nginx) Tasks: 3 (limit: 22979) Memory: 2.8M CPU: 12ms CGroup: /system.slice/nginx.service ??8787 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf" ??8788 "nginx: worker process" ??8789 "nginx: worker process"
Paso 5 – Instalar SSL
Necesitamos instalar Certbot para generar el certificado SSL. Para ello utilizaremos el instalador de paquetes Snapd. Como Rocky Linux no lo incluye, instala el instalador Snapd. Necesita el repositorio EPEL (Extra Packages for Enterprise Linux) para funcionar.
Instala el repositorio EPEL.
$ sudo dnf install epel-release
Instala Snapd.
$ sudo dnf install -y snapd
Activa e inicia el servicio Snap.
$ sudo systemctl enable snapd --now
Instala el paquete principal de Snap, y asegúrate de que tu versión de Snapd está actualizada.
$ sudo snap install core && sudo snap refresh core
Crea los enlaces necesarios para que Snapd funcione.
$ sudo ln -s /var/lib/snapd/snap /snap $ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
Ejecuta el siguiente comando para instalar Certbot.
$ sudo snap install --classic certbot
Utiliza el siguiente comando para asegurarte de que se puede ejecutar el comando Certbot creando un enlace simbólico al directorio /usr/bin
.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Verifica la instalación.
$ certbot --version certbot 2.6.0
Genera el certificado SSL.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d bookwyrm.example.com
El comando anterior descargará un certificado en el directorio /etc/letsencrypt/live/bookwyrm.example.com
de tu servidor.
Genera un certificado de grupo Diffie-Hellman.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Comprueba el servicio programador de renovaciones de Certbot.
$ sudo systemctl list-timers
Encontrarás snap.certbot.renew.service
como uno de los servicios programados para ejecutarse.
NEXT LEFT LAST PASSED UNIT ACTIVATES ------------------------------------------------------------------------------------------------------------------ Wed 2023-09-13 10:45:51 UTC 1h 25min left Wed 2023-09-13 09:19:00 UTC 1min 13s ago dnf-makecache.timer dnf-makecache.service Wed 2023-09-13 18:33:00 UTC 9h left - - snap.certbot.renew.timer snap.certbot.renew.service Thu 2023-09-14 00:00:00 UTC 14h left Wed 2023-09-13 08:32:04 UTC 48min ago logrotate.timer logrotate.service
Realiza una ejecución en seco del proceso para comprobar si la renovación SSL funciona correctamente.
$ sudo certbot renew --dry-run
Si no ves ningún error, ya está todo listo. Tu certificado se renovará automáticamente.
Paso 6 – Descarga BookWyrm
Crea un directorio para BookWyrm.
$ mkdir ~/bookwyrm
Accede al directorio.
$ cd ~/bookwyrm
Clona la rama de producción de la aplicación BookWyrm desde GitHub.
$ git clone https://github.com/bookwyrm-social/bookwyrm.git .
Cambia a la rama de producción.
$ git checkout production
Crea el archivo de entorno copiando el archivo de ejemplo.
$ cp .env.example .env
Paso 7 – Configurar el archivo de entorno de BookWyrm
Genera una clave secreta para BookWyrm.
$ openssl rand 60 | openssl base64 -A kahYlt56TI2fZQwj0oX054u2aJE7bptHyInK4RXQadLLmXwGSDm8N1vW9uacA9N6FHoXPINPwOFTmnaT
Abre el archivo de entorno para editarlo.
$ sudo nano .env
Configura las siguientes variables.
SECRET_KEY="kahYlt56TI2fZQwj0oX054u2aJE7bptHyInK4RXQadLLmXwGSDm8N1vW9uacA9N6FHoXPINPwOFTmnaT" DOMAIN=bookwyrm.example.com [email protected] POSTGRES_PASSWORD=Your_Password POSTGRES_USER=bookwyrmuser POSTGRES_DB=bookwyrm POSTGRES_HOST=localhost REDIS_ACTIVITY_HOST=localhost REDIS_ACTIVITY_PORT=6379 REDIS_ACTIVITY_PASSWORD=Your_Redis_Password REDIS_ACTIVITY_DB_INDEX=0 REDIS_BROKER_HOST=localhost REDIS_BROKER_PORT=6379 REDIS_BROKER_PASSWORD=Your_Redis_Password REDIS_BROKER_DB_INDEX=1 FLOWER_USER=username FLOWER_PASSWORD=flowerpassword EMAIl_HOST= EMAIL_PORT=587 EMAIL_HOST_USER=AmazonSESUSER EMAIL_HOST_PASSWORD=AmazonSESPASSWORD EMAIL_USE_TLS=true EMAIL_USE_SSL=false EMAIL_SENDER_NAME=HowtoForge EMAIL_SENDER_DOMAIN=example.com ## only enable it if you have a fairly powered server with a minimum of 2 CPU Cores and 2GB of RAM ENABLE_PREVIEW_IMAGES=true
Repasemos todas las variables del archivo de entorno.
SECRET_KEY
– la clave que generaste anteriormenteDOMAIN
– el nombre de dominio completo (FQDN) de tu instancia de BookWyrn. En nuestro caso, seríabookwyrm.example.com
.POSTGRES_PASSWORD
– Contraseña PostgreSQL configurada en el paso 2.POSTGRES_HOST
– configurado adb
que es el nombre de servicio de PostgreSQL en el archivodocker-compose.yml
.POSTGRES_USER
– configurado abookwyrmuser
que elegiste en el paso 2.POSTGRES_DB
– configurado abookwyrm
que elegiste en el paso 2.REDIS_ACTIVITY_HOST
yREDIS_BROKER_HOST
– establécelos en localhost si alojas el servidor Redis en la misma máquina.REDIS_ACTIVITY_PORT
yREDIS_BROKER_PORT
– establécelos en el puerto Redis 6379 por defecto.REDIS_ACTIVITY_DB
yREDIS_BROKER_DB
– establécelos en 0 y 1 respectivamente. Utilizaremos bases de datos diferentes para ambos.REDIS_ACTIVITY_PASSWORD
yREDIS_BROKER_PASSWORD
– configúralos con la contraseña de Redis elegida en el paso 3.FLOWER_USER
– elige un nombre de usuario para el servicio Flower, necesario para BookWyrm.FLOWER_PASSWORD
– elige una contraseña para el servicio Flower.EMAIL_HOST
– establece el host SMTP del servicio de correo electrónico que estés utilizando.EMAIL_PORT
– Establece el puerto SMTP del servicio de correo electrónico.EMAIL_HOST_USER
– Establece el nombre de usuario SMTP.EMAIL_HOST_PASSWORD
– Establece la contraseña SMTP.EMAIL_USE_TLS
– ponlo a true si tu servicio de correo electrónico utiliza TLS.EMAIL_USE_SSL
– Establécelo como verdadero si tu servicio de correo electrónico utiliza SSL.EMAIL_SENDER_NAME
– elige el nombre del remitente para los correos electrónicos enviados por tu instancia.EMAIL_SENDER_DOMAIN
– Establécelo como el nombre de dominio utilizado por el servicio de correo electrónico.ENABLE_PREVIEW_IMAGES
– ponlo a true si quieres que tu instancia genere imágenes de previsualización automáticamente. Sin embargo, asegúrate de que tu servidor dispone de suficiente CPU y RAM para ello, ya que se trata de un proceso intensivo.
Cuando hayas terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.
Paso 8 – Configurar el archivo Docker de BookWyrm
Abre el archivo Docker compose para editarlo.
$ nano docker-compose.yml
Como puedes ver, el archivo Docker consta de los servicios Nginx y Certbot. Pero para nuestro tutorial, utilizaremos Nginx externamente como servidor proxy inverso. Así que no utilizaremos el servicio Certbot en el archivo. Además, tenemos que cambiar el servicio Nginx en consecuencia.
En los servicios >> nginx >> puertos comenta los puertos por defecto y añade la línea ` – «8001:8001» como se muestra a continuación. Además, comenta los volúmenes certbot bajo el servicio Nginx. El servicio Nginx debería tener el siguiente aspecto. Y por último, comenta toda la sección del servicio certbot.
services: nginx: image: nginx:latest logging: *default-logging restart: unless-stopped ports: # - "80:80" # - "443:443" - "8001:8001" depends_on: - web networks: - main volumes: - ./nginx:/etc/nginx/conf.d # - ./certbot/conf:/etc/nginx/ssl # - ./certbot/data:/var/www/certbot - static_volume:/app/static - media_volume:/app/images #certbot: # image: certbot/certbot:latest # command: certonly --webroot --webroot-path=/var/www/certbot --email ${EMAIL} --agree-tos --no-eff-email -d ${DOMAIN} -d www.${DOMAIN} #command: renew --webroot --webroot-path /var/www/certbot # logging: *default-logging # volumes: # - ./certbot/conf:/etc/letsencrypt # - ./certbot/logs:/var/log/letsencrypt # - ./certbot/data:/var/www/certbot
No es necesario realizar más cambios. Una vez terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.
Paso 8 – Configurar Nginx y los archivos Nginx
Haz una copia del archivo de plantilla de producción de Nginx y configúralo para utilizarlo con el servicio docker Nginx.
$ cp nginx/production nginx/default.conf
Abre el archivo default.conf
para editarlo.
$ nano nginx/default.conf
Sustituye el your-domain.com
por tu nombre de dominio BookWyrm real en el primer y tercer bloque del servidor. En nuestro caso es bookwyrm.example.com
. Si no utilizas la versión www-your-domain.com
de tu dominio, elimínala de server_name
. Además, comenta el bloque location ~ /.well-known/acme-challenge
bajo el primer bloque de servidor.
Este es el aspecto que debería tener tu default.conf
.
include /etc/nginx/conf.d/server_config; upstream web { server web:8000; } server { listen [::]:80; listen 80; server_name bookwyrm.example.com; # location ~ /.well-known/acme-challenge { # allow all; # root /var/www/certbot; # } # # redirect http to https # return 301 https://your-domain.com$request_uri; } # server { .... } # Reverse-Proxy server server { listen [::]:8001; listen 8001; server_name bookwyrm.example.com; location / { proxy_pass http://web; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_redirect off; } location /images/ { alias /app/images/; } location /static/ { alias /app/static/; } }
Una vez terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.
Crea y abre el archivo /etc/nginx/conf.d/bookwyrm.conf
para editarlo.
$ sudo nano /etc/nginx/conf.d/bookwyrm.conf
Pega en él el siguiente código.
server { server_name bookwyrm.example.com; listen [::]:80; listen 80; # redirect http to https return 301 https://bookwyrm.example.com$request_uri; } server { access_log /var/log/nginx/bookwyrm.access.log; error_log /var/log/nginx/bookwyrm.error.log; listen [::]:443 ssl http2; listen 443 ssl http2; server_name bookwyrm.example.com; # SSL code ssl_certificate /etc/letsencrypt/live/bookwyrm.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/bookwyrm.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/bookwyrm.example.com/chain.pem; ssl_session_timeout 1d; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_prefer_server_ciphers off; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844] valid=60s; resolver_timeout 2s; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; location / { proxy_pass http://localhost:8001; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; } location /images/ { proxy_pass http://localhost:8001; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; } location /static/ { proxy_pass http://localhost:8001; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; } }
Cuando hayas terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.
Abre el archivo /etc/nginx/nginx.conf
para editarlo.
$ sudo nano /etc/nginx/nginx.conf
Añade la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.
Comprueba la sintaxis del archivo de configuración de Nginx.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Reinicia el servicio Nginx para habilitar la nueva configuración.
$ sudo systemctl restart nginx
Paso 9 – Instalar BookWyrm
Cambia al directorio Bookwyrm.
$ cd ~/bookwyrm
Inicializa la base de datos. El comando tardará unos minutos en completarse.
$ ./bw-dev migrate
Una vez completado, verás una salida similar.
.............................. Applying django_celery_beat.0005_add_solarschedule_events_choices... OK Applying django_celery_beat.0006_auto_20180322_0932... OK Applying django_celery_beat.0007_auto_20180521_0826... OK Applying django_celery_beat.0008_auto_20180914_1922... OK Applying django_celery_beat.0006_auto_20180210_1226... OK Applying django_celery_beat.0006_periodictask_priority... OK Applying django_celery_beat.0009_periodictask_headers... OK Applying django_celery_beat.0010_auto_20190429_0326... OK Applying django_celery_beat.0011_auto_20190508_0153... OK Applying django_celery_beat.0012_periodictask_expire_seconds... OK Applying django_celery_beat.0013_auto_20200609_0727... OK Applying django_celery_beat.0014_remove_clockedschedule_enabled... OK Applying django_celery_beat.0015_edit_solarschedule_events_choices... OK Applying django_celery_beat.0016_alter_crontabschedule_timezone... OK Applying sessions.0001_initial... OK
Ejecuta la aplicación compilando la imagen Docker para BookWyrm, Celery y Flower.
$ docker compose up --build
Este proceso tardará al menos 10-15 minutos en finalizar, dependiendo de los recursos de tu servidor. Espera a que termine de compilar todas las imágenes. El resultado final debería ser algo parecido a lo siguiente.
Una vez finalizado el proceso, detén el proceso pulsando Ctrl + C.
Deberías ver algo similar cuando finalice el proceso.
bookwyrm-nginx-1 | 2023/09/13 10:20:33 [notice] 30#30: http file cache: /var/cache/nginx/bookwyrm_cache 0.000M, bsize: 4096 bookwyrm-nginx-1 | 2023/09/13 10:20:33 [notice] 1#1: signal 17 (SIGCHLD) received from 30 bookwyrm-nginx-1 | 2023/09/13 10:20:33 [notice] 1#1: cache loader process 30 exited with code 0 bookwyrm-nginx-1 | 2023/09/13 10:20:33 [notice] 1#1: signal 29 (SIGIO) received bookwyrm-redis_broker-1 | 1:M 13 Sep 2023 10:24:32.018 * 100 changes in 300 seconds. Saving... bookwyrm-redis_broker-1 | 1:M 13 Sep 2023 10:24:32.018 * Background saving started by pid 21 bookwyrm-redis_broker-1 | 21:C 13 Sep 2023 10:24:32.022 * DB saved on disk bookwyrm-redis_broker-1 | 21:C 13 Sep 2023 10:24:32.023 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB bookwyrm-redis_broker-1 | 1:M 13 Sep 2023 10:24:32.119 * Background saving terminated with success ^CGracefully stopping... (press Ctrl+C again to force) Aborting on container exit... canceled
Inicializa la aplicación.
$ ./bw-dev setup
Este proceso terminará con tu código de administrador.
******************************************* Use this code to create your admin account: 299f3181-e57e-4f16-94c9-51cfc427b8df *******************************************
Puedes obtener el código en cualquier momento ejecutando el siguiente comando.
$ ./bw-dev admin_code ******************************************* Use this code to create your admin account: 299f3181-e57e-4f16-94c9-51cfc427b8df *******************************************
El último paso en la instalación de BookWyrm es iniciar todos los contenedores restantes.
$ docker compose up -d
Puedes comprobar el estado de tus contenedores utilizando el siguiente comando.
$ docker ps
Deberías obtener una salida similar.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 083c2dfc81f4 nginx:latest "/docker-entrypoint.…" 26 hours ago Up 26 hours 80/tcp, 0.0.0.0:8001->8001/tcp, :::8001->8001/tcp bookwyrm-nginx-1 8618c3a7b460 bookwyrm-web "gunicorn bookwyrm.w…" 26 hours ago Up 26 hours 0.0.0.0:32768->8000/tcp, :::32768->8000/tcp bookwyrm-web-1 3e67c639e21f bookwyrm-celery_beat "celery -A celerywyr…" 26 hours ago Up 26 hours bookwyrm-celery_beat-1 86a774a5bb6d bookwyrm-flower "celery -A celerywyr…" 26 hours ago Up 26 hours bookwyrm-flower-1 ac2ff1e91bb4 bookwyrm-celery_worker "celery -A celerywyr…" 26 hours ago Up 26 hours bookwyrm-celery_worker-1 bc6a64fac55c redis "docker-entrypoint.s…" 26 hours ago Up 26 hours 6379/tcp bookwyrm-redis_activity-1 ef78760b967b bookwyrm-db "/bookwyrm-entrypoin…" 26 hours ago Up 26 hours 5432/tcp bookwyrm-db-1 5ededaed00ab redis "docker-entrypoint.s…" 26 hours ago Up 26 hours 6379/tcp bookwyrm-redis_broker-1
También puedes comprobar el estado utilizando el siguiente comando.
$ docker compose ps
Aunque esta vez la salida será un poco diferente.
El siguiente paso es acceder a BookWyrm y configurar tu instancia.
Paso 10 – Acceder a BookWyrm
Abre la URL https://bookwyrm.example.com
en tu navegador y obtendrás la siguiente página.
Si todo parece correcto, haz clic en el botón Continuar para pasar a la página siguiente.
Introduce la clave de administrador que obtuviste en el paso anterior junto con las credenciales de la cuenta de administrador. Pulsa el botón Registrarse cuando hayas terminado para pasar a la página siguiente.
Aquí se te pedirá que configures tu sitio y añadas información y políticas del sitio.
A continuación, comprueba tu configuración de correo electrónico haciendo clic en Sistema >> Configuración de correo electrónico en la barra lateral izquierda. Confirma tu configuración de correo electrónico que aparece en la página y haz clic en el botón Enviar correo de prueba para enviarte un correo de prueba.
Si el correo se envió correctamente, deberías recibir el siguiente correo.
También puedes configurar los ajustes restantes accediendo a ellos desde la barra lateral izquierda. Una vez hayas hecho todo esto, tu instancia de BookWyrm estará lista para ser utilizada.
Paso 11 – Copia de seguridad de BookWyrm
BookWyrm incluye una utilidad de copia de seguridad para su instalación Docker. También incluye una utilidad de poda automática de copias de seguridad que limpia automáticamente la carpeta de copias de seguridad.
Las copias de seguridad se crean dentro del directorio backups
del contenedor de la base de datos. Las copias de seguridad se crean diariamente a medianoche UTC. Ejecuta el siguiente comando para entrar en el shell SSH del contenedor.
$ docker exec -it bookwyrm-db-1 bash
Una vez dentro del contenedor, comprueba el contenido del directorio de copias de seguridad. Este comando sólo mostrará las copias de seguridad cuando hayan transcurrido 24 horas desde la creación del contenedor.
$ ls backups -al total 252 drwxr-xr-x. 2 root root 56 Sep 12 00:00 . drwxr-xr-x. 1 root root 39 Sep 11 11:47 .. -rw-r--r--. 1 root root 250380 Sep 12 00:00 backup_bookwyrm_2023-09-12.sql -rw-r--r--. 1 root root 44 Sep 11 11:47 .env
Sal del shell.
$ exit
Puedes copiar las copias de seguridad a tu máquina local ejecutando el siguiente comando.
$ docker cp bookwyrm-db-1:/backups <host machine path>
La función de poda automática de la base de datos está desactivada por defecto. Para activarla, abre el archivo ~/bookwyrm/postgres-docker/cronfile
para editarlo.
$ nano ~/bookwyrm/postgres-docker/cronfile
Descomenta la última línea eliminando la almohadilla (#
) que aparece delante de ella. Tu cronfile
debería tener el siguiente aspecto.
0 0 * * * /usr/local/bin/bookwyrm-backup.sh # If uncommented, this script will weed the backups directory. It will keep the 14 # most-recent backups, then one backup/week for the next four backups, then one # backup/month after that. 0 5 * * * /usr/local/bin/bookwyrm-weed.sh -d 14 -w 4 -m -1 /backups
Cuando hayas terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.
El script anterior guardará las últimas 14 copias de seguridad.
Reconstruye tu instancia.
$ cd ~/bookwyrm $ docker compose up --build
Paso 12 – Actualizar BookWyrm
Actualizar tu instancia de BookWyrm implica varios pasos. En primer lugar, extrae los últimos cambios del repositorio GitHub de BookWyrm.
$ cd ~/bookwyrm $ git pull
Si hay conflictos, primero tendrás que ejecutar git pull
por separado.
Reconstruye las imágenes.
$ docker compose rebuild
Ejecuta las migraciones de bases de datos utilizando las imágenes Docker recién construidas.
$ docker compose run --rm web python manage.py migrate
Compila los temas de BookWyrm.
$ docker compose run --rm web python manage.py compile_themes
Carga los archivos estáticos actualizados.
$ docker compose run --rm web python manage.py collectstatic --no-input
Apaga los contenedores existentes.
$ docker compose down --remove-orphans
Reinicia los contenedores utilizando las imágenes recién creadas.
$ docker compose up -d
Los flujos de cada usuario se almacenan en la base de datos Redis. Para repoblar un flujo, ejecuta el siguiente comando.
$ ./bw-dev populate_streams
O puedes utilizar el siguiente comando para repoblar los flujos.
$ docker compose run --rm web python manage.py populate_streams
Si no funciona o las cosas se estropean, puedes borrar los datos del flujo utilizando el siguiente comando.
$ docker compose run --rm web python manage.py erase_streams
Paso 13 – Herramienta de línea de comandos BookWyrm
Hasta ahora nos has visto utilizar la herramienta de línea de comandos bw-dev
para BookWyrm. Esta herramienta puede realizar un montón de tareas útiles e incluso ejecutar comandos Docker. Algunos de los usos populares de la herramienta son los siguientes.
Confirmar manualmente la cuenta de un usuario
El siguiente comando confirma manualmente el correo electrónico de un usuario (nombre de usuario) y lo marca como activo.
$ ./bw-dev confirm_email <username>
Generar imágenes de previsualización
Si habilitas la opción de imágenes de previsualización más adelante, tendrás que actualizarlas para los datos cargados anteriormente. Ejecuta el siguiente comando para hacer lo mismo.
$ ./bw-dev generate_preview_images --all
Generar miniaturas para portadas de libros
El siguiente comando genera miniaturas para las portadas de los libros.
$ ./bw-dev generate_thumbnails
Estas son algunas de las opciones. Para obtener una lista completa, consulta el manual BookWyrm CLI.
Conclusión
Con esto concluye nuestro tutorial sobre la instalación de la red social BookWyrm en un servidor Rocky Linux 9. Si tienes alguna pregunta, publícala en los comentarios a continuación.