diff options
author | Christian Cleberg <hello@cleberg.net> | 2025-04-01 22:01:32 -0500 |
---|---|---|
committer | Christian Cleberg <hello@cleberg.net> | 2025-04-01 22:01:32 -0500 |
commit | db9a372547a71279402a59ac66a29e15b65ec841 (patch) | |
tree | 9c6caefdcbffe39e3fa6ec3835a27ddc863dadcf /content/blog | |
parent | 0325ac27aeb7c7ee1b205b3b33eecd9cc1503a41 (diff) | |
download | cleberg.net-db9a372547a71279402a59ac66a29e15b65ec841.tar.gz cleberg.net-db9a372547a71279402a59ac66a29e15b65ec841.tar.bz2 cleberg.net-db9a372547a71279402a59ac66a29e15b65ec841.zip |
migrate back to cleberg.net
Diffstat (limited to 'content/blog')
19 files changed, 51 insertions, 51 deletions
diff --git a/content/blog/2021-04-23-php-comment-system.org b/content/blog/2021-04-23-php-comment-system.org index c2a5b6f..ac5b1dc 100644 --- a/content/blog/2021-04-23-php-comment-system.org +++ b/content/blog/2021-04-23-php-comment-system.org @@ -57,7 +57,7 @@ that future readers will be able to see the source data long after I'm gone, or the website has gone offline. However, I still haven't committed any images served on my blog to Git, as I'm not entirely sold on Git LFS yet - for now, images can be found at -[[https://img.cmc.pub][img.cmc.pub]]. +[[https://img.cleberg.net][img.cleberg.net]]. Saving my comments back to the Git repository ensures that another aspect of my site will degrade gracefully. diff --git a/content/blog/2022-02-10-njalla-dns-api.org b/content/blog/2022-02-10-njalla-dns-api.org index 71664dc..b68d5ac 100644 --- a/content/blog/2022-02-10-njalla-dns-api.org +++ b/content/blog/2022-02-10-njalla-dns-api.org @@ -6,9 +6,9 @@ * Njalla's API As noted in my recent post about -[[https://cmc.pub/blog/ditching-cloudflare/][switching to Njalla from +[[https://cleberg.net/blog/ditching-cloudflare/][switching to Njalla from Cloudflare]], I was searching for a way to replace my very easy-to-use -bash script to [[https://cmc.pub/blog/cloudflare-dns-api/][update Cloudflare's +bash script to [[https://cleberg.net/blog/cloudflare-dns-api/][update Cloudflare's DNS via their API]]. To reiterate what I said in those posts, this is a common necessity for diff --git a/content/blog/2022-02-16-debian-and-nginx.org b/content/blog/2022-02-16-debian-and-nginx.org index e74b4a5..5c611d4 100644 --- a/content/blog/2022-02-16-debian-and-nginx.org +++ b/content/blog/2022-02-16-debian-and-nginx.org @@ -18,7 +18,7 @@ alert: it feels identical to Ubuntu for my purposes. I did the normal things when first launching the VPS, such as adding a new user, locking down SSH, etc. If you want to see that level of detail, read my other post about -[[https://cmc.pub/blog/how-to-set-up-a-vps-web-server/][How to Set +[[https://cleberg.net/blog/how-to-set-up-a-vps-web-server/][How to Set Up a VPS Web Server]]. All of this has been similar, apart from small things such as the @@ -159,7 +159,7 @@ the Nginx docs to see what other fun things I can do with all of this. Finally, I set up the Agate software on this server again to host my Gemini server content, using Rust as I have before. You can read my other post for more information on installing Agate: -[[https://cmc.pub/blog/hosting-a-gemini-server/][Hosting a Gemini +[[https://cleberg.net/blog/hosting-a-gemini-server/][Hosting a Gemini Server]]. All in all, Debian + Nginx is very slick and I prefer it over my old diff --git a/content/blog/2022-02-17-exiftool.org b/content/blog/2022-02-17-exiftool.org index c7cb790..3798ebb 100644 --- a/content/blog/2022-02-17-exiftool.org +++ b/content/blog/2022-02-17-exiftool.org @@ -45,7 +45,7 @@ distributions, but I really only care to test out this one package. ** Recursively Strip Data I actually use this tool extensively to strip any photos uploaded to the -website that serves all the images for my blog (=img.cmc.pub=). +website that serves all the images for my blog (=img.cleberg.net=). The following command is incredibly useful and can be modified to include any image extensions that =exiftool= supports: diff --git a/content/blog/2022-03-24-server-hardening.org b/content/blog/2022-03-24-server-hardening.org index 8704a27..7c9af8d 100644 --- a/content/blog/2022-03-24-server-hardening.org +++ b/content/blog/2022-03-24-server-hardening.org @@ -110,7 +110,7 @@ via your randomized port. ** =ufw= -To see how to configure =ufw=, see my other post: [[https://cmc.pub/blog/ufw.html][Secure Your +To see how to configure =ufw=, see my other post: [[https://cleberg.net/blog/ufw.html][Secure Your Network with the Uncomplicated Firewall]]. The general notion with an on-device firewall is that you want to deny all @@ -196,7 +196,7 @@ sudo ufw enable This process involves editing a couple files and installing an MFA package, so I will not include all the details in this post. To see how to configure - MFA for =ssh=, see my other post: [[https://cmc.pub/blog/ssh-mfa.html][Enabling MFA for + MFA for =ssh=, see my other post: [[https://cleberg.net/blog/ssh-mfa.html][Enabling MFA for SSH]]. ** =fail2ban= diff --git a/content/blog/2022-06-01-ditching-cloudflare.org b/content/blog/2022-06-01-ditching-cloudflare.org index b7ba52d..4b18b91 100644 --- a/content/blog/2022-06-01-ditching-cloudflare.org +++ b/content/blog/2022-06-01-ditching-cloudflare.org @@ -77,7 +77,7 @@ the server hosting my various websites and apps. However, as I was moving away from Cloudflare, I was not able to find a suitable replacement that was both inexpensive and simple. So, I simply -went back to hosting [[https://cmc.pub/blog/set-up-nginx-reverse-proxy/][my own +went back to hosting [[https://cleberg.net/blog/set-up-nginx-reverse-proxy/][my own reverse proxy with Nginx]]. With the recent additions of Unifi hardware in my server/network rack, I am much more protected against spam and malicious attacks at the network edge than I was before I switched to diff --git a/content/blog/2022-11-29-nginx-referrer-ban-list.org b/content/blog/2022-11-29-nginx-referrer-ban-list.org index 27c39fb..698196a 100644 --- a/content/blog/2022-11-29-nginx-referrer-ban-list.org +++ b/content/blog/2022-11-29-nginx-referrer-ban-list.org @@ -101,7 +101,7 @@ In order to test the results, let's curl the contents of our site. To start, I'll curl the site normally: #+begin_src sh -curl https://cmc.pub +curl https://cleberg.net #+end_src The HTML contents of the page come back successfully: @@ -113,7 +113,7 @@ The HTML contents of the page come back successfully: Next, let's include a banned referrer: #+begin_src sh -curl --referer https://news.ycombinator.com https://cmc.pub +curl --referer https://news.ycombinator.com https://cleberg.net #+end_src This time, I'm met with a 403 Forbidden response page. That means we are diff --git a/content/blog/2023-01-05-mass-unlike-tumblr-posts.org b/content/blog/2023-01-05-mass-unlike-tumblr-posts.org index d0f6cd2..e3811c6 100644 --- a/content/blog/2023-01-05-mass-unlike-tumblr-posts.org +++ b/content/blog/2023-01-05-mass-unlike-tumblr-posts.org @@ -56,7 +56,7 @@ and be sure you're on the "Console" tab. It should look something like this (this is in Firefox, Chromium should be similar): #+caption: Firefox Dev !Tools -[[https:///img.cmc.pub/blog/20230105-mass-unlike-tumblr-posts/dev_console.png]] +[[https:///img.cleberg.net/blog/20230105-mass-unlike-tumblr-posts/dev_console.png]] All you need to do is paste the following snippet into the dev console. This code will collect all unlike buttons (=elements=) and then click @@ -88,7 +88,7 @@ the console, pressed Enter, and then the posts are automatically unliked. #+caption: Script !Results -[[https:///img.cmc.pub/blog/20230105-mass-unlike-tumblr-posts/script_results.png]] +[[https:///img.cleberg.net/blog/20230105-mass-unlike-tumblr-posts/script_results.png]] Thinking about this further, I would bet that this would be fairly simple to package into a browser add-on so that users could install the diff --git a/content/blog/2023-06-30-self-hosting-voyager.org b/content/blog/2023-06-30-self-hosting-voyager.org index 33baef9..7e66776 100644 --- a/content/blog/2023-06-30-self-hosting-voyager.org +++ b/content/blog/2023-06-30-self-hosting-voyager.org @@ -120,4 +120,4 @@ sudo systemctl restart nginx.service The site will now be available at the =server_name= you specified above! You can visit my instance at -[[https://voyager.cmc.pub][voyager.cmc.pub]] for an example. +[[https://voyager.cleberg.net][voyager.cleberg.net]] for an example. diff --git a/content/blog/2023-10-04-digital-minimalism.org b/content/blog/2023-10-04-digital-minimalism.org index ac4d4f5..798d3ff 100644 --- a/content/blog/2023-10-04-digital-minimalism.org +++ b/content/blog/2023-10-04-digital-minimalism.org @@ -3,7 +3,7 @@ #+description: #+slug: digital-minimalism -I've written [[https://cmc.pub/wiki/#digital-garden][a note about minimalism]] +I've written [[https://cleberg.net/wiki/#digital-garden][a note about minimalism]] before, but I wanted to dedicate some time to reflect on digital minimalism and how I've been able to minimize the impact of digital devices in my life. diff --git a/content/blog/2023-10-17-self-hosting-anonymousoverflow.org b/content/blog/2023-10-17-self-hosting-anonymousoverflow.org index 6479fbf..3b9068b 100644 --- a/content/blog/2023-10-17-self-hosting-anonymousoverflow.org +++ b/content/blog/2023-10-17-self-hosting-anonymousoverflow.org @@ -6,7 +6,7 @@ * Overview I recently launched an instance of AnonymousOverflow at -[[https://ao.cmc.pub][ao.cmc.pub]] and wanted to write a brief +[[https://ao.cleberg.net][ao.cleberg.net]] and wanted to write a brief post on how easy it is to install with Docker Compose and Nginx. This guide uses Ubuntu server, Docker Compose, and Nginx as a reverse @@ -128,4 +128,4 @@ sudo systemctl restart nginx.service #+end_src The website will now be available publicly. Visit -[[https://ao.cmc.pub][my instance]] for an example. +[[https://ao.cleberg.net][my instance]] for an example. diff --git a/content/blog/2024-03-13-doom-emacs.org b/content/blog/2024-03-13-doom-emacs.org index 2f2dc92..04e9989 100644 --- a/content/blog/2024-03-13-doom-emacs.org +++ b/content/blog/2024-03-13-doom-emacs.org @@ -269,10 +269,10 @@ list them all, so I will simply cover a few of the basic commands I use myself. (setq org-publish-project-alist `(("blog" - :base-directory "~/Source/cmc.pub/" + :base-directory "~/Source/cleberg.net/" :base-extension "org" :recursive t - :publishing-directory "~/Source/cmc.pub/public/" + :publishing-directory "~/Source/cleberg.net/public/" :publishing-function org-html-publish-to-html ;; HTML5 :html-doctype "html5" @@ -311,13 +311,13 @@ list them all, so I will simply cover a few of the basic commands I use myself. ) ("static" - :base-directory "~/Source/cmc.pub/static/" + :base-directory "~/Source/cleberg.net/static/" :base-extension "css\\|txt\\|jpg\\|gif\\|png" :recursive t - :publishing-directory "~/Source/cmc.pub/public/" + :publishing-directory "~/Source/cleberg.net/public/" :publishing-function org-publish-attachment) - ("cmc.pub" :components ("blog" "static")))) + ("cleberg.net" :components ("blog" "static")))) #+end_src ** General Thoughts diff --git a/content/blog/2024-03-29-org-blog.org b/content/blog/2024-03-29-org-blog.org index 6173231..5ae1a2b 100644 --- a/content/blog/2024-03-29-org-blog.org +++ b/content/blog/2024-03-29-org-blog.org @@ -8,7 +8,7 @@ feed duplicated itself when I moved this blog over to org-mode last night. This post focuses specifically on the configuration and tools I use to blog from Emacs with Org-Mode and does not focus on Emacs or Org-Mode themselves. Refer to -the post I wrote about [[https://cmc.pub/blog/doom-emacs-org-mode.html][Doom Emacs & Org-Mode]] for more information about my base +the post I wrote about [[https://cleberg.net/blog/doom-emacs-org-mode.html][Doom Emacs & Org-Mode]] for more information about my base Emacs configuration. * Weblorg @@ -60,7 +60,7 @@ Now that I've installed weblorg, I need to configure the project. I'll start by navigating to my site's source code and creating a =publish.el= file. #+begin_src sh -cd ~/Source/cmc.pub && nano publish.el +cd ~/Source/cleberg.net && nano publish.el #+end_src Since I'm using Doom, Emacs will not automatically load the packages I need @@ -80,13 +80,13 @@ explicitly tell Emacs where Doom stores the =htmlize=, =weblorg=, and ;; To build with the custom URL below, call: ;;;; ENV=prod emacs --script publish.el (if (string= (getenv "ENV") "prod") - (setq weblorg-default-url "https://cmc.pub")) + (setq weblorg-default-url "https://cleberg.net")) ;; site metadata (weblorg-site :theme nil - :template-vars '(("site_name" . "cmc.pub") - ("site_owner" . "hello@cmc.pub") + :template-vars '(("site_name" . "cleberg.net") + ("site_owner" . "hello@cleberg.net") ("site_description" . "Just a blip of ones and zeroes."))) ;; route for rendering the index page of the website @@ -235,7 +235,7 @@ Within this script, I do the following: #+begin_src sh rm -rf .build/* && \ ENV=prod emacs--script publish.el && \ -scp -r .build/* ubuntu:/var/www/cmc.pub/ +scp -r .build/* ubuntu:/var/www/cleberg.net/ #+end_src *** Time to Build diff --git a/content/blog/2024-04-08-docker-local-web-server.org b/content/blog/2024-04-08-docker-local-web-server.org index ee8ea3a..b768c44 100644 --- a/content/blog/2024-04-08-docker-local-web-server.org +++ b/content/blog/2024-04-08-docker-local-web-server.org @@ -76,7 +76,7 @@ To see the updates, you can delete the previous container in the GUI or run =docker run= command below. #+begin_src sh -docker run -it -d -p 8000:80 --name web -v ~/Source/cmc.pub/.build:/usr/share/nginx/html -v ~/Source/cmc.pub/nginx-config.conf:/etc/nginx/conf.d/default.conf nginx +docker run -it -d -p 8000:80 --name web -v ~/Source/cleberg.net/.build:/usr/share/nginx/html -v ~/Source/cleberg.net/nginx-config.conf:/etc/nginx/conf.d/default.conf nginx #+end_src Here's an example of my development configuration file. @@ -84,14 +84,14 @@ Here's an example of my development configuration file. #+begin_src conf # nginx-config.conf server { - server_name cmc.pub www.cmc.pub; + server_name cleberg.net www.cleberg.net; root /usr/share/nginx/html; index index.html; autoindex on; - access_log /var/log/nginx/cmc.pub.access.log; - error_log /var/log/nginx/cmc.pub.error.log; + access_log /var/log/nginx/cleberg.net.access.log; + error_log /var/log/nginx/cleberg.net.error.log; location / { try_files $uri $uri/ =404; @@ -109,7 +109,7 @@ server { I am currently blogging with [[https://emacs.love/weblorg/][weblorg]], which uses a custom =publish.el= file to build the static site. Within this file, I have configured my deployment process to check for the =ENV= variable in thesh and if it's set to =prod=, the script -will set the base URLs to =https://cmc.pub=. If not, it sets the base URLs +will set the base URLs to =https://cleberg.net=. If not, it sets the base URLs to =localhost:8000= (which matches the port used in the container above). Therefore, I have modified my =build.sh= script to build with =localhost= URLs @@ -123,7 +123,7 @@ if [ "$ENV" == "prod" ]; then echo "Environment = Production" && \ rm -rf .build/* && \ emacs --script publish.el && \ - scp -r .build/* ubuntu:/var/www/cmc.pub/ + scp -r .build/* ubuntu:/var/www/cleberg.net/ else echo "Environment = Development" && \ rm -rf .build/* && \ diff --git a/content/blog/2024-04-18-mu4e.org b/content/blog/2024-04-18-mu4e.org index 0f89ac3..40a34cc 100644 --- a/content/blog/2024-04-18-mu4e.org +++ b/content/blog/2024-04-18-mu4e.org @@ -159,9 +159,9 @@ auth on host smtp.startmail.com port 465 protocol smtp -from hello@cmc.pub -user hello@cmc.pub -passwordeval security find-generic-password -s startmail -a hello@cmc.pub -w +from hello@cleberg.net +user hello@cleberg.net +passwordeval security find-generic-password -s startmail -a hello@cleberg.net -w tls on tls_starttls off diff --git a/content/blog/2024-08-11-org-mode-features.org b/content/blog/2024-08-11-org-mode-features.org index 94ba933..e089b51 100644 --- a/content/blog/2024-08-11-org-mode-features.org +++ b/content/blog/2024-08-11-org-mode-features.org @@ -7,7 +7,7 @@ * Cycling (Folding) #+begin_quote -[[https://github.com/ccleberg/cmc.pub/blob/main/content/blog/2024-08-11-org-mode-features.org?plain=1#L7][View this section]] in org-mode. +[[https://github.com/ccleberg/cleberg.net/blob/main/content/blog/2024-08-11-org-mode-features.org?plain=1#L7][View this section]] in org-mode. #+end_quote My absolute top-used feature is [[https://orgmode.org/manual/Global-and-local-cycling.html][global and local cycling]] and it's not even @@ -55,7 +55,7 @@ at the top of the buffer: * TODO Lists #+begin_quote -[[https://github.com/ccleberg/cmc.pub/blob/main/content/blog/2024-08-11-org-mode-features.org?plain=1#L55][View this section]] in org-mode. +[[https://github.com/ccleberg/cleberg.net/blob/main/content/blog/2024-08-11-org-mode-features.org?plain=1#L55][View this section]] in org-mode. #+end_quote Next up on in this post are [[https://orgmode.org/manual/TODO-Items.html][TODO Lists]]. Being able to combine note taking and @@ -106,7 +106,7 @@ that variable to alert me of tasks with iOS native notifications. * Time Stamping #+begin_quote -[[https://github.com/ccleberg/cmc.pub/blob/main/content/blog/2024-08-11-org-mode-features.org?plain=1#L106][View this section]] in org-mode. +[[https://github.com/ccleberg/cleberg.net/blob/main/content/blog/2024-08-11-org-mode-features.org?plain=1#L106][View this section]] in org-mode. #+end_quote Another great feature are the [[https://orgmode.org/manual/Dates-and-Times.html][dates and times]] functionalities within org-mode. @@ -137,7 +137,7 @@ different options available when creating timestamps. * Tags #+begin_quote -[[https://github.com/ccleberg/cmc.pub/blob/main/content/blog/2024-08-11-org-mode-features.org?plain=1#L137][View this section]] in org-mode. +[[https://github.com/ccleberg/cleberg.net/blob/main/content/blog/2024-08-11-org-mode-features.org?plain=1#L137][View this section]] in org-mode. #+end_quote Next up are [[https://orgmode.org/manual/Tags.html][Tags]], which provide a way to document contexts within and across @@ -162,7 +162,7 @@ m= and search for a tag of your choosing. * Tables #+begin_quote -[[https://github.com/ccleberg/cmc.pub/blob/main/content/blog/2024-08-11-org-mode-features.org?plain=1#L162][View this section]] in org-mode. +[[https://github.com/ccleberg/cleberg.net/blob/main/content/blog/2024-08-11-org-mode-features.org?plain=1#L162][View this section]] in org-mode. #+end_quote One of the most inconvenient parts of writing in Markdown was dealing with @@ -232,7 +232,7 @@ on the second line. * Source Code Blocks #+begin_quote -[[https://github.com/ccleberg/cmc.pub/blob/main/content/blog/2024-08-11-org-mode-features.org?plain=1#L232][View this section]] in org-mode. +[[https://github.com/ccleberg/cleberg.net/blob/main/content/blog/2024-08-11-org-mode-features.org?plain=1#L232][View this section]] in org-mode. #+end_quote ** Introduction to Source Code Blocks @@ -302,7 +302,7 @@ results below the code block. * Exporting and Publishing #+begin_quote -[[https://github.com/ccleberg/cmc.pub/blob/main/content/blog/2024-08-11-org-mode-features.org?plain=1#L302][View this section]] in org-mode. +[[https://github.com/ccleberg/cleberg.net/blob/main/content/blog/2024-08-11-org-mode-features.org?plain=1#L302][View this section]] in org-mode. #+end_quote I would be remiss if I did not mention the native [[https://orgmode.org/manual/Exporting.html][exporting and publishing]] @@ -336,7 +336,7 @@ external [[https://orgmode.org/tools.html][tools]], including [[https://orgmode. * Agenda #+begin_quote -[[https://github.com/ccleberg/cmc.pub/blob/main/content/blog/2024-08-11-org-mode-features.org?plain=1#L336][View this section]] in org-mode. +[[https://github.com/ccleberg/cleberg.net/blob/main/content/blog/2024-08-11-org-mode-features.org?plain=1#L336][View this section]] in org-mode. #+end_quote Last, but not least, are [[https://orgmode.org/manual/Agenda-Views.html][Agenda Views]]. With agenda views, you can easily view diff --git a/content/blog/2024-12-27-self-hosting-the-lounge.org b/content/blog/2024-12-27-self-hosting-the-lounge.org index 7bacbec..a88adf3 100644 --- a/content/blog/2024-12-27-self-hosting-the-lounge.org +++ b/content/blog/2024-12-27-self-hosting-the-lounge.org @@ -11,7 +11,7 @@ desirable features for a modern IRC client. The Lounge supports push notifications, link previews, file uploads, always connected, multi-user support, and is available as a PWA for mobile devices. -I wanted to write this as I had written a post about [[https://cmc.pub/blog/self-hosting-convos.html][self-hosting Convos]] and +I wanted to write this as I had written a post about [[https://cleberg.net/blog/self-hosting-convos.html][self-hosting Convos]] and have recently migrated over to The Lounge instead. If you'd like to try a demo first, head over to [[https://demo.thelounge.chat/][the official demo website]]. diff --git a/content/blog/2025-02-24-email-migration.org b/content/blog/2025-02-24-email-migration.org index b2eb93f..b9cf3ff 100644 --- a/content/blog/2025-02-24-email-migration.org +++ b/content/blog/2025-02-24-email-migration.org @@ -48,7 +48,7 @@ This led to a dead end as my two methods failed: At this point, I decided to take a step back and use [[https://github.com/djcb/mu][mu]], a command-line utility that would index my files and sync back and forth with Migadu for me. -Using my blog post, [[https://cmc.pub/blog/mu4e.html][Email in Doom Emacs with Mu4e on macOS]], (and skipping the +Using my blog post, [[https://cleberg.net/blog/mu4e.html][Email in Doom Emacs with Mu4e on macOS]], (and skipping the mu4e parts) I was able to set up a minimal directory connected to my Migadu IMAP account. Using my terminal, I simply moved all of my messages into the =mu= directory and synchronized the account, and voila, my messages synchronized diff --git a/content/blog/2025-03-11-new-domain.org b/content/blog/2025-03-11-new-domain.org index 4c77575..36b9320 100644 --- a/content/blog/2025-03-11-new-domain.org +++ b/content/blog/2025-03-11-new-domain.org @@ -10,9 +10,9 @@ result: |----------+-------------------+---------------| | Category | Old | Current | |----------+-------------------+---------------| -| Domain | cleberg.net | [[https://cmc.pub][cmc.pub]] | -| Email | hello@cleberg.net | [[mailto:hello@cmc.pub][hello@cmc.pub]] | -| GPG Key | [[https://keys.openpgp.org/search?q=hello%40cleberg.net][hello@cleberg.net]] | [[https://keys.openpgp.org/search?q=hello%40cmc.pub][hello@cmc.pub]] | +| Domain | cleberg.net | [[https://cleberg.net][cleberg.net]] | +| Email | hello@cleberg.net | [[mailto:hello@cleberg.net][hello@cleberg.net]] | +| GPG Key | [[https://keys.openpgp.org/search?q=hello%40cleberg.net][hello@cleberg.net]] | [[https://keys.openpgp.org/search?q=hello%40cleberg.net][hello@cleberg.net]] | |----------+-------------------+---------------| -/New services will continue to be updated on the [[https://cmc.pub/services/][services]] page./ +/New services will continue to be updated on the [[https://cleberg.net/services/][services]] page./ |