fix/feat: many things
This commit is contained in:
parent
89e218e67b
commit
16316ffa90
@ -1,7 +1,7 @@
|
||||
languageCode = "en"
|
||||
languageName = "English"
|
||||
weight = 1
|
||||
title = "d3vyce's Blog"
|
||||
title = "d3vyce Blog"
|
||||
|
||||
[params]
|
||||
displayName = "EN"
|
||||
@ -15,7 +15,7 @@ title = "d3vyce's Blog"
|
||||
|
||||
[author]
|
||||
name = "d3vyce"
|
||||
image = "img/author.png"
|
||||
image = "img/profil.png"
|
||||
headline = "Hi 👋, Welcome to my Blog!"
|
||||
bio = "Cybersecurity, Devops, Infrastructure"
|
||||
links = [
|
||||
|
@ -1,11 +1,9 @@
|
||||
---
|
||||
title: "About"
|
||||
slug: "about"
|
||||
layout: "simple"
|
||||
layout: "about"
|
||||
---
|
||||
|
||||
<img src="img/profil-modified.png" />
|
||||
|
||||
Hi, I'm Nicolas S aka d3vyce. I am a network and cybersecurity engineer living in France. I've always been passionate about computer science and technology, and over the years I've developed my skills in various fields such as programming, cybersecurity, infrastructure, networks, ... In addition to my master degree in networks and security, I love CTF and I have a homelab at home to continue my learning and experiment new things.
|
||||
|
||||
{{< alert icon="circle-info" >}}
|
||||
|
@ -1,7 +1,7 @@
|
||||
---
|
||||
title: "Categories"
|
||||
slug: "categories"
|
||||
layout: "simple"
|
||||
layout: "categories"
|
||||
---
|
||||
|
||||
{{< list title="Infrastructure" cardView=true limit=3 where="Type" value="infrastructure" >}}
|
||||
|
@ -1,9 +1,8 @@
|
||||
---
|
||||
title: "Authelia : a selfhosted SSO"
|
||||
date: 2022-04-10
|
||||
draft: false
|
||||
slug: "authelia-selfhosted-sso"
|
||||
tags: ["sso", "tools"]
|
||||
tags: ["authentication", "docker", "sso", "tools"]
|
||||
type: "security"
|
||||
---
|
||||
|
||||
@ -29,7 +28,7 @@ First of all, let's start by installing and configuring the docker. For that you
|
||||
|
||||
In my case I use Unraid and a template is directly available. I just have to set the port to use for the web interface.
|
||||
|
||||
<img src="img/image-1.png"/>
|
||||
<img src="img/image-1.png" alt="Unraid docker setup"/>
|
||||
|
||||
Before launching the docker we will have to make several changes to the configuration file.
|
||||
|
||||
@ -105,7 +104,7 @@ docker run --rm authelia/authelia:latest authelia hash-password 'yourpassword'
|
||||
|
||||
If this does not work you can manually create the hash using this [site](https://argon2.online) and these parameters:
|
||||
|
||||
<img src="img/image-2.png"/>
|
||||
<img src="img/image-2.png" alt="Argon2 hash generator"/>
|
||||
|
||||
### Access control
|
||||
For the access policy we will do something simple with a single role. But nothing prevents you from creating several roles with different rights and access.
|
||||
@ -285,17 +284,17 @@ real_ip_recursive on;
|
||||
|
||||
Then you can add it in the `Advanced` tab of the desired subdomain:
|
||||
|
||||
<img src="img/image-3.png"/>
|
||||
<img src="img/image-3.png" alt="NginxProxyManager new proxy host advanced options"/>
|
||||
|
||||
After saving, go to the address of your subdomain to verify that it works. You should arrive on the following page:
|
||||
|
||||
<img src="img/image-4.png"/>
|
||||
<img src="img/image-4.png" alt="Authelia login page"/>
|
||||
|
||||
You can connect with one of the credencials you created in the `users_database.yml` file. Once the connection is done, you should be redirected to the application hosted on the subdomain!
|
||||
|
||||
To configure/modify the double authentication method, go to the subdomain you have configured for Authelia (`ex. auth.youdomain.com`). Then select `Methods`:
|
||||
|
||||
<img src="img/image-5.png"/>
|
||||
<img src="img/image-5.png" alt="Authelia 2FA modal"/>
|
||||
|
||||
## Conclusion
|
||||
|
||||
|
@ -1,9 +1,8 @@
|
||||
---
|
||||
title: "How to host multiple services on one public IP ?"
|
||||
date: 2022-02-28
|
||||
draft: false
|
||||
slug: "how-to-host-multiple-services-on-one-public-ip"
|
||||
tags: ["reverse proxy"]
|
||||
tags: ["ddns", "docker", "network", "reverse proxy"]
|
||||
type: "infrastructure"
|
||||
---
|
||||
|
||||
@ -19,7 +18,7 @@ As described in the intro one of the big problems of self hosted on a non profes
|
||||
> Dynamic DNS (DDNS) is a method of automatically updating a name server in the Domain Name System (DNS), often in real time, with the active DDNS configuration of its configured hostnames, addresses or other information.
|
||||
> — <cite>[Wikipedia](https://en.wikipedia.org/wiki/Dynamic_DNS)</cite>
|
||||
|
||||
<img src="img/image-1.png"/>
|
||||
<img src="img/image-1.png" alt="DDNS schematic"/>
|
||||
|
||||
The operation of DDNS is separated into 3 parts:
|
||||
|
||||
@ -37,11 +36,11 @@ If you have a fixed IP with your internet provider, you do not need to do the fo
|
||||
|
||||
In my case I decided to use [DuckDNS](https://www.duckdns.org), it's a free service and easily configurable. First you will have to create an account with the service of your choice. Then you have to get your token, it's your unique identifier that will allow DuckDNS to identify you.
|
||||
|
||||
<img src="img/image-2.png"/>
|
||||
<img src="img/image-2.png" alt="DuckDNS token page"/>
|
||||
|
||||
You will now have to create a sub domain to the duckdns.org domain. To do this, simply fill in the "sub domain" field and click on "add domain".
|
||||
|
||||
<img src="img/image-3.png"/>
|
||||
<img src="img/image-3.png" alt="DuckDNS add domain"/>
|
||||
|
||||
Then go to your docker manager to install the [linuxserver/duckdns](https://hub.docker.com/r/linuxserver/duckdns) docker. The docker compose is quite simple, you just have to indicate the two following elements:
|
||||
|
||||
@ -52,7 +51,7 @@ TOKEN=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
||||
|
||||
You can then launch the docker, if all is well configured you can return to DuckDNS and verify that it has received your IP:
|
||||
|
||||
<img src="img/image-4.png"/>
|
||||
<img src="img/image-4.png" alt="DuckDNS current IP"/>
|
||||
|
||||
## Sub-domain creation
|
||||
Now that we have a domain at DuckDNS, we will have to link our personal domain/sub-domain to the DuckDNS sub-domain.
|
||||
@ -66,7 +65,7 @@ To do the redirection you have to create DNS entries of type CNAME.
|
||||
|
||||
To create a CNAME entry, all you need is a sub-domain and a target :
|
||||
|
||||
<img src="img/image-5.png"/>
|
||||
<img src="img/image-5.png" alt="OVH DNS zone setup"/>
|
||||
|
||||
In this example I create a sub-domain "www.d3vyce.fr" which redirects to the DuckDNS domain "xxxx.duckdns.org". Once the information is propagated on the different DNS servers, I should be able to access the IP of my box via this sub-domain.
|
||||
|
||||
@ -97,7 +96,7 @@ To do this we will set up a Reserve Proxy.
|
||||
> A reverse proxy server is a type of proxy server that typically sits behind the firewall in a private network and directs client requests to the appropriate backend server.
|
||||
> — <cite>[Nginx.com](https://www.nginx.com/resources/glossary/reverse-proxy-server)</cite>
|
||||
|
||||
<img src="img/image-6.png"/>
|
||||
<img src="img/image-6.png" alt="Reverse Proxy schematic"/>
|
||||
|
||||
Globally the reverse proxy will inspect the source domain to determine which local IP/Port to redirect the request to.
|
||||
|
||||
@ -145,7 +144,7 @@ Password: changeme
|
||||
|
||||
After creating a user, we can add our first service! To do this go to the Hosts -> Proxy Hosts tab. Now click on "Add Proxy Host".
|
||||
|
||||
<img src="img/image-7.png"/>
|
||||
<img src="img/image-7.png" alt="NginxProxyManager new proxy host"/>
|
||||
|
||||
This is where we will have to fill in our sub-domain, local IP of the service and its port. In the example above, I configure the sub-domain "test.d3vyce.fr" with the local web server which is at the address 192.168.1.10:80.
|
||||
|
||||
@ -157,7 +156,7 @@ The "Websockets Support" option can be the cause of problems for some applicatio
|
||||
|
||||
Now let's configure our SSL certificate.
|
||||
|
||||
<img src="img/image-8.png"/>
|
||||
<img src="img/image-8.png" alt="NginxProxyManager new proxy host SSL options"/>
|
||||
|
||||
Select the option "Request a new SSL Certificate" then the options "Force SSL", "HTTP/2 Support" and "HSTS Enabled". Then fill in our email and accept the terms of service. You can now save. After a few seconds you should see the status "Online" for your subdomain. If you have no errors you can now access your service with this subdomain! Using the same principle, you can setup other services.
|
||||
|
||||
|
BIN
content/posts/how-to-index-your-blog-on-google/img/image-1.png
(Stored with Git LFS)
BIN
content/posts/how-to-index-your-blog-on-google/img/image-1.png
(Stored with Git LFS)
Binary file not shown.
BIN
content/posts/how-to-index-your-blog-on-google/img/image-2.png
(Stored with Git LFS)
BIN
content/posts/how-to-index-your-blog-on-google/img/image-2.png
(Stored with Git LFS)
Binary file not shown.
BIN
content/posts/how-to-index-your-blog-on-google/img/image-3.png
(Stored with Git LFS)
BIN
content/posts/how-to-index-your-blog-on-google/img/image-3.png
(Stored with Git LFS)
Binary file not shown.
BIN
content/posts/how-to-index-your-blog-on-google/img/image-4.png
(Stored with Git LFS)
BIN
content/posts/how-to-index-your-blog-on-google/img/image-4.png
(Stored with Git LFS)
Binary file not shown.
BIN
content/posts/how-to-index-your-blog-on-google/img/image-5.png
(Stored with Git LFS)
BIN
content/posts/how-to-index-your-blog-on-google/img/image-5.png
(Stored with Git LFS)
Binary file not shown.
BIN
content/posts/how-to-index-your-blog-on-google/img/image-6.png
(Stored with Git LFS)
BIN
content/posts/how-to-index-your-blog-on-google/img/image-6.png
(Stored with Git LFS)
Binary file not shown.
BIN
content/posts/how-to-index-your-blog-on-google/img/image-7.png
(Stored with Git LFS)
Normal file
BIN
content/posts/how-to-index-your-blog-on-google/img/image-7.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/posts/how-to-index-your-blog-on-google/img/image.png
(Stored with Git LFS)
BIN
content/posts/how-to-index-your-blog-on-google/img/image.png
(Stored with Git LFS)
Binary file not shown.
@ -1,9 +1,8 @@
|
||||
---
|
||||
title: "How to index your Blog on Google Search"
|
||||
date: 2022-02-01
|
||||
draft: false
|
||||
slug: "how-to-index-your-blog-on-google"
|
||||
tags: []
|
||||
tags: ["indexation", "search engine"]
|
||||
type: "infrastructure"
|
||||
---
|
||||
|
||||
@ -25,7 +24,7 @@ https://search.google.com/u/0/search-console/welcome
|
||||
|
||||
You should land on the following page which gives us the choice between two options.
|
||||
|
||||
<img src="img/image.png"/>
|
||||
<img src="img/image-1.png" alt="Google Search Console"/>
|
||||
|
||||
Domain : this option will be used only if you use your domain name only for your website and you don't have any subdomain. For example in my case I have several subdomains (ex. status.d3vyce.fr) but I don't want them to be indexed.
|
||||
|
||||
@ -33,7 +32,7 @@ URL prefix : this second option allows to declare a precise URL and not an entir
|
||||
|
||||
You can then enter your domain. In my case it is https://www.d3vyce.fr. If all goes well the ownership verification of your domain is automatic. But if it's not the case, don't panic, an error message will tell you how to solve the problem. Globally, Google will provide you with a file that you should host on your site, this will verify that you have control of the site and therefore the domain.
|
||||
|
||||
<img src="img/image-1.png"/>
|
||||
<img src="img/image-2.png" alt="Ownership auto verification"/>
|
||||
|
||||
From this moment, the google robot will have to visit your site soon to do a scan. We could stop here but we will provide additional information to help the robot !
|
||||
|
||||
@ -43,18 +42,18 @@ The majority of CMS (Content management system) have this functionality integrat
|
||||
|
||||
In my case the sitemaps files are located at the following address: https://www.d3vyce.fr/sitemap.xml
|
||||
|
||||
<img src="img/image-2.png"/>
|
||||
<img src="img/image-3.png" alt="Sitemap list generated by Ghost"/>
|
||||
|
||||
This link leads to a sitemap index which is itself composed of several sitemap files. We have the choice to add file by file or directly the sitemap index.
|
||||
|
||||
To add our sitemap, we must go to Index > Sitemaps. Then we add the link to our index file.
|
||||
|
||||
<img src="img/image-3.png"/>
|
||||
<img src="img/image-4.png" alt="Add sitemap modal"/>
|
||||
|
||||
After a few minutes we notice that our sitemap index has been detected and that our 5 sitemaps have been imported!
|
||||
|
||||
<img src="img/image-4.png"/>
|
||||
<img src="img/image-5.png"/>
|
||||
<img src="img/image-5.png" alt="Submitted sitemaps"/>
|
||||
<img src="img/image-6.png" alt="Sitemaps list"/>
|
||||
|
||||
After this step, there is nothing left to do but wait. This can take from a few hours to several weeks in some cases.---
|
||||
|
||||
@ -62,7 +61,7 @@ After this step, there is nothing left to do but wait. This can take from a few
|
||||
## Update
|
||||
After about 36 hours, my blog has been indexed on google and is now accessible with a simple search!
|
||||
|
||||
<img src="img/image-6.png"/>
|
||||
<img src="img/image-7.png" alt="Google result for blog"/>
|
||||
|
||||
I then went to see the access logs of the site and we can observe the passages of the Googlebot which scans the site:
|
||||
```
|
||||
|
@ -1,9 +1,8 @@
|
||||
---
|
||||
title: "How to make daily backups of your HomeLab with Rclone?"
|
||||
date: 2022-07-19
|
||||
draft: false
|
||||
slug: "how-to-make-daily-backups-of-your-homelab"
|
||||
tags: ["backup", "tools"]
|
||||
tags: ["backup", "docker", "storage", "tools"]
|
||||
type: "infrastructure"
|
||||
---
|
||||
|
||||
@ -17,7 +16,7 @@ You have your local homelab in which you store all your data. You have set up se
|
||||
> - 1: The final “one” referred to the rule that one copy of the two backups should be taken off-site, so that anything that affected the first copy would not (hopefully) affect it.
|
||||
> — <cite>[computerweekly.com](computerweekly.com)</cite>
|
||||
|
||||
<img src="img/image-1.png"/>
|
||||
<img src="img/image-1.png" alt="321 backup rule"/>
|
||||
|
||||
3-2-1 Backup Rule allows to store data with almost no risk of loss. Today many people agree that this rule does not really make sense with the arrival of the cloud. Indeed, providers such as Google, Amazon, ... have replication systems on several disks, but especially in several locations. All this remains invisible for the user, but these securities are well present.
|
||||
|
||||
@ -90,17 +89,17 @@ In the script plugin of Unraid I add the different scripts with the following ex
|
||||
|
||||
This should result in the following:
|
||||
|
||||
<img src="img/image-2.png"/>
|
||||
<img src="img/image-2.png" alt="Script list in Unraid"/>
|
||||
|
||||
After waiting one day I check on the drive that the backup has been done:
|
||||
|
||||
<img src="img/image-3.png"/>
|
||||
<img src="img/image-3.png" alt="Save zip in Google Drive"/>
|
||||
|
||||
And indeed there is an archive of about 1Gb that has been uploaded in the save_mark1 folder. The system works !
|
||||
|
||||
I then let the script run for several days to see if the history system works well. As you can see I have a history of the file for about 30 days. An interesting thing to know is that only the archive consumes space on my drive and not all the versions in the history. This makes it consume ~1Gb with 30 versions of the archive accessible.
|
||||
|
||||
<img src="img/image-4.png"/>
|
||||
<img src="img/image-4.png" alt="Versions list in Google Drive"/>
|
||||
|
||||
## Conclusion
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
---
|
||||
title: "Migrate from Ghost to Hugo"
|
||||
date: 2024-02-17
|
||||
draft: false
|
||||
draft: true
|
||||
slug: "migrate-from-ghost-to-hugo"
|
||||
tags: []
|
||||
tags: ["ci/cd", "docker", "hugo"]
|
||||
type: "programming"
|
||||
---
|
||||
|
||||
|
BIN
content/posts/my-current-homelab/icon/adguardhome.png
(Stored with Git LFS)
Normal file
BIN
content/posts/my-current-homelab/icon/adguardhome.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/posts/my-current-homelab/icon/bazzar.png
(Stored with Git LFS)
Normal file
BIN
content/posts/my-current-homelab/icon/bazzar.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/posts/my-current-homelab/icon/bitwarden.png
(Stored with Git LFS)
Normal file
BIN
content/posts/my-current-homelab/icon/bitwarden.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/posts/my-current-homelab/icon/deluge.png
(Stored with Git LFS)
Normal file
BIN
content/posts/my-current-homelab/icon/deluge.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/posts/my-current-homelab/icon/gitea.png
(Stored with Git LFS)
Normal file
BIN
content/posts/my-current-homelab/icon/gitea.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/posts/my-current-homelab/icon/homeassistant.png
(Stored with Git LFS)
Normal file
BIN
content/posts/my-current-homelab/icon/homeassistant.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/posts/my-current-homelab/icon/jackett.png
(Stored with Git LFS)
Normal file
BIN
content/posts/my-current-homelab/icon/jackett.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/posts/my-current-homelab/icon/nginxproxymanager.png
(Stored with Git LFS)
Normal file
BIN
content/posts/my-current-homelab/icon/nginxproxymanager.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/posts/my-current-homelab/icon/plex.png
(Stored with Git LFS)
Normal file
BIN
content/posts/my-current-homelab/icon/plex.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/posts/my-current-homelab/icon/sonarr.png
(Stored with Git LFS)
Normal file
BIN
content/posts/my-current-homelab/icon/sonarr.png
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -1,9 +1,8 @@
|
||||
---
|
||||
title: "My current Homelab"
|
||||
date: 2022-02-11
|
||||
draft: false
|
||||
slug: "my-current-homelab"
|
||||
tags: []
|
||||
tags: ["docker", "network", "storage"]
|
||||
type: "infrastructure"
|
||||
---
|
||||
|
||||
@ -45,7 +44,7 @@ Currently my homelab is composed of the following elements:
|
||||
---
|
||||
|
||||
## Topology
|
||||
<img src="img/image-1.png"/>
|
||||
<img src="img/image-1.png" alt="Homelab topology"/>
|
||||
|
||||
In terms of network architecture it is quite simple, there is only one subnet, the 10.0.0.0/24, that I have subdivided for the different equipment:
|
||||
- 10.0.0.1 : Unifi Dream Machine
|
||||
@ -59,7 +58,7 @@ The vast majority of services/VM/storage are on the Mark1 server. This server is
|
||||
|
||||
[Unraid](https://unraid.net) is a paid OS that is offered in 3 versions:
|
||||
|
||||
<img src="img/image-2.png"/>
|
||||
<img src="img/image-2.png" alt="Unraid license options"/>
|
||||
|
||||
The only difference is the number of storage devives we can install in our server. In my case I am on the "Plus" version. It's a one time payment that allows you to unlock all the features.
|
||||
|
||||
@ -75,17 +74,17 @@ Mark2 is a server under Ubuntu Server, it is notably used for game servers (Mine
|
||||
As you can see on the diagram there are many services running in my homelab. Most of them are on the "Mark1" server and are Dockers.
|
||||
| | Name | Description |
|
||||
| ----------- | ----------- | ----------- |
|
||||
|  | Radarr | Movie collection manager |
|
||||
|  | Sonarr | Series collection manager |
|
||||
|  | Bazzar | Subtittle finder for movie and series |
|
||||
|  | Jackett | Proxy server for indexer |
|
||||
|  | AdGuardHome | DNS for blocking ads and tracking |
|
||||
|  | Bitwarden | Password manager |
|
||||
|  | Deluge | Torrent downloader |
|
||||
|  | Gitea | Local github |
|
||||
|  | Home Assistant | IOT manager (Zigbee) |
|
||||
|  | Nginx Proxy Manager | Reverse Proxy |
|
||||
|  | Plex | Movie and series remote access |
|
||||
| <img src="icon/radarr.png" alt="radarr" width="50"/> | Radarr | Movie collection manager |
|
||||
| <img src="icon/sonarr.png" alt="sonarr" width="50"/> | Sonarr | Series collection manager |
|
||||
| <img src="icon/bazzar.png" alt="bazzar" width="50"/> | Bazzar | Subtittle finder for movie and series |
|
||||
| <img src="icon/jackett.png" alt="jackett" width="50"/> | Jackett | Proxy server for indexer |
|
||||
| <img src="icon/adguardhome.png" alt="adguardhome" width="50"/> | AdGuardHome | DNS for blocking ads and tracking |
|
||||
| <img src="icon/bitwarden.png" alt="bitwarden" width="50"/> | Bitwarden | Password manager |
|
||||
| <img src="icon/deluge.png" alt="deluge" width="50"/> | Deluge | Torrent downloader |
|
||||
| <img src="icon/gitea.png" alt="gitea" width="50"/> | Gitea | Local github |
|
||||
| <img src="icon/homeassistant.png" alt="homeassistant" width="50"/> | Home Assistant | IOT manager (Zigbee) |
|
||||
| <img src="icon/nginxproxymanager.png" alt="nginxproxymanager" width="50"/> | Nginx Proxy Manager | Reverse Proxy |
|
||||
| <img src="icon/plex.png" alt="plex" width="50"/> | Plex | Movie and series remote access |
|
||||
|
||||
|
||||
|
||||
@ -93,7 +92,7 @@ In addition to these services, I have two database managers: MariaDB and Redis.
|
||||
|
||||
In terms of VMs on Mark1, I have 2 Ubuntu VMs for web hosting. A GNS3 VM for network tests. A VM containing Home Assistant. A Debian VM for a Docker project in progress and a Kali VM to do Pentesting and have access to cyber tools in remote.
|
||||
|
||||
<img src="img/image-3.png"/>
|
||||
<img src="img/image-3.png" alt="Virtual Machines tab in Unraid"/>
|
||||
|
||||
---
|
||||
|
||||
|
@ -1,19 +1,18 @@
|
||||
---
|
||||
title: "d3vyce.fr"
|
||||
date: 2022-08-06
|
||||
draft: false
|
||||
slug: "d3vyce-fr"
|
||||
showAuthor: false
|
||||
showWordCount: false
|
||||
showReadingTime: false
|
||||
showRelatedContent: false
|
||||
showPagination: false
|
||||
tags: ["css3", "html5", "javascript", "bootstrap"]
|
||||
tags: ["bootstrap", "css3", "html5", "javascript"]
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
<img src="featured.png"/>
|
||||
<img src="featured.png" alt="overview"/>
|
||||
{{< github repo="d3vyce/d3vyce.fr" >}}
|
||||
|
||||
Development of my personal website in addition to my Blog.
|
||||
|
@ -1,14 +1,13 @@
|
||||
---
|
||||
title: "Homelab"
|
||||
date: 2019-07-21
|
||||
draft: false
|
||||
slug: "homelab"
|
||||
showAuthor: false
|
||||
showWordCount: false
|
||||
showReadingTime: false
|
||||
showRelatedContent: false
|
||||
showPagination: false
|
||||
tags: ["opnsense", "wireguard", "docker", "unraid", "qemu"]
|
||||
tags: ["docker", "opnsense", "qemu", "unraid", "wireguard"]
|
||||
---
|
||||
|
||||
Initially, my goal was to create a media server accessible from anywhere with Plex.
|
||||
|
@ -1,19 +1,18 @@
|
||||
---
|
||||
title: "Pentools"
|
||||
date: 2023-01-29
|
||||
draft: false
|
||||
slug: "pentools"
|
||||
showAuthor: false
|
||||
showWordCount: false
|
||||
showReadingTime: false
|
||||
showRelatedContent: false
|
||||
showPagination: false
|
||||
tags: ["bash"]
|
||||
tags: ["bash", "tools"]
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
<img src="featured.png"/>
|
||||
<img src="featured.png" alt="overview"/>
|
||||
{{< github repo="d3vyce/pentools" >}}
|
||||
|
||||
Pentools is a bash script that lets you quickly set up a Debian like machine.
|
||||
|
@ -1,20 +1,18 @@
|
||||
---
|
||||
title: "Teleinfo Exporter"
|
||||
date: 2023-12-19
|
||||
draft: false
|
||||
slug: "teleinfo-exporter"
|
||||
# summary: "Template for creating a recipe for Blowfish theme"
|
||||
showAuthor: false
|
||||
showWordCount: false
|
||||
showReadingTime: false
|
||||
showRelatedContent: false
|
||||
showPagination: false
|
||||
tags: ["python", "prometheus", "docker", "grafana", "esp32", "mqtt"]
|
||||
tags: ["docker", "esp32", "grafana", "mqtt", "prometheus", "python"]
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
<img src="featured.png"/>
|
||||
<img src="featured.png" alt="overview"/>
|
||||
{{< github repo="d3vyce/teleinfo-exporter" >}}
|
||||
|
||||
Teleinfo Exporter is a simple Prometheus exporter for Linky (French smart electricity meter).
|
||||
|
@ -1,12 +1,12 @@
|
||||
---
|
||||
title: "URL Shortener"
|
||||
date: 2023-03-05
|
||||
draft: false
|
||||
draft: true
|
||||
slug: "url-shortener"
|
||||
showAuthor: false
|
||||
showWordCount: false
|
||||
showReadingTime: false
|
||||
showRelatedContent: false
|
||||
showPagination: false
|
||||
tags: ["python", "docker", "sql", "flask"]
|
||||
tags: ["docker", "flask", "python", "sql"]
|
||||
---
|
||||
|
44
layouts/_default/about.html
Normal file
44
layouts/_default/about.html
Normal file
@ -0,0 +1,44 @@
|
||||
{{ define "main" }}
|
||||
{{ $disableImageOptimization := .Site.Params.disableImageOptimization | default false }}
|
||||
<article class="flex flex-col items-center justify-center text-center">
|
||||
<header class="flex flex-col items-center mb-3">
|
||||
{{ with .Site.Author.image }}
|
||||
{{ $authorImage := resources.Get . }}
|
||||
{{ if $authorImage }}
|
||||
{{ if not $disableImageOptimization }}
|
||||
{{ $authorImage = $authorImage.Fill "288x288" }}
|
||||
{{ end }}
|
||||
<img
|
||||
class="mb-2 rounded-full h-36 w-36"
|
||||
width="144"
|
||||
height="144"
|
||||
alt="{{ $.Site.Author.name | default "Author" }}"
|
||||
src="{{ $authorImage.RelPermalink }}"
|
||||
/>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
<h1 class="text-4xl font-extrabold">
|
||||
{{ .Site.Author.name | default .Site.Title }}
|
||||
</h1>
|
||||
<div class="mt-1 text-2xl">
|
||||
{{ partialCached "author-links.html" . }}
|
||||
</div>
|
||||
</header>
|
||||
</article>
|
||||
<article class="max-w-full">
|
||||
<header>
|
||||
{{ if .Params.showBreadcrumbs | default (.Site.Params.article.showBreadcrumbs | default false) }}
|
||||
{{ partial "breadcrumbs.html" . }}
|
||||
{{ end }}
|
||||
<h1 class="mt-0 text-4xl font-extrabold text-neutral-900 dark:text-neutral">
|
||||
{{ .Title | emojify }}
|
||||
</h1>
|
||||
</header>
|
||||
<section class="max-w-full mt-6 prose dark:prose-invert">
|
||||
{{ .Content | emojify }}
|
||||
</section>
|
||||
<footer class="pt-8">
|
||||
{{ partial "sharing-links.html" . }}
|
||||
</footer>
|
||||
</article>
|
||||
{{ end }}
|
Loading…
x
Reference in New Issue
Block a user