Tutorial: creación de una instancia de Writefreely

 Imgur


En la entrada de hoy os voy a contar como montar una instancia de WriteFreely, y así podáis tener vuestro propio blog minimalista.



Para el blog en el que estáis leyendo esta publicación, he utilizado un servidor con Debian. La guía que os voy a exponer ha sido probado en dicho sistema operativo, supongo que sería válido apara cualquier derivado.

Lo he creado con usuario root. Voy a describiros los pasos que he seguido y que me ha funcionado.


Comencemos



Lo primero es crear un usuario “writefreely” y entrar en dicho usuario, para ello utilizamos los siguientes comandos:



useradd -r -m -d /srv/writefreely -s /bin/bash writefreely

usermod -a -G www-data writefreely

su - writefreely


luego procedemos a descargar la imagen de Writefreely desde el Github y descomprimirlo cambiando “dominio.com” por vuestro dominio:



wget https://github.com/writefreely/writefreely/releases/download/v0.13.2/writefreely_0.13.2_linux_amd64.tar.gz

tar xvzf writefreely_0.13.2_linux_amd64.tar.gz

mv writefreely dominio.com

exit

chown writefreely.www-data -R /srv/writefreely/


Instalamos maridb y creamos la base de datos:


apt install mariadb-server



mysql -u root -p



CREATE DATABASE writefreely;



GRANT ALL PRIVILEGES ON writefreely.* TO 'usuarioqueelijas'@'localhost' IDENTIFIED BY 'contraseñaqueelijas';



exit



Ahora generamos la configuración de writefreely. Recuerda que debes cambiar dominio.com por tu dominio:



su - writefreely

cd dominio.com

./writefreely --create-config


En el fichero generado, modificaremos los siguientes datos:



username = usuarioqueelijas
password = contraseñaqueelijas
database = writefreely
site_name = Título del blog
site_description = Descripción del blog
host = https://dominio.com
default_visibility = public


Una vez modificado el archivo lo guardamos (control + X,y le damos a sí). Luego, tecleamos los siguientes códigos para generar la clave de cifrado y el usuario administrador.



./writefreely db init

./writefreely keys generate

./writefreely --create-admin usuarioqueelijas:contraseñaqueelijas


Crearemos el servicio en Systemd y añadimos su contenido desde el usuario root (hay que salir del usuario writefreely, si no sabes es sólo escribiendo exit):


nano /etc/systemd/system/writefreely.service



[Unit]
Description=WriteFreely Instance
After=syslog.target network.target mysql.service

[Service]
Type=simple
StandardOutput=syslog
StandardError=syslog

User=writefreely
Group=www-data

WorkingDirectory=/srv/writefreely/dominio.com

ExecStart=/srv/writefreely/dominio.com/writefreely

Restart=always

[Install]
WantedBy=multi-user.target


Tras esto guardamos el archivo (control + X,y le damos a sí) y continuamos:



systemctl daemon-reload 

systemctl start writefreely

systemctl enable writefreely


Ahora comenzaremos una parte muy importante, configurar el Nginx:



apt install nginx certbot python3-certbot-nginx

nano /etc/nginx/sites-available/writefreely.conf


Con el último código hemos creado un fichero donde escribiremos lo siguiente, recordando cambiar dominio.com por vuestro dominio:



server { 
listen 80;
listen [::]:80;

server_name nuestrodominio.com;

gzip on;
gzip_types
application/javascript
application/x-javascript
application/json
application/rss+xml
application/xml
image/svg+xml
image/x-icon
application/vnd.ms-fontobject
application/font-sfnt
text/css
text/plain;
gzip_min_length 256;
gzip_comp_level 5;
gzip_http_version 1.1;
gzip_vary on;

location ~ ^/.well-known/(webfinger|nodeinfo|host-meta) {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
}

location ~ ^/(css|img|js|fonts)/ {
root /srv/writefreely/dominio.com/static;
# Optionally cache these files in the browser:
# expires 12M;
}

location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
}
}


Guardamos el fichero y lo habilitamos:



cd /etc/nginx/sites-enabled/ 

ln -s ../sites-available/writefreely.conf

nginx -t

systemctl reload nginx


Y para finalizar, vamos con el certbot:



apt install -y certbot python3-certbot-nginx

certbot


Al inicializar certbot nos hará una serie de preguntas que debemos responder, como es nuestro email, el dominio y si aceptamos los ToS. Se generará el certificado.


Ahora sólo queda entrar desde el navegador poniendo nuestro dominio y listo. El login se realiza con el usuario y la contraseña que pusimos en pasos anteriores.

Si tenéis algún tipo de error podéis contactar conmigo desde mastodon sin problema ninguno.


Comentarios