<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Uberspace on Søren&#39;s Blog</title>
    <link>https://soeren.one/tags/uberspace/</link>
    <description>Recent content in Uberspace on Søren&#39;s Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-US</language>
    <lastBuildDate>Sun, 11 Jan 2026 06:00:00 +0000</lastBuildDate>
    <atom:link href="https://soeren.one/tags/uberspace/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Run Hugo Blog on uberspace</title>
      <link>https://soeren.one/2026/hugo-uberspace/</link>
      <pubDate>Sun, 11 Jan 2026 06:00:00 +0000</pubDate>
      <guid>https://soeren.one/2026/hugo-uberspace/</guid>
      <description>&lt;p&gt;Back in 2019, I wrote an article on &lt;a href=&#34;https://soeren.one/2019/hugo-mit-git-auf-uberspace-benutzen/&#34;&gt;how to run a hugo blog on uberspace&lt;/a&gt; (🇩🇪). The magic is not to bring the static files on a webhoster, that&amp;rsquo;s easy, but that &lt;a href=&#34;https://uberspace.de/en/&#34;&gt;uberspace&lt;/a&gt; allows building and publishing the blog for you on your domain. Like GitHub or Netlify, but with a small German hoster.&lt;/p&gt;
&lt;p&gt;I use this setup ever since. Although &lt;a href=&#34;https://soeren.one/2025/on-blogging-platforms/&#34;&gt;I struggle every now and then&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Robert reached out, because he was facing error messages when trying to implement the same. I couldn&amp;rsquo;t help him directly, because that article is five years old and I was not sure if things have changed in the meantime.&lt;/p&gt;
&lt;p&gt;Luckily, the holidays came with a bit of spare time to test this myself and to provide an updated version.&lt;/p&gt;
&lt;p&gt;I was very careful to collect all commands I sent to the terminal and am thus very sure that this works on an U7 uberspace.&lt;/p&gt;
&lt;h1 id=&#34;prepare-your-machine&#34;&gt;Prepare your machine&lt;/h1&gt;
&lt;p&gt;You need to have the git and hugo available on your machine. Please follow their installation guides.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://book.git-scm.com/&#34;&gt;git&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://gohugo.io/getting-started/installing/&#34;&gt;hugo&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You also need access to a terminal. That&amp;rsquo;s standard if you&amp;rsquo;re on Linux or Mac. You may want to checkout &lt;a href=&#34;https://www.chiark.greenend.org.uk/~sgtatham/putty/&#34;&gt;Putty&lt;/a&gt; if you&amp;rsquo;re using Windows.&lt;/p&gt;
&lt;h1 id=&#34;create-a-new-asteroid&#34;&gt;Create a new asteroid&lt;/h1&gt;
&lt;p&gt;Now let&amp;rsquo;s create a new asteroid (= account) on uberspace. Surf to &lt;a href=&#34;https://dashboard.uberspace.de/register&#34;&gt;https://dashboard.uberspace.de/register&lt;/a&gt; and fill out the form. It has 3 fields. Should take less than a minute.&lt;/p&gt;
&lt;p&gt;Let me say it again: I am super happy with uberspace as a hoster. They provide all you need, have a great service and company values. If you don&amp;rsquo;t know them yet, check out their &lt;a href=&#34;https://uberspace.de/en/about/&#34;&gt;about-us page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once the account is created, nagivate to &lt;a href=&#34;https://dashboard.uberspace.de/dashboard/&#34;&gt;Dashboard &amp;ndash;&amp;gt; Login&lt;/a&gt; and set a new password for the SSH access.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://soeren.one/2026/hugo-uberspace/ssh_password.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Remember the host name on which your asteroid is created. You can find that in the email they write you, or on the &lt;a href=&#34;https://dashboard.uberspace.de/dashboard/datasheet&#34;&gt;Datasheet&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;the-nerdy-stuff&#34;&gt;The nerdy stuff&lt;/h1&gt;
&lt;p&gt;So far, so fancy. From now on, no more UI, but terminal commands only.&lt;/p&gt;
&lt;p&gt;First, we connect to your new Asteroid using SSH. Please replace &lt;code&gt;batman&lt;/code&gt; with your user name and &lt;code&gt;helium&lt;/code&gt; with your host name. You need the SSH password you defined in the previous step to log in.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ssh batman@helium.uberspace.de
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next, we install Hugo. We download the latest release. &lt;a href=&#34;https://github.com/gohugoio/hugo/releases/&#34;&gt;Check GitHub&lt;/a&gt; and replace the url in the &lt;code&gt;wget&lt;/code&gt; if necessary.&lt;/p&gt;
&lt;p&gt;Wondering what the commands do? &lt;code&gt;wget&lt;/code&gt; will download the compressed hugo release, &lt;code&gt;tar&lt;/code&gt; will unzip it, &lt;code&gt;mv&lt;/code&gt; moves the extracted directory, and &lt;code&gt;rm&lt;/code&gt; deletes the file we downloaded.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cd ~

