Arreglando modelos con django sobre postgresql

Éstos días estaba atascada con los modelos, como soy novata con todo ésto y para ponerlo mas difícil todavía sobre postgresql! así que una chuletilla por cuando se me de por empezar a toquetear los modelos y empiecen a salir errores raros que te joden por todos lados. Por supuesto en el entorno en el que estoy trabajando es de desarrollo y estas burradas en entornos de producción es necesario exportar los datos y luego importarlos.

Primero de todo, para cualquier instancia de python que esté usando la base de datos postgresql y reinicia postgresql.

# service postgresql restart
# su - postgres

Ahora nos podemos encontrar con dos cosas, primero, que queramos reconstruir la base de datos o que simplemente queramos eliminar el contenido relacionado con un modelo.

Recrear base de datos

postgres@server:~$ dropdb wcli_db
postgres@server:~$ createdb wcli_db

Eliminar contenido referente a un modelo

postgres@server:~$ psql wcli_db
psql (9.6.10)
Type "help" for help.

wcli_db=# DROP TABLE web_voucher CASCADE;
NOTICE:  drop cascades to constraint web_payment_id_voucher_id_c75a11d9_fk_web_voucher_id on table web_payment
DROP TABLE

Con el CASCADE le indicamos que borre todas las vistas y constraints vinculadas a la tabla.…

Crear entorno virtualenv de python3.5

Si usamos virtualenv a secas nos creará un entorno virtual de python2 y python3, pero en mi caso me interesa usar python3.5 para una aplicación que estoy haciendo. Así que hoy veremos como instalar y entrar en un entorno virtual de python.

Primero de todo, python es fácilmente extendible con módulos, los módulos son librerías que han programado otros y que hacen cosas, yo los llamo chinos, porque una vez compiladas, las librerías son binarios y si los editas con un editor de textos lo que ves es un galimatías de carácteres, lo comúnmente llamado “chinos”.
Ésta forma de programar nos permite avanzar mucho mas rápido en el desarrollo de nuestra aplicación, destinando nuestro tiempo a programar lo que hace realmente nuestra aplicación y facilitar el trabajo a la creación de por ejemplo la estructura de la página web con Flask y Bootstrap o un framework como django.

Los módulos las instalamos mediante un gestor de paquetes, como en cualquier distribución de gnu/linux, podemos especificar pip para python2 y pip3 para python3 o python3.5, ésto lo que hace es descargarte el módulo en el directorio /usr/local/lib/python3.5/dist-packages, con pip3 show podemos ver información del módulo:

laura@melatonina:/usr/src$ pip3 show flask
Name: Flask
Version: 1.0.2
Summary: A simple framework for building complex web applications.
Home-page: https://www.palletsprojects.com/p/flask/
Author: Armin Ronacher
Author-email: armin.ronacher@active-4.com
License: BSD
Location: /usr/local/lib/python3.5/dist-packages
Requires: Jinja2, click, itsdangerous, Werkzeug

Si necesitas saber qué hace el módulo, es tan simple como ir al directorio correspondiente y editar el fichero .py correspondiente al módulo.…

Levantar tunnel vtun con lxc (proxmox)

Me encuentro con éste error

Oct 31 13:16:06 asterisk vtund[1748]: VTun client ver 3.X 05/15/2013 started
Oct 31 13:16:06 asterisk vtund[1748]: Connecting to 213.162.195.57
Oct 31 13:16:06 asterisk vtund[1748]: Use SSL-aware challenge/response
Oct 31 13:16:06 asterisk vtund[1748]: Remote Server sends #012.
Oct 31 13:16:06 asterisk vtund[1748]: Session sipcapa8[213.162.195.57] opened
Oct 31 13:16:06 asterisk vtund[1748]: Can't allocate tun device tun1000. No such file or directory(2)
Oct 31 13:16:06 asterisk vtund[1748]: Session sipcapa8[x.x.x.x] closed
Oct 31 13:16:06 asterisk vtund[1748]: Exit
Oct 31 13:17:09 asterisk vtund[1727]: Terminated

El motivo es que al tratar de levantar interfaces de red dentro del lxc no tenemos permisos y tenemos que definirle que éste contenedor si puede levantar interfaces de red.

Primero entramos en el host donde se encuentra el contenedor y apagamos el contenedor

# pct shutdown 104

Para ello modificamos el fichero de configuración del contenedor y añadimos al final ésta línea

root@wezen-04:/etc/pve/lxc# vi /etc/pve/lxc/104.conf
lxc.cgroup.devices.allow: c 10:200 rwm

Ahora arrancamos el contenedor de nuevo y ejecutamos los siguientes comandos

root@wezen-04:/etc/pve/lxc# pct start 104
root@wezen-04:/etc/pve/lxc# pct enter 104
root@asterisk:/# mkdir /dev/net
root@asterisk:/# mknod /dev/net/tun c 10 200
root@asterisk:/# ip tuntap add mode tap
root@asterisk:/# ip link
root@asterisk:/# service vtun restart
root@asterisk:/# ifconfig |grep tun
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00   
tun1000   Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-0

Los comandos que hemos puesto los tendremos que ejecutar cada vez que reiniciemos la máquina, así que le decimos que ejecute éstos comandos justo después de levantar la interfaz de red

auto eth1
iface eth1 inet static
        address x.x.x.x
        netmask 255.255.255.224
        

Modoboa: mi solución a mis problemas de mail

Vale, el post de antes… si os queréis complicar la vida… ya lo arreglaré, pero de momento traigo otra solución… en menos de un par de horas ya tengo un servidor de correo multi-dominio que se monta plis-plas… se llama modoboa y tiene todo lo que busco :)

Partimos de una debian9 con IP pública y los DNS apuntando a mail.nusepas.com.

Ahora descargaremos el instalador de modoboa y lo ejecutaremos

root@mail-nusepas:~# cd /usr/src
root@mail-nusepas:/usr/src# git clone https://github.com/modoboa/modoboa-installer
root@mail-nusepas:/usr/src# cd modoboa-installer/
./run.py nusepas.com

La instalación durará unos 20 minutos aproximadamente. Una vez pasados, haces login en https://mail.nusepas.com y entras con el usuario y contraseña por defecto que nos indica al final de la instalación.…

Instalar servidor de correo postfix, postfixadmin, dovecot, tls

Venga, vamos a ver si finalmente consigo instalar un servidor de correo que sea administrable, ya que las veces que lo he intentado siempre me he quedado a medias… vamos ahí de nuevo pues!

Partimos de una debian recién instalada (en mi caso tiro de un contenedor lxc) y actualizada.

Instalamos algunos paquetes básicos para poder usar en condiciones el sistema:

root@mail-nusepas:~# apt install vim mtr glances net-tools

Clúster Proxmox + añadir disco

El resumen de la de hoy, montar un clúster proxmox y luego añadir un disco addicional a /var/lib/vz2.

La primera es que partimos de 3 servidores, que es el mínimo recomendado para montar un clúster de proxmox. El motivo es que los nodos del clúster sincronizan continuamente los datos y si uno de los nodos se cae, si sólo hubiese dos podría dar problemas al reconstruir el nodo, ya que algunos datos se quedaron desactualizados o a medias en el nodo del clúster que está caído (que ha dejado de funcionar). Así que si montas cualquier tipo de clúster, el mínimo son 3 nodos, o 3 servidores distintos, en éste caso con instalaciones de proxmox.

Tengo 3 servidores con éstos nombres y éstas IPs (todos sin maquinas virtuales y se recomienda así para que no haya problemas de IDs duplicados)

– wezen-01.capa8.cat 10.90.226.90
– wezen-02.capa8.cat 10.90.226.91
– wezen-03.capa8.cat 10.90.226.92

Wezen-01 será el “master”, siempre que tengamos que levantar el clúster después de un corte de electricidad, vamos a levantar primero ésta máquina.

Entramos en el servidor wezen-01 y ejecutamos pvecm create nombredelcluster. Tenemos que tener en cuenta que se no se puede cambiar el nombre una vez creado y se recomienda no cambiar las IPs.

root@wezen-01:~# pvecm create wezen

Ahora entramos en los dos otros nodos y los conectamos con el nodo maestro. Nos pedirá el password de root del servidor maestro.

root@wezen-02:~# pvecm add 10.90.226.90
root@wezen-03:~# pvecm add 10.90.226.90

Y listos, ahora si miramos el estado del clúster nos …

Gestión del tiempo con timedatectl

Otro post sobre el tiempo! ayer veíamos como no pasar la hora del host a una máquina virtual con virtualbox. Ahora vamos a ver como cambiar la hora del sistema host cuando date -s no te hace ni puto caso porque la fecha se está actualizando por otro lado, en éste caso timedatectl

Desactivar el cliente NTP

# timedatectl set-ntp 0

Cambiar la fecha

# timedatectl set-time "2018-09-03 12:20:00 CEST"

Volver a activar el cliente NTP

# timedatectl set-ntp 1

Virtualbox: desactivar sincronización horaria con el host

Tenemos una maquina virtual con virtualbox en la que necesitamos que trabaje con una fecha distinta que la del host.

Lo primero será desactivar el cliente NTP de nuestro sistema operativo.

A continuación instalamos las guest additions (si queremos).

Y finalmente, desde el host, con el usuario que está corriendo el virtualbox (atención si lo ejecutas como “laura” por ejemplo, no hacerlo con root, ya que root no ve las maquinas virtuales de laura), ejecutamos lo siguiente

vboxmanage setextradata vmname "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" "1"

Siendo vmname el nombre de la maquina virtual, usamos lo siguiente para listar las máquinas existentes en nuestro sistema

laura@melatonina:~$ vboxmanage list vms
"capa8" {a1333e64-1b9c-4414-9411-973adf55xxx}
"Resolume" {f175a4dc-c3ea-42ec-b74b-83e496a6xxxx}
"windows7" {fe860ff5-bbae-478c-a026-378df134xxxx}
"Windows UE" {972ee722-2f0b-480d-8cc4-2ab993f7xxxx}
"kali" {6cea5b78-88bb-4888-a73e-5f3533f0xxxx}
"forense" {c009e747-d086-4f76-b407-d5f6a26xxxx}

Las virtualboxguest additions no intervienen en dicha configuración, ésto es cosa del virtualbox.…

Freeswitch 1.9 (continuación): mod fs_curl, usuarios almacenados en BBDD

Pues ya volvemos a estar aquí un mes después… hehe, si, tuve freeswitch aparcado unos días, pero han sido días muy provechosos! ya iré contando :)

Pues éste post sería la continuación de éste otro que publiqué hace un mes.

En el anterior manual instalábamos freeswitch con soporte de postgresql y veíamos como con la base de datos creada pero vacía, al arrancar creaba las tablas necesarias para trabajar. Pero las tablas que estaban no te permitían gestionar los usuarios de la centralita directamente desde la base de datos y estabas obligado a usar los ficheros de configuración y recargar la configuración. Pues en éste manual llegaremos a éste objetivo, para poder atacar desde otro programa a la base de datos y realizar cambios en caliente!

Vamos a ello pues… lo primero será parar freeswitch y borrar la base de datos y volver a crearla para que quede vacía.

root@freeswitch-capa8:~# /etc/init.d/freeswitch.sh stop
root@freeswitch-capa8:~# su - postgres
postgres@freeswitch-capa8:~$ dropdb freeswitch_db
postgres@freeswitch-capa8:~$ createdb -O freeswitch_user freeswitch_db
postgres@freeswitch-capa8:~$ psql 
psql (9.6.7)
Type "help" for help.

postgres=# \dt
No relations found.

NetHogs: Monitorizar el tráfico de red que generan los procesos del sistema

Estaba un rato jugando con la red de casa y quería buscar alguna herramienta nueva para monitorear la red y me he encontrado con NetHogs, que sería como una especie de top pero para monitorear el tráfico que genera cada uno de los procesos que se están ejecutando en nuestro sistema.

Ya hace tiempo que dejé de usar top en pro a glances que te da mucha mas información y de forma mas organizada. Así que creo que voy a añadir NetHogs a mi navaja suiza.

# apt-get install nethogs

Aquí tenéis una captura de pantalla de la interfaz de las IPs pública y global.

Cosas que podemos hacer:

Pulsando m: cambiamos las unidades de medida a KB/s, KB, B y MB
Pulsando s: ordenamos por la cantidad de datos enviados
Pulsando r: ordenamos por la cantidad de datos recibidos
Pulsando q: salimos del programa

-t : salida en modo traza
-d : tiempo de refresco
-p : esnifar en modo promiscuo (no recomendado <- ésto pone la documentación…)

Y yastá, no tiene mucho mas, mirad el man por otras opciones recurrentes…