Buscar artículos en cambiatealinux.com



Instala tu servidor Linux de desarrollo en remoto

Por Alex, el 27/07/2026 · 14 min lectura   -  Comentarios: 0   -  Comentar el artículo
Los que desarrollamos con Linux solemos tener nuestros entornos de desarrollo en local ya sea en nuestro pc montado sobren docker o en una máquina virtual pero en el pc, lo que viene siendo en local de toda la vida ...
Guardar el artículo.

Si te ha gustado y ayudado puedes compartir en redes para que el artículo sea mas visible y pueda ayudar a mas gente:




Con el problema que conlleva el cambiar de maquina o sistema operativo.

Una idea que estoy probando desde hace un tiempo es tener mi servidor Ubuntu local en remoto, como si fuera el servidor de desarrollo de la empresa que está en un servidor o cloud, y me esta gustando la idea de no tener que ir reinstalado cosas cada vez que pruebo un sistema.

Yo que trabajo con diferentes Linux, Windows y Mac dependiendo de mi estado de ánimo, mis ganas de probar cosas diferentes y los requerimientos de mi trabajo actual

Por ejemplo este artículo que publico ahora en cambiatealinux lo estoy escribiendo desde Windows.

Tener el servidor remoto me permite cambiar de sistema sin tener que montar todo el entorno de desarrollo en cada sistema y tenerlo todo centralizado.

Es cierto que se necesita una conexión a internet aceptable pero ahora ya cualquier suele ser buena para esto, personalmente hasta con la del móvil me sirve.

1) La idea de lo que queremos montar

La idea es sencilla subir todo mi entorno de desarrollo de local a un servidor remoto en ovh, concretamente siguiente:

  • Un servidor Linux Ubuntu, yo los tengo en https://www.kimsufi.com

    Otros proveedores que podéis mirar y bien de precio son https://www.hetzner.com/cloud o https://contabo.com/es/vps he utilizado los tres. Disclaimer: no es publicidad pagada

    He de avisar que se necesita algo con unas 8/16 GB de ram y discos NVMe para poder trabajar bien, personalmente tengo uno de 32GB de ram

  • un nginx instalado en el servidor para redirigir las peticiones http/s al apache2 que vive docker
  • Git para conectar los repositorios
  • Y después ya Docker para virtualizar diferentes servicios:

    • Apache2 + PHP
    • MySql, diferentes versiones
    • PostgreSQl, también con diferentes versiones
    • SQL Server
    • Oracle
    • phpMyAdmin uno por entorno de MySql
    • Adminer para administrar PostgreSQL


2) Herramientas que utilizaremos para trabajar

Básicamente las mismas que utilizo en local pero trabajando de forma remota:

Para conectarnos al servidor y poder trabajar remotamente utilizó varias cosas:

  • Visual Studio Code con la extensión Remote Development para conectar remotamente por ssh al servidor
  • Desde el terminal o explorador de archivo tendremos que conectar con sshfs instalado para mapear rutas locales a rutas del servidor
Y por supuesto en el servidor tengo activada mi cuenta de Claude Code que puede utilizarse desde consola o desde Visual Studio Code como si estuviera en local.

3) Instalación del servidor remoto

Partimos de la base que el servidor Ubuntu Server ya lo tenemos instalado, esto lo hacemos desde el proveedor cuando lo contratamos y tenemos acceso por el terminal.

Vamos a instalar el entorno de desarrollo instalando.

Primero instalamos Docker para tener todos los servicios antes comentados. Dejo este script con el que instalo siempre docker

#!/bin/bash
# Exit on error
set -e


echo "==> Updating system..."
sudo apt update
sudo apt upgrade -y


echo "==> Installing dependencies..."
sudo apt install -y ca-certificates curl gnupg lsb-release


echo "==> Adding Docker GPG key..."
sudo mkdir -p /etc/apt/keyrings


curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg


sudo chmod a+r /etc/apt/keyrings/docker.gpg


echo "==> Adding Docker repository..."
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo $VERSION_CODENAME) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


echo "==> Installing Docker..."
sudo apt update


sudo apt install -y \
  docker-ce \
  docker-ce-cli \
  containerd.io \
  docker-buildx-plugin \
  docker-compose-plugin


echo "==> Enabling Docker service..."
sudo systemctl enable docker
sudo systemctl start docker


echo "==> Adding current user to docker group..."
sudo usermod -aG docker $USER
sudo chown $USER /var/run/docker.sock


echo "==> Applying group changes..."
newgrp docker < Verifying installation..."


docker --version
docker compose version


echo "==> Running test container..."
docker run hello-world


