Compare commits
4 Commits
a1792ccaf2
...
43ea246b56
Author | SHA1 | Date |
---|---|---|
Sergio Álvarez | 43ea246b56 | |
Sergio Álvarez | 5ece9cd3f9 | |
Sergio Álvarez | 38265ae08f | |
Sergio Álvarez | 9291e5ad15 |
|
@ -0,0 +1,8 @@
|
||||||
|
|
||||||
|
pipeline:
|
||||||
|
build:
|
||||||
|
image: ruby:alpine
|
||||||
|
commands:
|
||||||
|
- bundle install
|
||||||
|
- bundle exec jekyll build
|
||||||
|
branches: main
|
|
@ -1,5 +1,5 @@
|
||||||
<footer class="footer">
|
<footer class="footer">
|
||||||
<span class="footer_item"><a href="/LICENSE">© {{ site.time | date: "%Y" }} Sergio Álvarez</a></span>
|
<span class="footer_item"><a href="/LICENSE">© {{ site.time | date: "%Y" }} Sergio Álvarez</a> ▁ <a href="https://sergio.am/code/sergio.am">Código fuente y versionado</a></span>
|
||||||
</footer>
|
</footer>
|
||||||
<script src="/assets/js/main.js" defer="defer"></script>
|
<script src="/assets/js/main.js" defer="defer"></script>
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ layout: default
|
||||||
home: true
|
home: true
|
||||||
---
|
---
|
||||||
|
|
||||||
<h3 class="posts-item-note" aria-label="Recent Posts">Recent Posts</h3>
|
<h3 class="posts-item-note" aria-label="Recent Posts">Recent Posts ↓</h3>
|
||||||
{%- for post in site.posts limit: site.number_of_posts -%}
|
{%- for post in site.posts limit: site.number_of_posts -%}
|
||||||
<article class="post-item">
|
<article class="post-item">
|
||||||
<span class="post-item-date">{{ post.date | date: "%d %b %Y" }}</span>
|
<span class="post-item-date">{{ post.date | date: "%d %b %Y" }}</span>
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
---
|
|
||||||
layout: post
|
|
||||||
title: "CI/CD con Gitea + Drone"
|
|
||||||
---
|
|
||||||
Primer post, sin mucho que contar para variar. Al menos habrá un bonito _commit_ y muchas cosas por limpiar.
|
|
||||||
|
|
||||||
La chuleta para hacer andar esto es la siguiente:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
docker run -it --rm --volume="$PWD:/srv/jekyll:Z" jekyll/jekyll jekyll build
|
|
||||||
docker run -it --rm --volume="$PWD:/srv/jekyll:Z" -p 4000:4000 jekyll/jekyll jekyll serve
|
|
||||||
```
|
|
||||||
|
|
||||||
O bien, si ya está _buildeado_:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
cd _site
|
|
||||||
python3 -m http.server 4000
|
|
||||||
```
|
|
||||||
|
|
||||||
Y acceder a <http://localhost:4000>. Así de simple por ahora.
|
|
|
@ -1,21 +0,0 @@
|
||||||
---
|
|
||||||
layout: post
|
|
||||||
title: "Conectividad IPv6 sobre túnel WireGuard y OpenWRT"
|
|
||||||
---
|
|
||||||
Primer post, sin mucho que contar para variar. Al menos habrá un bonito _commit_ y muchas cosas por limpiar.
|
|
||||||
|
|
||||||
La chuleta para hacer andar esto es la siguiente:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
docker run -it --rm --volume="$PWD:/srv/jekyll:Z" jekyll/jekyll jekyll build
|
|
||||||
docker run -it --rm --volume="$PWD:/srv/jekyll:Z" -p 4000:4000 jekyll/jekyll jekyll serve
|
|
||||||
```
|
|
||||||
|
|
||||||
O bien, si ya está _buildeado_:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
cd _site
|
|
||||||
python3 -m http.server 4000
|
|
||||||
```
|
|
||||||
|
|
||||||
Y acceder a <http://localhost:4000>. Así de simple por ahora.
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "CI/CD con Gitea + Drone"
|
||||||
|
---
|
||||||
|
[Drone CI](https://www.drone.io/) es un sistema de CI/CD autónomo y autogestinado que puede asemejarse a lo que es Gitlab CI, Github Actions, Travis CI, etc. En mi caso, al usar [Gitea](https://gitea.io/), me viene perfecto para dar soporte de CI a mis proyectos.
|
||||||
|
|
||||||
|
Tengo ambos sistemas corriendo en Docker, y a mayores tengo un [runner](https://docs.drone.io/runner/overview/) en cada servidor donde quiero tener funcionando cosas desatendidas.
|
||||||
|
|
||||||
|
Desde un simple archivo `.drone.yml` puedo configurar tanto la _build_ del proyecto como el despliegue del mismo, ya que al tener también mi propio [registro de Docker](https://docs.docker.com/registry/) (lo que viene siendo un DockerHub privado), entre los tres puedo montar la imágen con Drone, _push_ al registro y despliegue de la nueva imágen para finalizar en el servidor que toque.
|
||||||
|
|
||||||
|
Y todo "privado".
|
||||||
|
|
||||||
|
## Caso de uso
|
||||||
|
|
||||||
|
El ejemplo es este mismo blog. Cuando creo/edito una entrada, o literalmente cualquier archivo del mismo, al _commitear_ los cambios a _git_ se ejecuta un _pipeline_ en el runner que corresponda, reconstruye el sitio y crea una imágen del resultado final, lo manda al registro, y se despliega la nueva imágen. Con prácticamente 0 downtime, rollbacks, versionado y código 100% visible y disponible.
|
||||||
|
|
||||||
|
El resumen del archivo [.drone.yml](https://sergio.am/code/sergio.am/src/branch/main/.drone.yml) sería:
|
||||||
|
|
||||||
|
1. Bla
|
||||||
|
2. blo
|
||||||
|
3. lala
|
||||||
|
4. lslslsls
|
||||||
|
|
||||||
|
## Web server
|
||||||
|
|
||||||
|
Como el contenido hay que servirlo desde alguna parte, tengo la siguiente configuración en el _vhost_ de nginx de `sergio.am` para que haga distinción entre el contenido del blog y el de Gitea, ya que se sirven desde el mismo dominio:
|
||||||
|
|
||||||
|
```nginx
|
||||||
|
server {
|
||||||
|
...
|
||||||
|
...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Planes a futuro
|
||||||
|
|
||||||
|
Mi idea a futuro es tener el blog servido desde algún alojamiento gratuito como puede ser Github Pages, o Netlify, o cualquier CDN que lo permita.
|
||||||
|
|
||||||
|
De forma más inmediata cambiaré el _setup_ del servidor que mueve todo para que pase _cacheado_ con Cloudflare, pero para ello tengo que cambiar bastante la infraestructura, ya que el proxy de Cloudflare no permite más conexiones que HTTP/S, y ahora mismo tanto HTTP/S como SSH van a la misma conexión, por lo que al activar el proxy pierdes la conectividad SSH.
|
||||||
|
|
||||||
|
La alternativa de Cloudflare Tunnel es viable, pero un poco _overkill_ para mi sencillo entorno. Por ello prefiero separar SSH y HTTP/S, aunque ello me lleve un tiempo de cambios aquí y allá.
|
|
@ -0,0 +1,27 @@
|
||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "Conectividad IPv6 sobre túnel WireGuard y OpenWRT"
|
||||||
|
---
|
||||||
|
La situación actual en España es que ningún operador de internet da IPv6. Y yo quiero IPv6. No por nada especial, simplemente por tener esa alternativa de conexión, probar cosas, aprender, etc. Y como lo quiero, lo he hecho, ejemplo de petición a [ipv6.google.com](https://ipv6.google.com/):
|
||||||
|
|
||||||
|
![https://ipv6.google.com](https://xrg.io/x/4c0t/49Zy.png)
|
||||||
|
|
||||||
|
O un ping:
|
||||||
|
|
||||||
|
![ping6 google.com](https://xrg.io/x/4c0t/Khg.png)
|
||||||
|
|
||||||
|
Antes de seguir, recomiendo la lectura de estos [hilos sobre IPv6](https://twitter.com/weareDMNTRs/status/1485600456583921670) de [@weareDMNTRs](https://twitter.com/weareDMNTRs). Aunque llevo tiempo interesándome por todo esto, sus hilos me dieron mucha claridad en el asunto.
|
||||||
|
|
||||||
|
En casa tengo _bridgeado_ el router de la operadora para que delegue todo a mi router _pofesional_, un [Linksys WRT3200ACM](https://www.linksys.com/es/wireless-routers/wrt-wireless-routers/linksys-wrt3200acm-ac3200-mu-mimo-gigabit-wifi-router/p/p-wrt3200acm/) con [OpenWRT](https://openwrt.org/) como sistema operativo.
|
||||||
|
|
||||||
|
## Opciones
|
||||||
|
|
||||||
|
Llegados a este punto hay alternativas para dar conectividad IPv6 hacia el mundo a todos los dispositivos de casa, la más sencilla de ellas es usar [Tunnelbroker.net](https://tunnelbroker.net/) de HE.net. Aunque funciona y sirve para lo que digo, no es conveniente para tener un tunel UP todo el día: a veces falla, tiene demasiada latencia, el protocolo es [6in4](https://en.wikipedia.org/wiki/6in4), y dicho todo esto ya no hace falta decir nada más.
|
||||||
|
|
||||||
|
Aunque mi solución no es perfecta tampoco (mirad el ping), solo por la estabilidad y poder aprovechar casi casi el 100% del ancho de banda, renta. Mi solución tampoco es 100% gratuita, ojo, pero como tengo servidores por todas partes puedo aprovecharme de ello, ya que me sirve literalmente cualquier proveedor (hoy en día raro es que no den IPv6 en servidores).
|
||||||
|
|
||||||
|
## VPS barato + WireGuard + OpenWRT
|
||||||
|
|
||||||
|
Esta es mi solución: crear un tunel seguro con [WireGuard](https://www.wireguard.com/) entre un VPS cualquiera y el router con OpenWRT. Si has llegado hasta aquí no netesito decirte por qué WireGuard. El router hace de cliente, y el VPS de servidor.
|
||||||
|
|
||||||
|
blablabla...
|
|
@ -234,7 +234,7 @@ h6 > a {
|
||||||
// Link
|
// Link
|
||||||
a {
|
a {
|
||||||
color: inherit;
|
color: inherit;
|
||||||
text-decoration-color: $smoke;
|
text-decoration: none;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: $text-link-blue;
|
color: $text-link-blue;
|
||||||
|
|
Loading…
Reference in New Issue