iniciada migración
This commit is contained in:
parent
880ca8fbd7
commit
f6a26008e1
BIN
src/content/posts/2022-10-06_Desatendida/featured.png
Normal file
BIN
src/content/posts/2022-10-06_Desatendida/featured.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
162
src/content/posts/2022-10-06_Desatendida/index.md
Normal file
162
src/content/posts/2022-10-06_Desatendida/index.md
Normal file
@ -0,0 +1,162 @@
|
||||
---
|
||||
title: Instalación de Debian desatendida
|
||||
published: 2022-10-06
|
||||
description: "How to use this blog template."
|
||||
image: "./featured.png"
|
||||
tags: ["Debian", "preseed"]
|
||||
category: documentación
|
||||
draft: false
|
||||
---
|
||||
|
||||
## Creación de imagen
|
||||
|
||||
### Descomprimimos la imagen
|
||||
|
||||
Vamos a utilizar la versión de debian que contiene software privativo, para, por ejemplo, tener disponibles más drivers en caso de que fueran necesarios. Tenemos que seguir los siguientes pasos:
|
||||
1. Descargamos la imagen de la página de debian:
|
||||
```shell
|
||||
$ wget https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/current/amd64/iso-cd/firmware-11.5.0-amd64-netinst.iso
|
||||
```
|
||||
2. Descomprimimos la imagen utilizando `xorriso` en el directorio `isofiles/`:
|
||||
```shell
|
||||
$ xorriso -osirrox on -indev firmware-11.5.0-amd64-netinst.iso -extract / isofiles/
|
||||
```
|
||||
|
||||
### Introducimos el preseed
|
||||
|
||||
1. copiamos el fichero `preseed.cfg` a la raíz de la imagen:
|
||||
```shell
|
||||
$ sudo cp preseed.cfg isofiles/preseed.cfg
|
||||
```
|
||||
2. Editamos el fichero `txt.cfg` (encargado del contenido del menú inicial de instalación) para añadir una opción que utilice el `preseed` además de que cargue el idioma español:
|
||||
```shell
|
||||
$ sudo nano isofiles/isolinux/txt.cfg
|
||||
```
|
||||
```shell
|
||||
label install
|
||||
menu label ^Install
|
||||
kernel /install.amd/vmlinuz
|
||||
append vga=788 initrd=/install.amd/initrd.gz --- quiet
|
||||
label unattended-gnome
|
||||
menu label ^Instalacion Debian Desatendida Preseed
|
||||
kernel /install.amd/gtk/vmlinuz
|
||||
append vga=788 initrd=/install.amd/gtk/initrd.gz preseed/file=/cdrom/preseed.cfg locale=es_ES console-setup/ask_detect=false keyboard-configuration/xkb-keymap=e>
|
||||
```
|
||||
|
||||
### Volvemos a generar la imagen
|
||||
|
||||
1. Como hemos alterado los ficheros que contiene la imagen, tenemos que generar un nuevo fichero `md5sum.txt`:
|
||||
```shell
|
||||
$ cd isofiles/
|
||||
$ chmod a+w md5sum.txt
|
||||
$ md5sum `find -follow -type f` > md5sum.txt
|
||||
$ chmod a-w md5sum.txt
|
||||
$ cd .
|
||||
```
|
||||
2. Por último cambiamos los permisos de `isolinux` y creamos la imagen nueva:
|
||||
```shell
|
||||
$ chmod a+w isofiles/isolinux/isolinux.bin
|
||||
$ genisoimage -r -J -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o debian-preseed.iso isofiles
|
||||
```
|
||||
|
||||
## Carga del fichero preseed.cfg desde red
|
||||
|
||||
### Configuración del servidor
|
||||
Para la instalación desatendida cargando el `preseed` desde red, es necesario una máquina que haga el rol de servidor, teniendo un servidor `apache2` instalado. Para preparar dicha máquina seguimos los siguientes pasos:
|
||||
|
||||
1. Instalamos el servidor apache en la máquina:
|
||||
```bash
|
||||
$ apt upgrade && apt install apache2
|
||||
```
|
||||
2. copiamos el fichero `preseed.cfg` previamente configurado al directorio `/var/www/html`
|
||||
|
||||
Tras este paso, el servidor ya está configurado y ofreciendo la configuración a la red.
|
||||
|
||||
### Utilización desde el cliente
|
||||
|
||||
Para aplicar la configuración del fichero `preseed`, iniciamos la instalación de una imagen de debian sin modificar. Para utilizarla tenemos dos opciones:
|
||||
1. Utilizando línea de comandos:
|
||||
1. Pulsamos la tecla ESC para abrir la línea de comandos
|
||||
2. Introducimos el siguiente comando para acceder al fichero, donde `IP servidor` es la ip de la máquina que tiene el servidor apache:
|
||||
```bash
|
||||
boot: auto url=[IP servidor]/preseed.cfg
|
||||
```
|
||||
2. Utilizando las opciones avanzadas:
|
||||
1. Accedemos a opciones avanzadas en el menú, seguido de instalación automatizada.
|
||||
2. Introducimos la ip del servidor con apache de la siguiente manera:
|
||||
```
|
||||
http://[IP servidor]/preseed.cfg
|
||||
```
|
||||
Tras esto, la instalación desatendida comenzará.
|
||||
|
||||
## Instalación basada en preseed/PXE/TFT
|
||||
|
||||
Para esta instalación, al igual que la anterior, es necesario que una máquina haga el rol de servidor, además en este caso tiene que tener un servidor DHCP. Para configurarla vamos a seguir los siguientes pasos. La máquina tiene que tener una red aislada sin DHCP en la que se va a conectar con los clientes
|
||||
|
||||
### Instalación de dnsmasq
|
||||
|
||||
1. Instalamos el paquete dnsmasq, encargado tanto del DHCP como del servidor TFTP
|
||||
```shell
|
||||
$ apt install dnsmasq
|
||||
```
|
||||
2. configuramos el contenido del fichero /etc/dnsmasq.conf/:
|
||||
```shell
|
||||
dhcp-range=192.168.100.50,192.168.100.150,255.255.255.0,12h
|
||||
dhcp-boot=pxelinux.0
|
||||
enable-tftp
|
||||
tftp-root=/srv/tftp
|
||||
```
|
||||
3. En el paso anterior especificamos que se utilizara el directorio /srv/tftp/ como raíz para la transmisión por pxe; vamos a crearlo:
|
||||
```shell
|
||||
$ mkdir /srv/tftp/
|
||||
```
|
||||
4. Reiniciamos el servicio para que los cambios tengan efecto
|
||||
```shell
|
||||
$ systemctl restart dnsmasq
|
||||
```
|
||||
|
||||
### Descarga de la imagen
|
||||
|
||||
Para instalar utilizando PXE/TFTP tenemos que utilizar una imagen de debian especial llamada netboot. Esta imagen se encuentra en la siguiente dirección: http://ftp.debian.org/debian/dists/bullseye/main/installer-amd64/current/images/netboot/netboot.tar.gz.
|
||||
|
||||
1. Nos desplazamos al directorio /srv/tftp/, descargamos la imagen y la descomprimimos:
|
||||
```shell
|
||||
$ wget http://ftp.debian.org/debian/dists/bullseye/main/installer-amd64/current/images/netboot/netboot.tar.gz
|
||||
$ tar -zxf netboot.tar.gz && rm netboot.tar.gz
|
||||
```
|
||||
|
||||
Tras este paso, el servidor ya está ofreciendo la imagen de debian a la red.
|
||||
|
||||
### Reglas nftables
|
||||
|
||||
dado que el cliente solo está conectado al servidor, no tiene ninguna conexión a internet. Por lo que el servidor, además, tiene que hacer SNAT. Para ello vamos a activar el bit de forwarding y a aplicar las siguientes reglas de nftables:
|
||||
```shell
|
||||
$ nft add table nat
|
||||
$ nft add chain nat postrouting { type nat hook postrouting priority 100 \; }
|
||||
$ nft add rule ip nat postrouting oifname "eth0" ip saddr 192.168.100.0/24 counter masquerade
|
||||
$ nft list ruleset > /etc/nftables.conf
|
||||
```
|
||||
Si la configuración no ha persistido tras un reinicio, podemos recuperarla con:
|
||||
```shell
|
||||
$ nft -f /etc/nftables.conf
|
||||
```
|
||||
|
||||
### Fichero Preseed
|
||||
|
||||
Para añadir el fichero preseed, tenemos dos opciones. Añadirlo a los ficheros que se están distribuyendo a través de `PXE`, o utilizar un `servidor apache`, realizándose de la misma manera que en el paso anterior.
|
||||
|
||||
Para utilizar el fichero `preseed.cfg` modificamos el fichero `txt.cfg` para que utilice el que estamos ofreciendo en el servidor apache:
|
||||
```shell
|
||||
label install
|
||||
menu label ^Install
|
||||
kernel debian-installer/amd64/linux
|
||||
append vga=788 initrd=debian-installer/amd64/initrd.gz --- quiet
|
||||
label unattended-gnome
|
||||
menu label ^Instalacion Debian Desatendida Preseed
|
||||
kernel debian-installer/amd64/linux
|
||||
append vga=788 initrd=debian-installer/amd64/initrd.gz preseed/url=192.168.100.5/preseed.txt locale=es_ES console-setup/ask_detect=false keyboard-configuration/xkb-keymap=e>
|
||||
```
|
||||
|
||||
### Lado del cliente
|
||||
|
||||
La instalación desde el lado del cliente es muy similar al paso anterior. Antes de empezar, hay que añadirle una tarjeta de red que esté en la red del DHCP, y hacer que sea una opción de arranque. Una vez hecho esto, el cliente iniciará la imagen en red, y desde ahí, podemos seguir los pasos que ya sabemos para utilizar el fichero preseed.cfg
|
BIN
src/content/posts/2023-06-14_instalacion-gitea/cover.png
Normal file
BIN
src/content/posts/2023-06-14_instalacion-gitea/cover.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 36 KiB |
191
src/content/posts/2023-06-14_instalacion-gitea/index.md
Normal file
191
src/content/posts/2023-06-14_instalacion-gitea/index.md
Normal file
@ -0,0 +1,191 @@
|
||||
---
|
||||
title: Instalación Gitea
|
||||
published: 2023-06-14
|
||||
description: "How to use this blog template."
|
||||
image: "./cover.png"
|
||||
tags: ["git", "autoalojado","docker","vps"]
|
||||
category: documentación
|
||||
draft: false
|
||||
---
|
||||
|
||||
# Gitea
|
||||
|
||||
Gitea es una solución ligera de alojamiento de código gestionada por la comunidad y escrita en Go, tiene las principales características que tiene github, incluyendo actions. Ahora veremos la instalación de gitea en la VPS.
|
||||
|
||||
## Preparación
|
||||
|
||||
En mi caso voy a instalarlo utilizando `docker-compose`, para ello, y teniendo en cuenta que uso debian, es necesario ejecutar los siguientes comandos:
|
||||
|
||||
```shell
|
||||
apt update
|
||||
apt install -y docker.io docker-compose
|
||||
```
|
||||
|
||||
## Instalación
|
||||
|
||||
Para instalarlo, voy a optar por la opción con una base de datos PostgreSQL. Para ello, en un directorio vacío creamos el siguiente fichero `docker-compose.yml` (cambiando las credenciales, claro):
|
||||
|
||||
```yaml
|
||||
version: "3"
|
||||
|
||||
networks:
|
||||
gitea:
|
||||
external: false
|
||||
|
||||
services:
|
||||
server:
|
||||
image: gitea/gitea:nightly
|
||||
container_name: gitea
|
||||
environment:
|
||||
- USER_UID=1000
|
||||
- USER_GID=1000
|
||||
- GITEA__database__DB_TYPE=postgres
|
||||
- GITEA__database__HOST=db:5432
|
||||
- GITEA__database__NAME=gitea
|
||||
- GITEA__database__USER=gitea
|
||||
- GITEA__database__PASSWD=gitea
|
||||
restart: always
|
||||
networks:
|
||||
- gitea
|
||||
volumes:
|
||||
- ./gitea:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
ports:
|
||||
- "3200:3000"
|
||||
- "222:22"
|
||||
depends_on:
|
||||
- db
|
||||
|
||||
db:
|
||||
image: postgres:14
|
||||
restart: always
|
||||
environment:
|
||||
- POSTGRES_USER=gitea
|
||||
- POSTGRES_PASSWORD=gitea
|
||||
- POSTGRES_DB=gitea
|
||||
networks:
|
||||
- gitea
|
||||
volumes:
|
||||
- ./postgres:/var/lib/postgresql/data
|
||||
```
|
||||
|
||||
y lo desplegamos con
|
||||
|
||||
```shell
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
Con eso ya se habrían creado los contenedores. Además, para poder entrar en gitea desde fuera de la VPS usando el dominio, vamos a añadir el siguiente proxy inverso al servidor nginx:
|
||||
|
||||
```nginx
|
||||
server {
|
||||
if ($host ~ ^[^.]+\.admichin\.es$) {
|
||||
return 301 https://$host$request_uri;
|
||||
} # managed by Certbot
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name gitea.admichin.es;
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
listen [::]:443 ssl http2;
|
||||
ssl on;
|
||||
ssl_certificate /etc/letsencrypt/live/admichin.es-0001/fullchain.pem; # managed by Certbot
|
||||
ssl_certificate_key /etc/letsencrypt/live/admichin.es-0001/privkey.pem; # managed by Certbot
|
||||
|
||||
index index.html index.php index.htm index.nginx-debian.html;
|
||||
server_name gitea.admichin.es;
|
||||
|
||||
location / {
|
||||
proxy_pass http://localhost:3200;
|
||||
include proxy_params;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Con esto hecho, si accedemos a [gitea.admichin.es](https://gitea.admichin.es) por primera vez, se abrirá la página de configuración:
|
||||
|
||||
![configuracion1](https://i.imgur.com/es0cMvq.png)
|
||||
|
||||
En esta configuración es importante poner el dominio (más abajo, no donde sale en la foto ya que esa es la configuración de la base de datos). Así como establecer la configuración de ssh y el nombre del sitio. Tras finalizar la configuración, o en la misma ya que es una opción, el primer usuario que se cree será el administrador. Con esto ya tendríamos gitea instalado y funcionando.
|
||||
|
||||
![principal](https://i.imgur.com/dAKzydC.png)
|
||||
|
||||
# Actions
|
||||
|
||||
Gitea, desde la versión 1.19 permite añadir actions, que son similares a las GitHub actions. Aunque actualicemos a dicha versión, no aparecerán, ya que tenemos que añadir lo siguiente al final del fichero de configuración, que se encuentra en `data/gitea/conf/app.ini`:
|
||||
|
||||
```app.ini
|
||||
[actions]
|
||||
ENABLED=true
|
||||
```
|
||||
|
||||
Una vez activado, aparece la siguiente opción en el apartado de administración:
|
||||
|
||||
![actions](https://i.imgur.com/OeZEsB5.png)
|
||||
|
||||
Para el paso que irá a continuación, vamos a necesitar el token de registro. Para obtenerlo se accede al apartado de Runners y al botón de `Create a new Runner`:
|
||||
|
||||
![token](https://i.imgur.com/bpHH3qp.png)
|
||||
|
||||
## Runners
|
||||
|
||||
Un runner es una máquina que ejecuta las tareas de un workflow de actions. En mi caso voy a utilizar un contenedor como runner dentro de la VPS también, pero hay varios métodos:
|
||||
|
||||
### En local
|
||||
|
||||
Descargamos el binario de [https://gitea.com/gitea/act_runner](https://gitea.com/gitea/act_runner) adecuado para nuestro sistema y ejecutamos los siguientes comandos:
|
||||
|
||||
```shell
|
||||
./act_runner register --no-interactive --instance <instance> --token <token>
|
||||
```
|
||||
|
||||
Donde la instancia es la dirección o IP en la que esté alojada Gitea, y el token es el token que hemos obtenido previamente. Tras esto, ejecutamos el runner:
|
||||
|
||||
```shell
|
||||
./act_runner daemon
|
||||
```
|
||||
|
||||
### En contenedor
|
||||
|
||||
Para ejecutarlo con docker voy a usar docker-compose. para ello, creo un nuevo directorio con el siguiente fichero docker-compose.yml:
|
||||
|
||||
```yaml
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
runner:
|
||||
image: gitea/act_runner
|
||||
restart: always
|
||||
volumes:
|
||||
- ./data/act_runner:/data
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
environment:
|
||||
- GITEA_INSTANCE_URL=instance
|
||||
- GITEA_RUNNER_REGISTRATION_TOKEN=token
|
||||
```
|
||||
|
||||
Al igual que en el caso anterior la instancia es la dirección o IP en la que esté alojada Gitea, y el token es el token que hemos obtenido previamente.
|
||||
|
||||
Una vez en ejecución, los runners aparecen de la siguiente manera:
|
||||
|
||||
![runners](https://i.imgur.com/iN7zF86.png)
|
||||
|
||||
## Activar actions
|
||||
|
||||
Aunque esté configurado, las actions están desactivadas por defecto en los repositorios. Para activarlas hay que acceder a la configuración, y en el apartado de ajustes avanzados activarlas:
|
||||
|
||||
![activar](https://i.imgur.com/C9gBaBP.png)
|
||||
|
||||
Podemos ver que se ha activado porque aparece el botón de actions en el repositorio, y podemos añadirlas como se añadirían en GitHub:
|
||||
|
||||
![boton](https://i.imgur.com/DHLtkJY.png)
|
||||
|
||||
# Enlaces de interés
|
||||
|
||||
- [Gitea Installation with Docker](https://docs.gitea.com/next/installation/install-with-docker)
|
||||
- [Feature Preview: Gitea Actions](https://blog.gitea.io/2022/12/feature-preview-gitea-actions/)
|
||||
- [Hacking on Gitea Actions](https://blog.gitea.io/2023/03/hacking-on-gitea-actions/)
|
24
src/content/posts/prueba.md
Normal file
24
src/content/posts/prueba.md
Normal file
@ -0,0 +1,24 @@
|
||||
---
|
||||
title: prueba
|
||||
published: 2024-10-23
|
||||
description: ''
|
||||
image: ''
|
||||
tags: []
|
||||
category: ''
|
||||
draft: false
|
||||
lang: ''
|
||||
---
|
||||
# This Article is a Draft
|
||||
|
||||
This article is currently in a draft state and is not published. Therefore, it will not be visible to the general audience. The content is still a work in progress and may require further editing and review.
|
||||
|
||||
When the article is ready for publication, you can update the "draft" field to "false" in the Frontmatter:
|
||||
|
||||
```markdown
|
||||
---
|
||||
title: Draft Example
|
||||
published: 2024-01-11T04:40:26.381Z
|
||||
tags: [Markdown, Blogging, Demo]
|
||||
category: Examples
|
||||
draft: false
|
||||
---
|
Loading…
x
Reference in New Issue
Block a user