Fixing my mistake!

This commit is contained in:
John Doe 2025-02-28 01:40:54 +01:00 committed by Rakowskiii
parent 1e96c1dd91
commit 9f7bc98553
21 changed files with 376 additions and 654 deletions

View File

@ -1,53 +0,0 @@
---
title: "Automating Hugo Deployment with Gitea Actions"
date: 2025-02-27
author: "Dev"
tags: ["gitea", "ci/cd", "hugo"]
---
Recently, I tried setting up **Gitea Actions** to automatically update my Hugo blog whenever I pushed new content. The idea was simple:
- Use Giteas built-in CI/CD to pull the repo,
- Build the site using Hugo,
- Deploy it to the server.
## Setting Up Gitea Actions
First, I created a `.gitea/workflows/deploy.yml` file with the following steps:
```yaml
name: Deploy Hugo Site
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Install Hugo
run: |
sudo apt update && sudo apt install -y hugo
- name: Build site
run: hugo -D
- name: Deploy to server
run: |
scp -r public/* user@server:/var/www/html/
```
# Authentication Issues 😩
To deploy, I needed SSH access to the server. Gitea doesnt have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.
![My SSH Key](/images/mykey.png)
I knew this wasn't ideal, but I just wanted to get it working first. Unfortunately, after multiple attempts, it still failed with permission denied (publickey) errors.
# What's Next? 🤔
Instead of fighting with Gitea Actions, I decided to try something else. In my next post, I'll explain how I switched to a simpler, more reliable approach using a sync service.

13
content/posts/oopsie.md Normal file
View File

@ -0,0 +1,13 @@
---
title: "Oops... That Was a Mistake"
date: 2025-02-27
author: "Dev"
tags: ["gitea", "security", "hugo"]
---
So... turns out **posting my SSH private key** in a blog post wasnt the smartest move. 🙃
I didnt even realize it until someone pointed it out.
Obviously, I had to **delete the previous post** ASAP. Lesson learned: **Always double-check what you're pushing to production!**
A new, **safer** version of the post will be up soon. This time, Ill be using a better approach—stay tuned!

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

View File

