# 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**
```bash
cd /var/www/blog.anartist.org/
sudo ./writefreely --create-user user:password
```

**Crear una cuenta de administrador**
```bash
cd /var/www/blog.anartist.org/
sudo ./writefreely --create-admin user:password
```

**Actualizar**  
*¡¡Siempre hay que leer la instrucciones en la [documentación oficial](https://writefreely.org/docs) y leer el [changelog](https://blog.writefreely.org/version-0-12) de la nueva versión!!*  
*¡¡Es muy recomendable hacer una copia de seguridad antes de actualizar!!*
```bash
# 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í](https://writefreely.org/start)

```bash
sudo apt update
sudo apt upgrade

sudo apt install nginx certbot python3-certbot-nginx mysql-server

sudo mysql
```

Primero creamos la base de datos:

```mysql
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**.

```bash
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*:

```bash
cd /etc/nginx/sites-available/
sudo vi writefreely
```

Contenido del fichero de configuración *nginx*:

```bash
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


}
```

```bash
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*:

```bash
sudo vi /etc/systemd/system/writefreely.service
```

Contenido del fichero de configuració \*.service:

```bash
[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!

```bash
sudo systemctl restart writefreely.service 
```

Finalmente, creo un usuario administrador y el primer usuario:

```bash
cd blog.anartist.org/
sudo ./writefreely --create-admin anartist:XXXXXXXXX
sudo ./writefreely --create-user marcel:XXXXXXXX
```