echo "==> Installation completed successfully!"
echo "IMPORTANT: If you still need sudo, log out and log in again."


Le damos permisos de ejecución

sudo chmod 700 install-docker.sh

y lo ejecutamos

./install-docker.sh

Ahora instalamos el resto de aplicaciones que vamos a necesitar para trabajar, en mi caso Nodejs y npm, nginx y git

Para instalar node lo hacer de la siguiente forma, de hecho me he conectado al web de node y donde dice descargas y seleccione las siguientes opciones

Descarga instalacion nodejs

Esto te da unos pasos a seguir para instalar node:

# Descarga e instala nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash

# en lugar de reiniciar la shell
\. "$HOME/.nvm/nvm.sh"

# Descarga e instala Node.js:
nvm install 24

# Verifica la versión de Node.js:
node -v # Debería mostrar "v24.18.0".

# Verifica versión de npm:
npm -v # Debería mostrar "11.16.0".


Que se ponen en un fichero con permisos de ejecución como antes y lo ejecutamos.

sudo chmod 700 install-node.sh
./install-node.sh

Y por último nginx y git.

sudo apt install nginx git

Voy a instalar también zsh y oh-my-zsh que me gusta más para el termina

sudo apt install zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Y con esto ya tenemos configurado el servidor.


4) Configurar los diferentes servicios apache2, MySql, etc … con docker

Para configurar los diferentes servicios voy a utilizar docker compose para con unos simples comandos crear todo el entorno, destruirlo o modificarlo.

El proyecto de todos los entornos construido con docker compose y lo podéis descargar desde github:

https://github.com/depruebas/docker-services

En esta url está el README si queréis leer antes todo lo que tiene:

https://github.com/depruebas/docker-services/blob/master/README.md

Y aquí información sobre cómo utilizar el comando make

https://github.com/depruebas/docker-services/blob/master/COMANDOS.md

El funcionamiento es muy sencillo, desde el servidor o desde local, porque también sirve para trabajar en local, descargamos el repositorio:

git clone https://github.com/depruebas/docker-services.git elamp-docker

elamp-docker porque yo al proyecto lo he llamado asi y dentro de él los entornos todos empiezan por elamp, pero claro, esto podéis cambiarlo si queréis.

El proyecto funciona con un fichero .env de configuración así que copiais el de ejemplo:

cp .env.example .env

Y los editáis para poner vuestras rutas y passwords un poco más seguros si lo instaláis en un servidor remoto.

Aquí lo importante son las rutas donde tendréis los proyectos, por ejemplo:

  • PROJECT_PATH=/home/ubuntu/elamp-docker es donde vive el proyecto de docker compose
  • WWW_PATH=/home/ubuntu/workspaces/webs donde viven las proyectos web enlazados con Apache2
  • TEMP_PATH=/home/ubuntu/temp y un directorio temporal


5) Cómo conectar con Visual Studio Code con el código del servidor

Aquí viene lo interesante, nos conectaremos al servidor remotamente con Visual Studio Code y con el componente Remote Development

Aqui podeis ver un artículo completo para instalarlo y conectarse
https://www.netveloper.com/desarrollo-remoto-con-ssh-y-visual-studio-code

También nos podremos conectar por ssh y desde linux mapear un directorio del disco en local con un directorio en el servidor, en este artículo os lo explico todo https://cambiatealinux.com/montar-carpetas-remotas-con-sshfs-y-ftp

Pero rápidamente sería una cosa así:

sshfs root@servidor.remoto.com:/var/www/html/mi_proyecto_guay /home/depruebas/www/web_remota



6) Configurar nginx y los servicios dockers para que se entiendan entre ellos

Lo primero que haremos es entrar en el servidor por ssh (ssh usuario@Ip) y arrancar los dockers a ver que no den problemas de configuración.

Para arrancar los dockers ejecutamos el comando

make up

Recordar que los comandos están en el fichero
COMANDOS.md

En principio todo tiene que arrancar bien y aparecer un listado como este:

Listado de dockers

Ahora que está todo funcionando correctamente vamos a comprobar que las url que se crean al arrancar docker funcionan.

Si os fijáis al acabar de arrancar los dockers con make up sale las urls donde os podéis conectar de entrar con localhost

  Apache/PHP 			http://localhost
  phpMyAdmin (MySQL) .	http://localhost:8081
  phpMyAdmin (MariaDB) 	http://localhost:8082
  Adminer (Postgres) . 	http://localhost:8083

Tenéis que cambiar localhost por la IP de vuestro servidor.


7) Crear nuestra primera aplicación y darle un dominio

