Tutorial: cómo crear una instancia de Writefreely

En la entrada de hoy os voy a contar como crear una instancia de WriteFreely, y así podáis tener vuestro propio blog minimalista.
Para este tutorial, he utilizado un servidor con Ubuntu. 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=writefreely
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 sin problema ninguno.
Pues lo intentaré… Estoy aprendiendo con docker y veo que hay algunas imágenes hechas, mejor que meterme a hacerlo a mano. Pero probaremos igualmente, así se aprende.
Gracias
La verdad es que queda un blog muy limpio, yo modifiqué el css para ponerla a mi gusto, de momento lo utilizo como copia de este blog porque estoy haciendo pruebas. El consumo de recursos de un blog con writefreely es ínfimo, lo tengo en una vps de 512mb de ram y los recursos que consume estarán sobre 100-150mb aproximadamente, cuando más visitas tiene llegará a 200mb de ram.