Pasos para la configuración del servidor Agosto 29 2017
Primeros pasos
- Ingresamos a aws.amazon.com seleccionar la opción EC2 en el menu Services
- Una vez dentro seleccionar Instances
- Para empezar la configuración presionar Launch Instance
- Para este caso se va a utilizar Ubuntu Server 16.04 por default viene en 64-bit
- Seleccionar el tipo de instancia deseado, en este caso es t2.micro el cual es gratis por 12 meses
- En la siguiente pantalla elegir el numero de instancias a lanzar, en este caso es solo una, los demás parámetros se los puede dejar sin modificar
- Siguiente, almacenamiento colocar los GB de la instancia, se puede colocar hasta 30GB son generar costos durante los primeros 12 meses
- Siguiente, tags no modificar nada
- Siguiente, Security Group son las reglas firewall que va a respetar la instancia, se elige una existente o se crea una nueva
- Inbound rules las mas importantes con las que se debe iniciar la instancia son, SSH, HTTP, HTTPS
- Outbound rules esta parte puede estar abierta a todo el trafico
- Review and launch muestra una lista con todas las opciones con las que contará la instancia, si todo está correcto Launch
- Como ultimo nos muestra si deseamos crear o seleccionar una key pem ya que es si no tenemos este archivo no sepa posible ingresar al SSH y lanzamos la instancia
Configuración para agregar un dominio
- Dentro de la sección EC2 elegir la opción Elastic IPs
- Presionamos sobre Allocate new address luego Allocate
- En la siguiente ventana nos muestra la ip que ha sido asignada, la marcamos y en Actions seleccionamos Associate address
- En este caso vamos a asociar la instancia, así que la seleccionamos del desplegable Instance y la ip privada quye este tiene en Private IP para terminar presionamos en Associate
- Una vez asociada esta ip a la instancia podemos ver que esta forma parte del Public DNS IPv4 si vemos la descripción de nuestra instancia en el Instances
- En el menu Services elegimos la opción Route 53 servicio de AWS que maneja las DNS
- Al ingresar ya estamos en la sección Hosted Zones presionamos sobre Create Hosted Zone
- Agregamos el nombre de dominio, un comentario y en este caso en el Type se debe seleccionar Public Hosted Zone
- Una vez creado va a mostrar 2 record set, el que vamos a usar es el de tupo NS, debemos ingresar al proveedor de dominios y colocar estos nuevos NS
- Ya que estén colocados en el proveedor de dominios creamos un nuevo record set en nuestra ventana de Route 53
- El Name lo dejamos en blanco, Type IPv4, Alias en NO y en Value colocamos la IP que nos dieron anteriormente en el paso de Elastic IP
- De paso vamos a crear el subdominio en el cual va a estar alojado GOGS
- Creamos un nuevo Record Set en Name en este caso de colocara git, Type IPv4, Alias SI, Alias Target podemos seleccionar el dominio, en mi caso esta al final, teniendo un valor como domain.com.
- Marcamos la opción Evaluate Target Health y guardamos Save Record Set, si todo esta correcto se creara el nuevo record set, si uno de los valores esta mal mostrará en error
- Como paso final de la configuración de dominios esta verificar si se están propagando correctamente los DNS, se lo puede verificar en este sitio whatsmydns.net
Agregar lang default
export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
El vesta CP es un panel de control el facil de configurar el cual ya viene con multiples configuraciones como PHP, MYSQL, Firewall, Webmail, etc su sitio web es vestacp.com
- Nos conectamos al SSH, para ver como lo debemos hacer es necesario regresar a Instances del menu EC2, marcamos la instancia y presionamos Connect
- Primero solicita cambiar los permisos al .pem
chmod 400 nombre_key.pem
- Luego conectar a la instancia, el comando debe ser similar a
ssh -i "ubicacion_del_archivo/nombre_key.pem" [email protected]
- Para poder conectarse de esta forma ssh en windows es necesario tener un terminar que ejecute en UNIX, el cual se lo puede conseguir descargando el instalador de GIT, y luego abrir el git bash
- Se debe ejecutar los coman dos para actualizar
sudo apt-get update && sudo apt-get upgrade -y
- Descargar el instalador del Vesta
curl -O http://vestacp.com/pub/vst-install.sh
- Ejecutarlo
sudo bash vst-install.sh --force
- Hace preguntas durante la instalación, como email, al cual van a llegar los accesos del panel de administración
- Cuando pide el hostname, podemos colocar el dominio o simplemente pasarlo con enter
- Empieza con la instalación, tarda unos 5min aprox
- Al finalizar muestra las credenciales de acceso, por default el url al que debemos ingresar es https, por lo que al abrirlo mostrara si deseamos ingresar al sitio no seguro
- A partir de este momento es posible ver algo ingresando la ruta del Public DNS o la IPv4 del server
- Sin embargo no se podrá acceder al panel de administración ya que este quiere cargar en el puerto 8083 para lo cual hay que crear un nuevo Security Group con los nuevos puertos que se van a necesitar y agregarlos a la instancia, también es posible modificar el Security Group de la instancia actual, cualquiera de las 2 formas es valido
- Seleccionamos dentro de la pantalla de EC2 en el menu lateral Security Groups luego Create Security Group
- Se debe colocar el nombre, una descripción y en el caso de que tengamos multiples VPC seleccionar la misma que usamos en nuestra instancia
- En Inbounds agregamos una nueva regla Custom TCP con el puerto 8083 y que el source sea Anywhere
- Ya que estamos en esta sección de paso agregamos otra regla en el puerto que va a utilizar el GOGS para ser ejecutado, en este caso sera el puerto 10080 y 10022
- Creamos y vamos a Instances, marcamos la instancia que estamos usando y seleccionamos, Actions - Networking - Change Security Groups se marca el que se acaba de crear y Assign Security Groups
- Después de este momento sera posible acceder al panel de administración
En este caso para la instalación de GOGS se va a utilizar Docker, ya que en otra documentación se lo realizo de la forma "normal"
- En el terminal
sudo apt-get update
- Descargar el instalador de Docker e instalar
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh
- Para poder usarlo sin ser root user colocar esta linea, donde ubuntu es en nombre del usuario con el que estamos, por default en este caso ya que es AWS ubuntu
sudo usermod -aG docker ubuntu
- Salimos de la sesión e ingresamos nuevamente para poder ejecutar código de docker y verificar si funciona correctamente
docker ps
Opcional, instalación de docker-machine y docker-compose, en esta guía no se van a utilizar a futuro
-
Instalar el docker-compose, el numero 1.15.0 es la versión, revisar cual es la ultima antes de instalarlo
-
sudo curl -o /usr/local/bin/docker-compose -L "https://github.com/docker/compose/releases/download/1.15.0/docker-compose-$(uname -s)-$(uname -m)"
-
Set de los permisos
-
sudo chmod +x /usr/local/bin/docker-compose
-
Verificar que la instalación este correcta
-
docker-compose -v
-
Instalar docker-machine, confirmar que version es la que vamos a instalar es texto v0.8.0-rcl
-
sudo wget -L https://github.com/docker/machine/releases/download/v0.8.0-rc1/docker-machine-`uname -s`-`uname -m`
-
Mover y dar los permisos necesarios
-
sudo mv docker-machine-`uname -s`-`uname -m` /usr/local/bin/docker-machine
-
sudo chmod +x /usr/local/bin/docker-machine
-
Confirmar que la instalación esta correcta
-
docker-machine version
Esta paso también es opcional para el proceso de instalación de GOGS, los certificados generados son gratuitos y son validos por 90 días, así que hay que renovarlos periódicamente
Instalar Certbot
cd /usr/local/sbin
sudo wget https://dl.eff.org/certbot-auto
sudo chmod a+x /usr/local/sbin/certbot-auto
- Hay diferentes formas de instalar certificados, entre ellas están por medio de apache, webroot, o standalone, en este caso se va a utilizar el método standalone
certbot-auto certonly --standalone -d dominio.com
Si todo esta bien nos mostrará un mensaje como el siguiente
Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/dominio/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/dominio/privkey.pem Your cert will expire on XXXX-XX-XX. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew all of your certificates, run "certbot-auto renew"
Para renovar los certificados colocar sudo certbot-auto renew y si falla colocar lo de abajo e intentar nuevamente
export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
Configurar nginx A continuación se va a configurar el nginx para forzar una redirección en si no ingresa con https al dominio
sudo nano /etc/nginx/conf.d/172.XX.XX.XXX.conf
- Detectamos si esta ingresando a html
server { listen 80; server_name dominio.com; return 301 https://$host$request_uri; }
- Redireccionar a https
server { listen 443; server_name dominio.com; ssl on; ssl_certificate /etc/letsencrypt/live/dominio.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/dominio.com/privkey.pem; location / { proxy_pass http://Elastic_IP:10080; } }
Modificar los valores del dominio y el Elastic_IP por los usados en la instancia, y el puerto que anteriormente se había indicado para gogs- Reiniciar el nginx
sudo systemctl restart nginx.service
Si la redireccion no fucniona, pero cuando carga directamente con https si sierve es posible que tengamos que eliminar la web por default del VestaCP, que debe tener un nombre similar a ip-XXX-XX-XX-XXX.us-west-1.compute.internal, ya que peude estar presentando un conflicto entre apache y nginx
A continuación se va a instalar gogs a través de docker, se va utiulizar la imagen, hub.docker.com/r/gogs/gogs/
- Hacer pull a la imagen
docker pull gogs/gogs
- Crear el directorio para el volumen
sudo mkdir -p /var/gogs
- Correr docker por primera vez, una vez que se detiene en la linea de comandos el contenedor se pausa
docker run --name=gogs -p 10022:22 -p 10080:3000 -v /var/gogs:/data gogs/gogs
- Si el contenedor se detiene se lo puede ver con el comando
docker ps -a
para ver su id y eliminarlo con el comandodocker rm ID_CONTENEDOR
- Ingresar a la URL para completar la instalación de gogs, la base de datos en esta ocasión será SQLite3
- El resto de loarametros dejar igual o a criterio propio mennos los siguientes
- Domain el dominio sin http ejemplo dominio.com
- SSH port colocar el puerto que esta usando como parametro en el docker, en este caso es 10022
- Application URL el url de la aplicacion incluyendo el http o https o puertos
Para dejar corriendo docker solo es necesario agregar el flag -d justo después de run