Guia para instalar y configurar docker en un vps server para desplegar web apps
Actualizar el sistema
sudo apt update
sudo apt upgrade
Instalar Uncomplicated Firewall (UFW)
sudo apt-get install ufw
#Para denegar por defecto conexiones entrantes
sudo ufw default deny incoming
#Para permitir por defecto conexiones salientes
sudo ufw default allow outgoing
# Permitir conexiones por un puerto en especifico
sudo ufw allow 22/tcp
sudo ufw allow 443/tcp
sudo ufw allow 80/tcp
sudo ufw enable
Instalar fail2ban
#Para prevenir intrusos en el sistema, penalizando o bloqueando las conexiones remotas que intentan accesos por fuerza bruta
sudo apt-get install fail2ban
Docker
Instalar docker
sudo apt install docker.io
Instalar docker-compose
sudo curl -SL "https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Permitir usar docker sin sudo
# Crear grupo docker
sudo groupadd docker
# Agregar usuario actual al grupo docker
sudo usermod -aG docker $USER
# Activar nuevos cambios
newgrp docker
Instalar traefik, para manejar facilmente el trafico web entre los contenedores docker con certificado ssl automatico
Para mas informacion https://traefik.io/
# crear archivos necesarios para traefik
mkdir /media/traefik
touch /media/traefik/acme.json
touch /media/traefik/traefik.toml
# crear red traefik
docker network create traefik
# correr contenedor con traefik
docker run -d -p 80:80 -p 443:443 \
--name traefik \
--network=traefik \
-v /media/traefik/acme.json:/etc/traefik/acme.json \
-v /media/traefik/traefik.toml:/etc/traefik/traefik.toml \
-v /var/run/docker.sock:/var/run/docker.sock \
traefik:v1.7.16
Configurar traefik
Ejemplo del archivo de configuracion traefik.toml
https://gitlab.com/snippets/1896414
Instalar portainer, interfaz grafica para manejar docker
Para mas informacion https://www.portainer.io/
docker volume create portainer_data
docker run -d \
--name portainer \
--network=traefik \
-l traefik.enable=true \
-l traefik.frontend.rule=Host:portainer.hostname.com \
-l traefik.port=9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data portainer/portainer
Ahora ya se pueden levantar contenedores con aplicaciones web corriendo con las etiquetas correspondientes para que traefik pueda redirigir el trafico hacia los respectivo contenedores, por favor leer la documentacion de traefik para mas informacion sobre su configuracion
No Comments