Compare commits

24 Commits

Author SHA1 Message Date
18dc79243d Remove project state
All checks were successful
Build and Deploy Zola Website / build_and_deploy (push) Successful in 20s
Build Zola Website / build (pull_request) Successful in 29s
2025-07-09 23:44:18 +02:00
203b08d044 Fixed h1 margin on about page
All checks were successful
Build and Deploy Zola Website / build_and_deploy (push) Successful in 17s
Build Zola Website / build (pull_request) Successful in 24s
2025-05-24 12:05:33 +02:00
3ceaeeafda Fix margin block on copy code button when code block is inside LI
All checks were successful
Build and Deploy Zola Website / build_and_deploy (push) Successful in 15s
Build Zola Website / build (pull_request) Successful in 21s
2025-05-21 14:18:15 +02:00
898bd01b83 Revert "Add more margin to copy code button"
All checks were successful
Build and Deploy Zola Website / build_and_deploy (push) Successful in 13s
Build Zola Website / build (pull_request) Successful in 21s
This reverts commit de7e38855a.
2025-05-21 14:05:13 +02:00
de7e38855a Add more margin to copy code button
All checks were successful
Build and Deploy Zola Website / build_and_deploy (push) Successful in 18s
Build Zola Website / build (pull_request) Successful in 25s
2025-05-21 14:01:08 +02:00
40748d6f8c About text changed
All checks were successful
Build and Deploy Zola Website / build_and_deploy (push) Successful in 15s
Build Zola Website / build (pull_request) Successful in 22s
2025-05-06 18:38:07 +02:00
4da471af9f About text changed
All checks were successful
Build and Deploy Zola Website / build_and_deploy (push) Successful in 14s
Build Zola Website / build (pull_request) Successful in 22s
2025-05-06 18:31:12 +02:00
d20e80c866 Postbuild script updated
All checks were successful
Build and Deploy Zola Website / build_and_deploy (push) Successful in 15s
Build Zola Website / build (pull_request) Successful in 22s
2025-05-06 18:24:42 +02:00
a1cff8417a Disable unfinished content
All checks were successful
Build Zola Website / build (pull_request) Successful in 22s
Build and Deploy Zola Website / build_and_deploy (push) Successful in 14s
2025-05-06 15:12:50 +02:00
a157669815 Text changed on about page
All checks were successful
Build and Deploy Zola Website / build_and_deploy (push) Successful in 16s
Build Zola Website / build (pull_request) Successful in 24s
2025-05-06 15:04:14 +02:00
5de2dc09f4 Home page text rewrite
All checks were successful
Build and Deploy Zola Website / build_and_deploy (push) Successful in 14s
Build Zola Website / build (pull_request) Successful in 16s
2025-05-05 13:18:51 +02:00
ca2cedc3a2 Fix: grammar error on about page
All checks were successful
Build and Deploy Zola Website / build_and_deploy (push) Successful in 25s
Build Zola Website / build (pull_request) Successful in 29s
2025-04-01 12:27:55 +02:00
de1c0bebff New post: Unix pass and Android Password Store with YubiKey
All checks were successful
Build and Deploy Zola Website / build_and_deploy (push) Successful in 15s
Build Zola Website / build (pull_request) Successful in 22s
2025-01-01 16:00:31 +01:00
914be41a0a Edited: show username in url for gitea
All checks were successful
Build and Deploy Zola Website / build_and_deploy (push) Successful in 16s
Build Zola Website / build (pull_request) Successful in 24s
2024-12-31 16:44:51 +01:00
62a6937c20 Add space for footer on about page
All checks were successful
Build and Deploy Zola Website / build_and_deploy (push) Successful in 14s
Build Zola Website / build (pull_request) Successful in 20s
2024-12-18 13:07:38 +01:00
7b0acd007b Use vmax instead of vh
All checks were successful
Build and Deploy Zola Website / build_and_deploy (push) Successful in 14s
Build Zola Website / build (pull_request) Successful in 20s
2024-12-18 13:03:39 +01:00
000bb3ea47 Fix visible content in navbar
All checks were successful
Build and Deploy Zola Website / build_and_deploy (push) Successful in 15s
Build Zola Website / build (pull_request) Successful in 21s
2024-12-15 08:32:34 +01:00
297f96ab99 Added postbuild script to the Gitea Action
All checks were successful
Build and Deploy Zola Website / build_and_deploy (push) Successful in 13s
Build Zola Website / build (pull_request) Successful in 20s
2024-12-15 08:18:35 +01:00
3112316e7d Added execute permissions to the postbuild script 2024-12-15 08:18:10 +01:00
1ca991e4b9 Added: postbuild script 2024-12-15 08:14:54 +01:00
c827757fb8 Added: burger menu for mobile views
All checks were successful
Build and Deploy Zola Website / build_and_deploy (push) Successful in 14s
Build Zola Website / build (pull_request) Successful in 21s
2024-12-15 08:09:10 +01:00
01c994aa13 Added auto-awning-close and walauncher projects
All checks were successful
Build and Deploy Zola Website / build_and_deploy (push) Successful in 13s
Build Zola Website / build (pull_request) Successful in 20s
2024-12-15 03:57:28 +01:00
1de4bf249b Added: hr under the h1 in posts and projects template
All checks were successful
Build and Deploy Zola Website / build_and_deploy (push) Successful in 14s
Build Zola Website / build (pull_request) Successful in 20s
2024-12-15 03:52:41 +01:00
28c29f0d30 Fix code overflow
All checks were successful
Build and Deploy Zola Website / build_and_deploy (push) Successful in 13s
Build Zola Website / build (pull_request) Successful in 20s
2024-12-14 23:09:30 +01:00
25 changed files with 292 additions and 22 deletions