@ -118,17 +118,18 @@
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Automating Hugo Deployment with Gitea Actions
<h2 class="entry-hint-parent">Oops... That Was a Mistake
</h2>
</header>
<div class="entry-content">
<p>Recently, I tried setting up Gitea Actions to automatically update my Hugo blog whenever I pushed new content. The idea was simple:
Use Giteas built-in CI/CD to pull the repo, Build the site using Hugo, Deploy it to the server. Setting Up Gitea Actions First, I created a .gitea/workflows/deploy.yml file with the following steps:
name: Deploy Hugo Site on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Clone repository uses: actions/checkout@v3 - name: Install Hugo run: | sudo apt update &amp;&amp; sudo apt install -y hugo - name: Build site run: hugo -D - name: Deploy to server run: | scp -r public/* user@server:/var/www/html/ Authentication Issues 😩 To deploy, I needed SSH access to the server. Gitea doesnt have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.
...</p>
<p>So… turns out posting my SSH private key in a blog post wasnt the smartest move. 🙃
I didnt even realize it until someone pointed it out.
Obviously, I had to delete the previous post ASAP. Lesson learned: Always double-check what youre pushing to production!
A new, safer version of the post will be up soon. This time, Ill be using a better approach—stay tuned!
</p>
</div>
<footer class="entry-footer"><span title='2025-02-27 00:00:00 +0000 UTC'>February 27, 2025</span>&nbsp;·&nbsp;Dev</footer>
<a class="entry-link" aria-label="post link to Automating Hugo Deployment with Gitea Actions" href="https://blog.rakowskiii.com/posts/first-attempt/"></a>
<a class="entry-link" aria-label="post link to Oops... That Was a Mistake" href="https://blog.rakowskiii.com/posts/oopsie/"></a>
</article>
</main>

View File

@ -9,44 +9,14 @@
<lastBuildDate>Thu, 27 Feb 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="https://blog.rakowskiii.com/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Automating Hugo Deployment with Gitea Actions</title>
<link>https://blog.rakowskiii.com/posts/first-attempt/</link>
<title>Oops... That Was a Mistake</title>
<link>https://blog.rakowskiii.com/posts/oopsie/</link>
<pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate>
<guid>https://blog.rakowskiii.com/posts/first-attempt/</guid>
<description>&lt;p&gt;Recently, I tried setting up &lt;strong&gt;Gitea Actions&lt;/strong&gt; to automatically update my Hugo blog whenever I pushed new content. The idea was simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use Giteas built-in CI/CD to pull the repo,&lt;/li&gt;
&lt;li&gt;Build the site using Hugo,&lt;/li&gt;
&lt;li&gt;Deploy it to the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;setting-up-gitea-actions&#34;&gt;Setting Up Gitea Actions&lt;/h2&gt;
&lt;p&gt;First, I created a &lt;code&gt;.gitea/workflows/deploy.yml&lt;/code&gt; file with the following steps:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Deploy Hugo Site&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;on&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;push&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;branches&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#ae81ff&#34;&gt;main&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;jobs&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;build&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;runs-on&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;ubuntu-latest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;steps&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Clone repository&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;uses&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;actions/checkout@v3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Install Hugo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;run&lt;/span&gt;: |&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; sudo apt update &amp;amp;&amp;amp; sudo apt install -y hugo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Build site&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;run&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;hugo -D&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Deploy to server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;run&lt;/span&gt;: |&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; scp -r public/* user@server:/var/www/html/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;authentication-issues-&#34;&gt;Authentication Issues 😩&lt;/h1&gt;
&lt;p&gt;To deploy, I needed SSH access to the server. Gitea doesnt have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.&lt;/p&gt;</description>
<guid>https://blog.rakowskiii.com/posts/oopsie/</guid>
<description>&lt;p&gt;So&amp;hellip; turns out &lt;strong&gt;posting my SSH private key&lt;/strong&gt; in a blog post wasnt the smartest move. 🙃&lt;br&gt;
I didnt even realize it until someone pointed it out.&lt;/p&gt;
&lt;p&gt;Obviously, I had to &lt;strong&gt;delete the previous post&lt;/strong&gt; ASAP. Lesson learned: &lt;strong&gt;Always double-check what you&amp;rsquo;re pushing to production!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A new, &lt;strong&gt;safer&lt;/strong&gt; version of the post will be up soon. This time, Ill be using a better approach—stay tuned!&lt;/p&gt;</description>
</item>
</channel>
</rss>

View File

@ -1,344 +0,0 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>Automating Hugo Deployment with Gitea Actions | Dev Logbook</title>
<meta name="keywords" content="gitea, ci/cd, hugo">
<meta name="description" content="Recently, I tried setting up Gitea Actions to automatically update my Hugo blog whenever I pushed new content. The idea was simple:
Use Giteas built-in CI/CD to pull the repo,
Build the site using Hugo,
Deploy it to the server.
Setting Up Gitea Actions
First, I created a .gitea/workflows/deploy.yml file with the following steps:
name: Deploy Hugo Site
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Install Hugo
run: |
sudo apt update &amp;&amp; sudo apt install -y hugo
- name: Build site
run: hugo -D
- name: Deploy to server
run: |
scp -r public/* user@server:/var/www/html/
Authentication Issues 😩
To deploy, I needed SSH access to the server. Gitea doesnt have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.">
<meta name="author" content="Dev">
<link rel="canonical" href="https://blog.rakowskiii.com/posts/first-attempt/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.45e028aa8ce0961349adf411b013ee39406be2c0bc80d4ea3fc04555f7f4611a.css" integrity="sha256-ReAoqozglhNJrfQRsBPuOUBr4sC8gNTqP8BFVff0YRo=" rel="preload stylesheet" as="style">
<link rel="icon" href="https://blog.rakowskiii.com/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="https://blog.rakowskiii.com/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://blog.rakowskiii.com/favicon-32x32.png">
<link rel="apple-touch-icon" href="https://blog.rakowskiii.com/apple-touch-icon.png">
<link rel="mask-icon" href="https://blog.rakowskiii.com/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="https://blog.rakowskiii.com/posts/first-attempt/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
</noscript><meta property="og:url" content="https://blog.rakowskiii.com/posts/first-attempt/">
<meta property="og:site_name" content="Dev Logbook">
<meta property="og:title" content="Automating Hugo Deployment with Gitea Actions">
<meta property="og:description" content="Recently, I tried setting up Gitea Actions to automatically update my Hugo blog whenever I pushed new content. The idea was simple:
Use Giteas built-in CI/CD to pull the repo, Build the site using Hugo, Deploy it to the server. Setting Up Gitea Actions First, I created a .gitea/workflows/deploy.yml file with the following steps:
name: Deploy Hugo Site on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Clone repository uses: actions/checkout@v3 - name: Install Hugo run: | sudo apt update &amp;&amp; sudo apt install -y hugo - name: Build site run: hugo -D - name: Deploy to server run: | scp -r public/* user@server:/var/www/html/ Authentication Issues 😩 To deploy, I needed SSH access to the server. Gitea doesnt have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.">
<meta property="og:locale" content="en-us">
<meta property="og:type" content="article">
<meta property="article:section" content="posts">
<meta property="article:published_time" content="2025-02-27T00:00:00+00:00">
<meta property="article:modified_time" content="2025-02-27T00:00:00+00:00">
<meta property="article:tag" content="Gitea">
<meta property="article:tag" content="Ci/Cd">
<meta property="article:tag" content="Hugo">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Automating Hugo Deployment with Gitea Actions">
<meta name="twitter:description" content="Recently, I tried setting up Gitea Actions to automatically update my Hugo blog whenever I pushed new content. The idea was simple:
Use Giteas built-in CI/CD to pull the repo,
Build the site using Hugo,
Deploy it to the server.
Setting Up Gitea Actions
First, I created a .gitea/workflows/deploy.yml file with the following steps:
name: Deploy Hugo Site
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Install Hugo
run: |
sudo apt update &amp;&amp; sudo apt install -y hugo
- name: Build site
run: hugo -D
- name: Deploy to server
run: |
scp -r public/* user@server:/var/www/html/
Authentication Issues 😩
To deploy, I needed SSH access to the server. Gitea doesnt have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "https://blog.rakowskiii.com/posts/"
},
{
"@type": "ListItem",
"position": 2 ,
"name": "Automating Hugo Deployment with Gitea Actions",
"item": "https://blog.rakowskiii.com/posts/first-attempt/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Automating Hugo Deployment with Gitea Actions",
"name": "Automating Hugo Deployment with Gitea Actions",
"description": "Recently, I tried setting up Gitea Actions to automatically update my Hugo blog whenever I pushed new content. The idea was simple:\nUse Giteas built-in CI/CD to pull the repo, Build the site using Hugo, Deploy it to the server. Setting Up Gitea Actions First, I created a .gitea/workflows/deploy.yml file with the following steps:\nname: Deploy Hugo Site on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Clone repository uses: actions/checkout@v3 - name: Install Hugo run: | sudo apt update \u0026amp;\u0026amp; sudo apt install -y hugo - name: Build site run: hugo -D - name: Deploy to server run: | scp -r public/* user@server:/var/www/html/ Authentication Issues 😩 To deploy, I needed SSH access to the server. Gitea doesnt have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.\n",
"keywords": [
"gitea", "ci/cd", "hugo"
],
"articleBody": "Recently, I tried setting up Gitea Actions to automatically update my Hugo blog whenever I pushed new content. The idea was simple:\nUse Giteas built-in CI/CD to pull the repo, Build the site using Hugo, Deploy it to the server. Setting Up Gitea Actions First, I created a .gitea/workflows/deploy.yml file with the following steps:\nname: Deploy Hugo Site on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Clone repository uses: actions/checkout@v3 - name: Install Hugo run: | sudo apt update \u0026\u0026 sudo apt install -y hugo - name: Build site run: hugo -D - name: Deploy to server run: | scp -r public/* user@server:/var/www/html/ Authentication Issues 😩 To deploy, I needed SSH access to the server. Gitea doesnt have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.\nI knew this wasnt ideal, but I just wanted to get it working first. Unfortunately, after multiple attempts, it still failed with permission denied (publickey) errors.\nWhats Next? 🤔 Instead of fighting with Gitea Actions, I decided to try something else. In my next post, Ill explain how I switched to a simpler, more reliable approach using a sync service.\n",
"wordCount" : "200",
"inLanguage": "en",
"datePublished": "2025-02-27T00:00:00Z",
"dateModified": "2025-02-27T00:00:00Z",
"author":{
"@type": "Person",
"name": "Dev"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://blog.rakowskiii.com/posts/first-attempt/"
},
"publisher": {
"@type": "Organization",
"name": "Dev Logbook",
"logo": {
"@type": "ImageObject",
"url": "https://blog.rakowskiii.com/favicon.ico"
}
}
}
</script>
</head>
<body class="" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="https://blog.rakowskiii.com/" accesskey="h" title="Dev Logbook (Alt + H)">Dev Logbook</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
</div>
</div>
<ul id="menu">
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<h1 class="post-title entry-hint-parent">
Automating Hugo Deployment with Gitea Actions
</h1>
<div class="post-meta"><span title='2025-02-27 00:00:00 +0000 UTC'>February 27, 2025</span>&nbsp;·&nbsp;Dev
</div>
</header>
<div class="post-content"><p>Recently, I tried setting up <strong>Gitea Actions</strong> to automatically update my Hugo blog whenever I pushed new content. The idea was simple:</p>
<ul>
<li>Use Giteas built-in CI/CD to pull the repo,</li>
<li>Build the site using Hugo,</li>
<li>Deploy it to the server.</li>
</ul>
<h2 id="setting-up-gitea-actions">Setting Up Gitea Actions<a hidden class="anchor" aria-hidden="true" href="#setting-up-gitea-actions">#</a></h2>
<p>First, I created a <code>.gitea/workflows/deploy.yml</code> file with the following steps:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">name</span>: <span style="color:#ae81ff">Deploy Hugo Site</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">on</span>:
</span></span><span style="display:flex;"><span> <span style="color:#f92672">push</span>:
</span></span><span style="display:flex;"><span> <span style="color:#f92672">branches</span>:
</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">main</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">jobs</span>:
</span></span><span style="display:flex;"><span> <span style="color:#f92672">build</span>:
</span></span><span style="display:flex;"><span> <span style="color:#f92672">runs-on</span>: <span style="color:#ae81ff">ubuntu-latest</span>
</span></span><span style="display:flex;"><span> <span style="color:#f92672">steps</span>:
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Clone repository</span>
</span></span><span style="display:flex;"><span> <span style="color:#f92672">uses</span>: <span style="color:#ae81ff">actions/checkout@v3</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Install Hugo</span>
</span></span><span style="display:flex;"><span> <span style="color:#f92672">run</span>: |<span style="color:#e6db74">
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> sudo apt update &amp;&amp; sudo apt install -y hugo</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Build site</span>
</span></span><span style="display:flex;"><span> <span style="color:#f92672">run</span>: <span style="color:#ae81ff">hugo -D</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Deploy to server</span>
</span></span><span style="display:flex;"><span> <span style="color:#f92672">run</span>: |<span style="color:#e6db74">
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> scp -r public/* user@server:/var/www/html/</span>
</span></span></code></pre></div><h1 id="authentication-issues-">Authentication Issues 😩<a hidden class="anchor" aria-hidden="true" href="#authentication-issues-">#</a></h1>
<p>To deploy, I needed SSH access to the server. Gitea doesnt have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.</p>
<p><img alt="My SSH Key" loading="lazy" src="/images/mykey.png"></p>
<p>I knew this wasn&rsquo;t ideal, but I just wanted to get it working first. Unfortunately, after multiple attempts, it still failed with permission denied (publickey) errors.</p>
<h1 id="whats-next-">What&rsquo;s Next? 🤔<a hidden class="anchor" aria-hidden="true" href="#whats-next-">#</a></h1>
<p>Instead of fighting with Gitea Actions, I decided to try something else. In my next post, I&rsquo;ll explain how I switched to a simpler, more reliable approach using a sync service.</p>
</div>
<footer class="post-footer">
<ul class="post-tags">
<li><a href="https://blog.rakowskiii.com/tags/gitea/">Gitea</a></li>
<li><a href="https://blog.rakowskiii.com/tags/ci/cd/">Ci/Cd</a></li>
<li><a href="https://blog.rakowskiii.com/tags/hugo/">Hugo</a></li>
</ul>
</footer>
</article>
</main>
<footer class="footer">
<span>&copy; 2025 <a href="https://blog.rakowskiii.com/">Dev Logbook</a></span> ·
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>

View File

@ -102,17 +102,18 @@
<article class="post-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Automating Hugo Deployment with Gitea Actions
<h2 class="entry-hint-parent">Oops... That Was a Mistake
</h2>
</header>
<div class="entry-content">
<p>Recently, I tried setting up Gitea Actions to automatically update my Hugo blog whenever I pushed new content. The idea was simple:
Use Giteas built-in CI/CD to pull the repo, Build the site using Hugo, Deploy it to the server. Setting Up Gitea Actions First, I created a .gitea/workflows/deploy.yml file with the following steps:
name: Deploy Hugo Site on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Clone repository uses: actions/checkout@v3 - name: Install Hugo run: | sudo apt update &amp;&amp; sudo apt install -y hugo - name: Build site run: hugo -D - name: Deploy to server run: | scp -r public/* user@server:/var/www/html/ Authentication Issues 😩 To deploy, I needed SSH access to the server. Gitea doesnt have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.
...</p>
<p>So… turns out posting my SSH private key in a blog post wasnt the smartest move. 🙃
I didnt even realize it until someone pointed it out.
Obviously, I had to delete the previous post ASAP. Lesson learned: Always double-check what youre pushing to production!
A new, safer version of the post will be up soon. This time, Ill be using a better approach—stay tuned!
</p>
</div>
<footer class="entry-footer"><span title='2025-02-27 00:00:00 +0000 UTC'>February 27, 2025</span>&nbsp;·&nbsp;Dev</footer>
<a class="entry-link" aria-label="post link to Automating Hugo Deployment with Gitea Actions" href="https://blog.rakowskiii.com/posts/first-attempt/"></a>
<a class="entry-link" aria-label="post link to Oops... That Was a Mistake" href="https://blog.rakowskiii.com/posts/oopsie/"></a>
</article>
</main>

View File

@ -9,44 +9,14 @@
<lastBuildDate>Thu, 27 Feb 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="https://blog.rakowskiii.com/posts/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Automating Hugo Deployment with Gitea Actions</title>
<link>https://blog.rakowskiii.com/posts/first-attempt/</link>
<title>Oops... That Was a Mistake</title>
<link>https://blog.rakowskiii.com/posts/oopsie/</link>
<pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate>
<guid>https://blog.rakowskiii.com/posts/first-attempt/</guid>
<description>&lt;p&gt;Recently, I tried setting up &lt;strong&gt;Gitea Actions&lt;/strong&gt; to automatically update my Hugo blog whenever I pushed new content. The idea was simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use Giteas built-in CI/CD to pull the repo,&lt;/li&gt;
&lt;li&gt;Build the site using Hugo,&lt;/li&gt;
&lt;li&gt;Deploy it to the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;setting-up-gitea-actions&#34;&gt;Setting Up Gitea Actions&lt;/h2&gt;
&lt;p&gt;First, I created a &lt;code&gt;.gitea/workflows/deploy.yml&lt;/code&gt; file with the following steps:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Deploy Hugo Site&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;on&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;push&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;branches&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#ae81ff&#34;&gt;main&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;jobs&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;build&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;runs-on&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;ubuntu-latest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;steps&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Clone repository&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;uses&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;actions/checkout@v3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Install Hugo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;run&lt;/span&gt;: |&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; sudo apt update &amp;amp;&amp;amp; sudo apt install -y hugo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Build site&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;run&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;hugo -D&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Deploy to server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;run&lt;/span&gt;: |&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; scp -r public/* user@server:/var/www/html/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;authentication-issues-&#34;&gt;Authentication Issues 😩&lt;/h1&gt;
&lt;p&gt;To deploy, I needed SSH access to the server. Gitea doesnt have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.&lt;/p&gt;</description>
<guid>https://blog.rakowskiii.com/posts/oopsie/</guid>
<description>&lt;p&gt;So&amp;hellip; turns out &lt;strong&gt;posting my SSH private key&lt;/strong&gt; in a blog post wasnt the smartest move. 🙃&lt;br&gt;
I didnt even realize it until someone pointed it out.&lt;/p&gt;
&lt;p&gt;Obviously, I had to &lt;strong&gt;delete the previous post&lt;/strong&gt; ASAP. Lesson learned: &lt;strong&gt;Always double-check what you&amp;rsquo;re pushing to production!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A new, &lt;strong&gt;safer&lt;/strong&gt; version of the post will be up soon. This time, Ill be using a better approach—stay tuned!&lt;/p&gt;</description>
</item>
</channel>
</rss>

View File

@ -0,0 +1,251 @@
<!DOCTYPE html>
<html lang="en" dir="auto">
<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>Oops... That Was a Mistake | Dev Logbook</title>
<meta name="keywords" content="gitea, security, hugo">
<meta name="description" content="So&hellip; turns out posting my SSH private key in a blog post wasnt the smartest move. 🙃
I didnt even realize it until someone pointed it out.
Obviously, I had to delete the previous post ASAP. Lesson learned: Always double-check what you&rsquo;re pushing to production!
A new, safer version of the post will be up soon. This time, Ill be using a better approach—stay tuned!">
<meta name="author" content="Dev">
<link rel="canonical" href="https://blog.rakowskiii.com/posts/oopsie/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.45e028aa8ce0961349adf411b013ee39406be2c0bc80d4ea3fc04555f7f4611a.css" integrity="sha256-ReAoqozglhNJrfQRsBPuOUBr4sC8gNTqP8BFVff0YRo=" rel="preload stylesheet" as="style">
<link rel="icon" href="https://blog.rakowskiii.com/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="https://blog.rakowskiii.com/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://blog.rakowskiii.com/favicon-32x32.png">
<link rel="apple-touch-icon" href="https://blog.rakowskiii.com/apple-touch-icon.png">
<link rel="mask-icon" href="https://blog.rakowskiii.com/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="https://blog.rakowskiii.com/posts/oopsie/">
<noscript>
<style>
#theme-toggle,
.top-link {
display: none;
}
</style>
</noscript><meta property="og:url" content="https://blog.rakowskiii.com/posts/oopsie/">
<meta property="og:site_name" content="Dev Logbook">
<meta property="og:title" content="Oops... That Was a Mistake">
<meta property="og:description" content="So… turns out posting my SSH private key in a blog post wasnt the smartest move. 🙃
I didnt even realize it until someone pointed it out.
Obviously, I had to delete the previous post ASAP. Lesson learned: Always double-check what youre pushing to production!
A new, safer version of the post will be up soon. This time, Ill be using a better approach—stay tuned!">
<meta property="og:locale" content="en-us">
<meta property="og:type" content="article">
<meta property="article:section" content="posts">
<meta property="article:published_time" content="2025-02-27T00:00:00+00:00">
<meta property="article:modified_time" content="2025-02-27T00:00:00+00:00">
<meta property="article:tag" content="Gitea">
<meta property="article:tag" content="Security">
<meta property="article:tag" content="Hugo">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Oops... That Was a Mistake">
<meta name="twitter:description" content="So&hellip; turns out posting my SSH private key in a blog post wasnt the smartest move. 🙃
I didnt even realize it until someone pointed it out.
Obviously, I had to delete the previous post ASAP. Lesson learned: Always double-check what you&rsquo;re pushing to production!
A new, safer version of the post will be up soon. This time, Ill be using a better approach—stay tuned!">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1 ,
"name": "Posts",
"item": "https://blog.rakowskiii.com/posts/"
},
{
"@type": "ListItem",
"position": 2 ,
"name": "Oops... That Was a Mistake",
"item": "https://blog.rakowskiii.com/posts/oopsie/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Oops... That Was a Mistake",
"name": "Oops... That Was a Mistake",
"description": "So\u0026hellip; turns out posting my SSH private key in a blog post wasnt the smartest move. 🙃\nI didnt even realize it until someone pointed it out.\nObviously, I had to delete the previous post ASAP. Lesson learned: Always double-check what you\u0026rsquo;re pushing to production!\nA new, safer version of the post will be up soon. This time, Ill be using a better approach—stay tuned!\n",
"keywords": [
"gitea", "security", "hugo"
],
"articleBody": "So… turns out posting my SSH private key in a blog post wasnt the smartest move. 🙃\nI didnt even realize it until someone pointed it out.\nObviously, I had to delete the previous post ASAP. Lesson learned: Always double-check what youre pushing to production!\nA new, safer version of the post will be up soon. This time, Ill be using a better approach—stay tuned!\n",
"wordCount" : "65",
"inLanguage": "en",
"datePublished": "2025-02-27T00:00:00Z",
"dateModified": "2025-02-27T00:00:00Z",
"author":{
"@type": "Person",
"name": "Dev"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://blog.rakowskiii.com/posts/oopsie/"
},
"publisher": {
"@type": "Organization",
"name": "Dev Logbook",
"logo": {
"@type": "ImageObject",
"url": "https://blog.rakowskiii.com/favicon.ico"
}
}
}
</script>
</head>
<body class="" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="https://blog.rakowskiii.com/" accesskey="h" title="Dev Logbook (Alt + H)">Dev Logbook</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
</div>
</div>
<ul id="menu">
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<h1 class="post-title entry-hint-parent">
Oops... That Was a Mistake
</h1>
<div class="post-meta"><span title='2025-02-27 00:00:00 +0000 UTC'>February 27, 2025</span>&nbsp;·&nbsp;Dev
</div>
</header>
<div class="post-content"><p>So&hellip; turns out <strong>posting my SSH private key</strong> in a blog post wasnt the smartest move. 🙃<br>
I didnt even realize it until someone pointed it out.</p>
<p>Obviously, I had to <strong>delete the previous post</strong> ASAP. Lesson learned: <strong>Always double-check what you&rsquo;re pushing to production!</strong></p>
<p>A new, <strong>safer</strong> version of the post will be up soon. This time, Ill be using a better approach—stay tuned!</p>
</div>
<footer class="post-footer">
<ul class="post-tags">
<li><a href="https://blog.rakowskiii.com/tags/gitea/">Gitea</a></li>
<li><a href="https://blog.rakowskiii.com/tags/security/">Security</a></li>
<li><a href="https://blog.rakowskiii.com/tags/hugo/">Hugo</a></li>
</ul>
</footer>
</article>
</main>
<footer class="footer">
<span>&copy; 2025 <a href="https://blog.rakowskiii.com/">Dev Logbook</a></span> ·
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>

View File

@ -2,12 +2,6 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://blog.rakowskiii.com/posts/first-attempt/</loc>
<lastmod>2025-02-27T00:00:00+00:00</lastmod>
</url><url>
<loc>https://blog.rakowskiii.com/tags/ci/cd/</loc>
<lastmod>2025-02-27T00:00:00+00:00</lastmod>
</url><url>
<loc>https://blog.rakowskiii.com/</loc>
<lastmod>2025-02-27T00:00:00+00:00</lastmod>
</url><url>
@ -16,9 +10,15 @@
</url><url>
<loc>https://blog.rakowskiii.com/tags/hugo/</loc>
<lastmod>2025-02-27T00:00:00+00:00</lastmod>
</url><url>
<loc>https://blog.rakowskiii.com/posts/oopsie/</loc>
<lastmod>2025-02-27T00:00:00+00:00</lastmod>
</url><url>
<loc>https://blog.rakowskiii.com/posts/</loc>
<lastmod>2025-02-27T00:00:00+00:00</lastmod>
</url><url>
<loc>https://blog.rakowskiii.com/tags/security/</loc>
<lastmod>2025-02-27T00:00:00+00:00</lastmod>
</url><url>
<loc>https://blog.rakowskiii.com/tags/</loc>
<lastmod>2025-02-27T00:00:00+00:00</lastmod>

View File

@ -1,52 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Ci/Cd on Dev Logbook</title>
<link>https://blog.rakowskiii.com/tags/ci/cd/</link>
<description>Recent content in Ci/Cd on Dev Logbook</description>
<generator>Hugo -- 0.145.0</generator>
<language>en-us</language>
<lastBuildDate>Thu, 27 Feb 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="https://blog.rakowskiii.com/tags/ci/cd/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Automating Hugo Deployment with Gitea Actions</title>
<link>https://blog.rakowskiii.com/posts/first-attempt/</link>
<pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate>
<guid>https://blog.rakowskiii.com/posts/first-attempt/</guid>
<description>&lt;p&gt;Recently, I tried setting up &lt;strong&gt;Gitea Actions&lt;/strong&gt; to automatically update my Hugo blog whenever I pushed new content. The idea was simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use Giteas built-in CI/CD to pull the repo,&lt;/li&gt;
&lt;li&gt;Build the site using Hugo,&lt;/li&gt;
&lt;li&gt;Deploy it to the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;setting-up-gitea-actions&#34;&gt;Setting Up Gitea Actions&lt;/h2&gt;
&lt;p&gt;First, I created a &lt;code&gt;.gitea/workflows/deploy.yml&lt;/code&gt; file with the following steps:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Deploy Hugo Site&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;on&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;push&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;branches&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#ae81ff&#34;&gt;main&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;jobs&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;build&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;runs-on&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;ubuntu-latest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;steps&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Clone repository&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;uses&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;actions/checkout@v3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Install Hugo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;run&lt;/span&gt;: |&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; sudo apt update &amp;amp;&amp;amp; sudo apt install -y hugo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Build site&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;run&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;hugo -D&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Deploy to server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;run&lt;/span&gt;: |&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; scp -r public/* user@server:/var/www/html/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;authentication-issues-&#34;&gt;Authentication Issues 😩&lt;/h1&gt;
&lt;p&gt;To deploy, I needed SSH access to the server. Gitea doesnt have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.&lt;/p&gt;</description>
</item>
</channel>
</rss>

View File

@ -87,17 +87,18 @@
<article class="post-entry tag-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Automating Hugo Deployment with Gitea Actions
<h2 class="entry-hint-parent">Oops... That Was a Mistake
</h2>
</header>
<div class="entry-content">
<p>Recently, I tried setting up Gitea Actions to automatically update my Hugo blog whenever I pushed new content. The idea was simple:
Use Giteas built-in CI/CD to pull the repo, Build the site using Hugo, Deploy it to the server. Setting Up Gitea Actions First, I created a .gitea/workflows/deploy.yml file with the following steps:
name: Deploy Hugo Site on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Clone repository uses: actions/checkout@v3 - name: Install Hugo run: | sudo apt update &amp;&amp; sudo apt install -y hugo - name: Build site run: hugo -D - name: Deploy to server run: | scp -r public/* user@server:/var/www/html/ Authentication Issues 😩 To deploy, I needed SSH access to the server. Gitea doesnt have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.
...</p>
<p>So… turns out posting my SSH private key in a blog post wasnt the smartest move. 🙃
I didnt even realize it until someone pointed it out.
Obviously, I had to delete the previous post ASAP. Lesson learned: Always double-check what youre pushing to production!
A new, safer version of the post will be up soon. This time, Ill be using a better approach—stay tuned!
</p>
</div>
<footer class="entry-footer"><span title='2025-02-27 00:00:00 +0000 UTC'>February 27, 2025</span>&nbsp;·&nbsp;Dev</footer>
<a class="entry-link" aria-label="post link to Automating Hugo Deployment with Gitea Actions" href="https://blog.rakowskiii.com/posts/first-attempt/"></a>
<a class="entry-link" aria-label="post link to Oops... That Was a Mistake" href="https://blog.rakowskiii.com/posts/oopsie/"></a>
</article>
</main>

View File

@ -9,44 +9,14 @@
<lastBuildDate>Thu, 27 Feb 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="https://blog.rakowskiii.com/tags/gitea/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Automating Hugo Deployment with Gitea Actions</title>
<link>https://blog.rakowskiii.com/posts/first-attempt/</link>
<title>Oops... That Was a Mistake</title>
<link>https://blog.rakowskiii.com/posts/oopsie/</link>
<pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate>
<guid>https://blog.rakowskiii.com/posts/first-attempt/</guid>
<description>&lt;p&gt;Recently, I tried setting up &lt;strong&gt;Gitea Actions&lt;/strong&gt; to automatically update my Hugo blog whenever I pushed new content. The idea was simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use Giteas built-in CI/CD to pull the repo,&lt;/li&gt;
&lt;li&gt;Build the site using Hugo,&lt;/li&gt;
&lt;li&gt;Deploy it to the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;setting-up-gitea-actions&#34;&gt;Setting Up Gitea Actions&lt;/h2&gt;
&lt;p&gt;First, I created a &lt;code&gt;.gitea/workflows/deploy.yml&lt;/code&gt; file with the following steps:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Deploy Hugo Site&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;on&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;push&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;branches&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#ae81ff&#34;&gt;main&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;jobs&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;build&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;runs-on&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;ubuntu-latest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;steps&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Clone repository&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;uses&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;actions/checkout@v3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Install Hugo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;run&lt;/span&gt;: |&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; sudo apt update &amp;amp;&amp;amp; sudo apt install -y hugo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Build site&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;run&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;hugo -D&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Deploy to server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;run&lt;/span&gt;: |&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; scp -r public/* user@server:/var/www/html/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;authentication-issues-&#34;&gt;Authentication Issues 😩&lt;/h1&gt;
&lt;p&gt;To deploy, I needed SSH access to the server. Gitea doesnt have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.&lt;/p&gt;</description>
<guid>https://blog.rakowskiii.com/posts/oopsie/</guid>
<description>&lt;p&gt;So&amp;hellip; turns out &lt;strong&gt;posting my SSH private key&lt;/strong&gt; in a blog post wasnt the smartest move. 🙃&lt;br&gt;
I didnt even realize it until someone pointed it out.&lt;/p&gt;
&lt;p&gt;Obviously, I had to &lt;strong&gt;delete the previous post&lt;/strong&gt; ASAP. Lesson learned: &lt;strong&gt;Always double-check what you&amp;rsquo;re pushing to production!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A new, &lt;strong&gt;safer&lt;/strong&gt; version of the post will be up soon. This time, Ill be using a better approach—stay tuned!&lt;/p&gt;</description>
</item>
</channel>
</rss>

View File

@ -87,17 +87,18 @@
<article class="post-entry tag-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Automating Hugo Deployment with Gitea Actions
<h2 class="entry-hint-parent">Oops... That Was a Mistake
</h2>
</header>
<div class="entry-content">
<p>Recently, I tried setting up Gitea Actions to automatically update my Hugo blog whenever I pushed new content. The idea was simple:
Use Giteas built-in CI/CD to pull the repo, Build the site using Hugo, Deploy it to the server. Setting Up Gitea Actions First, I created a .gitea/workflows/deploy.yml file with the following steps:
name: Deploy Hugo Site on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Clone repository uses: actions/checkout@v3 - name: Install Hugo run: | sudo apt update &amp;&amp; sudo apt install -y hugo - name: Build site run: hugo -D - name: Deploy to server run: | scp -r public/* user@server:/var/www/html/ Authentication Issues 😩 To deploy, I needed SSH access to the server. Gitea doesnt have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.
...</p>
<p>So… turns out posting my SSH private key in a blog post wasnt the smartest move. 🙃
I didnt even realize it until someone pointed it out.
Obviously, I had to delete the previous post ASAP. Lesson learned: Always double-check what youre pushing to production!
A new, safer version of the post will be up soon. This time, Ill be using a better approach—stay tuned!
</p>
</div>
<footer class="entry-footer"><span title='2025-02-27 00:00:00 +0000 UTC'>February 27, 2025</span>&nbsp;·&nbsp;Dev</footer>
<a class="entry-link" aria-label="post link to Automating Hugo Deployment with Gitea Actions" href="https://blog.rakowskiii.com/posts/first-attempt/"></a>
<a class="entry-link" aria-label="post link to Oops... That Was a Mistake" href="https://blog.rakowskiii.com/posts/oopsie/"></a>
</article>
</main>

View File

@ -9,44 +9,14 @@
<lastBuildDate>Thu, 27 Feb 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="https://blog.rakowskiii.com/tags/hugo/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Automating Hugo Deployment with Gitea Actions</title>
<link>https://blog.rakowskiii.com/posts/first-attempt/</link>
<title>Oops... That Was a Mistake</title>
<link>https://blog.rakowskiii.com/posts/oopsie/</link>
<pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate>
<guid>https://blog.rakowskiii.com/posts/first-attempt/</guid>
<description>&lt;p&gt;Recently, I tried setting up &lt;strong&gt;Gitea Actions&lt;/strong&gt; to automatically update my Hugo blog whenever I pushed new content. The idea was simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use Giteas built-in CI/CD to pull the repo,&lt;/li&gt;
&lt;li&gt;Build the site using Hugo,&lt;/li&gt;
&lt;li&gt;Deploy it to the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;setting-up-gitea-actions&#34;&gt;Setting Up Gitea Actions&lt;/h2&gt;
&lt;p&gt;First, I created a &lt;code&gt;.gitea/workflows/deploy.yml&lt;/code&gt; file with the following steps:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Deploy Hugo Site&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;on&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;push&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;branches&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#ae81ff&#34;&gt;main&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;jobs&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;build&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;runs-on&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;ubuntu-latest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;steps&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Clone repository&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;uses&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;actions/checkout@v3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Install Hugo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;run&lt;/span&gt;: |&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; sudo apt update &amp;amp;&amp;amp; sudo apt install -y hugo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Build site&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;run&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;hugo -D&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Deploy to server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;run&lt;/span&gt;: |&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; scp -r public/* user@server:/var/www/html/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;authentication-issues-&#34;&gt;Authentication Issues 😩&lt;/h1&gt;
&lt;p&gt;To deploy, I needed SSH access to the server. Gitea doesnt have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.&lt;/p&gt;</description>
<guid>https://blog.rakowskiii.com/posts/oopsie/</guid>
<description>&lt;p&gt;So&amp;hellip; turns out &lt;strong&gt;posting my SSH private key&lt;/strong&gt; in a blog post wasnt the smartest move. 🙃&lt;br&gt;
I didnt even realize it until someone pointed it out.&lt;/p&gt;
&lt;p&gt;Obviously, I had to &lt;strong&gt;delete the previous post&lt;/strong&gt; ASAP. Lesson learned: &lt;strong&gt;Always double-check what you&amp;rsquo;re pushing to production!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A new, &lt;strong&gt;safer&lt;/strong&gt; version of the post will be up soon. This time, Ill be using a better approach—stay tuned!&lt;/p&gt;</description>
</item>
</channel>
</rss>

View File

@ -84,15 +84,15 @@
</header>
<ul class="terms-tags">
<li>
<a href="https://blog.rakowskiii.com/tags/ci/cd/">cd <sup><strong><sup>1</sup></strong></sup> </a>
</li>
<li>
<a href="https://blog.rakowskiii.com/tags/gitea/">gitea <sup><strong><sup>1</sup></strong></sup> </a>
</li>
<li>
<a href="https://blog.rakowskiii.com/tags/hugo/">hugo <sup><strong><sup>1</sup></strong></sup> </a>
</li>
<li>
<a href="https://blog.rakowskiii.com/tags/security/">security <sup><strong><sup>1</sup></strong></sup> </a>
</li>
</ul>
</main>

View File

@ -8,13 +8,6 @@
<language>en-us</language>
<lastBuildDate>Thu, 27 Feb 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="https://blog.rakowskiii.com/tags/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Ci/Cd</title>
<link>https://blog.rakowskiii.com/tags/ci/cd/</link>
<pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate>
<guid>https://blog.rakowskiii.com/tags/ci/cd/</guid>
<description></description>
</item>
<item>
<title>Gitea</title>
<link>https://blog.rakowskiii.com/tags/gitea/</link>
@ -29,5 +22,12 @@
<guid>https://blog.rakowskiii.com/tags/hugo/</guid>
<description></description>
</item>
<item>
<title>Security</title>
<link>https://blog.rakowskiii.com/tags/security/</link>
<pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate>
<guid>https://blog.rakowskiii.com/tags/security/</guid>
<description></description>
</item>
</channel>
</rss>

View File

@ -5,11 +5,11 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>Ci/Cd | Dev Logbook</title>
<title>Security | Dev Logbook</title>
<meta name="keywords" content="">
<meta name="description" content="">
<meta name="author" content="">
<link rel="canonical" href="https://blog.rakowskiii.com/tags/ci/cd/">
<link rel="canonical" href="https://blog.rakowskiii.com/tags/security/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.45e028aa8ce0961349adf411b013ee39406be2c0bc80d4ea3fc04555f7f4611a.css" integrity="sha256-ReAoqozglhNJrfQRsBPuOUBr4sC8gNTqP8BFVff0YRo=" rel="preload stylesheet" as="style">
<link rel="icon" href="https://blog.rakowskiii.com/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="https://blog.rakowskiii.com/favicon-16x16.png">
@ -18,8 +18,8 @@
<link rel="mask-icon" href="https://blog.rakowskiii.com/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" type="application/rss+xml" href="https://blog.rakowskiii.com/tags/ci/cd/index.xml">
<link rel="alternate" hreflang="en" href="https://blog.rakowskiii.com/tags/ci/cd/">
<link rel="alternate" type="application/rss+xml" href="https://blog.rakowskiii.com/tags/security/index.xml">
<link rel="alternate" hreflang="en" href="https://blog.rakowskiii.com/tags/security/">
<noscript>
<style>
#theme-toggle,
@ -28,13 +28,13 @@
}
</style>
</noscript><meta property="og:url" content="https://blog.rakowskiii.com/tags/ci/cd/">
</noscript><meta property="og:url" content="https://blog.rakowskiii.com/tags/security/">
<meta property="og:site_name" content="Dev Logbook">
<meta property="og:title" content="Ci/Cd">
<meta property="og:title" content="Security">
<meta property="og:locale" content="en-us">
<meta property="og:type" content="website">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Ci/Cd">
<meta name="twitter:title" content="Security">
<meta name="twitter:description" content="">
</head>
@ -81,23 +81,24 @@
<main class="main">
<header class="page-header">
<h1>
Ci/Cd
Security
</h1>
</header>
<article class="post-entry tag-entry">
<header class="entry-header">
<h2 class="entry-hint-parent">Automating Hugo Deployment with Gitea Actions
<h2 class="entry-hint-parent">Oops... That Was a Mistake
</h2>
</header>
<div class="entry-content">
<p>Recently, I tried setting up Gitea Actions to automatically update my Hugo blog whenever I pushed new content. The idea was simple:
Use Giteas built-in CI/CD to pull the repo, Build the site using Hugo, Deploy it to the server. Setting Up Gitea Actions First, I created a .gitea/workflows/deploy.yml file with the following steps:
name: Deploy Hugo Site on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Clone repository uses: actions/checkout@v3 - name: Install Hugo run: | sudo apt update &amp;&amp; sudo apt install -y hugo - name: Build site run: hugo -D - name: Deploy to server run: | scp -r public/* user@server:/var/www/html/ Authentication Issues 😩 To deploy, I needed SSH access to the server. Gitea doesnt have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.
...</p>
<p>So… turns out posting my SSH private key in a blog post wasnt the smartest move. 🙃
I didnt even realize it until someone pointed it out.
Obviously, I had to delete the previous post ASAP. Lesson learned: Always double-check what youre pushing to production!
A new, safer version of the post will be up soon. This time, Ill be using a better approach—stay tuned!
</p>
</div>
<footer class="entry-footer"><span title='2025-02-27 00:00:00 +0000 UTC'>February 27, 2025</span>&nbsp;·&nbsp;Dev</footer>
<a class="entry-link" aria-label="post link to Automating Hugo Deployment with Gitea Actions" href="https://blog.rakowskiii.com/posts/first-attempt/"></a>
<a class="entry-link" aria-label="post link to Oops... That Was a Mistake" href="https://blog.rakowskiii.com/posts/oopsie/"></a>
</article>
</main>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Security on Dev Logbook</title>
<link>https://blog.rakowskiii.com/tags/security/</link>
<description>Recent content in Security on Dev Logbook</description>
<generator>Hugo -- 0.145.0</generator>
<language>en-us</language>
<lastBuildDate>Thu, 27 Feb 2025 00:00:00 +0000</lastBuildDate>
<atom:link href="https://blog.rakowskiii.com/tags/security/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Oops... That Was a Mistake</title>
<link>https://blog.rakowskiii.com/posts/oopsie/</link>
<pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate>
<guid>https://blog.rakowskiii.com/posts/oopsie/</guid>
<description>&lt;p&gt;So&amp;hellip; turns out &lt;strong&gt;posting my SSH private key&lt;/strong&gt; in a blog post wasnt the smartest move. 🙃&lt;br&gt;
I didnt even realize it until someone pointed it out.&lt;/p&gt;
&lt;p&gt;Obviously, I had to &lt;strong&gt;delete the previous post&lt;/strong&gt; ASAP. Lesson learned: &lt;strong&gt;Always double-check what you&amp;rsquo;re pushing to production!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A new, &lt;strong&gt;safer&lt;/strong&gt; version of the post will be up soon. This time, Ill be using a better approach—stay tuned!&lt;/p&gt;</description>
</item>
</channel>
</rss>

View File

@ -1,10 +1,10 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>https://blog.rakowskiii.com/tags/ci/cd/</title>
<link rel="canonical" href="https://blog.rakowskiii.com/tags/ci/cd/">
<title>https://blog.rakowskiii.com/tags/security/</title>
<link rel="canonical" href="https://blog.rakowskiii.com/tags/security/">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=https://blog.rakowskiii.com/tags/ci/cd/">
<meta http-equiv="refresh" content="0; url=https://blog.rakowskiii.com/tags/security/">
</head>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB