ubuntu_tips
Tips y configuraciones de ubuntu
Eligir terminal por defecto ubuntu
sudo update-alternatives --config x-terminal-emulator
Instalar docker
sudo apt-get install docker-ce
# Compose ayuda a crear instalaciones de varios contenedores
sudo apt-get install docker-compose
Pagina Oficial
Consultar Instalacion https://docs.docker.com/engine/install/ubuntu/
Permitir correr docker sin sudo
sudo groupadd docker
sudo gpasswd -a $USER docker
newgrp docker
Otra Forma:
sudo usermod -aG docker $USER
Detener todos los contenedores
docker stop $(docker ps -a -q)
borrar todos los contenedores
docker rm $(docker ps -a -q)
imagen docker ayuda
docker run -d -p 80:80 docker/getting-started
cambiar temporales Docker
sudo vim /etc/default/docker
# Agregar esta linea al final con la ruta de tu disco externo montado
export DOCKER_TMPDIR="/mnt/storage/docker-tmp"
Comandos básicos
INSTALAR EMQX DOCKER
docker run -d --name emqx -p 18083:18083 -p 1883:1883 -p 8083:8083 -p 8084:8084 -e EMQX_ALLOW_ANONYMOUS=false emqx/emqx:latest
EMQX DOCKER_COMPOSE
Instalamos la version 4.2.3 ya que en posteriores no soporta el plugin emqx_auth_username
ToDo:
- Buscar solucion emqx_auth_username
docker-compose.yml
version: "2.0"
services:
emqx:
container_name: emqx_iot
image: emqx/emqx:latest
#restart: always
ports:
- 18083:18083
- 18084:18084
- 1883:1883
- 8883:8883
- 8083:8083
- 8084:8084
- 8085:8081
environment:
EMQX_NAME: mi-emqtt
EMQX_HOST: 127.0.0.1
EMQX_ALLOW_ANONYMOUS: "false"
EMQX_NOMATCH: "deny"
TZ: "America/Bogota"
EMQX_DASHBOARD__DEFAULT_USER__PASSWORD: "pass_dasboard"
EMQX_DASHBOARD__DEFAULT_USER__LOGIN: "mdchaparror"
EMQX_AUTH__USER__1__USERNAME: "mdchaparror"
EMQX_AUTH__USER__1__PASSWORD: "pass_clientes_mtt"
EMQX_LOADED_PLUGINS: "emqx_auth_username,emqx_recon,emqx_retainer,emqx_management,emqx_dashboard"
Abrir puertos en ubuntu
ufw allow from any to any port 18083 proto tcp
Instalar Portainer
docker volume create portainer_data
docker run -d \
--name Portainer \
--restart=always \
-p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer
https://domology.es/instalacion-docker-parte-1-dockerportainer/
PORTAINER EN LA RASPBERRY
sudo docker pull portainer/portainer-ce:latest
sudo docker run -d -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
RPI-MONITOR
docker run --device=/dev/vchiq --device=/dev/vcsm-cma --volume=/opt/vc:/opt/vc --volume=/boot:/boot --volume=/sys:/dockerhost/sys:ro --volume=/etc:/dockerhost/etc:ro --volume=/proc:/dockerhost/proc:ro --volume=/usr/lib:/dockerhost/usr/lib:ro -p=8888:8888 --name="rpi-monitor" -d michaelmiklis/rpi-monitor:latest
Home Assistant
docker run --init -d --name="home-assistant" -e "TZ=America/Bogota" -v /home/pi/docker/config:/config --net=host homeassistant/raspberrypi3-homeassistant:stable
Instalar Gitea
Descargar repositorio de gitea
git clone https://github.com/go-gitea/gitea.git
Editar Fichero DockerFile
Cambiar linea: FROM golang:1.10-alpine3.7 AS build-env por FROM resin/raspberrypi3-alpine-golang AS build-env
y la linea: FROM alpine:3.7 por FROM resin/raspberrypi3-alpine:3.7
Construir la imagen: docker build -t mdchaparror/gitea .
Crear archivo docker-compose.yml
version: "2"
networks:
gitea:
external: false
services:
server:
image: mdchaparror/gitea
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "5000:3000"
- "222:22"
Ejecutar: docker-compose up -d
Backup Raspberry
Crear Imagen
Mirar el disco correspondiente a la sd
sudo fdisk -l
sudo dd bs=4M if=/dev/sdd | gzip > imagen_rasp1_back_`date +%Y-%M-d`.gz
Restaurar imagen
La imagen se puede restaurar imagen ya sea con dd o con balenaEtcher
gzip -dc image.gz | sudo dd bs=4M of=/dev/sdd
Virtualbox
Para poder usar los dispositivos usb en virtualBox añadir usuario al grupo de virtualboxusers
sudo usermod -a -G vboxusers mdchaparror
Instalar NODERED
***docker-compose.yml
version: 2
services:
nodered:
container_name: Node-red
image: nodered/node-red:latest
ports:
- 1880:1880
volumes:
- ./gitea:/data
Mongo
sudo systemctl status mongodb
Heroku
- login: heroku login
- subir aplicacion git push heroku master
Variables de entorno
- ver las variables de entorno heroku config
- añadir una variable heroku config:set VARIABLE=valor
- borrar una variable heroku config:unset VARIABLE
- obtener una variable heroku config:get VARIABLE
Despliegue APP FINANZAS
heroku config:set BASE_URL="https://finanzasm.herokuapp.com/api"
heroku config:set MONGOOSE_URI="mongodb+srv://mdchaparror:un260874@cluster0-4fhc1.mongodb.net/test?retryWrites=true"
heroku config:set REGISTER="true"
heroku config:set CLOUDINARY_CLUD_NAME="mdchaparror"
heroku config:set CLOUDINARY_API_KEY="491878952588461"
heroku config:set CLOUDINARY_API_SECRET="KvpO_0WLT8dVXCKOhEPXWNllg1w"
heroku config:set TOKEN_SECRET="api finanzas mdchaparror @4050#"
git add .
git push heroku master
Instalar Mongo ubuntu 22:04
curl -LO http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1-1ubuntu2.1~18.04.20_amd64.deb
sudo dpkg -i ./libssl1.1_1.1.1-1ubuntu2.1~18.04.20_amd64.deb
Habilitar ufw
sudo ufw app list #lista las app permitidas
sudo ufw allow OpenSSH # habilta comunicacion ssh
sudo ufw allo port # habilita un puerto
sudo ufw deny port # bloquea el puerto
sudo ufw enable #habilita el firewall
Conocer que programa esta usando determinado puerto
sudo netstat -tulpn | grep :puerto_buscado
Despliegue fly.io
fly launch
fly deploy
fly status
flyctl secrets set BASE_URL="https://finanzasm.fly.dev/api/"
flyctl secrets set CLOUDINARY_API_KEY="491878952588461"
flyctl secrets set CLOUDINARY_API_SECRET="KvpO_0WLT8dVXCKOhEPXWNllg1w"
flyctl secrets set CLOUDINARY_CLUD_NAME="mdchaparror"
flyctl secrets set MONGOOSE_URI="mongodb+srv://mdchaparror:un260874@cluster0-4fhc1.mongodb.net/test?retryWrites=true"
flyctl secrets set REGISTER=true
flyctl secrets set REGISTER=true
flyctl secrets set TOKEN_SECRET="api finanzas mdchaparror @4050#"
SSH
COpiar llave SSH
ssh-copy-id <USERNAME>@<IP-ADDRESS>
o
cat ~/.ssh/id_rsa.pub | ssh <USERNAME>@<IP-ADDRESS> 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'
https://www.raspberrypi.com/documentation/computers/remote-access.html#passwordless-ssh-access
Estadisticas del sistema
systemd-analyze
salida
Startup finished in 10.336s (kernel) + 54.408s (userspace) = 1min 4.745s
multi-user.target reached after 54.214s in userspace
Velocidad Escritura
sudo apt-get install hdparm
sudo hdparm -t /dev/mmcblk0
Hardware
Dar permisos a los puertos seriales sin sudo
sudo usermod -a -G dialout $USER
Es necesario reiniciar la sesión
error: **Kernel panic -> not syncing vfs unable to mount root fs
sudo update-initramfs -c -k 6.1.0-18-amd64 #version del kernel
sudo update-grub
Activar Encendido por tarjeta de red
Para saber si la tarjeta de red tiene activo el encendido por red
ethtool enp7s0 | grep Wake-on
en caso de tener la siguiente respuesta
Supports Wake-on: pumbg
Wake-on: g
si Wake-on =d corremos la siguiente linea
ethtool -s enp7s0 wol g
Este cambio es temporal se pierde en el proximo reinicio
para dejar el cambio permanente creamos el siguiente archivo /etc/systemd/network/10-enp7s0.link con la siguiente información:
[Match]
MACAddress=00:e0:1d:67:00:d1
[Link]
NamePolicy=kernel database onboard slot path
MACAddressPolicy=persistent
WakeOnLan=magic
para enviar el pakete de encendido desde otro equipo se usa wakeonlan en caso de no tener el paquete se instala con apt
#wakeonlan mac
wakeonlan 00:e0:1d:67:00:d1
se puede crear un alias en .basrc o .zshrc
alias server="wakeonlan 00:e0:1d:67:00:d1"