Skip to main content

Blog

Software: Writefreely
Web oficial: https://writefreely.org/
Documentación oficial: https://writefreely.org/docs
Foro/Matrix de soporte: https://discuss.write.as/c/writefreely

Ubicaciones importantes:/var/www/blog.anartist.org/
Logs relevantes:/var/log/syslog

Comandos de gestión

Crear un usuario nuevo

cd /var/www/blog.anartist.org/
sudo ./writefreely --create-user user:password

Crear una cuenta de administrador

cd /var/www/blog.anartist.org/
sudo ./writefreely --create-admin user:password

Actualizar
¡¡Siempre hay que leer la instrucciones en la documentación oficial y leer el changelog de la nueva versión!!
¡¡Es muy recomendable hacer una copia de seguridad antes de actualizar!!

# Detener writefreely
# Descargar ficheros de release y sustituirlos por los existentes. Luego ejecutar:
# Arrancar servicio writefreely de nuevo
# Ejecutar:
./writefreely db migrate

Diario de Instalación

He seguido las instrucciones de aquí

sudo apt update
sudo apt upgrade

sudo apt install nginx certbot python3-certbot-nginx mysql-server

sudo mysql

Primero creamos la base de datos:

CREATE DATABASE writefreely CHARACTER SET latin1 COLLATE latin1_swedish_ci;
CREATE USER 'writefreely'@'localhost' IDENTIFIED BY 'XXXXXXXXX';
GRANT ALL PRIVILEGES ON writefreely.* to writefreely@'localhost';
FLUSH PRIVILEGES;
exit

Descargamos writefreely y configuramos. Es un proceso que te va guiando. En nuestro caso, he puesto un máximo de 5 blogs por usuario.

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

tar -xf writefreely_0.12.0_linux_amd64.tar.gz
cd writefreely
./writefreely config start
./writefreely keys generate

Durante la configuración, le he indicado la opción Producción detrás de un servidor proxy, así que configuro nginx:

cd /etc/nginx/sites-available/
sudo vi writefreely

Contenido del fichero de configuración nginx:

server {

    server_name blog.anartist.org;

    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 /var/www/blog.anartist.org/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;
    }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/blog.anartist.org/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/blog.anartist.org/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
    if ($host = blog.anartist.org) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;
    listen [::]:80;

    server_name blog.anartist.org;
    return 404; # managed by Certbot


}
sudo ln -s /etc/nginx/sites-available/writefreely /etc/nginx/sites-enabled/

sudo systemctl restart nginx.service 
sudo certbot --nginx

sudo mv /home/marcel/writefreely /var/www/
cd /var/www/

sudo mv writefreely/ blog.anartist.org/
sudo chown -R root:root blog.anartist.org/

Finalmente, creamos el servicio systemd:

sudo vi /etc/systemd/system/writefreely.service

Contenido del fichero de configuració *.service:

[Unit]
Description=WriteFreely Instance
#After=syslog.target network.target
# If MySQL is running on the same machine, uncomment the following 
# line to use it, instead. 
After=syslog.target network.target mysql.service

[Service]
Type=simple
StandardOutput=syslog
StandardError=syslog
WorkingDirectory=/var/www/blog.anartist.org/
ExecStart=/var/www/blog.anartist.org/writefreely
Restart=always

[Install]
WantedBy=multi-user.target

Y arrancamos el servicio. ¡Ya está disponible!

sudo systemctl restart writefreely.service 

Finalmente, creo un usuario administrador y el primer usuario:

cd blog.anartist.org/
sudo ./writefreely --create-admin anartist:XXXXXXXXX
sudo ./writefreely --create-user marcel:XXXXXXXX