WriteFreely es una plataforma de publicación minimalista hecha para escritores. Inicia un blog, comparte conocimientos dentro de tu organización o crea una comunidad en torno al acto compartido de escribir.
Pasos previos
Para poder instalar una instancia de WriteFreely necesitaremos un servidor -o lo que tengas a mano, como una Raspberry Pi- con Ubuntu 22.04. Además deberemos de tener acceso SSH y permisos de súper administrador.
¡Al lío!
Preparación del servidor
Tendremos que crear un usuario especifico que será quien ejecuta el Software, para ello:
useradd -r -m -d /srv/writefreely -s /bin/bash writefreely
Añadimos el usuario a www-data
:
usermod -a -G www-data writefreely
Iniciamos sesión con el usuario recién creado:
su - writefreely
Descargar WriteFreely
Con la sesión de writefreely
abierta, procedemos a descargar la última versión en su página de Github:
wget https://github.com/writefreely/writefreely/releases/download/v0.13.2/writefreely_0.13.2_linux_amd64.tar.gz
Descomprimimos y cambiamos el nombre del directorio:
tar xvzf writefreely_0.13.2_linux_amd64.tar.gz
mv writefreely nuestrodominio.com
Finalmente, salimos de la sesión de writefreely
:
exit
Modificamos los permisos del directorio donde instalamos WriteFreely para que tenga acceso www-data
:
chown writefreely.www-data -R /srv/writefreely/
Instalamos y configuramos MariaDB
A continuación tendremos que crear un usuario y una base de datos para posteriormente configurarlo en WriteFreely, para ello primero instalamos MariaDB:
apt install mariadb-server
Y deberemos de crear un usuario y base de datos como indica este otro tutorial:

CREATE DATABASE writefreely;
GRANT ALL PRIVILEGES ON writefreely.* TO 'writefreelyuser'@'localhost' IDENTIFIED BY 'supercontrasenyaseguramuymuysecreta';
Generamos la configuración
Volvemos a iniciar sesión con el usuario del sistema writefreely
y generamos la configuración:
su - writefreely
cd nuestrodominio.com
./writefreely --create-config
Con el último comando se habrá generado un fichero, donde deberemos de modificar los siguientes valores:
username = writefreelyuser
password = supercontrasenyaseguramuymuysecreta
database = writefreely
site_name = WriteFreely de voidnull!
site_description = Tutorial de como instalar WriteFreely
host = https://nuestrodominio
default_visibility = unlisted
Una vez hemos configurado todo, inicializamos la base de datos con:
./writefreely db init
Generamos las llaves de cifrado:
./writefreely keys generate
Creamos un usuario admin:
$ ./writefreely --create-admin nuestrousuario:supercontrasenya
Creamos un servicio para SystemD
Para poder gestionar la aplicación usando SystemD, crearemos el siguiente fichero:
nano /etc/systemd/system/writefreely.service
Con el siguiente contenido:
[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/nuestrodominio.com
ExecStart=/srv/writefreely/nuestrodominio.com/writefreely
Restart=always
[Install]
WantedBy=multi-user.target
Y ejecutamos el servicio para que esté en segundo plano:
systemctl daemon-reload
systemctl start writefreely
systemctl enable writefreely
Y verificamos que se ha lanzado correctamente con un status
:
# systemctl status writefreely
● writefreely.service - WriteFreely Instance
Loaded: loaded (/etc/systemd/system/writefreely.service; disabled; vendor preset: enabled)
Active: active (running) since Mon 2022-11-14 17:14:55 UTC; 3s ago
Main PID: 19346 (writefreely)
Tasks: 5 (limit: 2288)
Memory: 11.6M
CPU: 118ms
CGroup: /system.slice/writefreely.service
└─19346 /srv/writefreely/nuestrodminio.com/writefreely
Nov 14 17:14:56 writefreely writefreely[19346]: 2022/11/14 17:14:56 Loading config.ini configuration...
Nov 14 17:14:56 writefreely writefreely[19346]: 2022/11/14 17:14:56 Loading templates...
Nov 14 17:14:56 writefreely writefreely[19346]: 2022/11/14 17:14:56 Loading pages...
Nov 14 17:14:56 writefreely writefreely[19346]: 2022/11/14 17:14:56 Loading user pages...
Nov 14 17:14:56 writefreely writefreely[19346]: 2022/11/14 17:14:56 Loading encryption keys...
Nov 14 17:14:56 writefreely writefreely[19346]: 2022/11/14 17:14:56 Connecting to mysql database...
Nov 14 17:14:56 writefreely writefreely[19346]: 2022/11/14 17:14:56 Adding {domain} routes (single user)...
Nov 14 17:14:56 writefreely writefreely[19346]: 2022/11/14 17:14:56 Going to serve...
Nov 14 17:14:56 writefreely writefreely[19346]: 2022/11/14 17:14:56 Serving on http://localhost:8080
Nov 14 17:14:56 writefreely writefreely[19346]: 2022/11/14 17:14:56 ---
Instalación y configuración de Nginx Proxy
Lo primero como siempre será configurar Nginx para ello instalaremos los paquetes necesarios:
apt install nginx certbot python3-certbot-nginx
Y crearemos la configuración para que funcione con un Nginx Proxy:
nano /etc/nginx/site-available/writefreely.conf
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/nuestrodominio/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;
}
}
Habilitamos el servidor en Nginx:
cd /etc/nginx/sites-enabled/
ln -s ../sites-available/writefreely.conf
nginx -t
systemctl reload nginx
Creamos certificado SSL con Let's Encrypt
Para generar el certificado, lo haremos siguiendo este otro tutorial:

Conclusión
Tras instalar el certificado SSL, podremos acceder a nuestro WriteFreely con el usuario admin que hemos creado durante el tutorial y podremos iniciar sesión:

Comentarios