-
BIN2024/06/26/the-selfhosting-experience/cloud.png
-
BIN2024/06/26/the-selfhosting-experience/dashboard.png
-
BIN2024/06/26/the-selfhosting-experience/dashdot-dark.png
-
BIN2024/06/26/the-selfhosting-experience/download.png
-
BIN2024/06/26/the-selfhosting-experience/gaming.png
-
BIN2024/06/26/the-selfhosting-experience/goat.png
-
4662024/06/26/the-selfhosting-experience/index.html
-
BIN2024/06/26/the-selfhosting-experience/indexers.png
-
BIN2024/06/26/the-selfhosting-experience/kuma.png
-
BIN2024/06/26/the-selfhosting-experience/media-header.png
-
BIN2024/06/26/the-selfhosting-experience/media.png
-
BIN2024/06/26/the-selfhosting-experience/server.png
-
BIN2024/06/26/the-selfhosting-experience/social.png
-
BIN2024/06/26/the-selfhosting-experience/stats.png
-
BIN2024/06/26/the-selfhosting-experience/umami-1.png
-
BIN2024/06/26/the-selfhosting-experience/umami-2.png
-
BIN2024/06/26/the-selfhosting-experience/wondering-project.xcf
-
BIN2024/06/26/the-selfhosting-experience/wondering.png
-
BIN2024/06/26/the-selfhosting-experience/workflow.png
-
BIN2024/06/26/the-selfhosting-experience/workflow_upscayl_4x_realesrgan-x4plus-anime.png
-
17About/index.html
-
304archives/2024/06/index.html
-
304archives/2024/index.html
-
16archives/index.html
-
172atom.xml
-
328digital-piracy/index.html
-
2faq/index.html
-
8feed.json
-
26index.html
-
2newPost.json
-
174rss.xml
-
34sitemap.xml
After Width: 1104 | Height: 789 | Size: 59 KiB |
After Width: 1740 | Height: 1354 | Size: 235 KiB |
After Width: 1920 | Height: 1036 | Size: 261 KiB |
After Width: 1110 | Height: 901 | Size: 90 KiB |
After Width: 1110 | Height: 503 | Size: 64 KiB |
After Width: 1104 | Height: 1024 | Size: 98 KiB |
@ -0,0 +1,466 @@ |
|||
<!DOCTYPE html> |
|||
<html lang="en"> |
|||
|
|||
<head> |
|||
|
|||
|
|||
<!-- Bing & Google Site Index--> |
|||
<meta name="google-site-verification" content="B4hZCJh4Uz6qdaXiH65DRXUpjVTHBcblzZaXZjUo7AE" /> |
|||
<meta name="msvalidate.01" content="1C56B1EC58ADE4A5D59E7AF88A8AFE99" /> |
|||
|
|||
<!-- Basic Page Needs |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
<meta charset="utf-8"> |
|||
|
|||
|
|||
<title>The Selfhosting Experience</title> |
|||
|
|||
<link rel="sitemap" href="https://tim.kicker.devsitemap.xml" /> |
|||
|
|||
<link rel="canonical" href="https://tim.kicker.dev/2024/06/26/the-selfhosting-experience/"> |
|||
|
|||
<meta name="description" content="I’ve been running my own server for about 2.5 years now and have gained a lot of experience in the process. Since a friend of mine asked about my setu"> |
|||
|
|||
|
|||
<meta name="keywords" content="tim, kicker, jochen, htl, website"> |
|||
|
|||
<meta name="author" content="Tim Kicker"> |
|||
|
|||
<meta property="og:image" content="https://tim.kicker.devhttps://tim.kicker.dev/2024/06/26/the-selfhosting-experience/wondering.png"> |
|||
|
|||
<meta property="og:site_name" content="Tim's Blog" /> |
|||
<meta property="og:type" content="article" /> |
|||
<meta property="og:title" content="The Selfhosting Experience" /> |
|||
|
|||
<meta property="og:description" content="I’ve been running my own server for about 2.5 years now and have gained a lot of experience in the process. Since a friend of mine asked about my setu"> |
|||
|
|||
<meta property="og:url" content="https://tim.kicker.dev/2024/06/26/the-selfhosting-experience/" /> |
|||
|
|||
<meta name="twitter:card" content="summary_large_image"> |
|||
<meta name="twitter:title" content="The Selfhosting Experience"> |
|||
|
|||
<meta name="twitter:description" content="I’ve been running my own server for about 2.5 years now and have gained a lot of experience in the process. Since a friend of mine asked about my setu"> |
|||
|
|||
|
|||
<meta name="twitter:image" content="https://tim.kicker.devhttps://tim.kicker.dev/2024/06/26/the-selfhosting-experience/wondering.png"> |
|||
|
|||
<meta name="twitter:url" content="https://tim.kicker.dev/2024/06/26/the-selfhosting-experience/" /> |
|||
|
|||
<!-- Mobile Specific Metas |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1"> |
|||
|
|||
<!-- Preload fonts |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
<link rel="preload" href="../fonts/dm-serif-display-v4-latin-regular.woff2" as="font" type="font/woff2" crossorigin> |
|||
<link rel="preload" href="../fonts/inter-v2-latin-regular.woff2" as="font" type="font/woff2" crossorigin> |
|||
|
|||
<!-- CSS |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
|
|||
<link rel="stylesheet" href="/css/normalize.css"> |
|||
|
|||
|
|||
<link rel="stylesheet" href="/css/skeleton.css"> |
|||
|
|||
|
|||
<link rel="stylesheet" href="/css/custom.css"> |
|||
|
|||
|
|||
<link rel="stylesheet" href="/css/prism-dark.css"> |
|||
|
|||
|
|||
<link rel="stylesheet" href="/css/prism-line-numbers.css"> |
|||
|
|||
<!-- User css --> |
|||
|
|||
|
|||
<link rel="stylesheet" href="/css/user.css"> |
|||
|
|||
|
|||
|
|||
<!-- Favicon |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
<link rel="icon" type="image/png" href="/images/teddy-bear-apple.webp"> |
|||
|
|||
<!-- Custom Theme Color Style |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
<style> |
|||
a:not(.icon) { |
|||
text-decoration-color: #0FA0CE; |
|||
background-image: linear-gradient( |
|||
to bottom, |
|||
rgba(0, 0, 0, 0) 50%, |
|||
#0FA0CE 50% |
|||
); |
|||
} |
|||
blockquote { |
|||
border-left: 8px solid #0FA0CE; |
|||
} |
|||
.nanobar .bar { |
|||
background: #0FA0CE; |
|||
} |
|||
.button.button-primary:hover, |
|||
button.button-primary:hover, |
|||
input[type="submit"].button-primary:hover, |
|||
input[type="reset"].button-primary:hover, |
|||
input[type="button"].button-primary:hover, |
|||
.button.button-primary:focus, |
|||
button.button-primary:focus, |
|||
input[type="submit"].button-primary:focus, |
|||
input[type="reset"].button-primary:focus, |
|||
input[type="button"].button-primary:focus { |
|||
background-color: #0FA0CE; |
|||
border-color: #0FA0CE; |
|||
} |
|||
input[type="email"]:focus, |
|||
input[type="number"]:focus, |
|||
input[type="search"]:focus, |
|||
input[type="text"]:focus, |
|||
input[type="tel"]:focus, |
|||
input[type="url"]:focus, |
|||
input[type="password"]:focus, |
|||
textarea:focus, |
|||
select:focus { |
|||
border: 1px solid #0FA0CE; |
|||
} |
|||
</style> |
|||
|
|||
<!-- Google Analytics (With Privacy Settings On) |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
|
|||
|
|||
<meta name="generator" content="Hexo 6.3.0"><link rel="alternate" href="/atom.xml" title="Tim's Blog" type="application/atom+xml"> |
|||
</head> |
|||
|
|||
<body> |
|||
<div class="container"> |
|||
<div class="row"> |
|||
<div> |
|||
|
|||
<script async src="https://stats.kicker.dev/script.js" data-website-id="295db5f5-27a1-42e8-9783-1e410896a596"></script> |
|||
<script data-goatcounter="https://altstats.kicker.dev/count" async src="//altstats.kicker.dev/count.js"></script> |
|||
|
|||
|
|||
<div class="row"> |
|||
<div class="two columns" style="max-width: 50px"> |
|||
<h1 class="mt-2 mode"> |
|||
<div onclick=setDarkMode(true) id="darkBtn">🌑</div> |
|||
<div onclick=setDarkMode(false) id="lightBtn" class=hidden>☀️</div> |
|||
<script > |
|||
if (localStorage.getItem('preferredTheme') == 'dark') { |
|||
setDarkMode(true) |
|||
} |
|||
function setDarkMode(isDark) { |
|||
var darkBtn = document.getElementById('darkBtn') |
|||
var lightBtn = document.getElementById('lightBtn') |
|||
if (isDark) { |
|||
lightBtn.style.display = "block" |
|||
darkBtn.style.display = "none" |
|||
localStorage.setItem('preferredTheme', 'dark'); |
|||
} else { |
|||
lightBtn.style.display = "none" |
|||
darkBtn.style.display = "block" |
|||
localStorage.removeItem('preferredTheme'); |
|||
} |
|||
document.body.classList.toggle("darkmode"); |
|||
} |
|||
</script> |
|||
</h1> |
|||
</div> |
|||
|
|||
<div class="six columns ml-1"> |
|||
<h1 class="mt-2"> |
|||
<div onclick=navigateHome()>Hello World.</div> |
|||
<script > |
|||
function navigateHome() { |
|||
window.location.replace('https://tim.kicker.dev'); |
|||
} |
|||
</script> |
|||
</h1> |
|||
</div> |
|||
|
|||
|
|||
<!-- |
|||
<div class="six columns ml-1"> |
|||
<h1 class="mt-2"> |
|||
<a class="mt-2" href="/">Hello World.</a> |
|||
</h1> |
|||
</div> |
|||
--> |
|||
|
|||
<div class="twelve columns"> |
|||
<div class="row"> |
|||
<div class="nine columns left"> |
|||
<a href="/">Home</a> |
|||
|
|||
|
|||
<a href="/archives" class="ml">Blog</a> |
|||
|
|||
|
|||
|
|||
<a href="/About" class="ml">About</a> |
|||
|
|||
|
|||
|
|||
|
|||
<a href="mailto:[email protected]" target="_blank" class="ml">Email</a> |
|||
|
|||
|
|||
</div> |
|||
</div> |
|||
<hr style="margin-bottom: 2.6rem"> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="trans"> |
|||
<h2>The Selfhosting Experience</h2> |
|||
|
|||
<p>I’ve been running my own server for about 2.5 years now and have gained a lot of experience in the process. Since a friend of mine asked about my setup and some tips, I thought it would be best to publish another blog post on this topic. This is one of my more tech-savvy posts, so feel free to skip it if you’re not interested (as if I have any say in this…). I’ll keep this entry updated as long as I’m willing to.</p> |
|||
<p><img src="/2024/06/26/the-selfhosting-experience/wondering.png"></p> |
|||
<p>Me, sometime at the beginning of 2022</p> |
|||
<h2 id="Reasoning"><a href="#Reasoning" class="headerlink" title="Reasoning"></a>Reasoning</h2><p>Why would you actually want to host everything yourself in the first place? I mean, it’s a lot of work, a ton of stress, and requires constant maintenance?</p> |
|||
<ul> |
|||
<li><p><strong>Availability</strong>: Every single day approximately <a target="_blank" rel="noopener" href="https://themeisle.com/blog/how-many-websites-are-there/">3,992,222 websites are created</a> (which is a lot, WTF). However, many sites also become unavailable, leading to data loss, like the shutdown of <a target="_blank" rel="noopener" href="https://www.theverge.com/2021/5/7/22424356/liveleak-shock-site-shuts-down-itemfix">LiveLeak</a>, the deletion of YouTube channels, or <a target="_blank" rel="noopener" href="https://www.buzzfeednews.com/article/otilliasteadman/pornhub-removes-videos">countless minutes of pornographic material</a>. There are even entire communities dedicated to gathering so-called <a target="_blank" rel="noopener" href="https://www.reddit.com/r/lostmedia/top/?t=all">lost media</a>. </p> |
|||
</li> |
|||
<li><p><strong>Ownership</strong><br>Another problem we encounter is that we do not own anything anymore. Seriously, every type of media most people consume comes from streaming services like YouTube, Netflix, Disney+, or Spotify. Every file we consume is rented and not owned by ourselves. Self-hosting, on the other hand, ensures your data never gets lost and is completely owned by you and only you.</p> |
|||
</li> |
|||
<li><p><strong>Privacy</strong>: Your data remains on your premises, reducing the risk of data breaches and unauthorized access that might occur on third-party servers. Of course some of your applications will share information with third parties but at least you’ll be more in control on who has your data</p> |
|||
</li> |
|||
<li><p><strong>Complete Control</strong>: You have full control over the software, configurations, and data. You can customize everything to meet your specific requirements.</p> |
|||
</li> |
|||
<li><p><strong>Gaining Technical Skills</strong>: Managing your own server helps you develop valuable skills in system administration, networking, security, and troubleshooting. And trust me, there’ll be a lot of troubleshooting…</p> |
|||
</li> |
|||
<li><p><strong>Open Source Support</strong>: By self-hosting, you can support and utilize open-source software, contributing to and benefiting from community-driven projects.</p> |
|||
</li> |
|||
<li><p><strong>Data Sovereignty</strong>: Ensures that your data resides within your jurisdiction, avoiding legal complications associated with cross-border data transfer.</p> |
|||
</li> |
|||
<li><p><strong>Reliability</strong>: You can design your infrastructure for high availability and redundancy, ensuring continuous service without relying on third-party uptime. Like still being able to access your media in case of a network outage.</p> |
|||
</li> |
|||
<li><p><strong>Customization</strong>: You can tailor the software and services to your exact needs, adding features or making changes that hosted solutions might not allow.</p> |
|||
</li> |
|||
<li><p><strong>Cost Savings</strong>: Over time, self-hosting can be more cost-effective than paying for recurring subscription fees for hosted services. Keep in mind that the initial costs will be enormous though!</p> |
|||
</li> |
|||
<li><p>You may also use your server-project on your resume or use it for content if you run out of material for your blogs :)</p> |
|||
</li> |
|||
</ul> |
|||
<h2 id="What-to-keep-in-mind"><a href="#What-to-keep-in-mind" class="headerlink" title="What to keep in mind"></a>What to keep in mind</h2><p>Let me tell you this before you even start to think about starting your own server: It’ll cost you a <del>fuck ton</del> lot of nerves and time. Don’t go into this project thinking it will be easy and you will be done in no time. It requires a lot of troubleshooting, a lot of research, and a huge pile of failures. You’ll need discipline to stay on track.</p> |
|||
<p>You’ll gain a considerable amount of technical knowledge, but you’ll also need some basic networking skills. Take some time to study those basic abilities before you start this project. Stop browsing Reddit for the best dashboard theme if you cannot tell me how DHCP works.</p> |
|||
<p>Depending on your situation, there may be a lot of initial costs for the hardware you’ll use. I was lucky enough to use my “old” gaming PC since I grew out of my gaming phase a long time ago. I know it isn’t energy-efficient at all, but it works for now (you’ll encounter this situation a lot during this or similar software projects).</p> |
|||
<h2 id="My-setup"><a href="#My-setup" class="headerlink" title="My setup"></a>My setup</h2><p><img src="/2024/06/26/the-selfhosting-experience/dashboard.png"></p> |
|||
<p>I am currently using Ubuntu LTS, as it’s a pretty reliable operating system for servers. There are countless alternatives like Debian or RockyLinux. However, if I had to restart this project from scratch, I’d probably go with <a target="_blank" rel="noopener" href="https://www.openmediavault.org/">OpenMediaVault</a> this time.</p> |
|||
<p>I chose to run all my applications using <a target="_blank" rel="noopener" href="https://www.docker.com/why-docker/">Docker</a> because I think it’s the best way to run server applications. Docker allows us to package applications into containers, each containing the application code, runtime, libraries, and dependencies needed to run the application consistently across different environments.</p> |
|||
<p>Since most self-proclaimed administrators choose to set up a dashboard to maintain a clear perspective on my applications, I opted not to include things like a search engine or third-party websites such as some social media sites, since I only use <a target="_blank" rel="noopener" href="https://github.com/bastienwirtz/homer">this dashboard</a> for navigation and nothing else.</p> |
|||
<h2 id="Media"><a href="#Media" class="headerlink" title="Media"></a>Media</h2><p><img src="/2024/06/26/the-selfhosting-experience/media.png"></p> |
|||
<h3 id="Plex"><a href="#Plex" class="headerlink" title="Plex"></a><a target="_blank" rel="noopener" href="https://watch.plex.tv/en-GB">Plex</a></h3><p>The Plex home server application is a media server software that allows users to organize, manage, and stream their personal media collections, including movies, TV shows, music, and photos, to various devices. Plex Media Server is installed on a computer or NAS (Network Attached Storage) device, where it scans and catalogs the user’s media, adding metadata and artwork for a polished library presentation. Users can then access their media from anywhere using the Plex app on smartphones, tablets, smart TVs, streaming devices, and web browsers. Plex also offers additional features such as live TV and DVR capabilities, support for various plugins, and premium options like Plex Pass for enhanced functionality and content access wich was bought by me. Alternatives like Emby & Jellyfin (Open Source) exsit, but have not been thested by me.</p> |
|||
<h3 id="Calibre-Web"><a href="#Calibre-Web" class="headerlink" title="Calibre Web"></a><a target="_blank" rel="noopener" href="https://github.com/janeczku/calibre-web">Calibre Web</a></h3><p> A web-based application that provides a user-friendly interface for managing and accessing eBook collections stored in a Calibre database. It allows users to browse, read, and download eBooks via any web browser, offering features like metadata management, advanced search, and multi-user support with customizable permissions. The application includes an integrated eBook reader for convenient online reading.</p> |
|||
<h3 id="Audiobookshelf"><a href="#Audiobookshelf" class="headerlink" title="Audiobookshelf"></a><a target="_blank" rel="noopener" href="https://www.audiobookshelf.org/">Audiobookshelf</a></h3><p>Also a web-app designed for managing and streaming audiobook collections. It allows users to organize their audiobooks, providing features like detailed metadata management, cover art, and chapter information. Users can stream their audiobooks from any device with a web browser, offering a seamless listening experience with features such as bookmarking, playback speed adjustment, and multi-user support for personalized access and library management.</p> |
|||
<h2 id="Server"><a href="#Server" class="headerlink" title="Server"></a>Server</h2><p><img src="/2024/06/26/the-selfhosting-experience/server.png"></p> |
|||
<p>Those applications are (in my opinion) essential for managing a server as they make life so so much easier.</p> |
|||
<h3 id="Portainer"><a href="#Portainer" class="headerlink" title="Portainer"></a><a target="_blank" rel="noopener" href="https://www.portainer.io/">Portainer</a></h3><p> A lightweight, web-based management UI for Docker, Docker Swarm, and Kubernetes that simplifies container and cluster management. It provides an intuitive interface for deploying, monitoring, and managing containers, images, networks, and volumes, making it accessible for both novice and experienced users. Portainer supports multi-cluster environments and offers features like role-based access control, real-time monitoring, and integration with various cloud services.</p> |
|||
<h3 id="Nginx-Proxy-Manager"><a href="#Nginx-Proxy-Manager" class="headerlink" title="Nginx Proxy Manager"></a><a target="_blank" rel="noopener" href="https://nginxproxymanager.com/">Nginx Proxy Manager</a></h3><p>A user-friendly, interface for managing Nginx proxy servers. It simplifies the process of setting up and configuring reverse proxies, SSL certificates, and forwarding rules. Key features include an intuitive dashboard, automated SSL certificate management via Let’s Encrypt, and support for custom Nginx configuration snippets. Nginx Proxy Manager is ideal for users who need an easy way to manage and secure their web applications and services.</p> |
|||
<h3 id="FileBrowser"><a href="#FileBrowser" class="headerlink" title="FileBrowser"></a><a target="_blank" rel="noopener" href="https://filebrowser.org/">FileBrowser</a></h3><p>A file management application that provides an intuitive interface for browsing, managing, and sharing files on a server. It allows users to upload, download, edit, and organize files and directories from any device with a web browser. Key features include user authentication, customizable access permissions, support for various file operations, and a clean, responsive design for ease of use. FileBrowser is ideal for creating a simple and efficient file management system accessible over the web. Keep in mind that you wont be able to share files over 500MB if you run it through a Cloudflare proxy. I mainly use this inside my network or for sharing media for direct-viewing or small documents</p> |
|||
<h2 id="Download"><a href="#Download" class="headerlink" title="Download"></a>Download</h2><p><img src="/2024/06/26/the-selfhosting-experience/download.png"></p> |
|||
<p>Making downloads on a home server offers several advantages over downloading directly on personal computers. Firstly, it offloads resource-intensive tasks like downloading large files or torrents, which can slow down or tie up local machines. It also centralizes management, allowing for continuous downloads even when individual computers are turned off. Additionally, a home server can automate downloads, manage storage more efficiently, and provide a centralized location for accessing downloaded files from any device on the network, enhancing convenience and accessibility.</p> |
|||
<h3 id="QBittorrend-Web-VPN-Killswitch"><a href="#QBittorrend-Web-VPN-Killswitch" class="headerlink" title="QBittorrend Web + VPN Killswitch"></a><a target="_blank" rel="noopener" href="https://github.com/MarkusMcNugen/docker-qBittorrentvpn">QBittorrend Web + VPN Killswitch</a></h3><p>A web-ui for managing the qBittorrent client, a popular open-source BitTorrent client. It allows users to remotely control their torrent downloads and uploads from any device with a web browser. Key features include adding and managing torrent files, setting download priorities, monitoring download/upload speeds, and configuring various client settings. This docker images includes a killswitch that disables all network traffix if the installed VPN fails. The interface is designed to be user-friendly and provides a comprehensive solution for managing torrents efficiently from a remote location. Please dont even think to use uTorrent or Bittorrent as they are bloated adware. Transmission is a great alternative.</p> |
|||
<h3 id="J-Downloader-2"><a href="#J-Downloader-2" class="headerlink" title="J Downloader 2"></a><a target="_blank" rel="noopener" href="https://github.com/jlesage/docker-jdownloader-2">J Downloader 2</a></h3><p>An open-source download management tool designed to simplify and automate the downloading of files from various online platforms. It supports downloading from a wide range of file hosting services, streaming sites, and content platforms. Key features include parallel downloading, link encryption, automatic CAPTCHA solving, and support for paused and resumed downloads. JDownloader is available on multiple operating systems and provides a user-friendly interface to manage and accelerate download tasks efficiently.</p> |
|||
<h3 id="MeTube"><a href="#MeTube" class="headerlink" title="MeTube"></a><a target="_blank" rel="noopener" href="https://github.com/alexta69/metube">MeTube</a></h3><p>It’s a UI for youtube-dl, a popular command-line tool used for downloading videos from various websites including YouTube. This web UI simplifies the process of downloading videos by providing a graphical interface accessible through a web browser. Users can paste video URLs into MeTube, which then utilizes youtube-dl in the background to fetch and download the requested content. MeTube typically offers features such as selecting video quality, managing downloads, and displaying download progress, making it more accessible for users who prefer not to use the command line directly.</p> |
|||
<h3 id="Deemix"><a href="#Deemix" class="headerlink" title="Deemix"></a><a target="_blank" rel="noopener" href="https://gitlab.com/Bockiii/deemix-docker">Deemix</a></h3><p>Deemix is a specialized music streaming application that focuses on downloading high-quality music tracks directly from Deezer, a popular music streaming service. It allows paying users to bypass the limitations of Deezer’s standard streaming by providing access to lossless FLAC audio files and high-quality MP3 downloads. Deemix also supports features like downloading entire albums or playlists, automatic tagging of downloaded tracks with metadata, and managing music libraries. It’s widely used among music enthusiasts who value high-quality audio and want offline access to their favorite songs without relying on traditional streaming platforms. The application has shut down further development, however it’s still working at the time of writing.</p> |
|||
<h3 id="Pyload"><a href="#Pyload" class="headerlink" title="Pyload"></a><a target="_blank" rel="noopener" href="https://pyload.net/">Pyload</a></h3><p>Also an open-source download manager that provides a web-based interface for managing and automating downloads from various file hosting websites, streaming services, and other online sources. It allows users to queue up and download files using protocols like HTTP, FTP, and BitTorrent. Key features of Pyload include captcha recognition, support for premium accounts on file hosting sites, plugin architecture for extending functionality, and scheduling downloads. Pyload is designed to be lightweight, efficient, and accessible via any web browser, making it convenient for users to manage their download tasks remotely. It can also be used in combination with the J-DL extension</p> |
|||
<h2 id="Stats"><a href="#Stats" class="headerlink" title="Stats"></a>Stats</h2><p><img src="/2024/06/26/the-selfhosting-experience/stats.png"></p> |
|||
<h3 id="Maloja"><a href="#Maloja" class="headerlink" title="Maloja"></a><a target="_blank" rel="noopener" href="https://github.com/krateng/maloja">Maloja</a></h3><p>Maloja is a self-hosted alternative to Last.fm, designed to provide similar music tracking and scrobbling functionalities. Users can set up Maloja on their own server to track their listening habits over time. It allows for integration with various music players and supports scrobbling data from these players to build a personal music profile. Maloja emphasizes privacy and control over user data, making it an attractive option for those who prefer self-hosted solutions over relying on third-party services like Last.fm. Here’s a <a target="_blank" rel="noopener" href="https://music.kicker.dev/">link to my instance</a></p> |
|||
<h3 id="Tautulli"><a href="#Tautulli" class="headerlink" title="Tautulli"></a><a target="_blank" rel="noopener" href="https://tautulli.com/">Tautulli</a></h3><p>An application designed for monitoring and analyzing Plex Media Server usage. It provides real-time insights into playback history, user activity, and media statistics through customizable dashboards and detailed analytics. Tautulli also offers notifications and user management features, making it an essential tool for Plex administrators to track server performance and user interactions effectively.</p> |
|||
<h3 id="Uptime-Kuma"><a href="#Uptime-Kuma" class="headerlink" title="Uptime Kuma"></a><a target="_blank" rel="noopener" href="https://github.com/louislam/uptime-kuma">Uptime Kuma</a></h3><p>A monitoring tool that helps track the uptime and performance of websites, services, and servers. It offers a clean, responsive web interface where users can add monitors to check the availability and response times of their applications from different geographical locations. Uptime Kuma supports notifications via various channels (like email, Slack, Telegram) for downtime alerts, and it provides historical data and uptime reports to help analyze trends and identify potential issues proactively. It’s designed to be lightweight, easy to deploy, and suitable for both personal and small business use cases. Here’s an example <a target="_blank" rel="noopener" href="https://status.kicker.dev/status/public">for all my public services</a>. I am currently running this on the same machine where all my other stuff is hosted, except my own vpn and my blog. However i do advise against this since a uptime monitor is of no use if it goes offline as well if my server fails.</p> |
|||
<p><img src="/2024/06/26/the-selfhosting-experience/kuma.png"></p> |
|||
<p>Kuma-UI of for my public services</p> |
|||
<h3 id="Dashdot"><a href="#Dashdot" class="headerlink" title="Dashdot"></a><a target="_blank" rel="noopener" href="https://getdashdot.com/">Dashdot</a></h3><p> Dashdot, also known as “ash.”, is a modern server dashboard designed with a focus on aesthetics and functionality. It incorporates glassmorphism design principles, which emphasize a sleek, transparent, and layered visual style. Dashdot is tailored for smaller VPS (Virtual Private Servers) and private servers, offering a user-friendly interface (which looks amazing if you’d ask me)to monitor server metrics, manage services, and view system information. It aims to provide an intuitive and visually appealing dashboard experience for users managing their own servers, combining modern design with practical server management tools. It also offers the ability to switch between dark and light-mode.</p> |
|||
<p><img src="/2024/06/26/the-selfhosting-experience/dashdot-dark.png"></p> |
|||
<p>Screenshot of the dashdot dark-ui</p> |
|||
<h3 id="Umami"><a href="#Umami" class="headerlink" title="Umami"></a><a target="_blank" rel="noopener" href="https://umami.is/">Umami</a></h3><p>A comprehensive website analytics platform designed to provide real-time data insights for making informed decisions, which is used to track <a target="_blank" rel="noopener" href="https://stats.kicker.dev/share/1Ui8dKfjsfQGAVs5/tim.kicker.dev">statistics for my blog</a>. It offers a range of analytic features including visitor information such as device, browser, OS, and location details, page views, bounce rates, traffic sources, and visitor demographics like language and device usage. The platform supports comparing metric performance across different date ranges, applying filters for deeper analysis, and tracking custom events and data properties. It emphasizes privacy with GDPR and CCPA compliance, ensuring no collection of personal information, anonymizing visitor data, and avoiding the use of cookies. Users have full control over their data, whether self-hosted or using Umami Cloud, which offers managed services including upgrades, database tuning, backups, and high-performance data handling for large datasets. Additionally, Umami features data import and export capabilities, email reporting, and tools like funnels, retention analysis, and goal tracking to enhance website optimization efforts. It also offers a dark-ui</p> |
|||
<p><img src="/2024/06/26/the-selfhosting-experience/umami-1.png"><br>Page 1 of my umami-stats at the time of writing this post</p> |
|||
<p><img src="/2024/06/26/the-selfhosting-experience/umami-2.png"></p> |
|||
<p>Page 2, which even features a world-map</p> |
|||
<h3 id="Goat-Counter"><a href="#Goat-Counter" class="headerlink" title="Goat Counter"></a><a target="_blank" rel="noopener" href="https://www.goatcounter.com/">Goat Counter</a></h3><p>It’s just a minimal (open source) alternative to umami, which i chose to <a target="_blank" rel="noopener" href="https://altstats.kicker.dev/?hl-period=year&period-start=2023-06-26&period-end=2024-06-26&filter=&as-text=off&daily=off">host as well</a> in order to make sure the data maches.<br><img src="/2024/06/26/the-selfhosting-experience/goat.png"></p> |
|||
<p>Goatcounter-UI with (somewhat) matching stats</p> |
|||
<h2 id="Social-News"><a href="#Social-News" class="headerlink" title="Social & News"></a>Social & News</h2><p><img src="/2024/06/26/the-selfhosting-experience/social.png"></p> |
|||
<h3 id="TinyTinyRSS"><a href="#TinyTinyRSS" class="headerlink" title="TinyTinyRSS"></a><a target="_blank" rel="noopener" href="https://github.com/clue/docker-ttrss">TinyTinyRSS</a></h3><p>TT-RSS is a self-hosted, open-source web application for managing and reading RSS and Atom feeds. I grew tired of checking 100 different social media sites every day and found TT-RSS to be the perfect solution, despite requiring some time setting up. It allows users to subscribe to multiple feeds, organize them into categories, and read articles within a customizable interface. TT-RSS supports features like article filtering, search functionality, synchronization across devices, and customization through themes and plugins, making it a flexible choice for individuals or small teams looking to manage and consume news and content efficiently. There are also many desktop clients available for pretty much all operating systems, enhancing accessibility and usability across different devices and platforms.</p> |
|||
<h3 id="RSS-Bridge"><a href="#RSS-Bridge" class="headerlink" title="RSS Bridge"></a><a target="_blank" rel="noopener" href="https://rss-bridge.org/">RSS Bridge</a></h3><p>RSS-Bridge is a PHP-based open-source project that acts as a bridge between various websites and RSS feeds. Almost no site left has an enabled RSS feed, even if they had it once, and I am using RSS-Bridge because all social media sites are locking down access (Also called <a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Enshittification">Enshittification</a> of the internet). It fetches content from websites that do not provide their own RSS feeds and generates RSS feeds for users. This allows users to subscribe to updates from these websites using their preferred RSS feed reader. RSS-Bridge supports a wide range of sources including social media profiles, online forums, and other websites, providing a convenient way to aggregate content from different platforms into a single RSS feed for easier monitoring and consumption.</p> |
|||
<h3 id="Change-detection"><a href="#Change-detection" class="headerlink" title="Change detection"></a><a target="_blank" rel="noopener" href="https://github.com/dgtlmoon/changedetection.io">Change detection</a></h3><p>Self-hosted change detection (alternative to changedetection.i) enable users to monitor specified web pages for updates and changes over time. These tools provide alerts and notifications when modifications occur, allowing users to stay informed about content revisions or updates on websites they track. They offer customization options for monitoring intervals and notification preferences, ensuring privacy and control over monitored data, which is beneficial for individuals and organizations needing timely updates on specific web content.</p> |
|||
<h3 id="Gotify"><a href="#Gotify" class="headerlink" title="Gotify"></a><a target="_blank" rel="noopener" href="https://gotify.net/">Gotify</a></h3><p>Used for sending and receiving messages in real-time via a RESTful API. It allows users to set up their own notification server, which can then be used to push messages to various devices and applications. Gotify supports features such as user authentication, message prioritization, and integration with third-party services through plugins. It’s designed to be lightweight, easy to deploy, and suitable for personal or organizational use cases where real-time notifications are needed without relying on external services.</p> |
|||
<p><em>Great thing I’m writing this blog, as i clompletely forgot to set this up on my (not so new) phone, 8 months ago</em></p> |
|||
<h2 id="Indexers"><a href="#Indexers" class="headerlink" title="Indexers"></a>Indexers</h2><p><img src="/2024/06/26/the-selfhosting-experience/indexers.png"></p> |
|||
<blockquote><p>This section is entirely fictional. The following services mentioned are not, and will never be, used by me, as they operate in violation of copyright laws. I do not condone such actions and strongly discourage anyone from attempting them. This fictional segment is intended solely for stylistic purposes.</p> |
|||
<footer><strong>Digital Piracy is theft!</strong><cite><a href="https://tim.kicker.dev/digital-piracy">tim.kicker.dev/digital-piracy</a></cite></footer></blockquote> |
|||
|
|||
<h3 id="Servarr"><a href="#Servarr" class="headerlink" title="Servarr"></a><a target="_blank" rel="noopener" href="https://wiki.servarr.com/">Servarr</a></h3><p>These applications are commonly used alongside a download client (e.g., qBittorrent, SABnzbd) and a media server (e.g., Plex, Emby) to create a complete media management and streaming solution. They are popular among users who want to automate the acquisition and organization of media content from various online sources.</p> |
|||
<ol> |
|||
<li><p><strong>Sonarr</strong>: </p> |
|||
<ul> |
|||
<li>Manages and automates TV show downloads.</li> |
|||
<li>Subscribes to TV series, searches for new episodes, and downloads them automatically.</li> |
|||
</ul> |
|||
</li> |
|||
<li><p><strong>Radarr</strong>: </p> |
|||
<ul> |
|||
<li>Manages and automates movie downloads.</li> |
|||
<li>Adds movies to a watchlist, searches for available releases, and downloads them via torrent or Usenet.</li> |
|||
</ul> |
|||
</li> |
|||
<li><p><strong>Lidarr</strong>: </p> |
|||
<ul> |
|||
<li>Manages and automates music downloads.</li> |
|||
<li>Adds artists and albums to a watchlist, searches for new releases, and downloads music files.</li> |
|||
</ul> |
|||
</li> |
|||
<li><p><strong>Readarr</strong>: </p> |
|||
<ul> |
|||
<li>Manages and automates e-book downloads.</li> |
|||
<li>Tracks and downloads new releases from authors or series.</li> |
|||
</ul> |
|||
</li> |
|||
<li><p><strong>Prowlarr</strong>:</p> |
|||
<ul> |
|||
<li>Manages and automates TV show downloads from Usenet indexers.</li> |
|||
<li>Integrates with Usenet indexer services for automatic searches and manages download clients like SABnzbd or NZBGet.</li> |
|||
</ul> |
|||
</li> |
|||
</ol> |
|||
<h3 id="Unofficial-Servarr-Applications"><a href="#Unofficial-Servarr-Applications" class="headerlink" title="Unofficial Servarr-Applications"></a>Unofficial Servarr-Applications</h3><ol> |
|||
<li><p><a target="_blank" rel="noopener" href="https://overseerr.dev/"><strong>Overseerr</strong></a>: </p> |
|||
<ul> |
|||
<li>Simplifies the management and requesting of media content from various sources (Perfect for friends and family). It integrates with services like Plex, Sonarr, Radarr, and others to automate the process of requesting movies and TV shows. Users can submit requests for content they want to watch, and Overseerr handles the monitoring and retrieval of those requests once available. It provides a unified interface for managing media requests, tracking their status, and notifying users when content becomes accessible. Overseerr enhances the media consumption experience by centralizing and automating the request and retrieval process.</li> |
|||
</ul> |
|||
</li> |
|||
<li><p><a target="_blank" rel="noopener" href="https://github.com/Jackett/Jackett"><strong>Jackett</strong></a>: </p> |
|||
<ul> |
|||
<li>Manages and automates subtitles for movies and TV shows.</li> |
|||
<li>Integrates with various subtitle providers to download subtitles in multiple languages.</li> |
|||
<li>Monitors media libraries for new content and automatically fetches subtitles.</li> |
|||
</ul> |
|||
</li> |
|||
<li><p><a target="_blank" rel="noopener" href="https://www.bazarr.media/"><strong>Bazarr</strong></a>: </p> |
|||
<ul> |
|||
<li>Manages and automates subtitle downloads for movies and TV shows.</li> |
|||
<li>Integrates with various subtitle providers to download subtitles in multiple languages.</li> |
|||
<li>Monitors media libraries for new content and automatically fetches subtitles to enhance viewing experience.</li> |
|||
<li>Still have not found a way to make it work hmpf</li> |
|||
</ul> |
|||
</li> |
|||
</ol> |
|||
<h2 id="Cloud-Repositories"><a href="#Cloud-Repositories" class="headerlink" title="Cloud & Repositories"></a>Cloud & Repositories</h2><p><img src="/2024/06/26/the-selfhosting-experience/cloud.png"></p> |
|||
<h3 id="Bitwarden-Vaultwarden"><a href="#Bitwarden-Vaultwarden" class="headerlink" title="Bitwarden (Vaultwarden)"></a><a target="_blank" rel="noopener" href="https://www.vaultwarden.ca/home/">Bitwarden (Vaultwarden)</a></h3><p>An open-source password manager server compatible with Bitwarden clients. It allows users to self-host their own password management solution, providing secure storage and encryption of sensitive information such as passwords, secure notes, and credit card details. Vaultwarden supports features like two-factor authentication (2FA), organization of items into folders, sharing of items with other users, and audit logging. It aims to provide a robust and customizable alternative to cloud-based password managers, ensuring users retain control over their data and security practices.<br>I’m using this container only for backup purposes at the moment.</p> |
|||
<h3 id="Gitea"><a href="#Gitea" class="headerlink" title="Gitea"></a><a target="_blank" rel="noopener" href="https://about.gitea.com/">Gitea</a></h3><p>Gitea is a self-hosted Git service (like Gitlab but better lol) that provides a user-friendly interface for hosting and managing Git repositories, issue tracking, and collaboration. It offers features like pull requests, code review, user management, and integration with webhooks and APIs for automation. Gitea is designed to be lightweight, fast, and suitable for individuals and small teams looking to host their Git projects securely on their own infrastructure. Here’s a <a target="_blank" rel="noopener" href="https://git.kicker.dev/timkicker/tim.kicker.dev">link to my instance</a> where the source-code of my blog is hosted as well.</p> |
|||
<h2 id="Gaming"><a href="#Gaming" class="headerlink" title="Gaming"></a>Gaming</h2><p><img src="/2024/06/26/the-selfhosting-experience/gaming.png"></p> |
|||
<p>Currently, all my gaming-related containers are just plugins used for my Minecraft server. However, none of them are active at the moment as my Minecraft server has been shut down by me. Nevertheless, I still wanted to list them.</p> |
|||
<h3 id="Player-Analytics"><a href="#Player-Analytics" class="headerlink" title="Player Analytics"></a><a target="_blank" rel="noopener" href="https://www.spigotmc.org/resources/plan-player-analytics.32536/">Player Analytics</a></h3><p>Player analytics for Minecraft involves tracking and analyzing player interactions and behaviors within Minecraft servers. It provides insights into player activity such as logins, playtime, in-game actions like building and exploration patterns, economy transactions, and community interactions. These analytics help server administrators optimize server performance, tailor content updates, and foster a vibrant community environment by understanding player preferences and behavior trends.</p> |
|||
<h3 id="Bluemap"><a href="#Bluemap" class="headerlink" title="Bluemap"></a><a target="_blank" rel="noopener" href="https://bluemap.bluecolored.de/">Bluemap</a></h3><p>A web-based mapping tool designed for Minecraft servers that generates interactive, real-time maps of Minecraft worlds in 3D (!!!). It allows players and server administrators to view detailed, dynamic maps of their Minecraft environments directly in a web browser. Bluemap updates maps in real-time as players explore and modify the world, showcasing features like terrain, structures, and player-built creations. This tool enhances gameplay by providing a visual representation of Minecraft worlds, aiding navigation, planning, and community engagement within the game.</p> |
|||
<h3 id="Dynmap"><a href="#Dynmap" class="headerlink" title="Dynmap"></a><a target="_blank" rel="noopener" href="https://www.spigotmc.org/resources/dynmap%C2%AE.274/">Dynmap</a></h3><p>Like Bluemap but in 2D</p> |
|||
<h2 id="Some-tipps"><a href="#Some-tipps" class="headerlink" title="Some tipps"></a>Some tipps</h2><ul> |
|||
<li><strong>NEVER CHANGE A WORKING SYSTEM</strong>: Please, for the love of God, only update your server when you are willing to take a few hours to fix your entire setup if something fails. Because it will. Also, take some time to check if you <em>really, really</em> need this new fancy application, which is pretty much a duplicate of an existing one and you’ll use it once for testing and never again afterwards. “bUt jUsT iN cAsE iLl kEeP it”, no you wont. Trust me, I’ve been guilty of this behaviour several times.</li> |
|||
<li>Spend some time planning. Create a to-do list, plan when and how you want to work on it, and create a file tree. Here’s mine, for example:</li> |
|||
<li>Only use the root account if you have to. Create a separate one for all sorts of things, which will increase your security a ton.</li> |
|||
<li>Spend a lot of time on security. I know you just got your system to work after some hard days, and you are not motivated anymore in the slightest to upgrade your security, but please do it. I know you’ll probably not get hacked or something like that, but the chance still exists. Take a look into topics like Firewalls, Cloudflare, VPN, etc.</li> |
|||
<li>Do not get into shady topics like piracy. You know it’s illegal! I know nothing will happen if I use a VPN with a killswitch, but still!! >:=( I’ll link you some sources regarding this topic so you can avoid these corners:<ul> |
|||
<li><a target="_blank" rel="noopener" href="https://piracy.now.sh/">Piracy Wiki</a>: Very evil</li> |
|||
<li><a target="_blank" rel="noopener" href="https://windscribe.com/yo/4123svm9">Windscribe</a>: A great priced VPN. You may not avoid this (i know wrong location in this post) but it still can be used to mask your identity regarding piracy. I am not partnered with this company in any way as, this is just my affiliate link which’ll grant you some extra bandwith.</li> |
|||
<li><a href="Torrentleech.org">Torrentleech</a>: A widely used private-tracker: Extremely evil :(</li> |
|||
<li><a href="1337x.to">1337x</a>: A free tracker: Also really evil because it’s publicly accessible</li> |
|||
</ul> |
|||
</li> |
|||
</ul> |
|||
<p><img src="/2024/06/26/the-selfhosting-experience/workflow_upscayl_4x_realesrgan-x4plus-anime.png"></p> |
|||
<p>Obligatory (somewhat) fitting <a href="/2024/06/26/the-selfhosting-experience/workflow.png">xkxd comic</a> regarding the working system</p> |
|||
<h2 id="Resources"><a href="#Resources" class="headerlink" title="Resources"></a>Resources</h2><p>I completely relied on sources from the web when it came to gaining knowledge (and still do). So I’ll link you some great resources, which helped me enormously.</p> |
|||
<ul> |
|||
<li><a target="_blank" rel="noopener" href="https://github.com/awesome-selfhosted/awesome-selfhosted"><strong>Awesome Selfhosted</strong></a>: A list of Free Software network services and web applications which can be hosted on your own servers.</li> |
|||
<li><a target="_blank" rel="noopener" href="https://www.reddit.com/r/selfhosted/"><strong>/r/selfhosted</strong></a>: A place to share, discuss, discover, assist with, gain assistance for, and critique self-hosted alternatives to our favorite web apps, web services, and online tools.</li> |
|||
<li><a target="_blank" rel="noopener" href="https://www.reddit.com/r/homelab/"><strong>/r/homelab</strong></a>: A community for discussing home labs, including self-hosting setups and hardware recommendations. Read through the wiki!</li> |
|||
<li><a target="_blank" rel="noopener" href="https://www.youtube.com/@DBTechYT"><strong>DB Tech</strong></a>: Probably the best channel you’ll find regarding self-hosting. He’s specialized in stuff like Docker, Portainer, and other self-hostable applications, and he’s an amazing teacher, wow!</li> |
|||
<li><a target="_blank" rel="noopener" href="https://docs.linuxserver.io/images/"><strong>Linuxserver.io</strong></a>: An amazing and huge list of Docker images consisting of all kinds of applications.</li> |
|||
<li><strong>Me</strong>: Since I am pretty experienced when it comes to this kind of stuff, you are more than welcome to contact me if you need any help :)</li> |
|||
</ul> |
|||
|
|||
<p> — Jun 26, 2024</p> |
|||
|
|||
<hr> |
|||
<section id="comments" class="mt-2 mb-3"> |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
<script data-isso="//comments.kicker.dev/" |
|||
src="//comments.kicker.dev/js/embed.min.js"></script> |
|||
|
|||
|
|||
|
|||
<section id="isso-thread"> |
|||
<noscript>Javascript needs to be activated to view comments.</noscript> |
|||
</section> |
|||
</section> |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
<div class="row mt-2"> |
|||
|
|||
<div class="eight columns"> |
|||
<p id="madewith"> |
|||
|
|||
|
|||
#<a href="https://git.kicker.dev/timkicker/tim.kicker.dev" target="_blank" rel="noreferrer">opensource</a></p> |
|||
|
|||
</div> |
|||
|
|||
<!-- Sepcial thanks to https://simpleicons.org/ for the icons --> |
|||
<div class="four columns mb-3 posisi" > |
|||
|
|||
<a class="ml-0 footer-link icon" href="https://twitter.com/timjkicker/" target="_blank" style="text-decoration: none" rel="noreferrer" aria-label="Twitter"> |
|||
<svg class="twitter svg-hov" width="18" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitter</title><path d="M23.954 4.569c-.885.389-1.83.654-2.825.775 1.014-.611 1.794-1.574 2.163-2.723-.951.555-2.005.959-3.127 1.184-.896-.959-2.173-1.559-3.591-1.559-2.717 0-4.92 2.203-4.92 4.917 0 .39.045.765.127 1.124C7.691 8.094 4.066 6.13 1.64 3.161c-.427.722-.666 1.561-.666 2.475 0 1.71.87 3.213 2.188 4.096-.807-.026-1.566-.248-2.228-.616v.061c0 2.385 1.693 4.374 3.946 4.827-.413.111-.849.171-1.296.171-.314 0-.615-.03-.916-.086.631 1.953 2.445 3.377 4.604 3.417-1.68 1.319-3.809 2.105-6.102 2.105-.39 0-.779-.023-1.17-.067 2.189 1.394 4.768 2.209 7.557 2.209 9.054 0 13.999-7.496 13.999-13.986 0-.209 0-.42-.015-.63.961-.689 1.8-1.56 2.46-2.548l-.047-.02z"/></svg> |
|||
</a> |
|||
|
|||
|
|||
|
|||
<a class="ml-0 footer-link icon" href="https://github.com/timkicker" target="_blank" style="text-decoration: none" rel="noreferrer" aria-label="GitHub"> |
|||
<svg class="github svg-hov" width="18" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg> |
|||
</a> |
|||
|
|||
|
|||
|
|||
<a class="ml-0 footer-link icon" href="https://www.linkedin.com/in/tim-kicker-5438b1237/" target="_blank" style="text-decoration: none" rel="noreferrer" aria-label="LinkedIn"> |
|||
<svg class="linkedin svg-hov" width="18" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LinkedIn</title><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg> |
|||
</a> |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
</div> |
|||
|
|||
</div> |
|||
|
|||
</div> |
|||
</div> |
|||
|
|||
</div> |
|||
|
|||
</div> |
|||
<script src="/js/nanobar.min.js"></script> |
|||
<script> |
|||
var options = { |
|||
classname: 'nanobar', |
|||
id: 'myNanobar' |
|||
}; |
|||
var nanobar = new Nanobar(options); |
|||
nanobar.go(30); |
|||
nanobar.go(76); |
|||
nanobar.go(100); |
|||
</script> |
|||
|
|||
<script>(function (w, d, s, id) { |
|||
if (typeof (w.webpushr) !== 'undefined') return; w.webpushr = w.webpushr || function () { (w.webpushr.q = w.webpushr.q || []).push(arguments) }; var js, fjs = d.getElementsByTagName(s)[0]; js = d.createElement(s); js.id = id; js.async = 1; js.src = "https://cdn.webpushr.com/app.min.js";fjs.parentNode.appendChild(js);}(window, document, 'script', 'webpushr-jssdk'));webpushr('setup', { 'key': 'BLrRztSWnClZ_Jjg50n_ziB6VHz0Wcp721ZbAl9So1t0DMi4ChlDXQ1Ta2wKVYebMjm1l2HQNdZBkaLwBeNoQ2Y' });</script></body> |
|||
|
|||
</html> |
After Width: 1108 | Height: 1234 | Size: 136 KiB |
After Width: 1034 | Height: 947 | Size: 67 KiB |
After Width: 1110 | Height: 829 | Size: 83 KiB |
After Width: 1111 | Height: 688 | Size: 76 KiB |
After Width: 1104 | Height: 563 | Size: 60 KiB |
After Width: 1109 | Height: 890 | Size: 95 KiB |
After Width: 1110 | Height: 1071 | Size: 102 KiB |
After Width: 1115 | Height: 1250 | Size: 98 KiB |
After Width: 1121 | Height: 1050 | Size: 175 KiB |
After Width: 4000 | Height: 3000 | Size: 665 KiB |
After Width: 278 | Height: 386 | Size: 34 KiB |
After Width: 1112 | Height: 1544 | Size: 1.6 MiB |
@ -0,0 +1,304 @@ |
|||
<!DOCTYPE html> |
|||
<html lang="en"> |
|||
|
|||
<head> |
|||
|
|||
|
|||
<!-- Bing & Google Site Index--> |
|||
<meta name="google-site-verification" content="B4hZCJh4Uz6qdaXiH65DRXUpjVTHBcblzZaXZjUo7AE" /> |
|||
<meta name="msvalidate.01" content="1C56B1EC58ADE4A5D59E7AF88A8AFE99" /> |
|||
|
|||
<!-- Basic Page Needs |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
<meta charset="utf-8"> |
|||
|
|||
|
|||
<title>All Posts - Tim Kicker</title> |
|||
|
|||
<link rel="sitemap" href="https://tim.kicker.devsitemap.xml" /> |
|||
|
|||
<link rel="canonical" href="https://tim.kicker.dev/archives/2024/06/"> |
|||
|
|||
<meta name="description" content="Personal website of Tim Kicker"> |
|||
|
|||
|
|||
<meta name="keywords" content="tim, kicker, jochen, htl, website"> |
|||
|
|||
<meta name="author" content="Tim Kicker"> |
|||
|
|||
<meta property="og:image" content="https://tim.kicker.dev/images/goldengate.jpg"> |
|||
|
|||
<meta property="og:site_name" content="Tim's Blog" /> |
|||
<meta property="og:type" content="article" /> |
|||
<meta property="og:title" content="All Posts - Tim Kicker" /> |
|||
|
|||
<meta property="og:description" content="Personal website of Tim Kicker"> |
|||
|
|||
<meta property="og:url" content="https://tim.kicker.dev/archives/2024/06/" /> |
|||
|
|||
<meta name="twitter:card" content="summary_large_image"> |
|||
<meta name="twitter:title" content="All Posts - Tim Kicker"> |
|||
|
|||
<meta name="twitter:description" content="Personal website of Tim Kicker"> |
|||
|
|||
|
|||
<meta name="twitter:image" content="https://tim.kicker.dev/images/goldengate.jpg"> |
|||
|
|||
<meta name="twitter:url" content="https://tim.kicker.dev/archives/2024/06/" /> |
|||
|
|||
<!-- Mobile Specific Metas |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1"> |
|||
|
|||
<!-- Preload fonts |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
<link rel="preload" href="../fonts/dm-serif-display-v4-latin-regular.woff2" as="font" type="font/woff2" crossorigin> |
|||
<link rel="preload" href="../fonts/inter-v2-latin-regular.woff2" as="font" type="font/woff2" crossorigin> |
|||
|
|||
<!-- CSS |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
|
|||
<link rel="stylesheet" href="/css/normalize.css"> |
|||
|
|||
|
|||
<link rel="stylesheet" href="/css/skeleton.css"> |
|||
|
|||
|
|||
<link rel="stylesheet" href="/css/custom.css"> |
|||
|
|||
|
|||
<link rel="stylesheet" href="/css/prism-dark.css"> |
|||
|
|||
|
|||
<link rel="stylesheet" href="/css/prism-line-numbers.css"> |
|||
|
|||
<!-- User css --> |
|||
|
|||
|
|||
<link rel="stylesheet" href="/css/user.css"> |
|||
|
|||
|
|||
|
|||
<!-- Favicon |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
<link rel="icon" type="image/png" href="/images/teddy-bear-apple.webp"> |
|||
|
|||
<!-- Custom Theme Color Style |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
<style> |
|||
a:not(.icon) { |
|||
text-decoration-color: #0FA0CE; |
|||
background-image: linear-gradient( |
|||
to bottom, |
|||
rgba(0, 0, 0, 0) 50%, |
|||
#0FA0CE 50% |
|||
); |
|||
} |
|||
blockquote { |
|||
border-left: 8px solid #0FA0CE; |
|||
} |
|||
.nanobar .bar { |
|||
background: #0FA0CE; |
|||
} |
|||
.button.button-primary:hover, |
|||
button.button-primary:hover, |
|||
input[type="submit"].button-primary:hover, |
|||
input[type="reset"].button-primary:hover, |
|||
input[type="button"].button-primary:hover, |
|||
.button.button-primary:focus, |
|||
button.button-primary:focus, |
|||
input[type="submit"].button-primary:focus, |
|||
input[type="reset"].button-primary:focus, |
|||
input[type="button"].button-primary:focus { |
|||
background-color: #0FA0CE; |
|||
border-color: #0FA0CE; |
|||
} |
|||
input[type="email"]:focus, |
|||
input[type="number"]:focus, |
|||
input[type="search"]:focus, |
|||
input[type="text"]:focus, |
|||
input[type="tel"]:focus, |
|||
input[type="url"]:focus, |
|||
input[type="password"]:focus, |
|||
textarea:focus, |
|||
select:focus { |
|||
border: 1px solid #0FA0CE; |
|||
} |
|||
</style> |
|||
|
|||
<!-- Google Analytics (With Privacy Settings On) |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
|
|||
|
|||
<meta name="generator" content="Hexo 6.3.0"><link rel="alternate" href="/atom.xml" title="Tim's Blog" type="application/atom+xml"> |
|||
</head> |
|||
|
|||
<body> |
|||
<div class="container"> |
|||
<div class="row"> |
|||
<div> |
|||
|
|||
<script async src="https://stats.kicker.dev/script.js" data-website-id="295db5f5-27a1-42e8-9783-1e410896a596"></script> |
|||
<script data-goatcounter="https://altstats.kicker.dev/count" async src="//altstats.kicker.dev/count.js"></script> |
|||
|
|||
|
|||
<div class="row"> |
|||
<div class="two columns" style="max-width: 50px"> |
|||
<h1 class="mt-2 mode"> |
|||
<div onclick=setDarkMode(true) id="darkBtn">🌑</div> |
|||
<div onclick=setDarkMode(false) id="lightBtn" class=hidden>☀️</div> |
|||
<script > |
|||
if (localStorage.getItem('preferredTheme') == 'dark') { |
|||
setDarkMode(true) |
|||
} |
|||
function setDarkMode(isDark) { |
|||
var darkBtn = document.getElementById('darkBtn') |
|||
var lightBtn = document.getElementById('lightBtn') |
|||
if (isDark) { |
|||
lightBtn.style.display = "block" |
|||
darkBtn.style.display = "none" |
|||
localStorage.setItem('preferredTheme', 'dark'); |
|||
} else { |
|||
lightBtn.style.display = "none" |
|||
darkBtn.style.display = "block" |
|||
localStorage.removeItem('preferredTheme'); |
|||
} |
|||
document.body.classList.toggle("darkmode"); |
|||
} |
|||
</script> |
|||
</h1> |
|||
</div> |
|||
|
|||
<div class="six columns ml-1"> |
|||
<h1 class="mt-2"> |
|||
<div onclick=navigateHome()>Hello World.</div> |
|||
<script > |
|||
function navigateHome() { |
|||
window.location.replace('https://tim.kicker.dev'); |
|||
} |
|||
</script> |
|||
</h1> |
|||
</div> |
|||
|
|||
|
|||
<!-- |
|||
<div class="six columns ml-1"> |
|||
<h1 class="mt-2"> |
|||
<a class="mt-2" href="/">Hello World.</a> |
|||
</h1> |
|||
</div> |
|||
--> |
|||
|
|||
<div class="twelve columns"> |
|||
<div class="row"> |
|||
<div class="nine columns left"> |
|||
<a href="/">Home</a> |
|||
|
|||
|
|||
<a href="/archives" class="ml">Blog</a> |
|||
|
|||
|
|||
|
|||
<a href="/About" class="ml">About</a> |
|||
|
|||
|
|||
|
|||
|
|||
<a href="mailto:[email protected]" target="_blank" class="ml">Email</a> |
|||
|
|||
|
|||
</div> |
|||
</div> |
|||
<hr style="margin-bottom: 2.6rem"> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="trans"> |
|||
|
|||
<h2>All Posts</h2> |
|||
|
|||
|
|||
<article> |
|||
<div class="row"> |
|||
|
|||
<div class="three columns left lit"> |
|||
<p class="bottom">Jun 26, 2024</p> |
|||
</div> |
|||
<div class="nine columns left mb-3"> |
|||
<a href="/2024/06/26/the-selfhosting-experience/" class=""> |
|||
|
|||
The Selfhosting Experience |
|||
|
|||
</a> |
|||
</div> |
|||
</div> |
|||
</article> |
|||
|
|||
<div class="pagination-bar"> |
|||
<ul class="pagination"> |
|||
|
|||
|
|||
</ul> |
|||
</div> |
|||
|
|||
|
|||
<div class="row mt-2"> |
|||
|
|||
<div class="eight columns"> |
|||
<p id="madewith"> |
|||
|
|||
|
|||
#<a href="https://git.kicker.dev/timkicker/tim.kicker.dev" target="_blank" rel="noreferrer">opensource</a></p> |
|||
|
|||
</div> |
|||
|
|||
<!-- Sepcial thanks to https://simpleicons.org/ for the icons --> |
|||
<div class="four columns mb-3 posisi" > |
|||
|
|||
<a class="ml-0 footer-link icon" href="https://twitter.com/timjkicker/" target="_blank" style="text-decoration: none" rel="noreferrer" aria-label="Twitter"> |
|||
<svg class="twitter svg-hov" width="18" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitter</title><path d="M23.954 4.569c-.885.389-1.83.654-2.825.775 1.014-.611 1.794-1.574 2.163-2.723-.951.555-2.005.959-3.127 1.184-.896-.959-2.173-1.559-3.591-1.559-2.717 0-4.92 2.203-4.92 4.917 0 .39.045.765.127 1.124C7.691 8.094 4.066 6.13 1.64 3.161c-.427.722-.666 1.561-.666 2.475 0 1.71.87 3.213 2.188 4.096-.807-.026-1.566-.248-2.228-.616v.061c0 2.385 1.693 4.374 3.946 4.827-.413.111-.849.171-1.296.171-.314 0-.615-.03-.916-.086.631 1.953 2.445 3.377 4.604 3.417-1.68 1.319-3.809 2.105-6.102 2.105-.39 0-.779-.023-1.17-.067 2.189 1.394 4.768 2.209 7.557 2.209 9.054 0 13.999-7.496 13.999-13.986 0-.209 0-.42-.015-.63.961-.689 1.8-1.56 2.46-2.548l-.047-.02z"/></svg> |
|||
</a> |
|||
|
|||
|
|||
|
|||
<a class="ml-0 footer-link icon" href="https://github.com/timkicker" target="_blank" style="text-decoration: none" rel="noreferrer" aria-label="GitHub"> |
|||
<svg class="github svg-hov" width="18" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg> |
|||
</a> |
|||
|
|||
|
|||
|
|||
<a class="ml-0 footer-link icon" href="https://www.linkedin.com/in/tim-kicker-5438b1237/" target="_blank" style="text-decoration: none" rel="noreferrer" aria-label="LinkedIn"> |
|||
<svg class="linkedin svg-hov" width="18" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LinkedIn</title><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg> |
|||
</a> |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
</div> |
|||
|
|||
</div> |
|||
|
|||
</div> |
|||
</div> |
|||
|
|||
</div> |
|||
|
|||
</div> |
|||
<script src="/js/nanobar.min.js"></script> |
|||
<script> |
|||
var options = { |
|||
classname: 'nanobar', |
|||
id: 'myNanobar' |
|||
}; |
|||
var nanobar = new Nanobar(options); |
|||
nanobar.go(30); |
|||
nanobar.go(76); |
|||
nanobar.go(100); |
|||
</script> |
|||
|
|||
<script>(function (w, d, s, id) { |
|||
if (typeof (w.webpushr) !== 'undefined') return; w.webpushr = w.webpushr || function () { (w.webpushr.q = w.webpushr.q || []).push(arguments) }; var js, fjs = d.getElementsByTagName(s)[0]; js = d.createElement(s); js.id = id; js.async = 1; js.src = "https://cdn.webpushr.com/app.min.js";fjs.parentNode.appendChild(js);}(window, document, 'script', 'webpushr-jssdk'));webpushr('setup', { 'key': 'BLrRztSWnClZ_Jjg50n_ziB6VHz0Wcp721ZbAl9So1t0DMi4ChlDXQ1Ta2wKVYebMjm1l2HQNdZBkaLwBeNoQ2Y' });</script></body> |
|||
|
|||
</html> |
@ -0,0 +1,304 @@ |
|||
<!DOCTYPE html> |
|||
<html lang="en"> |
|||
|
|||
<head> |
|||
|
|||
|
|||
<!-- Bing & Google Site Index--> |
|||
<meta name="google-site-verification" content="B4hZCJh4Uz6qdaXiH65DRXUpjVTHBcblzZaXZjUo7AE" /> |
|||
<meta name="msvalidate.01" content="1C56B1EC58ADE4A5D59E7AF88A8AFE99" /> |
|||
|
|||
<!-- Basic Page Needs |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
<meta charset="utf-8"> |
|||
|
|||
|
|||
<title>All Posts - Tim Kicker</title> |
|||
|
|||
<link rel="sitemap" href="https://tim.kicker.devsitemap.xml" /> |
|||
|
|||
<link rel="canonical" href="https://tim.kicker.dev/archives/2024/"> |
|||
|
|||
<meta name="description" content="Personal website of Tim Kicker"> |
|||
|
|||
|
|||
<meta name="keywords" content="tim, kicker, jochen, htl, website"> |
|||
|
|||
<meta name="author" content="Tim Kicker"> |
|||
|
|||
<meta property="og:image" content="https://tim.kicker.dev/images/goldengate.jpg"> |
|||
|
|||
<meta property="og:site_name" content="Tim's Blog" /> |
|||
<meta property="og:type" content="article" /> |
|||
<meta property="og:title" content="All Posts - Tim Kicker" /> |
|||
|
|||
<meta property="og:description" content="Personal website of Tim Kicker"> |
|||
|
|||
<meta property="og:url" content="https://tim.kicker.dev/archives/2024/" /> |
|||
|
|||
<meta name="twitter:card" content="summary_large_image"> |
|||
<meta name="twitter:title" content="All Posts - Tim Kicker"> |
|||
|
|||
<meta name="twitter:description" content="Personal website of Tim Kicker"> |
|||
|
|||
|
|||
<meta name="twitter:image" content="https://tim.kicker.dev/images/goldengate.jpg"> |
|||
|
|||
<meta name="twitter:url" content="https://tim.kicker.dev/archives/2024/" /> |
|||
|
|||
<!-- Mobile Specific Metas |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1"> |
|||
|
|||
<!-- Preload fonts |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
<link rel="preload" href="../fonts/dm-serif-display-v4-latin-regular.woff2" as="font" type="font/woff2" crossorigin> |
|||
<link rel="preload" href="../fonts/inter-v2-latin-regular.woff2" as="font" type="font/woff2" crossorigin> |
|||
|
|||
<!-- CSS |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
|
|||
<link rel="stylesheet" href="/css/normalize.css"> |
|||
|
|||
|
|||
<link rel="stylesheet" href="/css/skeleton.css"> |
|||
|
|||
|
|||
<link rel="stylesheet" href="/css/custom.css"> |
|||
|
|||
|
|||
<link rel="stylesheet" href="/css/prism-dark.css"> |
|||
|
|||
|
|||
<link rel="stylesheet" href="/css/prism-line-numbers.css"> |
|||
|
|||
<!-- User css --> |
|||
|
|||
|
|||
<link rel="stylesheet" href="/css/user.css"> |
|||
|
|||
|
|||
|
|||
<!-- Favicon |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
<link rel="icon" type="image/png" href="/images/teddy-bear-apple.webp"> |
|||
|
|||
<!-- Custom Theme Color Style |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
<style> |
|||
a:not(.icon) { |
|||
text-decoration-color: #0FA0CE; |
|||
background-image: linear-gradient( |
|||
to bottom, |
|||
rgba(0, 0, 0, 0) 50%, |
|||
#0FA0CE 50% |
|||
); |
|||
} |
|||
blockquote { |
|||
border-left: 8px solid #0FA0CE; |
|||
} |
|||
.nanobar .bar { |
|||
background: #0FA0CE; |
|||
} |
|||
.button.button-primary:hover, |
|||
button.button-primary:hover, |
|||
input[type="submit"].button-primary:hover, |
|||
input[type="reset"].button-primary:hover, |
|||
input[type="button"].button-primary:hover, |
|||
.button.button-primary:focus, |
|||
button.button-primary:focus, |
|||
input[type="submit"].button-primary:focus, |
|||
input[type="reset"].button-primary:focus, |
|||
input[type="button"].button-primary:focus { |
|||
background-color: #0FA0CE; |
|||
border-color: #0FA0CE; |
|||
} |
|||
input[type="email"]:focus, |
|||
input[type="number"]:focus, |
|||
input[type="search"]:focus, |
|||
input[type="text"]:focus, |
|||
input[type="tel"]:focus, |
|||
input[type="url"]:focus, |
|||
input[type="password"]:focus, |
|||
textarea:focus, |
|||
select:focus { |
|||
border: 1px solid #0FA0CE; |
|||
} |
|||
</style> |
|||
|
|||
<!-- Google Analytics (With Privacy Settings On) |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
|
|||
|
|||
<meta name="generator" content="Hexo 6.3.0"><link rel="alternate" href="/atom.xml" title="Tim's Blog" type="application/atom+xml"> |
|||
</head> |
|||
|
|||
<body> |
|||
<div class="container"> |
|||
<div class="row"> |
|||
<div> |
|||
|
|||
<script async src="https://stats.kicker.dev/script.js" data-website-id="295db5f5-27a1-42e8-9783-1e410896a596"></script> |
|||
<script data-goatcounter="https://altstats.kicker.dev/count" async src="//altstats.kicker.dev/count.js"></script> |
|||
|
|||
|
|||
<div class="row"> |
|||
<div class="two columns" style="max-width: 50px"> |
|||
<h1 class="mt-2 mode"> |
|||
<div onclick=setDarkMode(true) id="darkBtn">🌑</div> |
|||
<div onclick=setDarkMode(false) id="lightBtn" class=hidden>☀️</div> |
|||
<script > |
|||
if (localStorage.getItem('preferredTheme') == 'dark') { |
|||
setDarkMode(true) |
|||
} |
|||
function setDarkMode(isDark) { |
|||
var darkBtn = document.getElementById('darkBtn') |
|||
var lightBtn = document.getElementById('lightBtn') |
|||
if (isDark) { |
|||
lightBtn.style.display = "block" |
|||
darkBtn.style.display = "none" |
|||
localStorage.setItem('preferredTheme', 'dark'); |
|||
} else { |
|||
lightBtn.style.display = "none" |
|||
darkBtn.style.display = "block" |
|||
localStorage.removeItem('preferredTheme'); |
|||
} |
|||
document.body.classList.toggle("darkmode"); |
|||
} |
|||
</script> |
|||
</h1> |
|||
</div> |
|||
|
|||
<div class="six columns ml-1"> |
|||
<h1 class="mt-2"> |
|||
<div onclick=navigateHome()>Hello World.</div> |
|||
<script > |
|||
function navigateHome() { |
|||
window.location.replace('https://tim.kicker.dev'); |
|||
} |
|||
</script> |
|||
</h1> |
|||
</div> |
|||
|
|||
|
|||
<!-- |
|||
<div class="six columns ml-1"> |
|||
<h1 class="mt-2"> |
|||
<a class="mt-2" href="/">Hello World.</a> |
|||
</h1> |
|||
</div> |
|||
--> |
|||
|
|||
<div class="twelve columns"> |
|||
<div class="row"> |
|||
<div class="nine columns left"> |
|||
<a href="/">Home</a> |
|||
|
|||
|
|||
<a href="/archives" class="ml">Blog</a> |
|||
|
|||
|
|||
|
|||
<a href="/About" class="ml">About</a> |
|||
|
|||
|
|||
|
|||
|
|||
<a href="mailto:[email protected]" target="_blank" class="ml">Email</a> |
|||
|
|||
|
|||
</div> |
|||
</div> |
|||
<hr style="margin-bottom: 2.6rem"> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="trans"> |
|||
|
|||
<h2>All Posts</h2> |
|||
|
|||
|
|||
<article> |
|||
<div class="row"> |
|||
|
|||
<div class="three columns left lit"> |
|||
<p class="bottom">Jun 26, 2024</p> |
|||
</div> |
|||
<div class="nine columns left mb-3"> |
|||
<a href="/2024/06/26/the-selfhosting-experience/" class=""> |
|||
|
|||
The Selfhosting Experience |
|||
|
|||
</a> |
|||
</div> |
|||
</div> |
|||
</article> |
|||
|
|||
<div class="pagination-bar"> |
|||
<ul class="pagination"> |
|||
|
|||
|
|||
</ul> |
|||
</div> |
|||
|
|||
|
|||
<div class="row mt-2"> |
|||
|
|||
<div class="eight columns"> |
|||
<p id="madewith"> |
|||
|
|||
|
|||
#<a href="https://git.kicker.dev/timkicker/tim.kicker.dev" target="_blank" rel="noreferrer">opensource</a></p> |
|||
|
|||
</div> |
|||
|
|||
<!-- Sepcial thanks to https://simpleicons.org/ for the icons --> |
|||
<div class="four columns mb-3 posisi" > |
|||
|
|||
<a class="ml-0 footer-link icon" href="https://twitter.com/timjkicker/" target="_blank" style="text-decoration: none" rel="noreferrer" aria-label="Twitter"> |
|||
<svg class="twitter svg-hov" width="18" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitter</title><path d="M23.954 4.569c-.885.389-1.83.654-2.825.775 1.014-.611 1.794-1.574 2.163-2.723-.951.555-2.005.959-3.127 1.184-.896-.959-2.173-1.559-3.591-1.559-2.717 0-4.92 2.203-4.92 4.917 0 .39.045.765.127 1.124C7.691 8.094 4.066 6.13 1.64 3.161c-.427.722-.666 1.561-.666 2.475 0 1.71.87 3.213 2.188 4.096-.807-.026-1.566-.248-2.228-.616v.061c0 2.385 1.693 4.374 3.946 4.827-.413.111-.849.171-1.296.171-.314 0-.615-.03-.916-.086.631 1.953 2.445 3.377 4.604 3.417-1.68 1.319-3.809 2.105-6.102 2.105-.39 0-.779-.023-1.17-.067 2.189 1.394 4.768 2.209 7.557 2.209 9.054 0 13.999-7.496 13.999-13.986 0-.209 0-.42-.015-.63.961-.689 1.8-1.56 2.46-2.548l-.047-.02z"/></svg> |
|||
</a> |
|||
|
|||
|
|||
|
|||
<a class="ml-0 footer-link icon" href="https://github.com/timkicker" target="_blank" style="text-decoration: none" rel="noreferrer" aria-label="GitHub"> |
|||
<svg class="github svg-hov" width="18" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg> |
|||
</a> |
|||
|
|||
|
|||
|
|||
<a class="ml-0 footer-link icon" href="https://www.linkedin.com/in/tim-kicker-5438b1237/" target="_blank" style="text-decoration: none" rel="noreferrer" aria-label="LinkedIn"> |
|||
<svg class="linkedin svg-hov" width="18" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LinkedIn</title><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg> |
|||
</a> |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
</div> |
|||
|
|||
</div> |
|||
|
|||
</div> |
|||
</div> |
|||
|
|||
</div> |
|||
|
|||
</div> |
|||
<script src="/js/nanobar.min.js"></script> |
|||
<script> |
|||
var options = { |
|||
classname: 'nanobar', |
|||
id: 'myNanobar' |
|||
}; |
|||
var nanobar = new Nanobar(options); |
|||
nanobar.go(30); |
|||
nanobar.go(76); |
|||
nanobar.go(100); |
|||
</script> |
|||
|
|||
<script>(function (w, d, s, id) { |
|||
if (typeof (w.webpushr) !== 'undefined') return; w.webpushr = w.webpushr || function () { (w.webpushr.q = w.webpushr.q || []).push(arguments) }; var js, fjs = d.getElementsByTagName(s)[0]; js = d.createElement(s); js.id = id; js.async = 1; js.src = "https://cdn.webpushr.com/app.min.js";fjs.parentNode.appendChild(js);}(window, document, 'script', 'webpushr-jssdk'));webpushr('setup', { 'key': 'BLrRztSWnClZ_Jjg50n_ziB6VHz0Wcp721ZbAl9So1t0DMi4ChlDXQ1Ta2wKVYebMjm1l2HQNdZBkaLwBeNoQ2Y' });</script></body> |
|||
|
|||
</html> |
@ -0,0 +1,328 @@ |
|||
<!DOCTYPE html> |
|||
<html lang="en"> |
|||
|
|||
<head> |
|||
|
|||
|
|||
<!-- Bing & Google Site Index--> |
|||
<meta name="google-site-verification" content="B4hZCJh4Uz6qdaXiH65DRXUpjVTHBcblzZaXZjUo7AE" /> |
|||
<meta name="msvalidate.01" content="1C56B1EC58ADE4A5D59E7AF88A8AFE99" /> |
|||
|
|||
<!-- Basic Page Needs |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
<meta charset="utf-8"> |
|||
|
|||
|
|||
<title>The Importance of Avoiding Piracy - Tim Kicker</title> |
|||
|
|||
<link rel="sitemap" href="https://tim.kicker.devsitemap.xml" /> |
|||
|
|||
<link rel="canonical" href="https://tim.kicker.dev/digital-piracy/"> |
|||
|
|||
<meta name="description" content=""> |
|||
|
|||
|
|||
<meta name="keywords" content="tim, kicker, jochen, htl, website"> |
|||
|
|||
<meta name="author" content="Tim Kicker"> |
|||
|
|||
<meta property="og:image" content="https://tim.kicker.devundefined"> |
|||
|
|||
<meta property="og:site_name" content="Tim's Blog" /> |
|||
<meta property="og:type" content="article" /> |
|||
<meta property="og:title" content="The Importance of Avoiding Piracy - Tim Kicker" /> |
|||
|
|||
<meta property="og:description" content=""> |
|||
|
|||
<meta property="og:url" content="https://tim.kicker.dev/digital-piracy/" /> |
|||
|
|||
<meta name="twitter:card" content="summary_large_image"> |
|||
<meta name="twitter:title" content="The Importance of Avoiding Piracy - Tim Kicker"> |
|||
|
|||
<meta name="twitter:description" content=""> |
|||
|
|||
|
|||
<meta name="twitter:image" content="https://tim.kicker.devundefined"> |
|||
|
|||
<meta name="twitter:url" content="https://tim.kicker.dev/digital-piracy/" /> |
|||
|
|||
<!-- Mobile Specific Metas |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1"> |
|||
|
|||
<!-- Preload fonts |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
<link rel="preload" href="../fonts/dm-serif-display-v4-latin-regular.woff2" as="font" type="font/woff2" crossorigin> |
|||
<link rel="preload" href="../fonts/inter-v2-latin-regular.woff2" as="font" type="font/woff2" crossorigin> |
|||
|
|||
<!-- CSS |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
|
|||
<link rel="stylesheet" href="/css/normalize.css"> |
|||
|
|||
|
|||
<link rel="stylesheet" href="/css/skeleton.css"> |
|||
|
|||
|
|||
<link rel="stylesheet" href="/css/custom.css"> |
|||
|
|||
|
|||
<link rel="stylesheet" href="/css/prism-dark.css"> |
|||
|
|||
|
|||
<link rel="stylesheet" href="/css/prism-line-numbers.css"> |
|||
|
|||
<!-- User css --> |
|||
|
|||
|
|||
<link rel="stylesheet" href="/css/user.css"> |
|||
|
|||
|
|||
|
|||
<!-- Favicon |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
<link rel="icon" type="image/png" href="/images/teddy-bear-apple.webp"> |
|||
|
|||
<!-- Custom Theme Color Style |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
<style> |
|||
a:not(.icon) { |
|||
text-decoration-color: #0FA0CE; |
|||
background-image: linear-gradient( |
|||
to bottom, |
|||
rgba(0, 0, 0, 0) 50%, |
|||
#0FA0CE 50% |
|||
); |
|||
} |
|||
blockquote { |
|||
border-left: 8px solid #0FA0CE; |
|||
} |
|||
.nanobar .bar { |
|||
background: #0FA0CE; |
|||
} |
|||
.button.button-primary:hover, |
|||
button.button-primary:hover, |
|||
input[type="submit"].button-primary:hover, |
|||
input[type="reset"].button-primary:hover, |
|||
input[type="button"].button-primary:hover, |
|||
.button.button-primary:focus, |
|||
button.button-primary:focus, |
|||
input[type="submit"].button-primary:focus, |
|||
input[type="reset"].button-primary:focus, |
|||
input[type="button"].button-primary:focus { |
|||
background-color: #0FA0CE; |
|||
border-color: #0FA0CE; |
|||
} |
|||
input[type="email"]:focus, |
|||
input[type="number"]:focus, |
|||
input[type="search"]:focus, |
|||
input[type="text"]:focus, |
|||
input[type="tel"]:focus, |
|||
input[type="url"]:focus, |
|||
input[type="password"]:focus, |
|||
textarea:focus, |
|||
select:focus { |
|||
border: 1px solid #0FA0CE; |
|||
} |
|||
</style> |
|||
|
|||
<!-- Google Analytics (With Privacy Settings On) |
|||
–––––––––––––––––––––––––––––––––––––––––––––––––– --> |
|||
|
|||
|
|||
<meta name="generator" content="Hexo 6.3.0"><link rel="alternate" href="/atom.xml" title="Tim's Blog" type="application/atom+xml"> |
|||
</head> |
|||
|
|||
<body> |
|||
<div class="container"> |
|||
<div class="row"> |
|||
<div> |
|||
|
|||
<script async src="https://stats.kicker.dev/script.js" data-website-id="295db5f5-27a1-42e8-9783-1e410896a596"></script> |
|||
<script data-goatcounter="https://altstats.kicker.dev/count" async src="//altstats.kicker.dev/count.js"></script> |
|||
|
|||
|
|||
<div class="row"> |
|||
<div class="two columns" style="max-width: 50px"> |
|||
<h1 class="mt-2 mode"> |
|||
<div onclick=setDarkMode(true) id="darkBtn">🌑</div> |
|||
<div onclick=setDarkMode(false) id="lightBtn" class=hidden>☀️</div> |
|||
<script > |
|||
if (localStorage.getItem('preferredTheme') == 'dark') { |
|||
setDarkMode(true) |
|||
} |
|||
function setDarkMode(isDark) { |
|||
var darkBtn = document.getElementById('darkBtn') |
|||
var lightBtn = document.getElementById('lightBtn') |
|||
if (isDark) { |
|||
lightBtn.style.display = "block" |
|||
darkBtn.style.display = "none" |
|||
localStorage.setItem('preferredTheme', 'dark'); |
|||
} else { |
|||
lightBtn.style.display = "none" |
|||
darkBtn.style.display = "block" |
|||
localStorage.removeItem('preferredTheme'); |
|||
} |
|||
document.body.classList.toggle("darkmode"); |
|||
} |
|||
</script> |
|||
</h1> |
|||
</div> |
|||
|
|||
<div class="six columns ml-1"> |
|||
<h1 class="mt-2"> |
|||
<div onclick=navigateHome()>Hello World.</div> |
|||
<script > |
|||
function navigateHome() { |
|||
window.location.replace('https://tim.kicker.dev'); |
|||
} |
|||
</script> |
|||
</h1> |
|||
</div> |
|||
|
|||
|
|||
<!-- |
|||
<div class="six columns ml-1"> |
|||
<h1 class="mt-2"> |
|||
<a class="mt-2" href="/">Hello World.</a> |
|||
</h1> |
|||
</div> |
|||
--> |
|||
|
|||
<div class="twelve columns"> |
|||
<div class="row"> |
|||
<div class="nine columns left"> |
|||
<a href="/">Home</a> |
|||
|
|||
|
|||
<a href="/archives" class="ml">Blog</a> |
|||
|
|||
|
|||
|
|||
<a href="/About" class="ml">About</a> |
|||
|
|||
|
|||
|
|||
|
|||
<a href="mailto:[email protected]" target="_blank" class="ml">Email</a> |
|||
|
|||
|
|||
</div> |
|||
</div> |
|||
<hr style="margin-bottom: 2.6rem"> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="trans"> |
|||
<h2>The Importance of Avoiding Piracy</h2> |
|||
|
|||
<p>In today’s digital age, accessing content online has never been easier. However, with this convenience comes the temptation to engage in piracy, which is the illegal distribution and use of copyrighted material. I want to take this opportunity to strongly discourage anyone from engaging in piracy. In this post, we will explore the legal, ethical, and security implications of piracy, and provide alternatives to ensure you can enjoy content responsibly and legally.</p> |
|||
<h2 id="Why-Avoid-Piracy"><a href="#Why-Avoid-Piracy" class="headerlink" title="Why Avoid Piracy?"></a>Why Avoid Piracy?</h2><h3 id="Legal-Consequences"><a href="#Legal-Consequences" class="headerlink" title="Legal Consequences"></a>Legal Consequences</h3><p>Piracy is illegal and can result in severe legal consequences. Copyright laws protect the intellectual property rights of creators and distributors. When you engage in piracy, you are violating these laws, which can lead to significant penalties. Individuals caught distributing or using pirated content can face hefty fines and even imprisonment. Lawsuits from copyright holders are not uncommon and can be financially devastating. The legal system takes these offenses seriously, and the repercussions can have long-term impacts on your life.</p> |
|||
<h3 id="Ethical-Considerations"><a href="#Ethical-Considerations" class="headerlink" title="Ethical Considerations"></a>Ethical Considerations</h3><p>Piracy is not just a legal issue; it’s an ethical one. Content creators—whether they are musicians, filmmakers, software developers, or authors—rely on the revenue generated from their work. By engaging in piracy, we are depriving these creators of their rightful earnings and discouraging the production of new content. When you download or share pirated material, you undermine the hard work and creativity that goes into producing quality content. Supporting piracy harms the entire industry, from the creators themselves to the countless professionals who work behind the scenes.</p> |
|||
<h3 id="Security-Risks"><a href="#Security-Risks" class="headerlink" title="Security Risks"></a>Security Risks</h3><p>Pirated content often comes from untrustworthy sources and can be a vector for malware and other security threats. Downloading and using pirated software or media can expose your devices to viruses, ransomware, and other malicious activities, compromising your personal data and security. Cybercriminals often use pirated files to distribute malware, knowing that users seeking free content are less likely to be cautious. This can lead to identity theft, data loss, and other serious security breaches. The risks extend beyond your personal devices, potentially affecting your network and other connected devices.</p> |
|||
<h2 id="My-Stance"><a href="#My-Stance" class="headerlink" title="My Stance"></a>My Stance</h2><p>I want to make it clear that I do not use any pirated services and strongly advise against them. Engaging in piracy is not only illegal and unethical but also poses significant risks to your personal security. As someone who values integrity and the hard work of content creators, I believe it’s important to support the industries that provide us with entertainment, education, and tools. By avoiding piracy, we can contribute to a sustainable ecosystem where creators are rewarded for their efforts, and high-quality content continues to be produced.</p> |
|||
<h2 id="Support-Legal-Alternatives"><a href="#Support-Legal-Alternatives" class="headerlink" title="Support Legal Alternatives"></a>Support Legal Alternatives</h2><p>There are numerous legal alternatives available that allow you to enjoy your favorite content without breaking the law. Here are a few resources to explore:</p> |
|||
<ul> |
|||
<li><p><strong>Movies and TV Shows</strong>: </p> |
|||
<ul> |
|||
<li><a target="_blank" rel="noopener" href="https://www.netflix.com/">Netflix</a>: A vast library of movies, TV shows, and original content.</li> |
|||
<li><a target="_blank" rel="noopener" href="https://www.hulu.com/">Hulu</a>: Offers streaming of popular TV shows, movies, and original series.</li> |
|||
<li><a target="_blank" rel="noopener" href="https://www.amazon.com/Prime-Video">Amazon Prime Video</a>: A wide range of movies, TV shows, and exclusive Amazon originals.</li> |
|||
</ul> |
|||
</li> |
|||
<li><p><strong>Music</strong>: </p> |
|||
<ul> |
|||
<li><a target="_blank" rel="noopener" href="https://www.spotify.com/">Spotify</a>: Stream millions of songs and podcasts legally.</li> |
|||
<li><a target="_blank" rel="noopener" href="https://www.apple.com/apple-music">Apple Music</a>: Access to a vast music library with exclusive releases.</li> |
|||
<li><a target="_blank" rel="noopener" href="https://music.youtube.com/">YouTube Music</a>: Stream music and videos, including user-generated content.</li> |
|||
</ul> |
|||
</li> |
|||
<li><p><strong>Books</strong>: </p> |
|||
<ul> |
|||
<li><a target="_blank" rel="noopener" href="https://www.amazon.com/Kindle-eBooks">Amazon Kindle</a>: A huge selection of eBooks and audiobooks.</li> |
|||
<li><a target="_blank" rel="noopener" href="https://www.barnesandnoble.com/b/nook-books/_/N-ry0">Barnes & Noble Nook</a>: A wide variety of eBooks and digital magazines.</li> |
|||
<li><a target="_blank" rel="noopener" href="https://www.audible.com/">Audible</a>: A leading provider of audiobooks and spoken-word entertainment.</li> |
|||
</ul> |
|||
</li> |
|||
<li><p><strong>Software</strong>: </p> |
|||
<ul> |
|||
<li><a target="_blank" rel="noopener" href="https://www.microsoft.com/store">Microsoft Store</a>: Purchase and download software and apps.</li> |
|||
<li><a target="_blank" rel="noopener" href="https://www.apple.com/app-store">Apple App Store</a>: The official store for iOS and Mac apps.</li> |
|||
<li><a target="_blank" rel="noopener" href="https://play.google.com/store">Google Play Store</a>: Android apps, games, music, and more.</li> |
|||
</ul> |
|||
</li> |
|||
<li><p><strong>Games</strong>: </p> |
|||
<ul> |
|||
<li><a target="_blank" rel="noopener" href="https://store.steampowered.com/">Steam</a>: A digital distribution platform for PC games.</li> |
|||
<li><a target="_blank" rel="noopener" href="https://store.playstation.com/">PlayStation Store</a>: Digital downloads for PlayStation games and content.</li> |
|||
<li><a target="_blank" rel="noopener" href="https://www.xbox.com/en-US/microsoft-store">Xbox Marketplace</a>: Purchase and download Xbox games and apps.</li> |
|||
</ul> |
|||
</li> |
|||
</ul> |
|||
<p>These platforms offer a wide range of content at reasonable prices, often with subscription options that provide access to vast libraries. By choosing legal alternatives, you ensure that creators are compensated for their work, which in turn supports the continued production of high-quality content.</p> |
|||
<h2 id="Conclusion"><a href="#Conclusion" class="headerlink" title="Conclusion"></a>Conclusion</h2><p>Piracy might seem like an easy way to access content, but it comes with significant risks and consequences. Engaging in piracy is illegal, unethical, and poses serious security threats. By supporting legal alternatives, we can ensure that content creators are fairly compensated and continue to produce the high-quality content we enjoy. Let’s all make the right choice and stay away from piracy.</p> |
|||
<p>Thank you for reading, and I hope you understand the importance of supporting legal content. By choosing legal methods, we are contributing to a fairer and safer digital world.</p> |
|||
<hr> |
|||
<p>Remember, by choosing legal methods, we are contributing to a fairer and safer digital world.</p> |
|||
|
|||
|
|||
<div class="row mt-2"> |
|||
|
|||
<div class="eight columns"> |
|||
<p id="madewith"> |
|||
|
|||
|
|||
#<a href="https://git.kicker.dev/timkicker/tim.kicker.dev" target="_blank" rel="noreferrer">opensource</a></p> |
|||
|
|||
</div> |
|||
|
|||
<!-- Sepcial thanks to https://simpleicons.org/ for the icons --> |
|||
<div class="four columns mb-3 posisi" > |
|||
|
|||
<a class="ml-0 footer-link icon" href="https://twitter.com/timjkicker/" target="_blank" style="text-decoration: none" rel="noreferrer" aria-label="Twitter"> |
|||
<svg class="twitter svg-hov" width="18" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitter</title><path d="M23.954 4.569c-.885.389-1.83.654-2.825.775 1.014-.611 1.794-1.574 2.163-2.723-.951.555-2.005.959-3.127 1.184-.896-.959-2.173-1.559-3.591-1.559-2.717 0-4.92 2.203-4.92 4.917 0 .39.045.765.127 1.124C7.691 8.094 4.066 6.13 1.64 3.161c-.427.722-.666 1.561-.666 2.475 0 1.71.87 3.213 2.188 4.096-.807-.026-1.566-.248-2.228-.616v.061c0 2.385 1.693 4.374 3.946 4.827-.413.111-.849.171-1.296.171-.314 0-.615-.03-.916-.086.631 1.953 2.445 3.377 4.604 3.417-1.68 1.319-3.809 2.105-6.102 2.105-.39 0-.779-.023-1.17-.067 2.189 1.394 4.768 2.209 7.557 2.209 9.054 0 13.999-7.496 13.999-13.986 0-.209 0-.42-.015-.63.961-.689 1.8-1.56 2.46-2.548l-.047-.02z"/></svg> |
|||
</a> |
|||
|
|||
|
|||
|
|||
<a class="ml-0 footer-link icon" href="https://github.com/timkicker" target="_blank" style="text-decoration: none" rel="noreferrer" aria-label="GitHub"> |
|||
<svg class="github svg-hov" width="18" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg> |
|||
</a> |
|||
|
|||
|
|||
|
|||
<a class="ml-0 footer-link icon" href="https://www.linkedin.com/in/tim-kicker-5438b1237/" target="_blank" style="text-decoration: none" rel="noreferrer" aria-label="LinkedIn"> |
|||
<svg class="linkedin svg-hov" width="18" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LinkedIn</title><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg> |
|||
</a> |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
</div> |
|||
|
|||
</div> |
|||
|
|||
</div> |
|||
</div> |
|||
|
|||
</div> |
|||
|
|||
</div> |
|||
<script src="/js/nanobar.min.js"></script> |
|||
<script> |
|||
var options = { |
|||
classname: 'nanobar', |
|||
id: 'myNanobar' |
|||
}; |
|||
var nanobar = new Nanobar(options); |
|||
nanobar.go(30); |
|||
nanobar.go(76); |
|||
nanobar.go(100); |
|||
</script> |
|||
|
|||
<script>(function (w, d, s, id) { |
|||
if (typeof (w.webpushr) !== 'undefined') return; w.webpushr = w.webpushr || function () { (w.webpushr.q = w.webpushr.q || []).push(arguments) }; var js, fjs = d.getElementsByTagName(s)[0]; js = d.createElement(s); js.id = id; js.async = 1; js.src = "https://cdn.webpushr.com/app.min.js";fjs.parentNode.appendChild(js);}(window, document, 'script', 'webpushr-jssdk'));webpushr('setup', { 'key': 'BLrRztSWnClZ_Jjg50n_ziB6VHz0Wcp721ZbAl9So1t0DMi4ChlDXQ1Ta2wKVYebMjm1l2HQNdZBkaLwBeNoQ2Y' });</script></body> |
|||
|
|||
</html> |
8
feed.json
File diff suppressed because it is too large
View File
@ -1 +1 @@ |
|||
{"title":"The first digital nomad","id":"2023/08/02/digital-nomad/","date_published":"08/02/2023","summary":"","url":"https://tim.kicker.dev/2023/08/02/digital-nomad/","tags":[],"categories":[]} |
|||
{"title":"The Selfhosting Experience","id":"2024/06/26/the-selfhosting-experience/","date_published":"06/26/2024","summary":"","url":"https://tim.kicker.dev/2024/06/26/the-selfhosting-experience/","tags":[],"categories":[]} |