Files
UBUNTU-TIPS/README.md
2026-03-20 22:41:57 -05:00

406 lines
9.4 KiB
Markdown

# ubuntu_tips
Tips y configuraciones de ubuntu
## Eligir terminal por defecto ubuntu
sudo update-alternatives --config x-terminal-emulator
## Instalar docker
```sh
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
```sh
sudo groupadd docker
sudo gpasswd -a $USER docker
newgrp docker
```
Otra Forma:
```sh
sudo usermod -aG docker $USER
```
### Detener todos los contenedores
```sh
docker stop $(docker ps -a -q)
```
### borrar todos los contenedores
```sh
docker rm $(docker ps -a -q)
```
### imagen docker ayuda
```sh
docker run -d -p 80:80 docker/getting-started
```
### cambiar temporales Docker
```sh
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:
+ [x] 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/](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](https://www.balena.io/etcher/)
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
```sh
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
```sh
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
```sh
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
```sh
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
```sh
sudo netstat -tulpn | grep :puerto_buscado
```
## Despliegue fly.io
```sh
fly launch
fly deploy
fly status
```
```sh
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
```sh
ssh-copy-id <USERNAME>@<IP-ADDRESS>
```
**o**
```sh
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
```sh
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
```sh
sudo apt-get install hdparm
sudo hdparm -t /dev/mmcblk0
```
## Hardware
### Dar permisos a los puertos seriales sin sudo
```sh
sudo usermod -a -G dialout $USER
```
Es necesario reiniciar la sesión
## error: **Kernel panic -> not syncing vfs unable to mount root fs
```sh
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
```sh
ethtool enp7s0 | grep Wake-on
```
en caso de tener la siguiente respuesta
```sh
Supports Wake-on: pumbg
Wake-on: g
```
si Wake-on =d corremos la siguiente linea
```sh
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:
```sh
[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
```sh
#wakeonlan mac
wakeonlan 00:e0:1d:67:00:d1
```
se puede crear un alias en .basrc o .zshrc
```sh
alias server="wakeonlan 00:e0:1d:67:00:d1"
```
### Netplan
Configuración de red por medio de archivo yml /etc/netplan/xxxxxx.yml
```yml
# Created by Armbian firstlogin script
network:
wifis:
wlan0:
dhcp4: no
addresses: [192.168.1.241/24]
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses: [192.168.1.1,8.8.8.8]
dhcp6: yes
access-points:
"CHAPARRO":
password: "wifipassword"
```
```sh
sudo netplan generate
sudo netplan apply
```