Skip to main content

Cerca

Elementi taggati con: tutorial


 

Utilizar HAProxy para balancear servidor web en Ubuntu Server


Immagine/foto

#balanceador #balancear #frontales #gnu/linux #haproxy #tutorial

En ocasiones necesitaremos balancear las visitas que tienen nuestras aplicaciones web. Por ejemplo, tener un sólo servidor para PrestaShop o Magento que reciba muchísimas visitas puede hacer que la web cargue muy lenta debido a las visitas.

Por eso siempre puede ser muy buena idea utilizar HAProxy para balancear esas visitas y así optimizar mejor los recursos de los diferentes frontales webs que podamos tener.

Vamos a configurar HAProxy y Apache en varios servidores con Ubuntu Server 18.04 y tendremos en cuenta que por ejemplo, si entras en la web usando el primer frontal y te genera una cookie, si luego te redireccionan al segundo frontal esa cookie exista también en el otro frontal -y así evitar problemas de inicios de sesión etc-.

Estructura de nuestra infraestructura


Esta será nuestra estructura de servidores:

Immagine/foto

Tendremos un servidor HAProxy y luego dos servidores webs llamados Frontal-01 y Frontal-02.

Nuestro dominio apuntará directamente al servidor HAProxy y éste se conectará a los servidores web mediante la red interna. Por lo que vamos a tener el servidor HAProxy con IP pública e IP privada y los dos servidores web con acceso únicamente por red privada -con lo que no abra acceso público-.

La ventaja de utilizar HAProxy, es que si tenemos la necesidad de añadir un tercer frontal simplemente hay que configurar y añadirlo a la configuración.

Instalación de HAProxy


Como siempre, lo primero, actualizamos repositorios:
apt update 

apt upgrade

Luego instalamos el paquete necesario para HAProxy:
apt install haproxy

Configuración para HAProxy


En el fichero de configuración /etc/haproxy/haproxy.cfg vamos a añadir lo siguiente:
global 

        log     127.0.0.1       local0 

        log     127.0.0.1       local1  notice 

        maxconn 256 

        user    haproxy 

        group   haproxy 

        daemon 



defaults 

        log     global 

        mode    http 

        option  tcplog 

        option  dontlognull 

        maxconn 8000 

        timeout connect 5s 

        timeout client  300s 

        timeout server  300s 

        retries 3 

        timeout check   10s 

        timeout queue   1m 

        errorfile 400 /etc/haproxy/errors/400.http 

        errorfile 403 /etc/haproxy/errors/403.http 

        errorfile 408 /etc/haproxy/errors/408.http 

        errorfile 500 /etc/haproxy/errors/500.http 

        errorfile 502 /etc/haproxy/errors/502.http 

        errorfile 503 /etc/haproxy/errors/503.http 

        errorfile 504 /etc/haproxy/errors/504.http 



listen web_server 

        bind    \*:80 

        mode    http 

        stats   enable 

        stats   auth    cda:cda 

        balance roundrobin 

        server  frontal-01      10.20.10.70 

        server  frontal-02      10.20.10.69

Si os fijáis, en la parte final hemos configurado los dos frontales con la IP privada. Si queremos añadir un tercero simplemente deberíamos de añadir una línea más:
server  nombreFrontal      [IP_Privada] 

server  frontal-01         10.20.10.70

Y una vez tenemos configurado HAProxy y nuestros frontales web, guardamos la configuración y luego reiniciamos y habilitamos el servicio:
systemctl enable haproxy 

systemctl restart haproxy

Frontal-01 y Frontal-02


En ambos servidores tendremos instalado un servidor web con nuestras webs alojadas. Para este tutorial, simplemente hemos modificado la pagina por defecto que viene en Apache y la hemos modificado para saber en cada momento desde que Frontal carga la web:

Habilitar estadisticas


Para ello tenemos que modificar el fichero de configuración de HAProxy:
nano /etc/haproxy/haproxy.cfg

Y añadimos lo siguiente al final:
listen stats 

        bind \*:8083 

        mode http 

        stats enable 

        stats uri /stats 

        stats realm HAProxy\ Statistics 

        stats auth haproxy:web_server 

        stats refresh 2s

Y podremos acceder desde el navegador desde http://IP_servidor_HAProxy:8083/stats

Estadísticas de HAProxy

Controlar y comprobar el estado las cookies


Modificamos el fichero de configuración /etc/haproxy/haproxy.cfg para añadir lo siguiente:
listen web_server 

        bind    \*:80 

        mode    http 

        stats   enable 

        stats   auth    cda:cda 

        balance roundrobin 

        option httpchk GET /index.php HTTP/1.0 

        http-check expect rstatus (2|3)[0-9][0-9]|503 

        cookie voidnull prefix indirect nocache 

        server  frontal-01      10.20.10.70 

        server  frontal-02      10.20.10.69

Lo que haremos es configurar la cookie con el nombre que le ponemos, por ejemplo he creado un fichero index.php con el siguiente contenido para hacer pruebas:
<?php 



echo "<h1> Frontal-02</h1>"; 



$cookie_name = "voidnull"; 

$cookie_value = "voidnull.es"; 

setcookie($cookie_name, $cookie_value, time() + (86400 \* 30), "/"); // 86400 = 1 day 



if(!isset($_COOKIE[$cookie_name])) { 

    echo "Cookie named '" . $cookie_name . "' is not set!"; 

} else { 

    echo "Cookie '" . $cookie_name . "' is set!<br>"; 

    echo "Value is: " . $_COOKIE[$cookie_name]; 

} 

?>

Si ahora accedemos, veremos que al principio no habrá cookie asignada y tras actualizar se asignará la IP. Si seguimos refrescando, se cambiará de Frontal y cargará la misma cookie.

La entrada Utilizar HAProxy para balancear servidor web en Ubuntu Server se publicó primero en _ voidNull.
Utilizar HAProxy para balancear servidor web en Ubuntu Server

 

Utiliza el comando dd para crear un USB de instalación de GNU/Linux


Immagine/foto

#bootable #general #gnu/linux #tutorial #usb

No os voy a mentir. Este tutorial era uno que tenía en mi lista de “tutoriales que hacer” y que no hacía porque me daba pereza. Pero el otro día pensando en tutoriales dije “Este tutorial tiene que estar en todo blog de GNU/Linux”. Así que… aquí lo tenéis.

Creación del USB bootable


Identificamos nuestro USB con:
fdisk -l
Y tendremos que mirar que dispositivo es el nuestro, se puede identificar fácilmente con el tamaño del USB:
Disk /dev/sdd: 15 GiB, 16030629888 bytes, 31309824 sectors

Units: sectors of 1 \* 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: dos

Disk identifier: 0x422328da



Dispositivo Inicio Start Final Sectores Size Id Tipo

/dev/sdd1 \* 0 3497983 3497984 1,7G 0 Buida

/dev/sdd2 416 5151 4736 2,3M ef EFI (FAT-12/16/32)

Ahora procederemos a crear el USB con el comando dd:

ESTE PROCESO FORMATEARÁ TU DISPOSITIVO
dd if=/home/t3rr0rz0n3/Baixades/debian-9.5.0-amd64-netinst.iso of=/dev/sdd bs=4M
El uso del comando dd es muy sencillo:
  • if: aquí indicaremos la ruta completa o relativa de la imagen que hemos descargado.
  • of: aquí indicaremos el dispositivo.
Tras el proceso, lo montamos para comprobar que todo ha ido bien:
mount /dev/sdd1 /media/t3rr0rz0n3/
Y aquí lo tenemos:
ls -l /media/t3rr0rz0n3

total 934

-r--r--r-- 1 root root 146 de ju 14 12:25 autorun.inf

dr-xr-xr-x 1 root root 2048 de ju 14 12:25 boot

dr-xr-xr-x 1 root root 2048 de ju 14 12:25 css

lr-xr-xr-x 1 root root 1 de ju 14 12:25 debian -> .

dr-xr-xr-x 1 root root 2048 de ju 14 12:25 dists

dr-xr-xr-x 1 root root 2048 de ju 14 12:25 doc

dr-xr-xr-x 1 root root 2048 de ju 14 12:25 efi

dr-xr-xr-x 1 root root 2048 de ju 14 12:26 firmware

-r--r--r-- 1 root root 183992 de ju 11 05:19 g2ldr

-r--r--r-- 1 root root 8192 de ju 11 05:19 g2ldr.mbr

dr-xr-xr-x 1 root root 2048 de ju 14 12:25 install

dr-xr-xr-x 1 root root 2048 de ju 14 12:25 install.amd

dr-xr-xr-x 1 root root 4096 de ju 14 12:25 isolinux

-r--r--r-- 1 root root 85356 de ju 14 12:26 md5sum.txt