Ahora vamos a crear un proyecto, en realidad ya hay uno de pruebas y vamos a reutilizar pero crear un proyecto web nuevo sería lo mismo

Lo que vamos hacer es:

  • Crear un fichero .conf para apache2
  • Crear un fichero .conf para nginx
  • Instalar la aplicación web en la ruta que queramos
Los ficheros .conf de apache2 esta guardados en la carpeta del proyecto apache2/vhosts, y vamos a utilizar el de ejemplo

example.local.conf

Este es el código arreglado para mi prueba donde ya he modificado la ruta del proyecto.

Y el ejemplo example.local está en el proyecto de elamp-docker en el directorio www/example.local, yo lo he copiado en /home/ubuntu/workspaces/webs/

Pero mi ruta real es la del docker, por eso la ruta final que se ve en DocumentRoot y Directory es /var/www/webs/example.local/public

<VirtualHost *:80>
   ServerName example.local
   ServerAlias www.example.local


   DocumentRoot /var/www/webs/example.local/public


   <Directory /var/www/webs/example.local/public>
       Options Indexes FollowSymLinks
       AllowOverride All
       Require all granted
   </Directory>


   # Logs propios del dominio -> aparecen en el host en apache2/logs/
   ErrorLog ${APACHE_LOG_DIR}/sites/example.local-error.log
   CustomLog ${APACHE_LOG_DIR}/sites/example.local-access.log combined
</VirtualHost>


Y ejecutamos

docker exec elamp-apache2 apache2ctl graceful

para reiniciar apache2 y aplique estos cambios.

Lo mismo se ha de hacer cuando se crea un fichero nuevo.

Ahora creamos el fichero del nginx tiene que ser como el de ejemplo y hay que ponerlo en el servidor, en el directorio de nginx /etc/nginx/sites-available y lo llamamos example.local.conf

server {
    listen 80;
    listen [::]:80;
    server_name example.local;

    location / {
        proxy_pass http://172.50.0.3;
        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 $scheme;
    }
}


Una vez creada hacemos un simblink en al directorio sites-enabled

sudo ln -s /etc/nginx/sites-available/example.local.conf /etc/nginx/sites-enabled

Y por último crear una entrada en /etc/hosts al nuevo dominio

190.90.0.11 example.local

Y ya probarlo, http://example.local

Vista del web en el navegador

8) Conclusión

Igual que tenemos nuestro entorno de desarrollo en local pero como hemos podido comprobar es muy sencillo instalarlo en un servidor remoto para poder tener siempre disponible nuestros proyectos.

Como todo lo bueno tiene cosas malas aquí podríamos decir y dependiendo de los proyectos de cada uno pero un mínimo de 8GB de ram y 2/4 Cores para ejecutar dockers y el sistema remoto de Visual Studio que consumen sobre todo si trabajáis con varios proyectos a la vez.

Por cierto yo también le he instalado Claude code en el Visual Studio Code para que se conecte remotamente al servidor.


Y esto es todo !!!
Gracias por seguirme y leerme, espero que les haya ayudado
Saludos
Alex
:-)
/



Si te ha gustado y ayudado puedes compartir en redes para que el artículo sea mas visible y pueda ayudar a mas gente:




Publicidad



Artículos relacionados:

Como solucionar el error: VirtualBox can't enable the AMD-V extension
2026/02/28 · 1 min lectura

Como solucionar el error: VirtualBox can't enable the AMD-V extension

Aumentar los Inotify Watcher
2025/11/30 · 2 min lectura

Aumentar los Inotify Watcher

Instalar y configurar samba en ubuntu linux.
2024/10/02 · 3 min lectura

Instalar y configurar samba en ubuntu linux.

Error al arrancar Linux con Windows en Dual Boot
2024/08/28 · 2 min lectura

Error al arrancar Linux con Windows en Dual Boot

Conectar con carpetas remotas con ssh y ftp
2024/07/31 · 2 min lectura

Conectar con carpetas remotas con ssh y ftp


Añadir un comentarios:


  • Comenta el artículo si te ha sido de utilidad y te ha funcionado para que pueda ayudar a mas personas.
  • Si no ha funcionado comentalo tambien asi yo puedo repasarlo e intentar ver porque no funciona.

En ambos casos tú opinión es valiosa y de mucha utilidad para mejorar el blog y ayudar a otros usuarios.



(no se publica el email)


Los comentarios no se publican al momento sino que son revisados para prevenir el spam.

Todavía no hay comentarios.
Archivo:


2026 7 2025 13 2024 22 2023 34 2022 87 2021 87 2020 83 2019 38 2018 37 2017 85 2016 138 2015 49 2014 5 2013 9 2012 7 2010 1