wget https://github.com/gohugoio/hugo/releases/download/v0.154.4/hugo_0.154.4_Linux-64bit.tar.gz

tar -xvf hugo_0.154.4_Linux-64bit.tar.gz hugo

mv hugo ~/bin

rm hugo_0.154.4_Linux-64bit.tar.gz
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;With &lt;code&gt;mkdir&lt;/code&gt; we create a directory that holds our repository. This is where we will push to. Within the folder, we initialize an empty repository (&lt;code&gt;--bare&lt;/code&gt;) and create the &lt;code&gt;main&lt;/code&gt; branch.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cd ~

mkdir batblog.git

cd batblog.git

git init --bare

git branch -m main
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Brace yourself, because now we add the magic 🧚&lt;/p&gt;
&lt;p&gt;We tell git to run a few commands every time an update is made on the repository, e.g. when we push a commit holding a new blog post. This is done by changing the content of the &lt;code&gt;post-update&lt;/code&gt; hook.&lt;/p&gt;
&lt;p&gt;Run these commands to open the file in the &lt;code&gt;nano&lt;/code&gt; editor&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cd ~/batblog.git

nano hooks/post-update
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Copy the following script into the file, change &lt;code&gt;GIT_REPO&lt;/code&gt; to match your repository.&lt;/p&gt;
&lt;p&gt;What the script does:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;define path to the repository we created before (&lt;code&gt;GIT_REPO&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;define path to a temporary directory to clone into (&lt;code&gt;TMP_GIT&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;define path to your public folder, where the built blog shall be moved to (&lt;code&gt;PUBLIC_WWW&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;clone the repository to the temporary folder&lt;/li&gt;
&lt;li&gt;change into that temporary folder&lt;/li&gt;
&lt;li&gt;build the blog and move the output to the public folder&lt;/li&gt;
&lt;li&gt;delete the temporary folder&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#!/bin/sh

echo &amp;#34;Start hook magic&amp;#34;

# path to repository
GIT_REPO=$HOME/batblog.git

# path to tmp
TMP_GIT_CLONE=$(mktemp -d)

# path to publich URL
PUBLIC_WWW=/var/www/virtual/$USER/html

# clone repository
git clone $GIT_REPO $TMP_GIT_CLONE
cd $TMP_GIT_CLONE

# build
~/bin/hugo --cleanDestinationDir --destination $PUBLIC_WWW

# clean
rm -Rf $TMP_GIT_CLONE
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Save the changes with &lt;code&gt;control + o&lt;/code&gt; and exit the editor with &lt;code&gt;control + x&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s important to run one more command, letting the machine know that this script is executable.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cd ~/batblog.git

chmod +x hooks/post-update
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;We&amp;rsquo;re done on the server. The rest happens on your local machine.&lt;/p&gt;
&lt;h1 id=&#34;create-and-publish-your-blog&#34;&gt;Create and publish your blog&lt;/h1&gt;
&lt;p&gt;On your machine, we clone the repository that we created on uberspace.
Adjust the path to your needs, by replacing &lt;code&gt;batman&lt;/code&gt; with your user name, &lt;code&gt;helium&lt;/code&gt; with your host name, and &lt;code&gt;batblog.git&lt;/code&gt; with whatever you called the repository. You need the SSH password that you defined above.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;git clone ssh://batman@helium.uberspace.de/home/batman/batblog.git
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This will create a directory called &lt;code&gt;batblog&lt;/code&gt;. We open this directory, create a new blog in there, commit the changes and push them to the server.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cd batblog

hugo new site . --force

git add .
git commit -m &amp;#34;initial&amp;#34;
git push origin main
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Wait a few seconds and then open your uberspace URL. If you want to make your blog available at your own domain - you just need to add the domain to your uberspace and adjust the DNS records (A, AAAA). A guide how to do this is here: &lt;a href=&#34;https://manual.uberspace.de/web-domains/&#34;&gt;https://manual.uberspace.de/web-domains/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Enjoy your new blog 👏&lt;/p&gt;


&lt;div class=&#34;alert-box note&#34;&gt;
  Update: We can include a repeated execution of the script to allow for scheduled posts.
&lt;/div&gt;

&lt;p&gt;This week I wanted to tinker on the blog machinery. Scheduled posts have been on the agenda for a while - not because it’s complicated, but because I barely needed it.&lt;/p&gt;
&lt;p&gt;With the above setup, this is very simple. Add one row to the &lt;code&gt;crontab&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Assuming you‘re logged in the server (&lt;code&gt;ssh batman@helium.uberspace.de&lt;/code&gt;), run&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;crontab -e
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;And in the editor, add&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;@hourly /home/batman/batblog.git/hooks/post-update
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Save the changes with &lt;code&gt;control + o&lt;/code&gt; and exit the editor with &lt;code&gt;control + x&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This will run the script on an hourly basis and publish scheduled jobs the latest 60min after the planned release.&lt;/p&gt;
&lt;br&gt;
&lt;hr&gt;
&lt;br&gt;
Thank you for subscribing to this RSS feed. 
&lt;b&gt;&lt;a href=&#34;https://soeren.one/&#34;&gt;https://soeren.one/&lt;/a&gt;&lt;/b&gt; is &lt;a href=&#34;https://soeren.one//about/&#34;&gt;søren&lt;/a&gt;&#39;s personal blog. 
If you want to get in touch, please &lt;b&gt;&lt;a href=&#34;mailto:hej@soeren.one?subject=Reply to: Run%20Hugo%20Blog%20on%20uberspace&amp;body=Link to post: https%3a%2f%2fsoeren.one%2f2026%2fhugo-uberspace%2f&#34;&gt;reply to this post via email&lt;/a&gt;&lt;/b&gt;. 
</description>
      
    </item>
    <item>
      <title>My Blogging Workflow as of mid 2025</title>
      <link>https://soeren.one/2025/blogging-workflow-mid-2025/</link>
      <pubDate>Sun, 08 Jun 2025 05:00:00 +0000</pubDate>
      <guid>https://soeren.one/2025/blogging-workflow-mid-2025/</guid>
      <description>&lt;p&gt;Recently, &lt;a href=&#34;https://birming.com/2025/06/05/my-blogging-workflow/&#34;&gt;Robert wrote&lt;/a&gt; about his updated blogging workflow. A good opportunity to update mine, too.&lt;/p&gt;
&lt;p&gt;I wrote about my blogging workflow in &lt;a href=&#34;https://soeren.one/2020/hugo-blogging-ipad/&#34;&gt;2020&lt;/a&gt; and &lt;a href=&#34;https://soeren.one/2023/blogging-workflow-2023/&#34;&gt;2023&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Not much has changed since 2023. I use &lt;a href=&#34;https://soeren.one/tags/hugo/&#34;&gt;hugo&lt;/a&gt; for this &lt;a href=&#34;https://soeren.one/tags/blog/&#34;&gt;blog&lt;/a&gt;, hosted in a repository on &lt;a href=&#34;https://soeren.one/tags/uberspace/&#34;&gt;uberspace&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To create a new article, I &amp;hellip;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;take my iPhone.&lt;/strong&gt; I would love to write more on the Mac but noticed that after long working days I barely want to spend more time in front of a  „computer“.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;go through Reminders &amp;amp; Notes.&lt;/strong&gt; The 2023 article mentioned that I‘ll try out obsidian for draft creation - which I did and dumped again. Apple Notes is available on all my devices, convenient and thus my choice for creating drafts for blob articles. Reminders came in recently. An article from &lt;a href=&#34;https://flip.de/bye-bye-pocket/&#34;&gt;flip.de&lt;/a&gt; recommended using an iOS Shortcut in combination with a reminders list as an alternative to Pocket (the meanwhile shut-down read-later app). When I find something interesting on web, I use the shortcut to create the „read-later-reminder“ and when I am in the mood for writing, I go through that list and create a draft in Notes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;create bullet points in German.&lt;/strong&gt; Within the note, I start by creating bullet points in German. Although the blog is in English, I find it easier to create the initial draft in German. The 2023 version mentioned that a draft can stay multiple days, weeks or even months in this state - but this is no longer the case, as long as I am not interrupted during the flow.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;write paragraphs.&lt;/strong&gt; Once the initial idea for the type is layer out, I copy them over to iA writer, create the front matter (title, tags, etc.) and start writing - English - paragraphs. I do one (!) proof read iteration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;start the git magic.&lt;/strong&gt; iA saves the markdown in the local version of the git repository created by the Working Copy app. I open Working Copy, hit „commit &amp;amp; push“ and wait a few seconds. &lt;a href=&#34;https://soeren.one/2019/hugo-mit-git-auf-uberspace-benutzen/&#34;&gt;Here&lt;/a&gt;, I wrote about the post-hook that builds the blog after every commit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Done&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For me, this works and I noted that more complex (proof-reading and validation) procedures lead to not writing at all. A downside of this process is that the first time I see how the post will look is when it‘s available on the website. Thus, there is often a second iteration of steps 4 and 5, where I fix typos, add missing links or headings. Then, it’s really done 😅&lt;/p&gt;
&lt;br&gt;
&lt;hr&gt;
&lt;br&gt;
Thank you for subscribing to this RSS feed. 
&lt;b&gt;&lt;a href=&#34;https://soeren.one/&#34;&gt;https://soeren.one/&lt;/a&gt;&lt;/b&gt; is &lt;a href=&#34;https://soeren.one//about/&#34;&gt;søren&lt;/a&gt;&#39;s personal blog. 
If you want to get in touch, please &lt;b&gt;&lt;a href=&#34;mailto:hej@soeren.one?subject=Reply to: My%20Blogging%20Workflow%20as%20of%20mid%202025&amp;body=Link to post: https%3a%2f%2fsoeren.one%2f2025%2fblogging-workflow-mid-2025%2f&#34;&gt;reply to this post via email&lt;/a&gt;&lt;/b&gt;. 
</description>
      
    </item>
    <item>
      <title>My blogging workflow as of late 2023</title>
      <link>https://soeren.one/2023/blogging-workflow-2023/</link>
      <pubDate>Wed, 29 Nov 2023 20:00:00 +0100</pubDate>
      <guid>https://soeren.one/2023/blogging-workflow-2023/</guid>
      <description>&lt;p&gt;In 2019 I wrote an article about the &lt;a href=&#34;https://soeren.one/2019/hugo-mit-git-auf-uberspace-benutzen/&#34;&gt;technical background&lt;/a&gt; of this blog, and in 2020 there was a &lt;a href=&#34;https://soeren.one/2020/hugo-blogging-ipad/&#34;&gt;type about how I blogged using iPad&lt;/a&gt;. Neither of these articles mentioned the complete workflow, starting by how I capture ideas and how they slowly form into larger articles.&lt;/p&gt;
&lt;p&gt;The idea of this type is to give this comprehensive overview. Not for you to replicate it, because it is so cool &amp;amp; smooth, but for me to see how things change over time. I feel ok with the current setup. If you have suggestions on how to improve it, please email me (using the button on the bottom of this page).&lt;/p&gt;
&lt;h3 id=&#34;collecting-ideas&#34;&gt;Collecting ideas&lt;/h3&gt;
&lt;p&gt;First step is idea collection. Without an idea, there won’t be a blog type. In the past, I used &lt;a href=&#34;https://getpocket.com/de/&#34;&gt;Pocket&lt;/a&gt; as a read-later app and pasted interesting articles or podcasts in there. It took some until I realised that links will remain there. I never found the time and commitment to go through the list again. Something simpler was needed. That’s when I switched to „&lt;a href=&#34;https://www.icloud.com/notes&#34;&gt;Apple Notes&lt;/a&gt;“. The app is available on all my devices, it is fast, easy to use, and has the ability to paste almost anything in it. From the workflow perspective this means that I create a new note for every interesting topic I want to write about, paste links, pictures, and my thoughts into it and then leave it. I don’t care about formatting or well written text at this moment. The only purpose is to collect the ideas I have, when I have them, in an as easy as possible way.&lt;/p&gt;
&lt;h3 id=&#34;formulating-ideas&#34;&gt;Formulating ideas&lt;/h3&gt;
&lt;p&gt;Next step is the draft creation. Within my Notes app, I start formulating the raw notes into a text draft. Usually, I re-do this step a couple of times, slightly changing the text with every iteration. Formatting is still typeponed.&lt;/p&gt;
&lt;h3 id=&#34;transfer-to-markdown&#34;&gt;Transfer to markdown&lt;/h3&gt;
&lt;p&gt;Once the text is in a good enough state, I copy it over to a markdown file, add the front matter (proper title, tags, etc.) and links. Using the markdown syntax, the text is formatted for the first time. This goes hand-in-hand with another round of rephrasing sentences or even paragraphs.&lt;/p&gt;
&lt;h3 id=&#34;publish&#34;&gt;Publish&lt;/h3&gt;
&lt;p&gt;The final step is publishing. This blog is maintained in a &lt;a href=&#34;https://soeren.one/tags/git&#34;&gt;git&lt;/a&gt; repository, so in order to publish content, the markdown file needs to be added to the repository. If I blog from the MacBook, I just paste the file in the respective directory, run &lt;code&gt;git add .&lt;/code&gt; and &lt;code&gt;git commit -m …&lt;/code&gt;. If I publish from a mobile device, I add the file to the repository using &lt;a href=&#34;https://apps.apple.com/de/app/working-copy-git-client/id896694807&#34;&gt;Working Copy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The git repository is hosted on &lt;a href=&#34;https://soeren.one/tags/uberspace/&#34;&gt;uberspace&lt;/a&gt;, which allows some magic (aka a git hook), when something is pushed to it. Each time I push changes to the remote server, a small script runs that builds the static site and makes it available at my domain. No need to build the site manually each time - a big time and frustration safer 🙂&lt;/p&gt;
&lt;h3 id=&#34;refinement&#34;&gt;Refinement&lt;/h3&gt;
&lt;p&gt;Once an article is published, I read it in the browser … and will definitely find some typos, broken links or formulations I don’t like. Ergo, switching apps, fixing it, and then re-publish the changes.&lt;/p&gt;
&lt;h3 id=&#34;ideas-for-the-future&#34;&gt;Ideas for the future&lt;/h3&gt;
&lt;p&gt;From the &lt;a href=&#34;https://soeren.one/2023/default-apps-2023/&#34;&gt;default-apps&lt;/a&gt; event, I learned that many people use &lt;a href=&#34;https://obsidian.md/&#34;&gt;obsidian&lt;/a&gt; for note taking. I will give it a try and see if it can replace my Notes and Markdown system break.&lt;/p&gt;
&lt;br&gt;
&lt;hr&gt;
&lt;br&gt;
Thank you for subscribing to this RSS feed. 
&lt;b&gt;&lt;a href=&#34;https://soeren.one/&#34;&gt;https://soeren.one/&lt;/a&gt;&lt;/b&gt; is &lt;a href=&#34;https://soeren.one//about/&#34;&gt;søren&lt;/a&gt;&#39;s personal blog. 
If you want to get in touch, please &lt;b&gt;&lt;a href=&#34;mailto:hej@soeren.one?subject=Reply to: My%20blogging%20workflow%20as%20of%20late%202023&amp;body=Link to post: https%3a%2f%2fsoeren.one%2f2023%2fblogging-workflow-2023%2f&#34;&gt;reply to this post via email&lt;/a&gt;&lt;/b&gt;. 
</description>
      
    </item>
    <item>
      <title>Hugo mit Git auf dem uberspace nutzen</title>
      <link>https://soeren.one/2019/hugo-mit-git-auf-uberspace-benutzen/</link>
      <pubDate>Fri, 06 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://soeren.one/2019/hugo-mit-git-auf-uberspace-benutzen/</guid>
      <description>&lt;h1 id=&#34;vorgeschichte&#34;&gt;Vorgeschichte&lt;/h1&gt;
&lt;p&gt;Vor gar nicht allzu langer Zeit bin ich mit diesem Blog von &lt;a href=&#34;https://ghost.org/&#34;&gt;Ghost&lt;/a&gt; zu &lt;a href=&#34;https://jekyllrb.com/&#34;&gt;Jekyll&lt;/a&gt; gewechselt. Ghost hat mir eigentlich sehr gut getaugt, auch wenn ich nicht der größte Fan davon war, dass &lt;a href=&#34;https://ghost.org/blog/2-0/&#34;&gt;bloggen mit Markdown mit den neueren Versionen einen Klick weiter entfernt&lt;/a&gt; war. Außerdem war es für mich immer eine kleine Herausforderung bei neuen Versionen die Abhängigkeiten auf dem Betriebssystem auf dem neusten Stand zu halten und die Datenbank zu migrieren.&lt;/p&gt;
&lt;p&gt;Bloggen mit einem Static-Site-Generator schien mir da der nächste logische Schritt. Ich habe also kurz Jekyll ausprobiert und bin schließlich bei &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt; gelandet. Hugo gebe ich aktuell den Vorzug, weil es sich leichter auf einem Windows-PC nutzen lässt und wesentlich schneller ist.&lt;/p&gt;
&lt;p&gt;Der geneigte Leser wird wissen, das ich bezüglich Webhoster ein großer Fan der Jungs und Mädels von &lt;a href=&#34;https://uberspace.de&#34;&gt;uberspace&lt;/a&gt; bin. Im folgenden also eine kleine Anleitung, um zu meinem aktuellen Setup zu kommen.&lt;/p&gt;
&lt;p&gt;Dafür werden wir &amp;hellip;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Git und Hugo lokal installieren&lt;/li&gt;
&lt;li&gt;Einen neuen Hugo-Blog anlegen&lt;/li&gt;
&lt;li&gt;Einen ersten Blog-Artikel schreiben&lt;/li&gt;
&lt;li&gt;Den uberspace vorbereiten&lt;/li&gt;
&lt;li&gt;Den Blog vom uberspace erstellen lassen&lt;/li&gt;
&lt;li&gt;Uns über einen neuen Blog freuen :)&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;git-und-hugo-lokal-installieren&#34;&gt;Git und Hugo lokal installieren&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Eine Anleitung zur Installation von git findet ihr hier: &lt;a href=&#34;https://book.git-scm.com&#34;&gt;https://book.git-scm.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Wie man Hugo installiert, steht auf der Hugo-Webseite: &lt;a href=&#34;https://gohugo.io/getting-started/installing/&#34;&gt;https://gohugo.io/getting-started/installing/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Solltet ihr, wie ich aktuell, an einem Windows-PC sitzen hilft euch vielleicht auch &lt;a href=&#34;https://www.youtube.com/embed/G7umPCU-8xc&#34;&gt;dieses Video&lt;/a&gt; weiter. Gleiche Videos gibt es auch für andere Betriebssysteme.&lt;/p&gt;
&lt;h1 id=&#34;hugo-blog-anlegen&#34;&gt;Hugo-Blog anlegen&lt;/h1&gt;
&lt;p&gt;Ist Hugo installiert, könnt ihr mit &lt;code&gt;hugo new site &amp;lt;sitename&amp;gt;&lt;/code&gt; einen neuen Blog anlegen. Wir erstellen das fiktive Blog &lt;code&gt;hugoblog.com&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;P.S. Ich nutze auch auf Windows meist die Git-Bash als Konsole. Die kennt auch Befehle wie ssh :)&lt;/em&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[Batman@lokal ~]$ hugo new site hugoblog.com
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Eine Hugo-Website kommt ohne Theme. Das müssen wir also als nächstes herunterladen. Ich mag das &lt;a href=&#34;https://github.com/htdvisser/hugo-base16-theme&#34;&gt;Base16-Theme&lt;/a&gt;. Falls euch das nicht zusagt, findet ihr &lt;a href=&#34;https://themes.gohugo.io/&#34;&gt;hier&lt;/a&gt; aber sicher ein oder zwei Alternativen.&lt;/p&gt;
&lt;p&gt;Das Theme müsst ihr in den Ordner &lt;code&gt;themes&lt;/code&gt; eurer eben erstellten Seite herunterladen.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[Batman@lokal ~]$ cd hugoblog.com/themes
[Batman@lokal themes]$ git clone https://github.com/htdvisser/hugo-base16-theme.git base16
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Und schließlich müssen wir Hugo noch mitteilen, dass ihr dieses Theme verwenden wollt. Dazu passen wir die Konfiguration an.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[Batman@lokal ~]$ cd ~/hugoblog.com
[Batman@lokal hugoblog.com]$ cat &amp;lt;&amp;lt;EOF&amp;gt;&amp;gt; config.toml
theme = &amp;#34;base16&amp;#34;
pygmentsuseclasses = true
EOF
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;erster-artikel&#34;&gt;Erster Artikel&lt;/h1&gt;
&lt;p&gt;Zeit für den ersten Artikel. Mittels &lt;code&gt;touch&lt;/code&gt; erstellen wir unter &lt;code&gt;content/posts/&lt;/code&gt; ein neues Markdown-File und befüllen es mit ein ein bisschen Inhalt.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[Batman@lokal hugoblog.com]$ touch content/posts/cooler-artikel.md
[Batman@lokal hugoblog.com]$ cat &amp;lt;&amp;lt;EOF&amp;gt;&amp;gt; content/posts/cooler-artikel.md
+++
title = &amp;#34;Hello World&amp;#34;
date = &amp;#34;2019-09-06&amp;#34;
layout = [&amp;#34;article&amp;#34;]
author = &amp;#34;Batman&amp;#34;
tags = [&amp;#34;uberspace&amp;#34;, &amp;#34;hugo&amp;#34;, &amp;#34;blog&amp;#34;]
+++

# Lorem Ipsum

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

EOF
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Mal drauf schauen, wie der Artikel aussieht? Das geht ganz leicht mit &lt;code&gt;hugo serve&lt;/code&gt;. Hugo erstellt dann einen lokalen Server und lässt euch eure Seite unter folgendem Link betrachten: &lt;a href=&#34;#ZgotmplZ&#34;&gt;localhost:1313&lt;/a&gt;.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[Batman@lokal hugoblog.com]$ hugo serve
Building sites …
                   | EN
+------------------+----+
  Pages            | 37
  Paginator pages  |  2
  Non-page files   |  0
  Static files     |  6
  Processed images |  0
  Aliases          | 14
  Sitemaps         |  1
  Cleaned          |  0
[...]
Environment: &amp;#34;development&amp;#34;
Serving pages from memory
Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender
Web Server is available at http://localhost:1313/ (bind address 127.0.0.1)
Press Ctrl+C to stop
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Wenn alles gut aussieht, können wir auf dem uberspace weitermachen.&lt;/p&gt;
&lt;h1 id=&#34;uberspace-vorbereiten&#34;&gt;uberspace vorbereiten&lt;/h1&gt;
&lt;p&gt;In diesem Schritt können wir uns am Tutorial auf &lt;a href=&#34;https://lab.uberspace.de/&#34;&gt;https://lab.uberspace.de/&lt;/a&gt; orientieren. Danke an Christian, luto und Julian.&lt;/p&gt;
&lt;h2 id=&#34;domain-anlegen&#34;&gt;Domain anlegen&lt;/h2&gt;
&lt;p&gt;Falls ihr eine eigene Domain verwenden wollt, lest im &lt;a href=&#34;https://manual.uberspace.de/web-domains.html&#34;&gt;uberspace-Wiki&lt;/a&gt; noch einmal nach wie das geht. Hier gehen wir davon aus, dass ihr eine Domain aufgeschaltet habt und diese auf euren Document-Root (&lt;code&gt;html/&lt;/code&gt;) verweist.&lt;/p&gt;
&lt;h2 id=&#34;hugo-installieren&#34;&gt;Hugo installieren&lt;/h2&gt;
&lt;p&gt;Um Hugo auf dem uberspace zu installieren, laden wir als erstes die neuste Version von Github als tar herunter. Prüfe im &lt;a href=&#34;https://github.com/gohugoio/hugo/releases&#34;&gt;Hugo Repository auf GitHub&lt;/a&gt; noch einmal welches die neuste Version ist und passe die Befehle entsprechend an. Anschließend entpacken, nach &lt;code&gt;bin&lt;/code&gt; verschieben und aufräumen. Fertig.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[batman@helium ~]$ wget https://github.com/gohugoio/hugo/releases/download/v0.58.1/hugo_0.58.1_Linux-64bit.tar.gz
[batman@helium ~]$ tar -xvf hugo_0.58.1_Linux-64bit.tar.gz hugo
[batman@helium ~]$ mv hugo ~/bin
[batman@helium ~]$ rm hugo_0.58.1_Linux-64bit.tar.gz
[batman@helium ~]$ hugo version
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Sollte es mal eine neuere Version von Hugo geben, wiederholt einfach diesen Schritt, um wieder up to date zu sein :)&lt;/p&gt;
&lt;h2 id=&#34;git-repository-für-hugo-blog-anlegen&#34;&gt;Git-Repository für Hugo-Blog anlegen&lt;/h2&gt;
&lt;p&gt;Als nächstes legen wir uns im Home-Verzeichnis einen neuen Ordner an, in dem wir das Git-Repository für unseren neuen Hugo-Blog ablegen.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[batman@helium ~]$ mkdir hugo_websites
[batman@helium ~]$ mkdir hugo_websites/hugoblog.git
[batman@helium ~]$ cd hugo_websites/hugoblog.git
[batman@helium hugoblog.git]$ git init --bare 
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;git-hook-anlegen&#34;&gt;Git Hook anlegen&lt;/h2&gt;
&lt;p&gt;Wir möchten, das der uberspace mit jedem &lt;code&gt;push&lt;/code&gt; in unser eben erstelltes Repository den Blog neu erstellt und auf der Domain verfügbar macht. Sagen wir ihm das. Dafür passen wir den &lt;code&gt;post-update&lt;/code&gt;-hook wie folgt an.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[batman@helium hugoblog.git]$ touch hooks/post-update
[batman@helium hugoblog.git]$ cat &amp;lt;&amp;lt;EOF&amp;gt;&amp;gt; hooks/post-update
#!/bin/sh

# los geht&amp;#39;s
echo &amp;#34;Start hook magic&amp;#34;

# hier definieren wir den Pfad zu unserem Git-Repository
GIT_REPO=$HOME/hugo_websites/hugoblog.git

# hier definieren wir ein temporäres Verzeichnis zum clonen des Repositorys
TMP_GIT_CLONE=$(mktemp -d)

# hier definieren wir den Pfad zu unserer öffentlichen Domain
PUBLIC_WWW=/var/www/virtual/$USER/html

# jetzt clonen wir das Repository in den temporären Ordner
git clone $GIT_REPO $TMP_GIT_CLONE
cd $TMP_GIT_CLONE

# Hugo anschmeißen
~/bin/hugo --cleanDestinationDir --destination $PUBLIC_WWW

# aufräumen
rm -Rf $TMP_GIT_CLONE
EOF
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;push-auf-den-uberspace&#34;&gt;Push auf den uberspace&lt;/h1&gt;
&lt;p&gt;Damit ist alles vorbereitet. Wir sollten jetzt nur noch unser auf dem uberspace erzeugtes Git-Repository als remote zum lokalen Ordner hinzufügen, unseren Artikel committen und das ganze hochladen.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[batman@lokal ~]$ cd hugoblog.com
[batman@lokal hugoblog.com]$ git init
[batman@lokal hugoblog.com]$ git remote add origin ssh://batman@helium.uberspace.de/hugo_websites/hugoblog.git
[batman@lokal hugoblog.com]$ git add .
[batman@lokal hugoblog.com]$ git commit -m &amp;#34;Initial commit&amp;#34;
[batman@lokal hugoblog.com]$ git push origin master
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Und das war&amp;rsquo;s dann auch schon. Auf den ersten Blick ist das ein bisschen länger geworden, aber diese Schritte müsst ihr ja nur einmal vornehmen.&lt;/p&gt;
&lt;p&gt;Da ich viel von unterwegs blogge, genieße ich es, auf dem iPad zu schreiben und nur einmal &lt;code&gt;git push&lt;/code&gt; eingeben zu müssen, um die Änderungen zu veröffentlichen. Wie ich von unterwegs blogge, werde ich vermutlich demnächst mal aufschreiben.&lt;/p&gt;
&lt;p&gt;Und jetzt viel Spaß mit eurem neuen Blog.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://media2.giphy.com/media/v1.Y2lkPTZjMDliOTUyMWxyM2t5Z2pjZzR5anF1ejhuc2Zzd3Qxb3doZjJ4ZXdiaHk3Y2J6ciZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/LXiElF2dzvUmQ/giphy.gif&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;br&gt;
&lt;hr&gt;
&lt;br&gt;
Thank you for subscribing to this RSS feed. 
&lt;b&gt;&lt;a href=&#34;https://soeren.one/&#34;&gt;https://soeren.one/&lt;/a&gt;&lt;/b&gt; is &lt;a href=&#34;https://soeren.one//about/&#34;&gt;søren&lt;/a&gt;&#39;s personal blog. 
If you want to get in touch, please &lt;b&gt;&lt;a href=&#34;mailto:hej@soeren.one?subject=Reply to: Hugo%20mit%20Git%20auf%20dem%20uberspace%20nutzen&amp;body=Link to post: https%3a%2f%2fsoeren.one%2f2019%2fhugo-mit-git-auf-uberspace-benutzen%2f&#34;&gt;reply to this post via email&lt;/a&gt;&lt;/b&gt;. 
</description>
      
    </item>
  </channel>
</rss>
