- rewrote about me
- tried to translate my latest post to my native language but failed
This commit is contained in:
2005 2024-07-18 02:17:53 +02:00
parent d8bcd794cb
commit d62f27346c
11 changed files with 246 additions and 260 deletions

View file

@ -1,37 +0,0 @@
---
title: "Rólam"
date: 2024-04-28
edited: 2024-04-28
draft: false
menu:
main:
weight: 1
params:
icon: user
---
# 4o1x5 (2005)
Szia, látom megtaláltad az oldalamat :)
2005 (401\*5=2005) vagyok, egy szoftver fejlesztő és tesztelő diák Magyarországról.
Sok dologgal foglalkozom és sok dolgot szeretek, egy pár példaként:
- Rendszerüzemeltetés
- 4 darab szerverem van itthon és sok fajta szolgáltatást futtatok rajta mind magamnak és neked.
Főképp NixOs-t használok és Nix-ben konfigurálom őket de réggebben docker segítségével alpine-on nyomtam.
- Szoftver fejelsztés
- Az iskolában PHP-t és C#-ot tanulok amikben egyáltalán nem programozok.
Csakis Rust-ban fejlesztek manapság hiszen majdnem mindenre alkalmas amit csinálok.
Ezek mellet viszont még tudok programozni Jávában, C#-ban, Vuéban, Python-ba és mellé még egy kicsi PHP-t is tudok.
- Emellet [privacy advocate](https://www.collinsdictionary.com/dictionary/english/privacy-advocate) is vagyok
Azért hoztam létre ezt a weboldalt mert túl sok szabad processing power-em volt itthon. Illetve még azért hogy bloggoljak is egy kicsit hogy gyakoroljam a dokumentációk írását.
A posztjaim 90 százaléka kezdőknek szól hiszen sajnos még nincs olyan mély tudásom egyik témában se hogy profibb blogokat írjak :/
Remélhetőleg ez majd a közeljövőben megváltozik.
**UI: Keresek embereket akik ugyanazokban a témákban jártasak mint én. [Nyugodtan írj rám mátrixon](https://matrix.to/#/@4o1x5:4o1x5.dev)**
Tessék egy kép a macskámról :)
<img src="kitty.jpg" alt="tiger" width="400" />

View file

@ -1,7 +1,7 @@
---
title: "About me"
date: 2024-04-28
edited: 2024-04-28
edited: 2024-07-15
draft: false
menu:
main:
@ -14,36 +14,17 @@ menu:
Hi there. I see you somehow stumbled across my site.
I'm 2005 (401\*5=2005) a highschool software developer & tester student from Hungary.
I do and like all kinds of things but out of many the following is worth mentioning:
I'm 2005 a highschool _somewhat_ full-stack developer from Hungary.
- System administration
- I manage 4 of my servers in my Homelab. I run all kinds of services both for myself and you out there.
I mainly use NixOs and configure services in Nix, but in the past I mainly used docker-compose and alpine linux to carry out my deployments.
- Software development
- I learn C# and PHP in school which I almost never use.
I mainly develop in Rust as I find it fitting for every purpose out there.
But I also know Java, C#, Vue, Python and some PHP
- Privacy & open-source advocate
## Career, life, ect
I created this site to share some of my guides with people.
I also plan on making videos in the future but finals make it impossible as of now.
My life is not that complicated, I just sit in-front of a computer 5-10 hours a day and make it do what I want. I am an avid linux user and I strongly advocate on Nixos. Also speaking of advocating, I am a FOSS and privacy advocate too.
I mostly spend my days developing, some fun projects and also major ones. As of right now I am working on MediaRose, an all rust based media server that uses algorithms and jobs/scheduling to automatically generate short-form media from various platforms like Twitch. I plan on starting a company out of it and in the meanwhile share some tutorials about the technologies I'm building it upon.
I also know a lot more languages but not as well as rust. My other top language is probably JS/TS and in that scope Vue, but I am also learning React. I also wrote some python, c#, and java.
# Why 4o1x5?
I have a lot of experience in anything technology related but I am a _Jack of all trades, master of none_ type of guy. I have a lot of onboard knowledge but I don't really specialize in one field as I hate it.
I have no idea why I choose this nickname, I guess I wanted something unique.
It's my birth year. You can just call me 2005.
## Wanna chat?
# Internet contribution
I try my best to contribute the most to the public, as I feel like sharing my knowledge with others is good for my skills even If I get no reward in the end.
I got a few project cooking right now, tho I have no idea if they'll ever be done.
## Gaming
I play a lot of games in my free time, mostly survival, adventure games. Some PvE too.
You might [catch me streaming](https://live.4o1x5.dev) on my site. You are welcome to watch, maybe even if I offer nothing interesting to watch.
Some of these include: Warframe, Minecraft, CS 1.6, Overwatch, Orcs must die 3 and so on...
Also here is a picture of my cat
<img src="kitty.jpg" alt="tiger" width="400" />
I am open for any type of conversation, if you feel like we could get along send me a message, I'll most likely respond.
[**Add me on matrix**](https://matrix.to/#/@4o1x5:4o1x5.dev)

View file

@ -81,10 +81,7 @@ draft: false
# Privacy respecting frontends
You may come across breaches occurring every month or two, which is why I prioritize using privacy-respecting
frontends on a daily basis to protect my data. As I am leveraging someone else's server for free, it's only fair
that I also self-host them as well.
Any issues with the services shall be discussed on the [dedicated matrix channel](https://matrix.to/#/#services:4o1x5.dev)
frontends on a daily basis to protect my data. As I am leveraging someone else's server for free, it's only fair I return the favour.
**You are free to use mine anytime free of charge.**
@ -92,5 +89,6 @@ A plan on hosting **every** frontend that Libredirect has. I will also make them
[If you're interested in reviewing my privacy
terms, they are available here.](/privacy-policy)
Any issues with the services shall be discussed on the [dedicated matrix channel](https://matrix.to/#/#services:4o1x5.dev)
This below is not the full list, if you want all the details go and look at my [infrastructure repo containing them all](https://git.4o1x5.dev/4o1x5/infrastructure/#Privacy-respecting-services)

View file

@ -40,7 +40,7 @@ I have been using it for about two years now, but recently I just realized I cou
Feishin is a rewrite of sonixd, a client for subsonic.
It's a really clean client for jellyfin, I found it in nixpkgs and I use it daily.
It has many features and a modern spotify-like UI.
It almost all the features I need and a modern spotify-like UI.
Sadly it's missing a download feature, meaning I cannot download music then listen to it on the road. Streaming flacs is really inefficient if you are using mobile data or some public wifi. I travel a lot meaning this is kind of a deal breaker, but I can just use my phone.
Here is a video of how it looks like in it's _fullscreen_ mode:

View file

@ -0,0 +1,229 @@
---
title: Minek a spotify?
description: Jellyfin a self-hosted spotify alternatíva.
date: 2024-07-17 07:00:00+0000
image: feishin.png
categories:
- Nix
- Piracy
tags:
- Jellyfin
- Music
- Homelab
- Selfhost
draft: true
writingTime: "1h 40m"
---
## Bevezető
Már 2024 elején lemondtam az utolsó előfizetésemet, a Spotify-t. Bár mértéktelen zenét hallgatok a nap 90 százalékában nem volt egyáltalán nehéz átálnom. A streamelés helyett inkább letöltöm a zenét (ami amúgy a 2000-es évekre emlékeztet de még meglepően népszerű) és a telefonom és gépem között szinkronizálom és úgy hallgatom. Vagy legalábbis így tettem 6-7 hónapig amiután visszaáltam a streamelésre de úgy ahogy gondolnád. Spotify, deezer és Tidal helyett Jellyfin-t használom és a saját szerveremről hallgatom az interneten keresztül.
## Letölteni, micsoda?
Igen, meglepő nem? Hihetetlen sok ember van még aki ~~lopja~~ kölcsönzi a zenét. Van is erre egy egész peer-to-peer platform amit [Soulseek-nek](https://en.wikipedia.org/wiki/Soulseek) hívnak. Én is innen szerzem a zenéim többségét.
My main reason is privacy. I have yet to find a platform that respects my privacy and allows me to buy any kind of albums/songs with Bitcoin or Monero, therefore my last resort is to pirate. I could buy the original CD's but most artists I listen to don't have one, and I loath ripping.
Everyone has their own opinion about piracy, and I think in my case it's a 100% justified.
## Jellyfin
_Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps._
Jellyfin is a really great mediaserver, It has many clients and supports almost any kind of media, ranging from visual to audible.
I have been using it for about two years now, but recently I just realized I could stream my music from there instead of syncing my music to all my devices. For the past few days It has been a pleasureful experience and I have no complaints.
### Feishin _desktop_
Feishin is a rewrite of sonixd, a client for subsonic.
It's a really clean client for jellyfin, I found it in nixpkgs and I use it daily.
It almost all the features I need and a modern spotify-like UI.
Sadly it's missing a download feature, meaning I cannot download music then listen to it on the road. Streaming flacs is really inefficient if you are using mobile data or some public wifi. I travel a lot meaning this is kind of a deal breaker, but I can just use my phone.
Here is a video of how it looks like in it's _fullscreen_ mode:
<video src="./feishin.mp4" width="100%" height="100%" controls></video>
![](fieshin_front_page.png)
### Finamp _mobile_
Finamp is an open-source jellyfin music client for Android.
It's one of the most feature rich clients out there, supporting many features also found in the mobile Spotify client.
I don't really like it's design as It doesn't really look like Spotify but that probably due to their focus not being on that. Regardless Its clean.
| Song focus | List of songs |
| :------------------: | :-------------------: |
| ![](finamp_song.png) | ![](finamp_songs.png) |
## Self-hosting
### Define a domain for the nix server
```nix
networking.domain = "example.com";
```
### Jellyfin
Nixpkgs has jellyfin options so we can deploy it that way. It's really straight-forward and seamless.
This example also includes a nginx configuration, since I'm assuming you want to access it from remote locations and maybe share it with friends.
```nix
{ pkgs, config, ... }: {
services.jellyfin = {
enable = true;
# Setting the home directory
# might need to create with mkdir /home/jellyfin
dataDir = "/home/jellyfin";
};
services.nginx = {
virtualHosts = {
"jelly.${config.networking.domain}" = {
forceSSL = true;
enableACME = true;
locations."/" = {
extraConfig = ''
proxy_pass http://localhost:8096;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
'';
};
# Enable socket for features like syncPlay and live view in the admin panel
locations."/socket" = {
extraConfig = ''
proxy_pass http://localhost:8096;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
'';
};
};
};
};
}
```
After this you can head to `jelly.yourdomain.com` and run the setup.
Keep in mind this is a really basic setup, all data will be stored at `/home/jellyfin` including the SQLite database.
### slskd
slskd is a fully featured modern client-server client for soulseek. You can log in to it's panel and download files from the network.
I had some problems with permissions when I was trying to use the native version from _nixpkgs_, so instead I just made an oci-container that uses linux namespaces to run applications.
**Create directories**
```bash
mkdir /home/jellyfin/Music
mkdir /home/jellyfin/Music/unsorted
```
** Create the service**
Don't forget to change the credentials like your soulseek username and password. And also the slskd login username and password.
```nix
{ pkgs, config, ... }: {
# Define the slskd container
virtualisation.oci-containers.containers = {
slskd = {
image = "slskd/slskd";
ports = [
"5030:5030" # panel
"50300:50300" # soulseek
];
volumes = [
# you can use picard or similar applications to sort them, that's why I link it to unsorted
"/home/jellyfin/Music/unsorted:/downloads"
"/home/jellyfin/Music:/music"
];
environment = {
SLSKD_SHARED_DIR = "/music";
SLSKD_DOWNLOADS_DIR = "/downloads";
# these will be used to login to slskd at `soulseek.example.com`
SLSKD_USERNAME = "slskd username";
SLSKD_PASSWORD = "slskd password";
# This is your soulseek login, if you don't have an account don't worry, just type in anything here and it will create an account.
SLSKD_SLSK_USERNAME = "soulseek login name";
SLSKD_SLSK_PASSWORD = "soulseek login name";
SLSKD_SLSK_LISTEN_IP_ADDRESS = "0.0.0.0";
};
};
};
# Open the ports for slskd so users can download from you
networking.firewall = {
enable = true;
allowedTCPPorts = [
50300
];
allowedUDPPorts = [
50300
];
};
services.nginx = {
virtualHosts = {
"soulseek.${config.networking.domain}" = {
forceSSL = true;
enableACME = true;
locations."/" = {
extraConfig = ''
proxy_pass http://localhost:5030;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_request_buffering off;
'';
};
};
};
};
}
```
Don't forget to open up the ports on your router so that users can download from you!
## Usage
### Create a music library for jellyfin
Head to the defined jellyfin domain, and log in with the credentials you have given.
On the top right click on the profile icon and head to `Dashboard` -> `Libraries` -> `Add Media Library` and add a new music library like in the picture.
![](jellyfin_music_library.png)
### Download music
Head to the soulseek domain you have defined, and log into `slskd`.
Slskd is really easy to use, upon entering you are greeted with the search bar, type in anything and hit enter. Slskd will search other peers on the network for the string and return files.
![](slskd_search.png)
![](slskd_search_result.png)
After hitting download slskd will put it in `/home/jellyfin/Music/unsorted`.
Jellyfin will automatically scan you library every 3 hours bot you can override this by clicking `Scan All Libraries` in the `Dashboard`
### Connect a client.
Download a client, I recommend the ones I mentioned and connect to your server.
For the server URL type in `jelly.yourdomain.com`.
### Enjoy
<video src="./Replay_2024-07-15_20-43-44.mp4" width="100%" height="100%" controls></video>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

View file

@ -1,23 +0,0 @@
---
title: Hello World
description: Here I am
slug: hello-world
date: 2024-04-20 00:00:00+0000
image: cover.jpg
categories:
- Blog
---
## Hello world!
This is my first post on this website, and I've created it to share my knowledge with the internet. Prior to now, I haven't had much of an online presence, but today I'm changing that. I'm a software developer
from Hungary who is passionate about skilled development and mastery of tools.
My primary focus is on Rust, as I find it well-suited for the projects I work on. Additionally, I use Linux on a daily basis and utilize Nix to
package, test, and develop my software. To ensure privacy and security, I also use privacy-respecting frontends to consume content. Furthermore, I prefer to communicate via Matrix and Mumble, as they are the most ideal
communication protocols available.
I will try to post in three languages: English, Hungarian, and French. English and Hungarian are languages I speak fluently, but I'm still learning French, so I will be translating them using my own custom AI model.
Please note that the translations may not be entirely accurate.
> <a href="https://www.freepik.com/free-ai-image/anime-tree-illustration_160585658.htm#query=anime&position=10&from_view=keyword&track=sph&uuid=72ac23f2-c821-475e-bb88-0ac79103efa1">Image by freepik</a>

View file

@ -1,23 +0,0 @@
---
title: Bonjour le monde !
description: Ça s'agit de mon premier blog jamais écrit.
slug: hello-world
date: 2024-04-20 00:00:00+0000
image: cover.jpg
categories:
- Blog
---
## Bonjour le monde !
C'est ma première publication sur ce site web, et je l'ai créée pour partager mes connaissances avec Internet. Avant maintenant, je n'avais pas une présence en ligne très marquée, mais dès aujourd'hui, je décide de changer
cela. Je suis développeur de logiciels hongrois passionné par le développement d'applications compétentes et la maîtrise des outils.
Mon point principal est centré sur Rust, car j'en trouve l'utilité idéale pour les projets auxquels je contribue. De plus, je fais quotidiennement usage de Linux et recourte au Nix pour le conditionnement, le test et le
développement de mon logiciel. Pour garantir la confidentialité et la sécurité, je prends également l'habitude d'utiliser des interfaces de front d'office respectueuses du privacy pour consommer du contenu. En outre, je
préfère communiquer via Matrix et Mumble, car je trouve qu'ils sont les protocoles de communication les plus efficaces disponibles.
Je vais essayer de publier en trois langues : l'anglais, le hongrois et le français. L'anglais et le hongrois sont des langues dont je parle fluamment, mais j'appris le français et je traduirai les contenus en utilisant
mon propre modèle d'intelligence artificielle personnalisé. Veuillez noter que les traductions peuvent ne pas être entièrement précises.
> <a href="https://www.freepik.com/free-ai-image/anime-tree-illustration_160585658.htm#query=anime&position=10&from_view=keyword&track=sph&uuid=72ac23f2-c821-475e-bb88-0ac79103efa1">Image by freepik</a>

View file

@ -1,26 +0,0 @@
---
title: Helló világ
description: Valami újdonság
slug: hello-world
date: 2024-04-20 00:00:00+0000
image: cover.jpg
categories:
- Blog
---
## Helló világ!
Ez a legelső posztom ezen a weboldalon, amit azért csináltam hogy megosszam az internettel a gondolataimat. Eddig nagyon nem voltam online megtalálható hiszen nem volt semmilyen publikos profilom amin megnyilvánúlhattam volna. De ez a mainaptól fogva megváltozik.
Egy magyar szoftver fejelesztő diák vagyok (még), és mindennapjaimban fejlesztek.
Rust a kedvenc nyelvem és igazából másban nem is írok hiszen majdnem mindenre megfelelő.
Emellet Linuxot használok és a Nix ökoszisztémájával fejlesztek, tesztelek és építek programokat.
A saját biztonságom érdekében nem használok semmilyen adatgyűjtő platformot (Instagram,Youtube stb...) hanem helyette a biztonságos, adatod nem rögzítő "privacy frontend verziójukat.
Ha kommunikációról van szó, csak a Mumble és Matrix :)
Megpróbálok három nyelven bloggolni, angolúl, magyarúl és franciáúl. Sajnos franciáúl még egyáltalán nem tudok beszélni, se írni de megpróbálok benne alkotni, ezért a saját Ai modellemmel fogok majd fodítani.
Lehetséges hogy a fordítás semmitmondó szöveget generál szóval bocsi előre is :)
> <a href="https://www.freepik.com/free-ai-image/anime-tree-illustration_160585658.htm#query=anime&position=10&from_view=keyword&track=sph&uuid=72ac23f2-c821-475e-bb88-0ac79103efa1">Image by freepik</a>

View file

@ -1,62 +0,0 @@
## Adatvédelem
## Milyen adatokat gyűjtök?
Majdnem minden paramétert az Nginx szerverem loggol, itt láthatod hogy én mit látok amikor valamelyik szolgáltatásomra felmész:
```json
{
"msec": "1717282535.756",
"connection": "16014",
"connection_requests": "633",
"pid": "612008",
"request_id": "cfe2d77a7db2e5ca3bea0716d8c54769",
"request_length": "112",
"remote_addr": "192.168.1.1",
"remote_user": "",
"remote_port": "53236",
"time_local": "02/Jun/2024:00:55:35 +0200",
"time_iso8601": "2024-06-02T00:55:35+02:00",
"request": "OPTIONS /_matrix/client/v3/sync?filter=0&timeout=30000&set_presence=online&since=s31158_1541328_15670_64635_15313_26_839_110647_0_25 HTTP/2.0",
"request_uri": "/_matrix/client/v3/sync?filter=0&timeout=30000&set_presence=online&since=s31158_1541328_15670_64635_15313_26_839_110647_0_25",
"args": "filter=0&timeout=30000&set_presence=online&since=s31158_1541328_15670_64635_15313_26_839_110647_0_25",
"status": "204",
"body_bytes_sent": "0",
"bytes_sent": "221",
"http_referer": "",
"http_user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Element/1.11.66 Chrome/122.0.6261.156 Electron/29.4.0 Safari/537.36",
"http_x_forwarded_for": "",
"http_host": "4o1x5.dev",
"server_name": "4o1x5.dev",
"request_time": "0.002",
"upstream": "pink:8008",
"upstream_connect_time": "0.000",
"upstream_header_time": "0.002",
"upstream_response_time": "0.002",
"upstream_response_length": "0",
"upstream_cache_status": "",
"ssl_protocol": "TLSv1.3",
"ssl_cipher": "TLS_AES_128_GCM_SHA256",
"scheme": "https",
"request_method": "OPTIONS",
"server_protocol": "HTTP/2.0",
"pipe": ".",
"gzip_ratio": "",
"http_cf_ray": "",
"geoip_country_code": "US"
}
```
## Hogyan használom fel ezt az adatot?
Időnként beleolvasok a grafana panelem segítségével.
**De! Ezeket az adatokat soha nem osztom meg senkivel és nem is dolgozom fel másképpen!**
![Grafana panel](./dashboard.png)
## Hogyan tárolom az adatokat?
Ezek az adatok `.log` fájlonként vannak a szerveremen.
## Milyen sokáig tárolom az adatokat?
Maximum egy év.

View file

@ -2,67 +2,16 @@
## What data I collect
These may be logged by `docker` or `systemd`.
I also heavily log any requests sent to my server **but purely for analytic purposes**.
Here is an example of what I will see once you visit any of my services.
```json
{
"msec": "1717282535.756",
"connection": "16014",
"connection_requests": "633",
"pid": "612008",
"request_id": "cfe2d77a7db2e5ca3bea0716d8c54769",
"request_length": "112",
"remote_addr": "192.168.1.1",
"remote_user": "",
"remote_port": "53236",
"time_local": "02/Jun/2024:00:55:35 +0200",
"time_iso8601": "2024-06-02T00:55:35+02:00",
"request": "OPTIONS /_matrix/client/v3/sync?filter=0&timeout=30000&set_presence=online&since=s31158_1541328_15670_64635_15313_26_839_110647_0_25 HTTP/2.0",
"request_uri": "/_matrix/client/v3/sync?filter=0&timeout=30000&set_presence=online&since=s31158_1541328_15670_64635_15313_26_839_110647_0_25",
"args": "filter=0&timeout=30000&set_presence=online&since=s31158_1541328_15670_64635_15313_26_839_110647_0_25",
"status": "204",
"body_bytes_sent": "0",
"bytes_sent": "221",
"http_referer": "",
"http_user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Element/1.11.66 Chrome/122.0.6261.156 Electron/29.4.0 Safari/537.36",
"http_x_forwarded_for": "",
"http_host": "4o1x5.dev",
"server_name": "4o1x5.dev",
"request_time": "0.002",
"upstream": "pink:8008",
"upstream_connect_time": "0.000",
"upstream_header_time": "0.002",
"upstream_response_time": "0.002",
"upstream_response_length": "0",
"upstream_cache_status": "",
"ssl_protocol": "TLSv1.3",
"ssl_cipher": "TLS_AES_128_GCM_SHA256",
"scheme": "https",
"request_method": "OPTIONS",
"server_protocol": "HTTP/2.0",
"pipe": ".",
"gzip_ratio": "",
"http_cf_ray": "",
"geoip_country_code": "US"
}
```
Asides from basic route logging from nginx, I do not collect any data.
## How will I use or process your data?
I look thru it via my grafana panel.
**But I never share, sell or process the information otherwise**
![Grafana panel](./dashboard.png)
I don't (_anymore_)
## How do I store your data?
This data may be stored only in volatile storage such as RAM or my hard drives.
Nginx logs are stored in a `.log` format, pure text.
But promtail also processes these logs and sends them to loki for `in-memory` storage.
Nginx logs may be stored temporary in `/var/log`, but I usually delete them.
## How long do I store data
I store them for a year at most, as they tend to clog up my storage.
At most a year.