View File

@ -29,6 +29,9 @@ jobs:
run: |
./zola build
- name: Run postbuild script
run: bash ./postbuild.sh
- name: Set Destination Folder if MASTER
if: ${{ github.ref == 'refs/heads/master' }}
run: echo "DEST_FOLDER=/srv/www/cz/filiprojek/www" >> $GITHUB_ENV

View File

@ -3,25 +3,25 @@ title = "About"
template = "about.html"
+++
## About
I am student of IT at Charles University in Prague (Faculty of Education).
I am an IT student at Charles University in Prague (Faculty of Education).
My programming journey began in high school, where I developed a passion for `Linux` and co-founded [Fofrweb](https://fofrweb.com). Together with a classmate, I created web applications using `Node.js` and `Vue.js`, all hosted on my own Linux server.
As a member of [Microlab](https://microlab.space), the university's hacker space, I engage with fellow tech enthusiasts. Additionally, I contribute to the open-source community as a package maintainer for [Void Linux](https://voidlinux.org).
As a member of [Microlab](https://microlab.space), the university's hackerspace, I collaborate on various hardware and software projects. Additionally, I contribute to the open-source community as a package maintainer for [Void Linux](https://voidlinux.org).
## Work
I currently work as a Linux engineer. Most of my work involves Debian based systems - desktops (Raspberry Pi, Intel NUC) and servers.
I also create custom websites from time to time.
Currently employed as a Linux Devops engineer. Most of my work involves Debian-based systems on various hardware platforms.
I also create custom websites from time to time.
## Projects
Most of my projects are hosted on Gitea and GitHub:
- Gitea: [git.filiprojek.cz](https://git.filiprojek.cz/fr)
Most of my projects are hosted on my private Gitea instance and GitHub:
- Gitea: [git.filiprojek.cz/fr](https://git.filiprojek.cz/fr)
- GitHub: [github.com/filiprojek](https://github.com/filiprojek)
## Contact
- <a href="mailto:&#102;&#105;&#108;&#105;&#112;&#064;&#102;&#105;&#108;&#105;&#112;&#114;&#111;&#106;&#101;&#107;&#046;&#099;&#122;">&#102;&#105;&#108;&#105;&#112;&#064;&#102;&#105;&#108;&#105;&#112;&#114;&#111;&#106;&#101;&#107;&#046;&#099;&#122;</a>
- [@filiprojek](https://t.me/filiprojek) on Telegram
- PGP: [0x7E65EA58C6075F09](https://keys.openpgp.org/vks/v1/by-fingerprint/CA3D9BE28315B49164130CD97E65EA58C6075F09)

View File

@ -0,0 +1,91 @@
+++
title = "Unix pass and Android Password Store with YubiKey"
date = 2025-01-01
description = "Setting Up Unix pass with YubiKey and Android Password Store"
+++
Using a secure and versatile password manager is a must for managing your digital life, and [pass](https://www.passwordstore.org/), the Unix password manager, is a fantastic choice. If you store your GPG key on a YubiKey and use the [Android Password Store](https://github.com/android-password-store/Android-Password-Store) app with [OpenKeychain](https://github.com/open-keychain/open-keychain), this guide will help you set everything up while addressing a common compatibility issue with `throw-keyids` in `gpg.conf`.
## What Youll Need
- A YubiKey configured with your GPG key (see the excellent [YubiKey-Guide by drduh](https://github.com/drduh/YubiKey-Guide)).
- The [pass](https://www.passwordstore.org/) command-line utility.
- [OpenKeychain](https://github.com/open-keychain/open-keychain) installed on your Android device.
- The [Android Password Store](https://github.com/android-password-store/Android-Password-Store) app.
## Configuring `pass` with a YubiKey-Stored GPG Key
1. **Set up your YubiKey and GPG key**
- Follow the steps in [drduhs YubiKey guide](https://github.com/drduh/YubiKey-Guide) to create and configure your GPG key on your YubiKey.
2. **Install `pass`**
- Install the `pass` utility on your Linux system. Most distributions have it in their package repositories:
```bash
apt install pass # For Debian/Ubuntu-based distros
xbps-install -S pass # For Void Linux
```
3. **Initialize `pass` with your GPG key**
- Run the following command to initialize the `.password-store` directory:
```bash
pass init <KEYID>
```
- Replace `<KEYID>` with your GPG key ID stored on the YubiKey.
4. **Sync passwords to your Android device**
- Clone your `.password-store` repository to your Android device and set up the `Password Store` app with `OpenKeychain`.
## The `throw-keyids` Issue
While working through this issue, I found a helpful discussion in [GitHub issue #173](https://github.com/android-password-store/Android-Password-Store/issues/173) for the Android Password Store repository. This thread provided insights that clarified the root cause of the problem and its resolution.
During setup, you might encounter an error in the Android Password Store app. OpenKeychain could report that the `.gpg` files are encrypted for a different key, even if they are not. This issue arises due to the `throw-keyids` option in `~/.gnupg/gpg.conf`.
### What Does `throw-keyids` Do?
The `throw-keyids` option in `gpg.conf` hides the recipients key ID during encryption. While this enhances privacy by preventing others from identifying the intended recipient(s), it can cause issues with OpenKeychain. OpenKeychain relies on visible key IDs to identify the correct decryption key, and without them, it assumes the files were encrypted for an unknown key.
### Fixing the Issue
To resolve this, you need to disable `throw-keyids` and re-encrypt your password store.
1. **Comment Out `throw-keyids` in `gpg.conf`**
- Open `~/.gnupg/gpg.conf` in your favorite text editor and comment out the line:
```
# throw-keyids
```
2. **Re-encrypt Your Password Store**
- Run the following command to re-encrypt all passwords with the new GPG options:
```bash
PASSWORD_STORE_GPG_OPTS="--no-throw-keyids" pass init <KEYID>
```
- Replace `<KEYID>` with your GPG key ID.
3. **Optional: Update Your Environment**
- To ensure `--no-throw-keyids` is always used, add the following line to your `~/.bashrc`:
```bash
export PASSWORD_STORE_GPG_OPTS='--no-throw-keyids' # Fix for OpenKeychain
```
- While this step is not strictly necessary (since the change in `gpg.conf` resolves the issue), it can serve as a safeguard.
4. **Sync the Updated Password Store**
- Push the updated `.password-store` to your remote repository and pull it on your Android device.
## Conclusion
With these steps, you can seamlessly use `pass` with a YubiKey and the Android Password Store app. The issue with `throw-keyids` is a minor hurdle that can be resolved by adjusting your `gpg.conf` and re-encrypting your password store. Disabling `throw-keyids` makes your key IDs visible, which slightly reduces privacy but is necessary for compatibility with OpenKeychain.
For further details on `pass`, GPG, or YubiKey, refer to their respective documentation. A secure password manager setup like this ensures your sensitive information stays safe across devices.
# References
- [Standard unix password manager](https://www.passwordstore.org/)
- [drduh's YubiKey Guide](https://github.com/drduh/YubiKey-Guide)
- [Android Password Store issue](https://github.com/android-password-store/Android-Password-Store/issues/173#issuecomment-453686599)

View File

@ -0,0 +1,20 @@
+++
title = "Auto Awning Close"
date = 2021-04-12
description = "Automated awning control system using Arduino Nano and relays. Includes weather and time-based conditions for seamless operation."
[extra]
state = "done"
+++
The **Auto-Awning-Close** is a smart automation project that integrates seamlessly with an existing awning system. Leveraging an Arduino Nano and relays, it allows for effortless, automated control of your awning based on weather conditions, time schedules, or manual inputs via a dedicated remote.
This project showcases a sleek and functional approach to home automation, featuring PCB and breadboard schematics for a professional and reliable build. It prioritizes integration, ensuring the original remote controller remains operational while introducing new capabilities.
## **Key Features**
- **Weather-Based Automation:** Protect your awning from harsh elements like rain or wind with automatic closure when necessary.
- **Time-Based Automation:** Program your awning to open or close at specific times to suit your routine or maximize daylight exposure.
- **Seamless Remote Control:** Retain manual control with a secondary remote for added flexibility alongside automation.
If you're interested in robust, user-friendly home automation solutions, the Auto-Awning-Close project demonstrates how hardware, creativity, and practical design come together.

View File

@ -0,0 +1,22 @@
+++
title = "WALauncher"
date = 2024-12-15
description = "A lightweight launcher for your web apps, an alternative to Muximux "
[extra]
state = "done"
+++
The **WALauncher** project is a lightweight, web-based application launcher designed as a modern and streamlined alternative to [Muximux](https://github.com/mescon/Muximux). Its perfect for managing web applications like Servarr apps but is highly customizable to support any web-based services.
WALauncher provides a sleek, user-friendly interface for consolidating your web services into a single, accessible dashboard, making it an efficient tool for home servers or personal projects.
#### **Key Features**
- **Minimalistic Design:** Intuitive layout for easy access to all your web apps.
- **Docker Support:** Deploy effortlessly using the provided Docker setup for consistent and reliable hosting.
- **Customizable:** Configure apps, icons, titles, and additional options to fit your preferences.
- **Open Source:** Contribute to or modify the project to suit your needs.
WALauncher combines simplicity and functionality for managing your web services with minimal overhead. Its a solution you can easily deploy and adapt to your workflow.
Visit the [GitHub](https://github.com/filiprojek/walauncher) repository for more details, screenshots, and support. Start managing your web apps with ease!

46
postbuild.sh Executable file
View File

@ -0,0 +1,46 @@
#!/bin/bash
public_dir="./public"
css_extension=".css"
timestamp=$(date +%s)
# Define an array of folders to skip
skip_folders=("img" "svg" "fonts")
# Function to check if a path is within a skipped folder
is_skipped_folder() {
local path=$1
for skip in "${skip_folders[@]}"; do
if [[ "$path" == */$skip/* ]]; then
return 0
fi
done
return 1
}
# Function to add timestamp to CSS files and update HTML imports
update_css_references() {
find "$public_dir" -type f -name "*$css_extension" | while read -r css_file; do
if is_skipped_folder "$css_file"; then
continue
fi
base_dir=$(dirname "$css_file")
base_name=$(basename "$css_file" "$css_extension")
new_name="${base_name}-${timestamp}${css_extension}"
new_path="${base_dir}/${new_name}"
# Rename the CSS file
mv "$css_file" "$new_path"
echo "Renamed: $css_file -> $new_path"
# Update all HTML files under public recursively
find "$public_dir" -type f -name "*.html" | while read -r html_file; do
sed -i "s|$base_name$css_extension|$new_name|g" "$html_file"
echo "Updated references in: $html_file"
done
done
}
update_css_references

View File

@ -1,9 +1,20 @@
.about {
h1 {
font-size: 2rem;
margin-bottom: 2rem;
}
h2 {
margin-top: 1rem;
margin-bottom: .5rem;
}
h3, h4, h5, h6, p {
h3,
h4,
h5,
h6,
p {
margin-top: .5rem;
margin-bottom: .5rem;
}
@ -11,5 +22,6 @@
p {
text-align: left;
}
}
margin-bottom: 3rem; // space for footer
}

View File

@ -12,3 +12,7 @@
flex-direction: row;
}
.disable-scroll {
overflow: hidden !important;
position: fixed;
}

View File

@ -1,19 +1,23 @@
//.language-yaml {
pre {
display: block;
display: flex; /* Enables flexbox */
align-items: center; /* Vertically centers the content */
justify-content: space-between; /* Allows space for the copy button on the right */
max-width: 100%;
overflow-x: auto;
overflow-y: auto;
overflow-y: auto;
min-height: 3rem; /* Maintains a consistent height */
padding: 0.5rem;
margin: 0.5rem 0;
border-radius: 5px;
white-space: pre;
white-space: pre; /* Keeps code formatting */
box-sizing: border-box; /* Includes padding in width calculation */
}
code {
display: inline-block;
word-break: break-word;
white-space: pre-wrap;
word-break: break-word; /* Prevents long words from breaking the layout */
white-space: pre-wrap; /* Allows wrapping of long strings */
}
.project-wrapper {
@ -47,6 +51,7 @@ code {
.copy-code-wrapper {
position: relative;
margin-block-start: 1em; // Fixes wrong margin when code block is inside listed item
}
.copy-code {

View File

@ -7,7 +7,7 @@
body {
display: flex;
flex-direction: column;
min-height: 100vh;
min-height: 100dvh;
font-family: 'Source Code Pro', monospace;
background: var(--background);
color: var(--color);
@ -79,6 +79,41 @@ footer {
align-items: center;
align-self: flex-end;
margin-top: auto;
margin-bottom: 2rem;
margin-bottom: max(2rem, env(safe-area-inset-bottom)); /* Account for safe area */
}
.hamburger {
display: none;
}
@media only screen and (min-width: 0px) and (max-width: 1090px) {
header {
.hamburger {
display: block;
font-size: 3rem;
text-decoration: none;
cursor: pointer;
user-select: none;
z-index: 2000;
}
.logo {
z-index: 2000;
}
.hamburger:hover {
color: white;
}
.links {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1000;
background: var(--c-gray);
flex-direction: column;
font-size: 2rem;
}
}
}

View File

@ -0,0 +1,26 @@
const burger = document.querySelector(".hamburger")
const links = document.querySelector(".links")
const body = document.querySelector("body")
const main = document.querySelector("main")
let shown = false
burger.addEventListener("click", (e) => {
e.preventDefault()
if (!shown) {
links.style.display = "flex"
body.classList.add("disable-scroll")
burger.textContent = "x"
main.style.visibility = "hidden"
} else {
links.style.display = "none"
body.classList.remove("disable-scroll")
burger.textContent = "☰"
main.style.visibility = "visible"
}
shown = !shown
})

View File

@ -6,6 +6,7 @@
{% block content %}
<section class="about content">
{{ page.content | safe }}
<h1>{{ page.title }}</h1>
{{ page.content | safe }}
</section>
{% endblock content %}

View File

@ -25,6 +25,7 @@
<link rel="stylesheet" href="/style.css">
<link rel="stylesheet" href="/home.css">
<script defer src="https://analytics.fofrweb.com/script.js" data-website-id="2b326fdd-6c87-4627-b1f1-d0afb40aeef6"></script>
<script defer src="/js/mobile-navbar.js"></script>
{% block styles %}
{% endblock styles %}
</head>
@ -43,6 +44,7 @@
>{{ item.name }}</a>
{% endfor %}
</div>
<div class="hamburger"></div>
</nav>
</header>
@ -58,6 +60,7 @@
{% endblock content %}
</main>
<footer>
<p>Built using <a href="https://getzola.org" target="_blank">Zola SSG</a></p>
<p>Build time: {{ now() | date(format="%Y-%m-%d %H:%M") }},
{% if config.extra.git %}
<a href="{{ config.extra.git }}" target="_blank">Source</a>

View File

@ -5,7 +5,7 @@
<section>
<p>Filip Rojek &lt&#102;&#105;&#108;&#105;&#112;&#064;&#102;&#105;&#108;&#105;&#112;&#114;&#111;&#106;&#101;&#107;&#046;&#099;&#122;&gt</p>
<br>
<p>Linux sysadmin, backend node.js & php developer <a href="https://www.fofrweb.com/" target="_blank">@fofrweb</a>,<br> GNU/Linux <a href="http://voidlinux.org" target="_blank">Void</a> user, student and coffee enthusiast<span class="underscore">_</span><p>
<p>Linux sysadmin, software engineer <a href="https://www.fofrweb.com/" target="_blank">@fofrweb</a>,<br> GNU/Linux <a href="http://voidlinux.org" target="_blank">Void</a> contributor and student at Charles University in Prague<span class="underscore">_</span><p>
<br>
<p>PGP: <a href="https://keys.openpgp.org/vks/v1/by-fingerprint/CA3D9BE28315B49164130CD97E65EA58C6075F09" target="_blank">0x7E65EA58C6075F09</a></p>
<br>

View File

@ -24,6 +24,7 @@
<!-- <h2>{{ page.title }}</h2> -->
<div>
<hr>
{{ page.content | safe }}
</div>
<a href="/posts" class="link-back">Back to list of posts</a>

View File

@ -18,6 +18,7 @@
<h2>{{ page.title }}</h2>
<div>
<hr>
{{ page.content | safe }}
</div>
<a href="/projects" class="link-back">Back to list of projects</a>

View File

@ -20,7 +20,7 @@
{% endif %}
</p>
<hr>
<p>{{ project.date }} | {{ project.extra.state}}</p>
<p>{{ project.date }}</p>
</div>
{% endfor %}
</section>