dr-xr-xr-x 1 root root 4096 de ju 14 12:25 pics

dr-xr-xr-x 1 root root 2048 de ju 14 12:25 pool

-r--r--r-- 1 root root 8473 de ju 14 12:26 README.html

-r--r--r-- 1 root root 291 de ma 4 2017 README.mirrors.html

-r--r--r-- 1 root root 86 de ma 4 2017 README.mirrors.txt

-r--r--r-- 1 root root 473 de ju 14 12:25 README.source

-r--r--r-- 1 root root 5181 de ju 14 12:26 README.txt

-r--r--r-- 1 root root 632347 de ju 11 05:19 setup.exe

dr-xr-xr-x 1 root root 2048 de ju 14 12:25 tools

-r--r--r-- 1 root root 233 de ju 14 12:25 win32-loader.ini

Tras desmontarlo, ya podremos instalar nuestra distribución GNU/Linux favorita Immagine/foto
umount /dev/sdd1
La entrada Utiliza el comando dd para crear un USB de instalación de GNU/Linux se publicó primero en _ voidNull.
Utiliza el comando dd para crear un USB de instalación de GNU/Linux

 

Instalación de un nodo de Mastodon en Debian 9





#fediverso #gnu social #gnu/linux #mastodon #pleroma #tutorial

Después de hacer un artículo sobre cómo instalar un nodo de GNU Social y luego sobre como instalar un nodo de Pleroma, necesitaba hacer un hat-trick y escribir sobre Mastodon -aunque tenga una relación de amor/odio, (más odio que amor)-

Mastodon se diferencia de Twitter siendo una federación descentralizada de servidores​ corriendo software de código abierto (licencia Affero General Public License), y su código y documentación está disponible en el repositorio GitHub . Que sea una red social descentralizada, significa que los usuario están esparcidos en diferentes comunidades autónomas​ e independientes llamadas “instancias” (servidores) cuya red llama fediverso​ (juego de palabras entre federación y universo​) pero aun así unificados por medio de la posibilidad de interactuar entre si.

Preparación del ecosistema


Para realizar este tutorial será necesario tener un servidor Debian 9 -o incluso Ubuntu 18.04- con acceso a root. Además también necesitaremos tener un dominio o subdominio donde hacer la instalación de la instancia de Mastodon. Necesitaremos instalar diferente software como NodeJS, dependencias varias o Ruby.

Paquetes necesarios para tener instalados


Primero de todo necesitamos tener ciertos paquetes instalados en nuestro sistema, así que lo primero es instalarlos:
apt install curl

Instalación de NodeJS


Procedemos a instalar NodeJS desde el repositorio propio que tienen ellos:
curl -sL https://deb.nodesource.com/setup_8.x | bash -
Finalmente, instalamos el paquete NodeJS:
apt-get install -y nodejs

Instalación de Yarn


También será necesario añadir el repositorio de Yarn para la versión de Mastodon.
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -

echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list

apt update

Y lo instalamos:
apt install yarn

Instalación de dependencias necesarias


También son necesario instalar todas estas dependencias:
apt -y install imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git-core g++ libprotobuf-dev protobuf-compiler pkg-config gcc autoconf bison build-essential libssl-dev libyaml-dev libreadline-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev libidn11-dev libicu-dev

Instalación de software necesario


Software necesario para Mastodon, necesitaremos un servidor web, que en este caso será de nuevo Nginx, también usaremos Redis para la caché y luego para las bases de datos usaremos PostgreSQL.
apt install nginx redis-server redis-tools postgresql-9.6 postgresql-contrib-9.6 certbot
Ejecutamos los servicios:
systemctl enable nginx

Dependencias que deben de ser añadidas por un usuario no-root


Creamos un usuario llamado mastodon:
adduser mastodon
Iniciamos como el usuario que hemos creado:
su - mastodon
Instalamos los siguientes paquetes rbenv y ruby-build:
git clone https://github.com/rbenv/rbenv.git ~/.rbenv

cd ~/.rbenv && src/configure && make -C src

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc

echo 'eval "$(rbenv init -)"' >> ~/.bashrc

# Reiniciamos la shell

exec bash

# Comprobamos que rbenv está bien instalado

type rbenv

# Instalamos ruby-build

git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

Ahora que ya están instalados los paquetes rbenv y ruby-build podemos proceder a la instalación de la versión de Ruby que Mastodon necesita, y para habilitarlo es necesario ejecutar lo siguiente:
rbenv install 2.5.1

rbenv global 2.5.1

Esto llevará un tiempo seguramente, así que por ejemplo, yo me fui hacer un café y aún estaba instalando.

Dependencias para NodeJS y Ruby


Ahora que Ruby está habilitado, vamos a clonar el repositorio de Mastodon y luego instalaremos las dependencias de Ruby y NodeJS.

Volvemos primero a nuestro home:
cd
Clonamos el repositorio de Mastodon:
git clone https://github.com/tootsuite/mastodon.git live
Accedemos dentro de la carpeta creada:
cd live
Instalamos Bundler:
gem install bundler
Usamos Bundler para instalar el resto de dependencias para Ruby:
bundle install -j$(getconf _NPROCESSORS_ONLN) --deployment --without development test
Y usamos Yarn para instalar las dependencias de NodeJS:
yarn install --pure-lockfile
Una vez hemos acabado con esto, ejecutamos exit para salir del usuario mastodon y volver al usuario root.

Creación de la base de datos


Ahora crearemos la base de datos para Mastodon con PostgreSQL, para ello accederemos al prompt:
sudo -u postgres psql
Crearemos la base de datos:
CREATE USER mastodon CREATEDB;

Configuración Nginx con SSL


Por lo que veo en al documentación de Mastodon, te dan toda la configuración de Nginx, con el SSL configurado y demás. Lo que vamos hacer es crearlo por pasos, primero añadimos el nuevo espacio web, luego creamos el certificado y finalmente, añadimos la configuración necesaria para Mastodon.

Creamos el fichero /etc/nginx/sites-available/mastodon.conf y lo editamos para añadir el siguiente contenido y cambiando el parámetro server_name:
server {

listen 80;

listen [::]:80;

server_name midominio.es;

root /home/mastodon/live/public;

# Useful for Let's Encrypt

location /.well-known/acme-challenge/ { allow all; }

location / { return 301 https://$host$request_uri; }

}

Activamos la web para Nginx:
ln -s /etc/nginx/sites-available/mastodon.conf /etc/nginx/sites-enabled/mastodon.conf
El siguiente paso será crear el certificado para nuestro dominio, así que pasamos a crearlo, pero antes instalamos el Plugin para Nginx:
apt-get install python-certbot-nginx -t stretch-backports
Creamos el certificado:
certbot --authenticator webroot --installer nginx
Ojo a la configuración del certificado. Tenemos que crear el certificado con la opción de webroot, pero /home/mastodon/live/public aún no está habilitado porque no hemos iniciado Mastodon. Por lo que únicamente por esta vez, tendremos que decir que el webroot es /var/www/html para que así Certbot pueda crear el certificado correctamente. Una vez configuremos la parte del servidor con HTTPS, el webroot será /home/mastodon/live/public y ya estará configurado para que funcione correctamente.

Volvemos a editar el fichero de configuración /etc/nginx/sites-available/mastodon.conf y añadimos lo siguiente arriba de todo:
map $http_upgrade $connection_upgrade {

default upgrade;

'' close;

}

Deberemos de tener dos server, el primero para HTTP y el segundo para HTTPS. Certbot habrá modificado seguramente algunas líneas, así que tendremos que dejarlo de nuevo como antes, para el primer server:
server {

listen 80;

listen [::]:80;

server_name midominio.es;

root /home/mastodon/live/public;



# Useful for Let's Encrypt

location /.well-known/acme-challenge/ { allow all; }

location / { return 301 https://$host$request_uri; }



if ($host = midominio.es) {

return 301 https://$host$request_uri;

} # managed by Certbot

return 404; # managed by Certbot

}

Y para el segundo server:
server {

listen 443 ssl http2;

listen [::]:443 ssl http2;

server_name midominio.es;



ssl_protocols TLSv1.2;

ssl_ciphers HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA;

ssl_prefer_server_ciphers on;

ssl_session_cache shared:SSL:10m;



ssl_certificate /etc/letsencrypt/live/midominio.es/fullchain.pem; # managed by Certbot

ssl_certificate_key /etc/letsencrypt/live/midominio.es/privkey.pem; # managed by Certbot



keepalive_timeout 70;

sendfile on;

client_max_body_size 8m;



root /home/mastodon/live/public;



gzip on;

gzip_disable "msie6";

gzip_vary on;

gzip_proxied any;

gzip_comp_level 6;

gzip_buffers 16 8k;

gzip_http_version 1.1;

gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;



add_header Strict-Transport-Security "max-age=31536000";



location / {

try_files $uri @proxy;

}



location ~ ^/(emoji|packs|system/accounts/avatars|system/media_attachments/files) {

add_header Cache-Control "public, max-age=31536000, immutable";

try_files $uri @proxy;

}



location /sw.js {

add_header Cache-Control "public, max-age=0";

try_files $uri @proxy;

}



location @proxy {

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto https;

proxy_set_header Proxy "";

proxy_pass_header Server;



proxy_pass http://127.0.0.1:3000;

proxy_buffering off;

proxy_redirect off;

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection $connection_upgrade;



tcp_nodelay on;

}



location /api/v1/streaming {

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto https;

proxy_set_header Proxy "";



proxy_pass http://127.0.0.1:4000;

proxy_buffering off;

proxy_redirect off;

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection $connection_upgrade;



tcp_nodelay on;

}



error_page 500 501 502 503 504 /500.html;

}

Tras este cambio al fichero de configuración, podemos ejecutar nginx -t para comprobar el estado de la sintaxis del fichero y luego reiniciamos el servicio:
/etc/init.d/nginx restart

Instalación de Mastodon


¡Venga, que ya queda poco! Volvemos a iniciar sesión como el usuario mastodon:
su - mastodon
Ahora viene lo interesante. Iniciaremos la instalación donde tendremos una configuración interactiva donde nos pedirá información de nuestra instancia de Mastodon:
RAILS_ENV=production bundle exec rake mastodon:setup
Para no copiar toda la salida del comando, os voy a dejar un listado en plan resumen de lo que pide:

* Domain name: midominio.es

* Single user mode? n

* Are you using Docker to run Mastodon? n

* PostgreSQL host: /var/run/postgresql

* PostgreSQL port: 5432

* Name of PostgreSQL database: mastodon

* Name of PostgreSQL user: mastodon

* Password of PostgreSQL user:

* Redis host: localhost

* Redis port: 6379Redis password:

* Do you want to store uploaded files on the cloud? No

* Do you want to send e-mails from localhost? yes

* E-mail address to send e-mails “from”: Mastodon notifications@midominio.es

* Send a test e-mail with this configuration right now? Yes

* Send test e-mail to:

El correo por el momento no lo vamos a configurar, aún así, lo podéis configurar posteriormente desde /home/mastodon/live/config/environments/production.rb.

* Try again? no

* This configuration will be written to .env.production

* Save configuration? Yes

* Prepare the database now? Yes

* Compile the assets now? Yes

* Do you want to create an admin user straight away? (Y/n) Yes

* Username: t3rr0rz0n3

* E-mail: zagur@voidnull.es

* You can login with the password: 756d88c80c90a5360f6275778b3e0f60

* You can change your password once you login.

Configuración de SystemD para Mastodon


Hay que configurar tres servicios para poder iniciar el servicio de manera más sencilla. Estos son los tres ficheros y su contenido:

Para gestionar la web tendremos el fichero /etc/systemd/system/mastodon-web.service

[Unit]Description=mastodon-web

After=network.target





[Service]Type=simple

User=mastodon

WorkingDirectory=/home/mastodon/live

Environment="RAILS_ENV=production"

Environment="PORT=3000"

ExecStart=/home/mastodon/.rbenv/shims/bundle exec puma -C config/puma.rb

ExecReload=/bin/kill -SIGUSR1 $MAINPID

TimeoutSec=15

Restart=always





[Install]WantedBy=multi-user.target

Para mantener el servicio en segundo plano tendremos este otro fichero /etc/systemd/system/mastodon-sidekiq.service con el contenido:


[Unit]Description=mastodon-sidekiq

After=network.target





[Service]Type=simple

User=mastodon

WorkingDirectory=/home/mastodon/live

Environment="RAILS_ENV=production"

Environment="DB_POOL=5"

ExecStart=/home/mastodon/.rbenv/shims/bundle exec sidekiq -c 5 -q default -q mailers -q pull -q push

TimeoutSec=15

Restart=always





[Install]WantedBy=multi-user.target

Y finalmente el último servicio para la API /etc/systemd/system/mastodon-streaming.service:


[Unit]Description=mastodon-streaming

After=network.target





[Service]Type=simple

User=mastodon

WorkingDirectory=/home/mastodon/live

Environment="NODE_ENV=production"

Environment="PORT=4000"

ExecStart=/usr/bin/npm run start

TimeoutSec=15

Restart=always





[Install]WantedBy=multi-user.target

Los habilitamos para el arranque:
systemctl enable /etc/systemd/system/mastodon-\*.service
Y los iniciamos uno a uno:
systemctl start mastodon-web.service

systemctl start mastodon-sidekiq.service

systemctl start mastodon-streaming.service

Y una vez hemos acabado con esto… redoble de tambores Ta chaaaaan! Ya tenemos Mastodon en nuestro servidor y funcionando perfectamente.




Sólo faltará que la federación haga lo suyo para empezar a ver toda la red disponible Immagine/foto

La entrada Instalación de un nodo de Mastodon en Debian 9 se publicó primero en _ voidNull.
Instalación de un nodo de Mastodon en Debian 9

 

Instalación de una instancia de Pleroma en Debian 9





#fediverso #gnu social #gnu/linux #mastodont #pleroma #tutorial

Después de hacer un artículo sobre cómo instalar un nodo de GNU Social, tocaba probar otras cosas diferentes, así que me decidí por probar de instalar Pleroma. Para quien no sepa que carajos es, Pleroma es una red social federada** compatible con GNU Social, Mastodon y otras implementaciones de ActivityPub y OStatus**. Es Software Libre y está bajo la licencia AGPLv3. Actualmente Pleroma consiste en dos componentes: un backend, llamado Pleroma **y un **fronted para usuarios llamado Pleroma-FE.

Igual con esto me equivoco, pero hasta donde he podido ver, por lo visto se puede utilizar otros** frontends para Pleomora**. Parece que se puede utilizar la interfaz actual de Mastodon para ser usado bajo Pleroma -o quizás es al revés?-. También hay posibilidad de usar la interfaz de Pleroma en GNU Social -o no…- (si alguien es tan amable de dejarlo en comentarios… xD)

Bueno, vamos al lío, que es lo que mola. Para realizar este tutorial me he basado en la Wiki del GitLab de Pleroma que la verdad es que está súper bien explicado y además te lo dan todo masticado para simplemente ejecutar y disfrutar. Además lo he montado todo en un Debian GNU/Linux 9.5 “Stretch” con 2 vCores, 4GB de RAM, y 30GB SSD en los maravillosos servidores de Clouding.io. Seguramente este mismo tutorial sirva para versiones actuales de Ubuntu y otras distros basadas en la Madre Debian.



Requisitos para Pleroma


Estos son los paquetes necesarios para Pleroma:
  • PostgreSQL 9.6+ (Es necesario instalar también postgresql-contrib-x.x)
  • Elixir 1.5 or newer (No desde los repositorios de Debian, lo veremos más adelante)
  • erlang-dev
  • erlang-tools
  • erlang-parsetools
  • erlang-xmerl
  • git
  • build-essential
  • nginx o Apache
  • certbot (Usaremos Let’s Encrypt para generar el certificado)

Preparamos el sistema


Esto es Debian y como siempre que hacemos un tutorial:
apt update && apt upgrade -y
Instalamos herramientas necesarias para continuar:
apt install git build-essential
Y luego instalamos PostgreSQL:
apt install postgresql-9.6 postgresql-contrib-9.6
Y también instalamos certbot para luego crear el certificado:
apt-get install python-certbot-nginx -t stretch-backports

Instalación de Elixir y Erlang


Como hemos mencionado en el apartado de Requisitos para Pleroma, Elixir lo vamos a instalar desde otro repositorio que no sea el que trae por defecto Debian 9, así que vamos a instalar el siguiente paquete:
wget -P /tmp/ https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb

dpkg -i /tmp/erlang-solutions_1.0_all.deb

Actualizamos repositorios:
apt update
Y luego instalamos Elixir y Erlang:
apt install elixir erlang-dev erlang-parsetools erlang-xmerl erlang-tools

Preparación de la instalación de Pleroma


Lo primero que haremos será ejecutar Pleroma con un usuario propio, de esta manera tendremos la instancia instalada dentro del home del usuario. Yo no soy muy fan de hacer este tipo de instalaciones, pero miraré de hacer una excepción en este caso. Creamos un usuario:
adduser pleroma
Y añadimos el usuario pleroma al grupo sudo:
usermod -aG sudo pleroma
Ahora iniciaremos con el usuario pleroma y continuaremos con la instalación:
su pleroma

cd #Hacemos esto para ponernos en nuestro home

Instalación de Pleroma


Siendo el usuario pleroma, nos descargamos el repositorio desde Gitlab:
git clone https://git.pleroma.social/pleroma/pleroma
Accedemos al directorio descargado:
cd pleroma
Instalamos las dependencias de Pleroma, si nos pide de instalar Hex, le diremos que sí:
mix deps.get
Generamos el fichero de configuración, si nos pide instalar rebar3, le diremos también que sí.:
mix generate_config
Durante la instalación, te pedirá información, así como el nombre de dominio, nombre de la instancia y cuenta de correo del administrador, os dejo la salida del comando a continuación:
Generated pleroma app

Answer a few questions to generate a new config

— THIS WILL OVERWRITE YOUR config/generated_config.exs! —

What is your domain name? (e.g. pleroma.soykaf.com): midominio.es

What is the name of your instance? (e.g. Pleroma/Soykaf): Super Nodo de Pleroma

What’s your admin email address: miemail@midominio.es

Writing config to config/generated_config.exs.

Este fichero de configuración lo podremos encontrar en config/generated_config.exs, donde podremos configurar diferentes cosas interesantes así como el estado de los registros de nuevas cuentas, proxy o la base de datos.

Movemos el fichero de configuración:
mv config/{generated_config.exs,prod.secret.exs}
Ahora creamos la base de datos que utilziará los datos que hay en el fichero de configuración config/prod.secret.exs:
sudo su postgres -c ‘psql -f config/setup_db.psql’
Nota para Sysadmins: En el fichero de configuración de Pleroma podemos cambiar el nombre de la base de datos y el usuario, en este tutorial usaremos la base de datos y usuario que viene por defecto.

Ahora ejecutamos la migración de la base de datos:
MIX_ENV=prod mix ecto.migrate
En este momento podríamos levantar ya Pleroma, pero antes configuraremos un servidor web para acceder con SSL.

Configuración Nginx


Se puede utilizar Apache, pero ya que en GNU Social usé Apache, esta vez utilizaremos Nginx, pero ya os aviso que no debe cambiar mucho, así que si sois más de Apache no hay problema, eso si, seguramente algunas cosas se harán diferente, pero seguro que sabes hacerlo Immagine/foto

Volvemos a ser usuario root y procedemos a instalar Nginx:
apt install nginx
Copiamos el fichero de configuración para Pleroma:
cp /home/pleroma/pleroma/installation/pleroma.nginx /etc/nginx/sites-enabled/pleroma.nginx
Ahora editamos el fichero /etc/nginx/sites-enabled/pleroma.nginx y cambiaremos algunas cosas:

* Dentro del primer server configurado, editaremos el parámetro server_name y pondremos nuestro dominio.

* Comentamos la línea del parámetro return.
# return 301 https://$server_name$request_uri;
* En el mismo server, descomentaremos las tres líneas para crear el certificado con Certbot y también pondremos la ruta completa al parámetro root:
location ~ /\.well-known/acme-challenge {

root /home/pleroma/pleroma/priv/static/;

}

* Del segundo server -configurado con el puerto 433- comentaremos las tres líneas del SSL:
#ssl_trusted_certificate /etc/letsencrypt/live/example.tld/fullchain.pem;

&#35;ssl_certificate /etc/letsencrypt/live/example.tld/fullchain.pem;

&#35;ssl_certificate_key /etc/letsencrypt/live/example.tld/privkey.pem;

Y para comprobar que todo está correcto:
nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

Reiniciamos Nginx:
systemctl restart nginx
Generamos el certificado SSL con CertBot:
certbot –authenticator webroot –installer nginx
Cuando nos pida el webroot para nuestro dominio, tendremos que indicar que es /home/pleroma/pleroma/priv/static/.

Ahora tenemos que volver a editar el fichero /etc/nginx/sites-enabled/pleroma.nginx donde haremos los siguientes cambios:

* En el primer server tendremos que añadir el parámetro listen para el puerto 80 y descomentaremos la línea del parámetro return.
listen 80;

server_name dominio.es;

return 301 https://$server_name$request_uri;

* Luego si nos fijamos, veremos que dentro del primer server se han añadido varias líneas por parte del Certbot. Tendremos que eliminar la de listen y la de includey el resto las moveremos al segundo server.
server {

listen 443 ssl http2;

ssl_session_timeout 5m;

ssl_certificate /etc/letsencrypt/live/dominio.es/fullchain.pem; # managed by Certbot

ssl_certificate_key /etc/letsencrypt/live/dominio.es/privkey.pem; # managed by Certbot

ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot



Por último, iremos hasta el final del fichero y** eliminaremos** las siguientes líneas añadidas por Certbot:
server {

if ($host = dominio.es) {

return 301 https://$host$request_uri;

} # managed by Certbot

listen 80;

server_name dominio.es;

return 404; # managed by Certbot

}

Reiniciamos Nginx:
systemctl restart nginx
En este punto, podriamos iniciar Pleroma y podríamos acceder desde nuestro navegador. Pero antes de iniciarlo, haremos un servicio para poder reiniciarlo de manera más cómoda.

Configurar arranque automático de Pleroma


Copiamos el fichero de ejemplo para SystemD:
cp /home/pleroma/pleroma/installation/pleroma.service /lib/systemd/system/pleroma.service
Lo editamos y dentro [Service] añadimos lo siguiente:
Environment=”MIX_ENV=prod”
Iniciamos Pleroma al arranque:
systemctl enable –now pleroma.service
Y ahora si accedemos con nuestro dominio desde un navegador, nos debería de cargar Pleroma! Immagine/foto

Tareas de administradores


Ahora ya tenemos uns instancia de Pleroma funcionando en nuestro servidor. Lo siguiente es saber que se pueden crear usuarios, añadir moderadores y gestionar usuarios de la siguiente forma.

Para reiniciar la contraseña de un usuario:
mix generate_password_reset username
Para hacer moderador a un usuario -y así poder borrar estados de otros usuarios-:
mix set_moderator username [true|false]
Registrar un usuario:
mix register_user name username email bio password
Eliminar un usuario:
mix rm_user username
Desactivar una cuenta:
mix deactivate_user username@instancename
La entrada Instalación de una instancia de Pleroma en Debian 9 se publicó primero en _ voidNull.
Instalación de una instancia de Pleroma en Debian 9

 

Instalación de un nodo de GNU Social en Debian 9





#fediverso #general #gnu social #gnu/linux #red social libre #tutorial

** (unificado con el proyecto StatusNet,​ anteriormente Laconica) es un servidor de microblogueo de software libre escrito en PHP que implementa el estándar Ostatus para interoperar entre distintas instalaciones. A la par que ofrece una funcionalidad similar a Twitter, GNU Social busca proporcionar el potencial para una comunicación abierta, inter-servicios y distribuida entre comunidades de microblogueo. Empresas e individuos pueden instalar y controlar sus propios servicios y datos.

Bueno, esto es lo que nos dice la madre Wikipedia. Pero para resumir utilizando otro lenguaje podríamos decir que GNU Social es una red social parecida a Twitter, -“el Twitter bueno” que dirían algunos- y bueno, tenía este post en el tintero a medias -porque me fallaba una cosa, pero ya está resuelta- así que vamos a pasar a la acción y vamos a explicar todo el proceso.

Preparando el ecosistema


Antes de ponernos directamente con la instalación tenemos que tener en cuenta que hay que tener un servidor web preparado para que GNU Social funcione correctamente. Así que tendremos un servidor web que puede ser Apache, LigHTTPS o Nginx, en este tutorial utilizaremos Apache. También es necesario tener un servidor de Bases de Datos que puede ser MariaDB -las versiones 5.x como las 10.x funcionan correctamente- o MySQL 5.5+. Y finalmente, tendremos que tener PHP instalado, en esta ocasión, usaremos PHP 7.0 que es la versión que trae Debian 9 por defecto. Aún así, tendremos que tener en cuenta que hay que instalar estos módulos de PHP:
  • php7.0-curl: Para coger archivos por HTTP.
  • php7.0-gd: Para manipulación de imágenes (escalado).
  • php7.0-gmp: Para firmas Salmon (parte de OStatus).
  • php7.0-intl: Soporte de internacionalización.
  • php7.0-json: Para búsquedas de WebFinger (hola@ejemplo.com) y más.
  • php7.0-mysqlnd o php7.0-mysql o php7.0-mysqli: El driver nativo de PHP 7.0 para conexiones MariaDB. Si se usa MySQL, deberían valer php7.0-mysql o php7.0-mysqli.

Instalación Apache + MariaDB + PHP


Si queréis más información sobre como instalar un servidor web podéis visitar otro artículo del blog que explica más detalladamente todo, en este apartado lo vamos por encima y vamos a ir por faena.

Primero de todo, lo de siempre en Debian:
apt update && apt upgrade -y
Instalamos todos los paquetes necesarios, empezamos por el servidor web:
apt install apache2
Seguimos con MariaDB:
apt install mariadb-server
Y PHP 7.0 y todos los módulos necesarios:
apt install php7.0 php7.0-curl php7.0-gd php7.0-gmp php7.0-intl php7.0-json php7.0-mysqlnd php7.0-xmlwriter php7.0-mbstring
Una vez instalado todo, reiniciamos Apache y lo habilitamos al arranque:
systemctl enable apache2

systemctl restart apache2

Preparación de la instalación de GNU Social


Hay que hacer varias cosas antes, primero crear un VirtualHost para acceder a GNU Social por dominio y para utilizar un DocumentRoot diferente al predeterminado -vamos hacer las cosas bien :P- luego, será descargar los ficheros necesarios y poner los permisos pertinentes, pero también vamos a tener que crear la base de datos y el certificado SSL con Let’s Encrypt.

Configuración VirtualHost


Creamos el siguiente fichero /etc/apache2/sites-available/gnusocial.conf con el siguiente contenido, recordad de cambiar el dominio por el vuestro:
<VirtualHost \*:80>

ServerName dominio.es

ServerAlias www.dominio.es

ServerAdmin supersysadmin@voidnull.es

DocumentRoot /var/www/html/vhost/dominio.es/www

Options FollowSymLinks MultiViews

AllowOverride FileInfo

Order allow,deny

allow from all

ErrorLog /var/www/html/vhost/dominio.es/logs/error.log

LogLevel warn

CustomLog /var/www/html/vhost/dominio.es/logs/access.log combined

Creamos los directorios necesarios:
mkdir -p /var/www/html/vhost/dominio.es/{logs,www}
Y activamos la configuración de nuestra web y recargamos Apache2:
a2ensite gnusocial.conf

systemctl reload apache2

Descargar ficheros y configurar permisos


Ahora vamos por la segunda parte, nos descargamos los ficheros de GNU Social desde el mismo Git -y lo haremos directamente en /var/www/html/vhost/dominio.es/www:
git clone https://git.gnu.io/gnu/gnu-social.git
Movemos el contenido de la carpeta gnu-social a la ruta que toca:
mv gnu-social/\* .

mv gnu-social/.\* .

Y ponemos los permisos y usuarios correctos:
chown www-data.www-data -R \*
Añadimos permisos de escritura:
chmod a+w /var/www/html/vhost/dominio.es/www
Una vez configurado todo esto, ya podremos acceder con nuestro navegador a midominio/install.php, pero antes, tenemos que configurar la base de datos.

Creación de la base de datos


Creamos una base de datos accediendo al Shell propio de MySQL:
mysql -u root -p
La base de datos la llamaremos gnusocial:
CREATE DATABASE gnusocial;
Comprobamos que se ha creado correctamente:
SHOW DATABASES;
Creamos un usuario con una contraseña:
CREATE USER ‘gnusersocial’@’localhost’ IDENTIFIED BY ‘supermegapass’;
Le damos permisos al usuario que hemos creado sobre la base de datos:
GRANT ALL ON gnusocial.\* TO ‘gnusersocial’@’localhost’;

Configuración del certificado SSL


Para SSL usaremos Let’s Encrypt, así que instalaremos los paquetes necesarios:
apt install letsencrypt certbot python-certbot-apache
Y creamos el certificado de la siguiente forma:
letsencrypt –authenticator webroot –installer apache
Ahora seguiremos el instalador, simplemente escogeremos el dominio, escribiremos la ruta completa donde tenemos GNU Social para instalar y marcaremos la opción de Secure para redireccionar el trafico HTTP a HTTPS:
Please choose whether HTTPS access is required or optional.

——————————————————————————-

1: Easy – Allow both HTTP and HTTPS access to these sites

2: Secure – Make all requests redirect to secure HTTPS access

——————————————————————————-

Select the appropriate number [1-2] then [enter](press ‘c’ to cancel):

Instalación de nodo GNU Social


Accedemos a nuestra instalación desde el navegador a dominio.es/install.php y rellenamos los campos que nos piden:










Una vez hemos procedido con la instalación, cambiamos los permisos a estos directorios -y los creamos si no se han generado-:
chmod a+w /var/www/html/vhost/dominio.es/www/avatar

chmod a+w /var/www/html/vhost/dominio.es/www/file

Y finalmente, eliminamos el fichero de la instalación:
rm -rf /var/www/html/vhost/dominio.es/www/install.php

Configuraciones adicionales


Con todo esto, ya tenemos GNU Social instalado y funcionando correctamente, aún así, se pueden configurar cosas adicionales que permiten que GNU Social funcione aún mejor. Se recomienda configurar una cache para PHP, URL Bonitas (Fancy URLs) o bien instalar un tema estilo “Twitter”.

URL Bonitas (Fancy URLs)


En GNU Social por defecto las URLs se mostrará el .php de la página que está mostrando. Por ejemplo, la página del perfil de usuario puede ser así:
https://midominio.es/index.php/voidnull
Este tipo de URLs son un poco estéticas y dificiles de recordar, es por ello que se puede eliminar el .php y configurar URLs bonitas:
https://midominio.es/voidnull
Para configurar esto, simplemente tenemos que editar el fichero de configuración /var/www/html/vhost/dominios.es/www/config.php y añadimos lo siguiente:
$config[‘site’][‘fancy’] = true;
Luego iremos al back-office de GNU Social e iremos a Paths > Site y activaremos la opción Fancy URLs.




Finalmente, moveremos el fichero htaccess-sample:
mv htaccess-sample .htaccess

Activar OPcache para GNU Social


Con OPcache mejoraremos mucho el rendimiento. Está incluido en PHP, debe ser activado manualmente en /etc/php/7.0/apache2/php.ini para la mayoría de distribuciones. Hay que buscar y activar al menos lo siguiente:
opcache.enable=1

Interfaz Qvitter para GNU Social


Para instalar la interfaz de Qvitter tendremos que hacer lo siguiente. Primero, vamos a la ruta que toca:
cd /var/www/html/vhost/midominio.es/www
Aquí creamos dos directorios:
mkdir -p local/plugins
Entramos dentro:
cd local/plugins
Y nos descargamos Qvitter desde Git:
git clone https://git.gnu.io/h2p/Qvitter
Y cambiamos permisos:
chown -R www-data:www-data ../../local
Luego, para acabar añadimos esta configuración dentro del fichero /var/www/html/vhost/dominios.es/www/config.php:
// Qvitter

addPlugin(‘Qvitter’);

$config[‘site’][‘qvitter’][‘enabledbydefault’] = true;

$config[‘site’][‘qvitter’][‘defaultbackgroundcolor’] = ‘#f4f4f4’;

$config[‘site’][‘qvitter’][‘defaultlinkcolor’] = ‘&#35;0084B4’;

$config[‘site’][‘qvitter’][‘timebetweenpolling’] = 5000;

$config[‘site’][‘qvitter’][‘urlshortenerapiurl’] = ‘http://qttr.at/yourls-api.php’;

$config[‘site’][‘qvitter’][‘urlshortenersignature’] = ‘b6afeec983’;

//$config[‘site’][‘qvitter’][‘sitebackground’] = ‘img/fondo.jpg’;

$config[‘site’][‘qvitter’][‘favicon_path’] = Plugin::staticPath(‘Qvitter’, ”).’img/gnusocial-favicons/’;

$config[‘site’][‘qvitter’][‘sprite’] = Plugin::staticPath(‘Qvitter’, ”).’img/sprite.png?v=40′;

$config[‘site’][‘qvitter’][‘enablewelcometext’] = false;

$config[‘site’][‘qvitter’][‘blocked_ips’] = array();

$config[‘thumbnail’][‘maxsize’] = 3000;

$config[‘profile’][‘delete’] = true;

$config[‘profile’][‘changenick’] = true;

$config[‘public’][‘localonly’] = true;

addPlugin(‘StoreRemoteMedia’);

Y al actualizar la pagina del navegador, nos aparecerá la opción para cambiar a Qvitter.




Fuente: Thomask.sdf.org y Git.Gnu

La entrada Instalación de un nodo de GNU Social en Debian 9 se publicó primero en _ voidNull.
Instalación de un nodo de GNU Social en Debian 9

 
Immagine/foto

Cifrando correos con PGP en #ProtonMail | victorhckinthefreeworld


https://victorhckinthefreeworld.com/2018/07/30/cifrando-correos-con-pgp-en-protonmail/

ProtonMail ahora da soporte a PGP. Por lo que podremos enviar y recibir correos cifrados con PGP en nuestro ProtonMail con contactos que no tengan cuenta en ese servicio pero usen GPG en sus comunicaciones.

Videotutorial del proceso!

#privacidad #PGP #ProtonMail #tutorial

 
Para los frikazos como un menda, que gustamos de la "magia negra" (#terminal), Como desactivar el entorno gráfico un pequeño #tutorial #principalmente para #debian #devuan y derivados pero que supongo que sera perfectamente aplicable a otras distros. #ñ

 
Para los frikazos como un menda, que gustamos de la "magia negra" (#terminal), Como desactivar el entorno gráfico un pequeño #tutorial #principalmente para #debian #devuan y derivados pero que supongo que sera perfectamente aplicable a otras distros. #ñ

 
[share author='riveravaldez' profile='https://joindiaspora.com/u/riveravaldez' guid='3c5fc58085b60134f2320242ac110005' posted='2016-11-05 18:47:33' link='https://social.gl-como.it/display/3c5fc58085b60134f2320242ac110005'

PIXLS.US - Free Softwarehttps://pixls.us/software/


A selection of Free/Libre Open Source Software projects related to photography. by Pixls.us:

Immagine/foto
There are many wonderful Free/Open Source Software projects dedicated to photography. Yet there aren’t nearly as many resources dedicated to photographic workflows with them.

This site hopes to rectify that with a simple goal: To provide tutorials, workflows and a showcase for high-quality photography using Free/Open Source Software.
#pixlsus #pixls #pixels #gimp #freesoftware #freesw #culturalibre #freeculture #photography #workflow #tutorial #tutorials #showcase #darktable #rawtherapee #ufraw #photivo #krita #imagemagick #gmic #g'mic #filmulator #photoflow #lightzone #fgallery #hugin #luminancehdr #hdrmerge #filmemulator #forensically #copperminegallery #gallery #coppermine-gallery #siril #enblend-enfuse #enblend #enfuse #macrofusion #resourcespace #imagej #pannellum #vips #graphicsmagick #fotoxx #digikam #gthumb #shotwell #nomacs #geeqie #opencamera #airnef #entangle #digicamcontrol #displaycal #argyllcms #dcamprof #magiclantern #blender #rapidphotodownloader #exiv2 #exiftool #jhead #gphoto #opendronemap #jpegclub #lepton

via Diaspora\* Publisher -
This is going to be of interest for some members of @Gruppo Linux Como [/share]

 
[share author='riveravaldez' profile='https://joindiaspora.com/u/riveravaldez' guid='3c5fc58085b60134f2320242ac110005' posted='2016-11-05 18:47:33' link='https://social.gl-como.it/display/3c5fc58085b60134f2320242ac110005'

PIXLS.US - Free Softwarehttps://pixls.us/software/


A selection of Free/Libre Open Source Software projects related to photography. by Pixls.us:

Immagine/foto
There are many wonderful Free/Open Source Software projects dedicated to photography. Yet there aren’t nearly as many resources dedicated to photographic workflows with them.

This site hopes to rectify that with a simple goal: To provide tutorials, workflows and a showcase for high-quality photography using Free/Open Source Software.
#pixlsus #pixls #pixels #gimp #freesoftware #freesw #culturalibre #freeculture #photography #workflow #tutorial #tutorials #showcase #darktable #rawtherapee #ufraw #photivo #krita #imagemagick #gmic #g'mic #filmulator #photoflow #lightzone #fgallery #hugin #luminancehdr #hdrmerge #filmemulator #forensically #copperminegallery #gallery #coppermine-gallery #siril #enblend-enfuse #enblend #enfuse #macrofusion #resourcespace #imagej #pannellum #vips #graphicsmagick #fotoxx #digikam #gthumb #shotwell #nomacs #geeqie #opencamera #airnef #entangle #digicamcontrol #displaycal #argyllcms #dcamprof #magiclantern #blender #rapidphotodownloader #exiv2 #exiftool #jhead #gphoto #opendronemap #jpegclub #lepton

via Diaspora\* Publisher -
This is going to be of interest for some members of @Gruppo Linux Como [/share]

 
[share author='riveravaldez' profile='https://joindiaspora.com/u/riveravaldez' avatar='http://social.gl-como.it/photo/47e2573e9b041d466be4ffcaa98eb19e-5.jpg' guid='3c5fc58085b60134f2320242ac110005' posted='2016-11-05 18:47:33' link='https://social.gl-como.it/display/3c5fc58085b60134f2320242ac110005'

PIXLS.US - Free Softwarehttps://pixls.us/software/


A selection of Free/Libre Open Source Software projects related to photography. by Pixls.us:

Immagine/foto
There are many wonderful Free/Open Source Software projects dedicated to photography. Yet there aren’t nearly as many resources dedicated to photographic workflows with them.

This site hopes to rectify that with a simple goal: To provide tutorials, workflows and a showcase for high-quality photography using Free/Open Source Software.
#pixlsus #pixls #pixels #gimp #freesoftware #freesw #culturalibre #freeculture #photography #workflow #tutorial #tutorials #showcase #darktable #rawtherapee #ufraw #photivo #krita #imagemagick #gmic #g'mic #filmulator #photoflow #lightzone #fgallery #hugin #luminancehdr #hdrmerge #filmemulator #forensically #copperminegallery #gallery #coppermine-gallery #siril #enblend-enfuse #enblend #enfuse #macrofusion #resourcespace #imagej #pannellum #vips #graphicsmagick #fotoxx #digikam #gthumb #shotwell #nomacs #geeqie #opencamera #airnef #entangle #digicamcontrol #displaycal #argyllcms #dcamprof #magiclantern #blender #rapidphotodownloader #exiv2 #exiftool #jhead #gphoto #opendronemap #jpegclub #lepton

via Diaspora* Publisher - [/share]

This is going to be of interest for some members of @Gruppo Linux Como

 

PIXLS.US - Free Softwarehttps://pixls.us/software/


A selection of Free/Libre Open Source Software projects related to photography. by Pixls.us:

Immagine/foto
There are many wonderful Free/Open Source Software projects dedicated to photography. Yet there aren’t nearly as many resources dedicated to photographic workflows with them.

This site hopes to rectify that with a simple goal: To provide tutorials, workflows and a showcase for high-quality photography using Free/Open Source Software.
#pixlsus #pixls #pixels #gimp #freesoftware #freesw #culturalibre #freeculture #photography #workflow #tutorial #tutorials #showcase #darktable #rawtherapee #ufraw #photivo #krita #imagemagick #gmic #g'mic #filmulator #photoflow #lightzone #fgallery #hugin #luminancehdr #hdrmerge #filmemulator #forensically #copperminegallery #gallery #coppermine-gallery #siril #enblend-enfuse #enblend #enfuse #macrofusion #resourcespace #imagej #pannellum #vips #graphicsmagick #fotoxx #digikam #gthumb #shotwell #nomacs #geeqie #opencamera #airnef #entangle #digicamcontrol #displaycal #argyllcms #dcamprof #magiclantern #blender #rapidphotodownloader #exiv2 #exiftool #jhead #gphoto #opendronemap #jpegclub #lepton

via Diaspora* Publisher -

 

PIXLS.US - Free Softwarehttps://pixls.us/software/


A selection of Free/Libre Open Source Software projects related to photography. by Pixls.us:

Immagine/foto
There are many wonderful Free/Open Source Software projects dedicated to photography. Yet there aren’t nearly as many resources dedicated to photographic workflows with them.

This site hopes to rectify that with a simple goal: To provide tutorials, workflows and a showcase for high-quality photography using Free/Open Source Software.
#pixlsus #pixls #pixels #gimp #freesoftware #freesw #culturalibre #freeculture #photography #workflow #tutorial #tutorials #showcase #darktable #rawtherapee #ufraw #photivo #krita #imagemagick #gmic #g'mic #filmulator #photoflow #lightzone #fgallery #hugin #luminancehdr #hdrmerge #filmemulator #forensically #copperminegallery #gallery #coppermine-gallery #siril #enblend-enfuse #enblend #enfuse #macrofusion #resourcespace #imagej #pannellum #vips #graphicsmagick #fotoxx #digikam #gthumb #shotwell #nomacs #geeqie #opencamera #airnef #entangle #digicamcontrol #displaycal #argyllcms #dcamprof #magiclantern #blender #rapidphotodownloader #exiv2 #exiftool #jhead #gphoto #opendronemap #jpegclub #lepton

via Diaspora* Publisher -

 

Recuperar contraseña root desde el GRUB





#contraseña #gnu/linux #recuperar #reiniciar #root #tutorial

Puede ocurrir que en alguna ocasión nos olvidemos de la contraseña de root -si eres un SysAdmin esto tiene que estar penado por Ley (espero)- y no podamos iniciar sesión. Esto generalmente tiene una solución muy simple si tenemos acceso físico. Si no tuviéramos acceso, igual deberíamos de mirar si tenemos acceso por VNC al servidor u ordenador.

Si tenemos acceso físico al ordenador, existe una manera muy sencilla de reiniciar la contraseña desde el Grub.

El proceso consiste en entrar en un modo de mantenimiento del kernel donde tendremos acceso a la cuenta de root sin tener que poner la contraseña. Evidentemente esto no es un problema de seguridad de GNU/Linux, ya que para poder realizar este cambio necesitas acceso directo al servidor.

En nuestro caso cambiaremos la contraseña a nuestro servidor VPS en la nube con acceso de una consola VNC de emergencia. Lo primero que haremos será reiniciar el servidor y esperar a que llegue a cargar el grub. Con el Grub delante, pararemos la cuenta regresiva.




Ahora tendremos que editar la entrada del Grub, para ello seleccionaremos el kernel que queremos modificar y pulsaremos la tecla "e":




Se nos abrirá una especie de editor, donde tendremos un cursor para movernos. Nos moveremos casi al final, donde carga el kernel y donde aparece la siguiente línea:
linux        /boot/vmlinuz-3.14.43-1 root=UUID=7b649fa5-37b8-480e-a040-5b6cbc530670 ro console=tty1 console=ttyS0,115200n8 nomodeset onsoleblanck=0
Y eliminaremos el parámetro console=ttyS0,115200n8 y añadiremos rw init=/bin/bash:
linux /boot/vmlinuz-3.14.43-1 root=UUID=7b649fa5-37b8-480e-a040-5b6cbc530670 ro console=tty1 115200n8 nomodeset onsoleblanck=0 rw init=/bin/bash
Tras la modificación, pulsaremos la tecla F10 para iniciar con la modificación que hemos realizado a ese Kernel de Linux. Tras iniciar el sistema operativo obtendremos lo siguiente:




¡Oh là là! ¿Pero que significa esto? Pues basicamente significa que ahora podremos cambiar la contraseña de root sin ningún problema, y para ello ejecutaremos:
passwd root
Y listo, ya tenemos la contraseña de root cambiada para nuestro servidor (o incluso nuestro ordenador).

La entrada Recuperar contraseña root desde el GRUB se publicó primero en _ voidNull.
Recuperar contraseña root desde el GRUB

 

El Shell Bash y los comandos de GNU


#comandos #gnu #gnu/linux #gpl #terminal #tutorial

Actualmente en todas las distribuciones de GNU/Linux permiten realizar todo tipo de acciones sin tener que tocar la terminal e interaccionar con la Shell de GNU. Aún así, un/una buen/a profesional no puede obviar el funcionamiento del intérprete de comandos y los principales comandos.

Existen muchos tipos de Shell en GNU/Linux, y cada uno tendrá su característica principal y su motivo para ser usado, aún que en este tutorial que vas a encontrar nos vamos a centrar en el shell por defecto: Bash (Bourne Again sh).

Línea de comandos


El shell espera entradas por el teclado en una línea llamada prompt. La línea prompt nos proporciona información en el terminal y su posición dentro del sistema de archivos:
t3rr0rz0n3@voidNull:~/Documents$
Aquí nos encontramos cuatro datos importantes:
  • t3rr0rz0n3: Es el nombre de inicio de sesión del usuario actualmente conectado a la terminal.
  • voidnull: Es el nombre configurado en la maquina o servidor, básicamente nuestra el hostname.
  • ~/Documents: Nos indica en que directorio del sistema de ficheros está.
  • $: Nos indica si el usuario tiene privilegios o no (en ocasiones también puede ser >).
De algún modo, esto se podría “traducir” en una frase concreta: El usuario t3rr0rz0n3 que se encuentra dentro de la maquina/servidor voidnull que está en la ruta /home/t3rr0z0n3/Documents y sin privilegios de usuario.

Además, el carácter de terminación, que en este caso es $, también puede ser:
  • $: Indica que el usuario no tiene privilegios particulares como >.
  • #: Indica que el usuario es el administrador root que tiene todos los privilegios.
Inclusive, existen diferentes modos de representar la ruta donde se encuentra el usuario:

* ~/: el carácter ~ indica que se encuentra el el directorio personal (dentro de /home).

* ~/Documents: al combinarse con ~ indica que se encuentra dentro de un directorio de su carpeta personal.

Introducción de datos


En la terminal, el teclado se utiliza para ingresar los comandos que vayamos a ejecutar, pero también hay métodos abreviados que pueden ser prácticos más allá de utilizar las flechas del teclado para moverse con el cursor:

* [Ctrl]+ A: Permite poner el cursor al principio de la línea.

* [Ctrl]+ E: Permite poner el cursor al final de la línea.

* [Ctrl]+ L: Permite borrar el contenido del terminal (es como ejecutar un clear).

* [Ctrl]+ U: Permite borrar el contenido que hay hacía atrás del cursor (todo lo que se encuentra a la izquierda).

* [Ctrl]+ K: Permite borrar el contenido que hay hacía adelante del cursor (todo lo que se encuentra a la derecha).

Una vez sabido esto, podemos empezar a ejecutar comandos en nuestra terminal. Lo primero que nos interesa saber, es un comando que nos permite saber donde nos encontramos, y creed, que puede ser muy útil. Este comando es pwd:
t3rr0rz0n3@voidNull:~/Documents$ pwd

/home/t3rr0rz0n3/Documents

Debéis saber, que todos los comandos tienen una sintaxis que permite ejecutar el comando con opciones muy interesantes y generalmente cumple con esta forma:
Comando [parámetros] [argumentos]
No todos los comandos tienen parámetros o argumentos, es posible que haya algún comando que tras ejecutarlo haga lo que tenga que hacer y listo. En caso de que los parámetros o argumentos sean obligatorios, se mostrará un mensaje de error.

Un parámetro es una opción del comando. Generalmente es una letra en mayúscula o en minúscula precedida de un guion: l, -p, -L, etc. Dependiendo el comando, estos parámetros u opciones se podrán ejecutar una detrás de la otra, es decir -lat o bien -l -t -a. En otras ocasiones, será necesario indicar primero el parámetro y luego un argumento (-l archivo).

Comandos internos y externos


Dentro de todos los comandos que podamos aprender, existen básicamente dos tipos de comandos:
  • Internos: Los comandos internos son del propio shell y se ejecutan en él. Estos comandos forman parte del programa shell, el bash. Por ejemplo, los comandos cd o pwd son dos ejemplos claros de comandos internos. Cuando se ejecutan, el shell ejecuta las funciones definidas en su interior que les corresponden.
  • Externos: Los comandos externos son programas binarios presentes en el disco duro. Cuando se ejecuta el comando, éste se carga en memoria y se inicia como un proceso.
Aún así, también existen otro tipos de comandos llamados alias de comandos, que son atajos de comandos propios de shell. Por ejemplo, en algunas distribuciones de GNU/Linux existe un alias mu famoso que es ll que corresponde en realidad a ls -l.
t3rr0rz0n3@voidNull:~$ type

t3rr0rz0n3@voidNull:~$ type date

date es /bin/date

t3rr0rz0n3@voidNull:~$ type pwd

pwd és una orden interna

t3rr0rz0n3@voidNull:~$ type ll

ll es un alias de ‘ls -l’

El historial de comandos


En ocasiones vamos a tener que escribir comandos muy largos que tendremos que volver a ejecutar, en vez de escribirlo de nuevo, podemos utilizar las flechas hacia arriba y hacia abajo para ver los comandos que se han ejecutado anteriormente.

El shell conversa una gran cantidad de entradas, que se puede configurar, y que además se guarda en un archivo caché dentro de nuestro directorio personal llamado .bash_history. De igual modo, existe un comando llamado history que nos va a permitir ver todos los comandos ejecutados anteriormente:
t3rr0rz0n3@voidNull:~$



2003 pwd

2004 type

2005 type date

2006 type pwd



2011 history

El comando fc funciona como history cuando se utiliza con el parámetro -l. Por defecto muestra los 15 últimos comandos ejecutados, aunque también se puede pasar un argumento para mostrar el número de comandos que quieras:
t3rr0rz0n3@voidNull:~$ fc -l -8

2006 type pwd

2007 man pwd

2008 type freya

2009 cd

2010 sleep 20

2011 history

2012 fc -l

2013 fc -l -90

Como hemos podido observar en las dos ultimas salidas del comando history y fc al lado del comando ejecutado, hay un número que indica la posición de la linea que ocupa ese comando en el historial. Con fc también podemos hacer que se ejecute el comando que se encuentra en una línea determinada en nuestro history y se hace con el parámetro -s:
t3rr0rz0n3@voidNull:~$ fc -l -3

2015 uname -a

2016 clear

t3rr0rz0n3@voidNull:~$ fc -s 2015

uname -a

Linux Thor 4.13.0-39-generic #44-Ubuntu SMP Thu Apr 5 14:25:01 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

La entrada El Shell Bash y los comandos de GNU se publicó primero en _ voidNull.
El Shell Bash y los comandos de GNU

 



Consulta el tiempo local en tu escritorio Plasma con los RSS de meteoclimatic | victorhckinthefreeworldhttps://victorhckinthefreeworld.com/2016/08/22/consulta-el-tiempo-local-en-tu-escritorio-plasma-con-los-rss-de-meteoclimatic/

El conocer y consultar el tiempo climatológico es una de esas inquietudes que todos tenemos. Saber cómo va a hacer o qué temperatura y demás datos de humedad, presión, precipitaciones, etc hay ahora mismo en tal o cual localidad.

#Plasma #KDE #tutorial #ñ

 



Terminology el emulador de terminal para GNU/Linux | victorhckinthefreeworldhttps://victorhckinthefreeworld.com/2017/02/03/terminology-el-emulador-de-terminal-para-gnulinux/

ofrece unas características gráficas que pueden ser curiosas e interesantes, y quizás ahondando en ellas podáis llegar a sustituir el uso de vuestra herramienta actual por esta otra.

#gnu #linux #tutorial #ñ

 



openSUSE en Raspberry Pi 3. Poniéndolo en marcha desde 0 | victorhckinthefreeworldhttps://victorhckinthefreeworld.com/2017/02/15/opensuse-en-raspberry-pi-3-poniendolo-en-marcha-desde-0/

Veamos cómo hacer funcionar una Raspberry Pi 3 con openSUSE. Empezando desde el comienzo…

#gnu #linux #tutorial #openSUSE #ñ #RaspberryPi

 
Habilitar chat en Diasporahttps://www.youtube.com/watch?v=GR6BC4pO0s8

Te sugiero que mires el siguiente vídeo En este vídeo se muestra como habilitar en chat en la re...

#GNU #Linux #Diaspora #tutorial #ñ

 
Immagine/foto

Comando grep. Más allá de búsquedas en archivos de texto | victorhckinthefreeworldhttps://victorhckinthefreeworld.com/2017/01/30/comando-grep-mas-alla-de-busquedas-en-archivos-de-texto/

veamos cómo podemos realizar búsquedas no sólo en archivos de texto. Con grep como base hay otras herramientas que nos pueden ayudar para que realice búsquedas en:
Archivos PDF
Archivos XML
Paquetes de red que llegan a nuestro equipo (bien por WIFI o por la red)
Búsquedas en correos

#grep #gnu #linux #tutorial #ñ

 



comando grep. Hackeando y aprendiendo a usarlo | victorhckinthefreeworldhttps://victorhckinthefreeworld.com/2017/01/24/comando-grep-hackeando-y-aprendiendo-a-usarlo/

Es bueno saber que existen muchas herramientas muy útiles, saber sacarles provecho y saber para qué utilizarlas. Utilizadas de una en una proporcionan un buen arsenal para muchas tareas.

Utilizadas en conjunto mediante “tuberías” o en scripts entonces se vuelven letales y no tienen rival.

#gnu #linux #grep #cli #ñ #tutorial

 

Email Self-Defense - a guide to defend yourself from surveillance with GnuPG encryptionhttps://emailselfdefense.fsf.org/en/



Immagine/foto
This #guide will teach you a basic #surveillance self-defense skill: #email #encryption. Once you've finished, you'll be able to send and receive emails that are scrambled to make sure a surveillance agent or thief intercepting your email can't read them. All you need is a computer with an #Internet connection, an email account, and about forty minutes. (...)

#gnupg #gpg #emailselfdefense #gnu #gpl #fsf #gnulinux #linux #ssl #tls #journalism #tutorial #howto #enigmail #security #weboftrust #journalism++ #jplusplus

http://www.jplusplus.org/en/

via Diaspora* Publisher -

 

Email Self-Defense - a guide to defend yourself from surveillance with GnuPG encryptionhttps://emailselfdefense.fsf.org/en/



Immagine/foto
This #guide will teach you a basic #surveillance self-defense skill: #email #encryption. Once you've finished, you'll be able to send and receive emails that are scrambled to make sure a surveillance agent or thief intercepting your email can't read them. All you need is a computer with an #Internet connection, an email account, and about forty minutes. (...)

#gnupg #gpg #emailselfdefense #gnu #gpl #fsf #gnulinux #linux #ssl #tls #journalism #tutorial #howto #enigmail #security #weboftrust #journalism++ #jplusplus

http://www.jplusplus.org/en/

via Diaspora* Publisher -

 
Immagine/foto

**__NUEVO__ artículo en mi blog:

Incluir un archivo html en otro archivo html | victorhckinthefreeworld**https://victorhckinthefreeworld.com/2016/12/15/incluir-un-archivo-html-en-otro-archivo-html/

Un tutorial en el que veremos cómo incluir un texto de un archivo .html dentro de otro archivo .html

#ñ #tutorial

 

YAXT: Yet another XMPP tutorial


Well, this is going to be another tutorial, but I'm going to try to make it a little bit different. This is an XMPP tutorial from an iOS developer's perspective.

While iOS is not my cup of tea, I find this tutorial interesting and well-written. Worth a read for everyone curious about XMPP!

#xmpp #tutorial #ios

Erlang Solutions


 
Curso no convencional de LaTeX: un documento básico | Onda Hostilhttps://ondahostil.wordpress.com/2016/11/26/curso-no-convencional-de-latex-un-documento-basico/

Hoy vamos a crear nuestro primer documento, muy emocionante todo. Pero antes tenemos que hablar de estructura, entornos y sintaxis. ¡Ánimo!

#Tutorial #Latex #ñ

 
Curso no convencional de LaTeX: ¿qué necesito? | Onda Hostilhttps://ondahostil.wordpress.com/2016/11/22/curso-no-convencional-de-latex-que-necesito/

Hoy nos metemos en harina con LaTeX. Voy a intentar explicar qué necesitamos para escribir antes de explicar la sintaxis.

#Latex #tutorial #ñ

 
Curso no convencional de LaTeX: introducción | Onda Hostilhttps://ondahostil.wordpress.com/2016/11/19/curso-no-convencional-de-latex-introduccion/

¡Empecemos nuestro nuestro Curso no convencional de LaTeX!

#Latex #ñ #tutorial

 
Lo que he aprendido: recuperar archivos en Emacs | Onda Hostilhttps://ondahostil.wordpress.com/2016/11/16/lo-que-he-aprendido-recuperar-archivos-en-emacs/

truco rápido de Emacs: cómo se recuperan los archivos cuando Emacs muere.

#emacs #ñ #tutorial

 
Immagine/foto

Eliminar kernels antiguos en el Grub de openSUSE | victorhckinthefreeworldhttps://victorhckinthefreeworld.wordpress.com/2016/10/21/eliminar-kernels-antiguos-en-el-grub-de-opensuse/

Un tutorial para evitar que aparezcan kernels antiguos en el grub de inicio de openSUSE.

#gnu #linux #openSUSE #tutorial #ñ

 
Immagine/foto

Guía de openSUSE para recién llegados a GNU/Linux | victorhckinthefreeworldhttps://victorhckinthefreeworld.wordpress.com/2016/07/29/guia-de-opensuse-para-recien-llegados-a-gnulinux/

Cuando un usuario nuevo llega a GNU/Linux y en este caso concreto a openSUSE desde otro sistema operativo, normalmente Windows, se enfrenta a un cambio que le puede resultar difícil y abrumador.

Encontrar una manera de solventar los primeros problemas puede ser crucial para que ese nuevo usuario no abandone ante el primer contratiempo y permanezca utilizando GNU/Linux con openSUSE.

#openSUSE #ñ #tutorial #gnu #linux

 
Immagine/foto

**NUEVO artículo en mi blog

Git: recuperar un archivo o todo el repositorio a una versión anterior | victorhckinthefreeworld**https://victorhckinthefreeworld.wordpress.com/2016/07/28/git-recuperar-un-archivo-o-todo-el-repositorio-a-una-version-anterior/

¿Utilizas Git como control de versiones para tus proyectos? ¿Te estas iniciando en el uso de Git y quieres aprender más? Una de las buenas opciones que nos proporciona git es la posibilidad de probar cosas y ante un problema poder recuperar un archivo o todos a una situación en la que sabíamos que todo funcionaba bien.

#git #tutorial #ñ

 
Immagine/foto

How to make Git branches and more | Opensource.comhttps://opensource.com/life/16/7/how-restore-older-file-versions-git

In today's article you will learn how to find out where you are in the history of your project, how to restore older file versions, and how to make Git branches so you can safely conduct wild experiments.

#Git #tutorial

How to restore older file versions in Git

How to find out where you are in the history of your project, how to restore older file versions, and how to make Git branches so you can safely conduct wild experiments.