Files
guias_informatica/Guia_ubuntu-server.md
2026-08-04 19:24:21 +02:00

455 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AYUDA UBUNTU SERVER
**LISTAR DISCOS/ESPACIO/DIRECTORIOS**
lsblk -f
sudo fdisk -l
df -h
---
**INFO IP**
ip a Saber la ip del equipo o maquina virtual
hostname -I http://192.168.18.235/
---
**MONTAR/DESMONTAR USB**
sudo mkdir -p /mnt/mi_usb # Cambia "mi_usb" por el nombre que prefieras
sudo mount /dev/sdb1 /mnt/mi_usb # Reemplaza "/dev/sdb1" con tu dispositivo
sudo mount -t ntfs-3g /dev/sdb1 /mnt/mi_usb # Para NTFS
sudo mount -t vfat /dev/sdb1 /mnt/mi_usb # Para FAT32
sudo mount -o rw /dev/sdb1 /mnt/mi_usb Si el dispositivo está en modo solo lectura, intenta montarlo con permisos de escritura
sudo apt install ntfs-3g Para dispositivos NTFS, ntfs-3g
sudo umount /dev/sdb1
sudo umount /mnt/mi_usb
Montaje automático al recinicar (opcional)
sudo nano /etc/fstab
UUID=.... /mnt/mi_usb ntfs-3g defaults 0 0
UUID=.... /mnt/externo ext4 defaults,nofail 0 2
Para obtener el UUID del dispositivo, usa:
sudo blkid
sudo blkid /dev/sdb1
systemctl daemon-reload (recargar informacion discos fstab)
---
**INSTALAR APACHE2**
sudo apt install apache2 -y
sudo ufw allow 'Apache Full' permitir trafico en el firewall
sudo systemctl status apache2 verificar que apache esta funcionando
http://<IP_DEL_SERVIDOR> Probar en el navegador
---
**INSTALAR NGINX**
sudo apt install nginx -y
sudo ufw allow 'Nginx Full'
http://<IP_DEL_SERVIDOR>
---
**INSTALAR MYSQL**
sudo apt install mysql-server -y
sudo mysql_secure_installation Asegurar instalacion de mysql, "yes a todas las opciones"
sudo systemctl status mysql
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0 Cambiar 127.0.0.1 para conectarse desde otro dispositivos de la red (no solo localhost)
Crear usuario Mysql para aceder desde otro equipo
CREATE USER 'usuario_remoto'@'%' IDENTIFIED BY 'miclave123';
GRANT ALL PRIVILEGES ON *.* TO 'usuario_remoto'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
Si prefieres restringir a una IP específica de tu red local (por ejemplo, 192.168.1.100), reemplaza '%' por '192.168.1.100'.
sudo systemctl restart mysql Reiniciar mysql
sudo mysql
CREATE DATABASE mi_base_de_datos; Crear base de datos de prueba
EXIT;
SELECT User, Host FROM mysql.user; Ver usuarios existentes
Eliminar usuario
DROP USER 'nombre_usuario'@'host';
FLUSH PRIVILEGES;
---
**INSTALAR MARIADB**
sudo apt install mariadb-server -y
---
**INSTALAR PHP**
sudo apt install php libapache2-mod-php php-mysql -y Instalar php y modulos necesarios
php -v Verificar instalacion php
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php crea archivo de prueba en raiz servidor web
http://<IP_DEL_SERVIDOR>/info.php verificar instalacion
sudo rm /var/www/html/info.php eliminar archivo de prueba
/var/www/html/ Directorio apache2 para aplicaciones
---
**INSTALAR PHPMYADMIN**
sudo apt install phpmyadmin -y
Elige Apache cuando pregunte el servidor web (usa espacio para seleccionar).
Responde Sí a la configuración de la base de datos con dbconfig-common.
Elige una contraseña para el usuario phpmyadmin.
Habilita phpMyAdmin en Apache (Si no se habilita automáticamente):
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin
sudo systemctl reload apache2
http://<IP_DEL_SERVIDOR>/phpmyadmin Acceder a phpmyadmin
---
**WORDPRESS**
Crear base de datos (Linea de comandos o desde phpmyadmin)
sudo mysql -u root -p
CREATE DATABASE wordpress;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'tupassword';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
sudo apt install php libapache2-mod-php php-mysql -y
cd /tmp wget https://wordpress.org/latest.tar.gz Descargar WordPress
tar -xvzf latest.tar.gz Extraer archivo
sudo mv wordpress /var/www/html/ mover directorio WordPress
sudo chown -R www-data:www-data /var/www/html/wordpress Configurar permisos
sudo chmod -R 755 /var/www/html/wordpress
sudo cp /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php Crear archivo configuracion
sudo nano /var/www/html/wordpress/wp-config.php Editar archivo configuracion
define('DB_NAME', 'wordpress');
define('DB_USER', 'wpuser');
define('DB_PASSWORD', 'tu_contraseña_segura');
define('DB_HOST', 'localhost');
sudo nano /etc/apache2/sites-available/wordpress.conf Configurar apache para WordPress
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www/html/wordpress
<Directory /var/www/html/wordpress>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
sudo a2ensite wordpress.conf Habilita sitio y modulo rewrite
sudo a2enmod rewrite
http://localhost/wordpress Completar instalacion de WordPress
---
**SSH**
sudo apt install openssh-server -y Instalar ssh
sudo systemctl status ssh Estado de ssh
sudo systemctl start ssh Activar ssh
sudo systemctl enable ssh Iniciar automáticamente con el sistema
sudo systemctl restart apache2 Reiniciar apache
sudo ufw allow OpenSSH Permitir ssh en el firewall
sudo ufw enable
ssh usuario@192.168.1.100 Conectarte desde otro equipo
PuTTY Host name:ip servidor aplicación para windows
ssh-keygen Configurar acceso sin contraseña con clave SSH
ssh-copy-id usuario@192.168.1.100
---
**SCP (SECURE COPY)**
scp -r "C:\\ruta\\de\\la\\carpeta" usuario@ip_del_servidor:/home1 Windows
scp -r /ruta/local/carpeta usuario@ip_del_servidor:/home1 WSL
scp -r /mnt/c/Users/usuario/Desktop/micarpeta ubuntu@192.168.1.100:/home1 Ejemplo WSL
scp -r /ruta/carpeta usuario_windows@192.168.1.50:/ruta/de/destino Ubuntu server a Windows
WinSCP Entorno grafico windows
Dar permisos temporales de root (evita usar sudo cada vez)
sudo chmod -R 775 /home1
---
**CAMBIAR COLORES TERMINAL**
echo $LS_COLORS Ver configuracion de colores
export LS_COLORS="$LS_COLORS:di=36" Modificar LS_COLORS azul claro
export LS_COLORS="$LS_COLORS:di=94" Azul brillante
echo 'export LS_COLORS="$LS_COLORS:di=36"' >> ~/.bashrc Hacer el cambio permanente
source ~/.bashrc Recargar el archivo
---
**Instalar LAMP - Phpmyadmin**
sudo apt update && sudo apt upgrade
sudo apt install apache2
sudo apt install mysql-server
sudo mysql_secure_installation
sudo apt install php libapache2-mod-php php-mysql php-sqlite3
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
sudo rm /var/www/html/info.php
sudo systemctl restart apache2
sudo apt install phpmyadmin
seleccionar apache - aceptar dbconfig-common
sudo apt install mysql-workbench
Crear usuario phpmyadmin para acceder:
sudo mysql Entrar mysql
CREATE USER 'usuario'@'localhost' IDENTIFIED BY 'clave_segura';
GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'localhost' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON nombre_basedatos.* TO 'usuario'@'localhost'; # Acceso a una sola base datos
FLUSH PRIVILEGES; Aplicar canbios
EXIT;
http://localhost/phpmyadmin Iniciar sesion en phpmyadmin
Script automatizado
#!/bin/bash
echo "==> Actualizando sistema..."
sudo apt update && sudo apt upgrade -y
echo "==> Instalando Apache..."
sudo apt install apache2 -y
echo "==> Instalando MySQL Server..."
sudo apt install mysql-server -y
echo "==> Ejecutando configuración segura de MySQL..."
sudo mysql_secure_installation
echo "==> Instalando PHP y módulos necesarios..."
sudo apt install php libapache2-mod-php php-mysql -y
echo "==> Reiniciando Apache..."
sudo systemctl restart apache2
echo "==> Instalando phpMyAdmin..."
sudo apt install phpmyadmin -y
echo "==> Habilitando phpMyAdmin en Apache..."
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin
sudo systemctl reload apache2
echo "==> Instalando MySQL Workbench..."
sudo apt install mysql-workbench -y
echo "==> Instalación completada."
echo "Puedes acceder a phpMyAdmin en: http://localhost/phpmyadmin"
Instrucciones Script
instalar_lamp_phpmyadmin_workbench.sh
chmod +x instalar_lamp_phpmyadmin_workbench.sh Hacer ejecutable
./instalar_lamp_phpmyadmin_workbench.sh Ejecutar script
---
Acceso a mysql / mariadb de ubuntu server
1. Cambiar ip de acceso (localhost a cualquier ip de otro equipo) En mysql: sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf En mariaDb; sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf Cambiar linea: bind-address = 127.0.0.1 por bind-address = 0.0.0.0 Reiniciar mysql / mariaDb sudo systemctl restart mysql / mariadb
2.Dar permisos al usuario MySql (%)
sudo mysql -u root -p
Nuevo usuario
CREATE USER 'usuario'@'%' IDENTIFIED BY 'tu_contraseña';
GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Con usuario ya creado
GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'%' IDENTIFIED BY 'tu_contraseña';
1. Abrir el puerto 3306 en el firewall (si está activo)
sudo ufw allow 3306/tcp
sudo ufw reload
2. Conectarte desde Workbench, heidisql, etc...
---
**MONTAR USB EXTERNO Y PERMISOS (por ejemplo transmission)**
Sistema normal
sudo fdisk -l identifica/muestra discos conectados
sudo mkdir -p /mnt/mi_usb # Crear punto de montaje (directorio)
sudo mount -t ntfs-3g /dev/sdb1 /mnt/mi_usb # Para NTFS
sudo mount -t vfat /dev/sdb1 /mnt/mi_usb # Para FAT32
df -h o lsblk -f # verificar
sudo umount /dev/sdb1 o sudo umount /mnt/mi_usb # desmontar
sudo blkid # identificar UUID del dispositivo
sudo blkid /dev/sdb1
sudo chown -R root:debian-transmission /mnt/wd
sudo chmod -R 775 /mnt/wd
sudo chmod g+s /mnt/wd
sudo systemctl daemon-reexec
sudo mount /mnt/wd
sudo nano /etc/fstab Editar archivo y añadir unidad para montaje automatico al iniciar
UUID=XXXX-XXXX /mnt/mi_usb ntfs defaults 0 0
UUID=ABCD-1234 /mnt/toshiba ntfs defaults,uid=debian-transmission,gid=debian-transmission,umask=0022 0 0 unidad ntfs, añadir linea para acceso de transmission
UUID=XXXX-XXXX /mnt/toshiba ext4 defaults 0 2 Unidad ext4
---
**INSTALAR TRANSMISSION**
sudo apt update
sudo apt install transmission-daemon
sudo systemctl stop transmission-daemon
sudo nano /etc/transmission-daemon/settings.json
"rpc-enabled": true,
"rpc-bind-address": "0.0.0.0",
"rpc-whitelist-enabled": false,
"rpc-username": "admin",
"rpc-password": "tu_contraseña",
sudo nano/etc/apparmor.d/transmission #modificar la siguiente linea (evita que se desconecte automaticamente):
\-profile transmission-daemon /usr/bin/transmission-daemon flags=(complain) {
+profile transmission-daemon /usr/bin/transmission-daemon flags=(complain,attach_disconnected) {
sudo apparmor_parser -r -W -T /etc/apparmor.d/transmission
sudo systemctl start transmission-daemon
http://<ip-del-servidor>:9091
---
**INSTALAR PLEX MEDIA SERVER**
Descargar el paquete de Plex: Ve a https://www.plex.tv/media-server-downloads/ y copia el enlace del .deb para Ubuntu.
wget https://downloads.plex.tv/plex-media-server-new/...
sudo dpkg -i plexmediaserver\_*.deb
sudo systemctl enable plexmediaserver
sudo systemctl start plexmediaserver
http://<ip-del-servidor>:32400/web
---
**INSTALAR GITEA**
sudo snap install gitea
---
**INSTALAR NEXTCLOUD**
Instala Apache, PHP y MySQL:
sudo apt update
sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql php-gd php-json php-xml php-curl php-zip php-mbstring php-bcmath unzip -y
Configura la base de datos:
sudo mysql
CREATE DATABASE nextcloud;
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'tupasswordsegura';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Descarga Nextcloud:
wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip
sudo mv nextcloud /var/www/html/
sudo chown -R www-data:www-data /var/www/html/nextcloud
Crea archivo de configuración en Apache:
sudo nano /etc/apache2/sites-available/nextcloud.conf
<VirtualHost *:80>
ServerAdmin admin@localhost
DocumentRoot /var/www/html/nextcloud
ServerName nextcloud.local
```
<Directory /var/www/html/nextcloud/>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
```
</VirtualHost>
Activa el sitio y módulos necesarios:
sudo a2ensite nextcloud.conf
sudo a2enmod rewrite headers env dir mime
sudo systemctl reload apache2
Abre el navegador y escribe http://IP_DEL_SERVIDOR/nextcloud
BACKUP nextcloud
sudo -E -u www-data php occ maintenance:mode --on
rsync -Aavx nextcloud/ nextcloud-dirbkp\_`date +"%Y%m%d"`/
mysqldump --single-transaction --no-tablespaces -h [server] -u [username] -p[password] [db_name] > nextcloud-sqlbkp\_`date +"%Y%m%d"`.bak
mysqldump --single-transaction --default-character-set=utf8mb4 -h [server] -u [username] -p[password] [db_name] > nextcloud-sqlbkp\_`date +"%Y%m%d"`.bak
sudo -E -u www-data php occ maintenance:mode --off
RESTORE nextcloud
rsync -Aax nextcloud-dirbkp/ nextcloud/
mysql -h [server] -u [username] -p[password] -e "DROP DATABASE nextcloud"
mysql -h [server] -u [username] -p[password] -e "CREATE DATABASE nextcloud"
utf8
mysql -h [server] -u [username] -p[password] -e "DROP DATABASE nextcloud"
mysql -h [server] -u [username] -p[password] -e "CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci"
mysql -h [server] -u [username] -p[password] [db_name] < nextcloud-sqlbkp.bak
Copiar archivos del servidor ubuntu a nextcloud
sudo cp -R /ruta/de/tus/archivos/* /var/www/nextcloud/data/<tu_usuario>/files/Destino/
sudo -u www-data php /var/www/nextcloud/occ files:scan --path="<tu_usuario>/files/Destino"
Nota para lo siguiente: Ha funcionado sin crear directorio destino ni dar permisos.
No copies archivos cuando el usuario esté accediendo a Nextcloud; podrías corromper datos.
Asegúrate de que el directorio de destino (Destino) exista previamente, o créalo con:
mkdir /var/www/nextcloud/data/<tu_usuario>/files/Destino
chown -R www-data:www-data /var/www/nextcloud/data/<tu_usuario>/files/Destino
Eliminar bloqueos base de datos de Nextcloud
Nextcloud a veces deja bloqueos en la base de datos que impiden operaciones de archivos.
sudo mysql -u root -p
Selecciona base datos Nextcloud
USE nextcloud;
DELETE FROM oc_file_locks WHERE 1;
EXIT;
---
**SOLUCION PROBLEMAS DNS-INTERNET DE CLOUDFLARE TUNNEL - TAILSCALE**
Archivo que controla las dns es:
/etc/resolv.conf
Tiene que estar asi para que funcione dns de cloudflare:
cat /etc/resolv.conf
nameserver 1.1.1.1
nameserver 8.8.8.8
(reiniciar el servicio, a veces no necesario):
sudo systemctl restart systemd-resolved
Al arrancar tailsclale hay que indicar que no use las dns de tailscale, en la terminal o tambien en la consola web de tailscale donde salen todos los dipositivos que la utilizan, dejando que ubuntu server es el exit node:
sudo tailscale up --accept-dns=false --advertise-exit-node
---
**UBUNTU SERVER ACCESOS**
192.168.18.235
ubuntu server     jesus / ???
phpmyadmin    phpmyadmin / Password123!
mysql           admin / bitr2d2c3p0
WordPress          admin / bitr2d2c3p0
            bd wordpress wpuser - Password123!
https://xiberus.com/wordpress/wp-admin
Gitea            192.168.18.235:3000
                  admin / Codibyte1@gitea
Plex http://<ip-del-servidor>:32400/web
Transmission     192.168.18.235:9091
                   user: admin - Codibyte1@
nextcloud       192.168.18.235:9091/nextcloud
                 bd mysql
                 base:nextcloud user:nextclouduser pass:password123
                    administrador - user:admin pass: bitr2d2c3p0