From 6f26fc303d8369c706ab0e7eb69061d26304fa42 Mon Sep 17 00:00:00 2001 From: d3vyce Date: Sun, 11 Feb 2024 18:27:24 +0100 Subject: [PATCH] fix: posts structure --- assets/img/author_transparent.png | Bin 7498 -> 39187 bytes .../posts/authelia-selfhosted-sso/index.md | 28 ++++++++++-------- .../index.md | 4 +-- .../how-to-index-your-blog-on-google/index.md | 6 ++-- .../index.md | 6 ++-- content/posts/my-current-homelab/index.md | 4 +-- 6 files changed, 27 insertions(+), 21 deletions(-) diff --git a/assets/img/author_transparent.png b/assets/img/author_transparent.png index ee3114e62cf08df0f5acc4d9fb971ae501b44a48..24950243aaa148ecaf56b37a615621909e297991 100644 GIT binary patch literal 39187 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 YrCEMDxnritfBCNW)KIHZ^Tpf$0~$I;bpQYW literal 7498 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 diff --git a/content/posts/authelia-selfhosted-sso/index.md b/content/posts/authelia-selfhosted-sso/index.md index bfea742..27b9da5 100644 --- a/content/posts/authelia-selfhosted-sso/index.md +++ b/content/posts/authelia-selfhosted-sso/index.md @@ -6,7 +6,7 @@ slug: "authelia-selfhosted-sso" tags: ["tools", "sso"] --- -First of all, what is an SSO? +## What's an SSO ? > Single sign-on (SSO) is an authentication scheme that allows a user to log in with a single ID to any of several related, yet independent, software systems. @@ -18,7 +18,7 @@ There are several advantages : - Add double authentification - Login regulation (Anti brute force) ---- +## Instalation Now that we have seen what an SSO is and the interest it can have in a Homelab, let's start the installation! @@ -52,7 +52,7 @@ Let's start by generating the secret JWT. For that I use this [site](https://www jwt_secret: [example_secret] ``` -## Session +### Session Several elements must be configured in this part: - **secret** : generate a password with the site of your choice - **domain** : indicate your domain (`ex. youdomain.com`) @@ -76,7 +76,7 @@ session: minimum_idle_connections: 0 ``` -## User +### User It is in this part that you will have to add the users who will be able to connect to the SSO. No element has to be modified in the configuration file, but you will have to create a second file: `users_database.yml`. This file is composed as follows: ``` @@ -106,7 +106,7 @@ If this does not work you can manually create the hash using this [site](https:/ -## Access control +### 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. So we are going to create a `user` group that will have to use the double authentication and will have access to all the subdomains. For this you have to modify the two `exemple.org` in the template file. @@ -121,7 +121,7 @@ access_control: policy: two_factor ``` -## Storage +### Storage For the storage part we will use our database created with Mysql. You have to modify the following values in the template: - **encryption_key** : generate a password with the site of your choice - **mysql** : indicate ip, port, database name, user and mysql password @@ -137,7 +137,7 @@ storage: password: [mysql_password] ``` -## Regulation +### Regulation For the anti brute force security, we will set up a regulation policy with 3 attempts maximum in 2 min before a ban of 5 min. This regulation is not the ultimate solution, it is always preferable to also set up a Fail2ban to complete this solution. ``` @@ -147,7 +147,7 @@ regulation: ban_time: 5m ``` -## Notification +### Notification To set up email notifications, you must fill in the following part of the template. This part is not mandatory but it is used to reset your password in case you forget... ``` @@ -164,12 +164,12 @@ smtp: disable_html_emails: false ``` -## Double Authentification +### Double Authentification For the double authentication several solutions are offered to you. The two most interesting celons me are the following: TOTP This is the most famous method, you just have to use an application like Google Auth to get a code that changes every 30 seconds. The configuration is very simple, just customize the `issuer` field with the name you want. This name will be displayed in your -### TOTP +#### TOTP ``` application.totp: issuer: [example.example.org] @@ -177,7 +177,7 @@ application.totp: skew: 1 ``` -### Duo Push Notification +#### Duo Push Notification This is the most practical method, when you connect to your SSO, you will receive a notification that will allow you to validate your access. The configuration requires 3 elements that we will create directly on the [Duo](https://duo.com) website. In the Applications tab, click on Protect an Application and look for Partner Auth API. You can now retrieve the following elements and enter them in the Authelia configuration: - **Integration key** - **Secret Key** @@ -194,7 +194,7 @@ duo_api: You can now start the Authelia docker, if all goes well there should be no errors. If this is the case you can go on, if not you can correct the problems until there are no more. To solve the problems you can use the Authelia [documentation](https://www.authelia.com/docs), but also their [github](https://github.com/authelia/authelia). -## Nginx Proxy Manager +## Integration with a reverse proxy First of all we will have to set up our Authelia subdomain so that it is accessible from the outside, but also protected with certificates. To do this, create an entry in your reverse proxy and add your subdomain, see: {{< article link="/posts/how-to-host-multiple-services-on-one-public-ip/" >}} @@ -295,3 +295,7 @@ You can connect with one of the credencials you created in the `users_database.y To configure/modify the double authentication method, go to the subdomain you have configured for Authelia (`ex. auth.youdomain.com`). Then select `Methods`: + +## Conclusion + +You now have SSO with dual authentication. This is particularly useful if you want to use the same account on several applications, add authentication to certain applications, or manage access rights to applications. diff --git a/content/posts/how-to-host-multiple-services-on-one-public-ip/index.md b/content/posts/how-to-host-multiple-services-on-one-public-ip/index.md index c7083b4..e11ae1d 100644 --- a/content/posts/how-to-host-multiple-services-on-one-public-ip/index.md +++ b/content/posts/how-to-host-multiple-services-on-one-public-ip/index.md @@ -12,7 +12,7 @@ To solve this problem we will divide the problem in several parts. First, we wil --- -## Dynamic IP +## Dynamic/Static IP As described in the intro one of the big problems of self hosted on a non professional connection is that in general the external IP of the router is not fixed. That means that at each restart, the IP has a chance to change. This is a big problem, indeed to link a domain to our site for example, the DNS must know the server IP and more precisely the external IP of our network. A solution would be to manually change the IP at each change, but this is clearly not practical and makes our service infrastructure very unstable. But there is an automatic solution to this problem: DDNS. > 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. @@ -160,6 +160,6 @@ Now let's configure our SSL certificate. 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. ---- +## Conclusion You now have a complete setup for a real selfhosting network. But that's not all, it's a simple setup for which we can add other things. Nginx Proxy Manager already has other features, for example the "Access Lists" which allow a simple authentication system. We could also set up a SSO system to increase security, a proxy and fail2ban with CloudFlare, ... (articles coming soon will cover these topics). diff --git a/content/posts/how-to-index-your-blog-on-google/index.md b/content/posts/how-to-index-your-blog-on-google/index.md index 2099b13..b32ebb6 100644 --- a/content/posts/how-to-index-your-blog-on-google/index.md +++ b/content/posts/how-to-index-your-blog-on-google/index.md @@ -6,6 +6,8 @@ slug: "how-to-index-your-blog-on-google" tags: ["indexing"] --- +## What's indexation ? + Today, if you want your blog/portfolio to be visible to others it is almost mandatory that it be listed on google. For your site to appear on the search engine, Google needs information! This information is usually collected automatically by a robot that Google has developed. This "Googlebot" wanders from site to site and from page to page to make a "map" of the web. This allows then to make the search engine of Google very relevant during your research. @@ -14,7 +16,7 @@ If you want more details on how the Googlebot works, I let you see the documenta As I said above this process is automatic, but we can help it to do a better job and a more accurate scan of our site. This will allow us to be better referenced and potentially visible by more people! ---- +## Register your domain for indexation First we will have to add our domain to the Google Search Console site. To access the site you must be logged in with a Google account. @@ -56,7 +58,7 @@ After a few minutes we notice that our sitemap index has been detected and that After this step, there is nothing left to do but wait. This can take from a few hours to several weeks in some cases.--- -EDIT : +## Update After about 36 hours, my blog has been indexed on google and is now accessible with a simple search! diff --git a/content/posts/how-to-make-daily-backups-of-your-homelab/index.md b/content/posts/how-to-make-daily-backups-of-your-homelab/index.md index 74dc34c..5c3c3d8 100644 --- a/content/posts/how-to-make-daily-backups-of-your-homelab/index.md +++ b/content/posts/how-to-make-daily-backups-of-your-homelab/index.md @@ -1,14 +1,14 @@ --- -title: "How to make daily backups of your HomeLab?" +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", "homelab"] +tags: ["backup", "homelab", "tools"] --- You have your local homelab in which you store all your data. You have set up security measures to avoid data loss: parity disk, hot spare, cold spare, RAID, ... But in the event that your server burns down, a power surge fries your server and the data it contains, ... are you ready? -In this article we will talk about the 3-2-1 Backup Rule. But what is it? +## What's the 3-2-1 Backup Rule ? > The term 3-2-1 was coined by US photographer Peter Krogh while writing a book about digital asset management in the early noughties. > - 3: The rule said there should be three copies of data. One is the original or production copy, then there should be two more copies, making three. diff --git a/content/posts/my-current-homelab/index.md b/content/posts/my-current-homelab/index.md index b3cf858..8d34be5 100644 --- a/content/posts/my-current-homelab/index.md +++ b/content/posts/my-current-homelab/index.md @@ -6,6 +6,8 @@ slug: "my-current-homelab" tags: ["homelab"] --- +## What's a Homelab ? + As you may or may not know, I have a homelab at home. For people who don't know what it is : > A home lab is essentially a compounded system that connects all your devices. Thus, creating an environment for you to experiment and build new projects at the comfort of your home! @@ -16,8 +18,6 @@ Initially, my goal was to create a media server accessible from anywhere with Pl To present you all this I will first list the hardware, then the topology I used and the presentation of the services I host. And I will finish with a conclusion on the first 3 years of my homelab! ---- - ## Hardware Currently my homelab is composed of the following elements: ### Networking