13 Commits

Author SHA1 Message Date
yehor
513af6bfa7 Add Pixelfed. Remove Matrix
Some checks failed
Build release image / build (push) Has been cancelled
2025-08-08 11:41:25 +03:00
yehor
c74faccd78 Update version
All checks were successful
Build release image / build (push) Successful in 3m15s
2025-07-20 20:09:31 +03:00
yehor
95ce34b12b Fix column width on the home page 2025-07-20 20:09:13 +03:00
yehor
ff4c256544 Fix broken links
All checks were successful
Build release image / build (push) Successful in 3m50s
2025-07-20 13:17:14 +03:00
yehor
e6633ce255 Remove docs. Make it better
Some checks failed
Build release image / build (push) Failing after 1m29s
2025-07-20 13:06:18 +03:00
yehor
497239cc76 Add more on network
All checks were successful
Build release image / build (push) Successful in 1m33s
2025-06-11 16:45:01 +03:00
yehor
4c7a1a6721 Fix docs structure
All checks were successful
Build release image / build (push) Successful in 1m55s
2025-06-11 16:07:33 +03:00
yehor
339b714cbd Fix CI job step name 2025-05-22 09:04:53 +03:00
yehor
359d62df58 Add network documentation
All checks were successful
Build release image / build (push) Successful in 1m40s
2025-05-21 18:30:06 +03:00
yehor
466d510264 Add homelab overview
All checks were successful
Build release image / build (push) Successful in 1m15s
2025-05-21 12:20:19 +03:00
yehor
a0a98c0014 Fix footer feed links
All checks were successful
Build release image / build (push) Successful in 1m32s
2025-05-21 11:52:36 +03:00
yehor
f9be7b0c10 Add new blog post
Some checks failed
Build release image / build (push) Failing after 1m3s
2025-05-21 11:43:49 +03:00
yehor
861bdcd686 Add deleted-post page
All checks were successful
Build release image / build (push) Successful in 1m28s
2025-05-21 10:41:18 +03:00
25 changed files with 1196 additions and 98 deletions

View File

@@ -32,7 +32,7 @@ jobs:
password: ${{ secrets.IMAGE_REGISTRY_PASSWORD }} password: ${{ secrets.IMAGE_REGISTRY_PASSWORD }}
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
- name: Build docker image - name: Build Docker image
uses: docker/build-push-action@v6 uses: docker/build-push-action@v6
with: with:
context: . context: .

View File

@@ -8,7 +8,7 @@ Do you want to know how and where RandomPlace is hosted? Or do you just want to
:::info :::info
This post is from the past. From far away times when this website had another domain, another name and another hosting place. For current setup, please see [HomeLab](/docs/homelab). This post is from the past. From far away times when this website had another domain, another name and another hosting place.
Still, this guide can be useful. Still, this guide can be useful.

View File

@@ -0,0 +1,101 @@
---
slug: make-one-proxmox-node-to-wol-another
title: "Make one Proxmox node to wake-on-lan another"
tags: [self-hosting, homelab, Proxmox, WOL]
image: /img/homelab.png
---
Nothing is eternal, especially the relevance of documentation. I think help.ubuntu.com is an absolute winner, holding the largest number of outdated and irrelevant pages. But that's not a topic for today's post.
One of my Proxmox cluster nodes can't power itself on after the outage. But it supports wake-on-LAN, so I decided that another node could power it on. And the simplicity of this task was overrated by me.
<!-- truncate -->
:::warning
Wake on LAN doesn't work across VLANs. Magic packets could be sent and received only inside a single subnet.
:::
## The victim
First of all, even after enabling "Wake up on PCI event" or something in BIOS it was not working because WoL was still disabled on a software level. It can be checked with:
```bash
ethtool enp1s0
```
Where `enp1s0` is a physical network interface of a Proxmox node, not a bridge.
There should be `Wake-on:` setting among others. In my case it was `Wake-on: d`, which means that wake-on-LAN is disabled, according to `ethtool` documentation:
```
p Wake on phy activity
u Wake on unicast messages
m Wake on multicast messages
b Wake on broadcast messages
a Wake on ARP
g Wake on MagicPacket(tm)
s Enable SecureOn(tm) password for MagicPacket(tm)
d Disable (wake on nothing). This option clears all previous
options.
```
We need to set it to wake by the MagicPacket(tm). We need to create a config file for this to be enabled on system start. But first we need to:
```bash
ip link show enp1s0
```
and write down our network device MAC address. Then create a file:
```bash
nano /etc/systemd/network/90-wakeonlan.link
```
with the next content:
```
[Match]
MACAddress=<mac-address-here>
[Link]
NamePolicy=kernel database onboard slot path
MACAddressPolicy=persistent
WakeOnLan=magic
```
After that we need to reboot and check WOL status again:
```bash
ethtool enp1s0
```
Now `Wake-on` should be set to `g`.
## The one who bothering
On another node we need to install an util that will be sending a magic packet:
```bash
apt update
apt install etherwake
```
Now we can power the victim off and try to wake it with:
```bash
etherwake -i vmbr0 <mac_address>
```
Where `vmbr0` is a bridge network interface of current Proxmox node, and `<mac_address>` is a MAC address of the victim's physical network interface.
If it works, we can now add a cron job to wake our victim upon current node startup, adding some delay to make sure the network is ready:
```bash
crontab -e
```
Cron job line to add:
```
@reboot sleep 30s && /usr/sbin/etherwake -i vmbr0 <mac_address>
```

View File

@@ -1,9 +0,0 @@
---
sidebar_position: 1
---
# What is it?
This is my project of publicly available documentation of my home servers and services.
Working on it...

1
docs/index.md Normal file
View File

@@ -0,0 +1 @@
Hello World!

View File

@@ -36,6 +36,12 @@ const config = {
locales: ['en'], locales: ['en'],
}, },
markdown: {
mermaid: true,
},
themes: ['@docusaurus/theme-mermaid'],
scripts: [ scripts: [
{ {
src: 'https://plausible.nicelycomposed.codes/js/script.outbound-links.js', src: 'https://plausible.nicelycomposed.codes/js/script.outbound-links.js',
@@ -56,6 +62,9 @@ const config = {
showReadingTime: true, showReadingTime: true,
feedOptions: { feedOptions: {
type: ['rss', 'atom'], type: ['rss', 'atom'],
title: "Yehor Vialov's Blog",
description: 'Some notes, interesting things and projects',
copyright: 'Copyright © ${new Date().getFullYear()} Yehor Vialov',
xslt: true, xslt: true,
}, },
blogSidebarTitle: 'Timeline', blogSidebarTitle: 'Timeline',
@@ -89,12 +98,6 @@ const config = {
srcDark: 'img/logo_dark.svg', srcDark: 'img/logo_dark.svg',
}, },
items: [ items: [
{
type: 'docSidebar',
sidebarId: 'homelabSidebar',
position: 'left',
label: 'HomeLab',
},
{ to: '/blog', label: 'Blog', position: 'left' }, { to: '/blog', label: 'Blog', position: 'left' },
], ],
}, },
@@ -104,51 +107,21 @@ const config = {
{ {
title: 'This site sections', title: 'This site sections',
items: [ items: [
{
label: 'Homelab',
to: '/docs/homelab',
},
{ {
label: 'Blog', label: 'Blog',
to: '/blog', to: '/blog',
}, },
], {
label: 'Blog RSS feed',
to: 'pathname:///blog/rss.xml',
}, },
{ {
title: 'My', label: 'Blog Atom feed',
items: [ to: 'pathname:///blog/atom.xml',
{
label: 'Code',
href: 'https://git.nicelycomposed.codes/yehor',
}, },
], ],
}, },
{
title: 'Me on',
items: [
{
label: 'Mastodon',
href: 'https://techhub.social/@estevez',
},
{
label: 'Pixelfed',
href: 'https://pixelfed.social/estevez',
},
{
label: 'GitHub',
href: 'https://github.com/estevez-dev',
},
{
label: 'Untappd',
href: 'https://untappd.com/user/estevezz',
},
{
label: 'LinkedIn',
href: 'https://www.linkedin.com/in/yehor-vialov-2a362158/',
},
],
},
], ],
copyright: `Copyright © ${new Date().getFullYear()} Yehor Vialov.`, copyright: `Copyright © ${new Date().getFullYear()} Yehor Vialov.`,

View File

@@ -1,6 +1,6 @@
{ {
"name": "yevi-org", "name": "yevi-org",
"version": "0.1.0", "version": "0.2.1",
"private": true, "private": true,
"scripts": { "scripts": {
"docusaurus": "docusaurus", "docusaurus": "docusaurus",
@@ -16,6 +16,7 @@
"dependencies": { "dependencies": {
"@docusaurus/core": "3.7.0", "@docusaurus/core": "3.7.0",
"@docusaurus/preset-classic": "3.7.0", "@docusaurus/preset-classic": "3.7.0",
"@docusaurus/theme-mermaid": "^3.7.0",
"@mdx-js/react": "^3.0.0", "@mdx-js/react": "^3.0.0",
"clsx": "^2.0.0", "clsx": "^2.0.0",
"prism-react-renderer": "^2.3.0", "prism-react-renderer": "^2.3.0",

View File

@@ -16,10 +16,9 @@
*/ */
const sidebars = { const sidebars = {
homelabSidebar: [{ docsSidebar: [{
type: 'doc', type: 'autogenerated',
id: 'homelab/index', dirName: '.',
label: 'HomeLab',
},], },],

View File

@@ -3,36 +3,85 @@ import Heading from '@theme/Heading';
import styles from './styles.module.css'; import styles from './styles.module.css';
const FeatureList = [ const FeatureList = [
{
title: 'HomeLab Documented',
link: 'docs/homelab',
Svg: require('@site/static/img/homelab.svg').default,
description: (
<>
Here I'm trying my best in documenting my home servers and services.
</>
),
},
{ {
title: 'Blog', title: 'Blog',
link: 'blog', link: 'blog',
Svg: require('@site/static/img/blog.svg').default, Svg: require('@site/static/icons/blog.svg').default,
description: ( description: (
<> <>
Some notes, interesting things and projects. Some notes, interesting things and projects.
</> </>
), ),
}, },
{
title: 'Git',
link: 'https://git.nicelycomposed.codes/yehor',
Svg: require('@site/static/icons/gitea.svg').default,
description: (
<>
My code
</>
),
},
{
title: 'Mastodon',
link: 'https://techhub.social/@estevez',
Svg: require('@site/static/icons/mastodon.svg').default,
description: (
<>
My micro blog at techhub.social
</>
),
},
{
title: 'Pixelfed',
link: 'https://pixelfed.social/estevez',
Svg: require('@site/static/icons/pixelfed.svg').default,
description: (
<>
My photos
</>
),
},
{
title: 'GitHub',
link: 'https://github.com/estevez-dev',
Svg: require('@site/static/icons/github.svg').default,
description: (
<>
Some forks and contributions
</>
),
},
{
title: 'Untappd',
link: 'https://untappd.com/user/estevezz',
Svg: require('@site/static/icons/untappd.svg').default,
description: (
<>
Budmo!
</>
),
},
{
title: 'Linkedin',
link: 'https://www.linkedin.com/in/yehor-vialov-2a362158/',
Svg: require('@site/static/icons/linkedin.svg').default,
description: (
<>
They say I need this to find any work
</>
),
},
]; ];
function Feature({ Svg, title, link, description }) { function Feature({ Svg, title, link, description }) {
return ( return (
<div className={clsx('col col--6')}> <div className={clsx('col col--3', styles.featureBlock)}>
<div className="text--center"> <div className="text--center">
<a href={link} className={styles.featureLink}> <a href={link} target='_blank' className={styles.featureLink}>
<Svg className={styles.featureSvg} role="img" /> <Svg fill="currentColor" className={styles.featureSvg} role="img" />
</a> </a>
</div> </div>
<a href={link} className={styles.featureLink}> <a href={link} className={styles.featureLink}>

View File

@@ -5,9 +5,17 @@
width: 100%; width: 100%;
} }
.featureBlock {
padding-bottom: 1rem;
}
.featureSvg { .featureSvg {
height: 200px; height: 100px;
width: 200px; width: 100px;
}
.featureSvg path {
fill: var(--ifm-link-color) !important;
} }
.featureLink { .featureLink {

View File

@@ -31,3 +31,15 @@
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3);
--ifm-link-color: var(--ifm-color-primary-darker); --ifm-link-color: var(--ifm-color-primary-darker);
} }
@media (max-width: 996px) {
.col {
--ifm-col-width: 50%;
}
}
@media (max-width: 500px) {
.col {
--ifm-col-width: 100%;
}
}

15
src/pages/deleted-post.md Normal file
View File

@@ -0,0 +1,15 @@
---
title: This post was removed
description: A message about removed content
hide_table_of_contents: true
---
# You probably got here visiting a link somewhere on the internet
Sorry to say, but this post was removed because of one of the reasons (or because of all of them):
- It was critically outdated
- It was misleading
- It was stupid
- It has no historical value
You can check my [other blog posts](/blog) or start from the [home page](/).

View File

@@ -13,10 +13,10 @@ function HomepageHeader() {
<header className={clsx('hero hero--primary', styles.heroBanner)}> <header className={clsx('hero hero--primary', styles.heroBanner)}>
<div className="container"> <div className="container">
<Heading as="h1" className="hero__title"> <Heading as="h1" className="hero__title">
{siteConfig.title} Yehor Vialov
</Heading> </Heading>
<p className="hero__subtitle">{siteConfig.tagline}</p> <p className="hero__subtitle">Public profiles and publications</p>
<div className={styles.buttons}> {/* <div className={styles.buttons}>
<Link <Link
className="button button--secondary button--lg" className="button button--secondary button--lg"
to="https://git.nicelycomposed.codes/yehor"> to="https://git.nicelycomposed.codes/yehor">
@@ -27,11 +27,6 @@ function HomepageHeader() {
to="https://techhub.social/@estevez"> to="https://techhub.social/@estevez">
Mastodon Mastodon
</Link> </Link>
<Link
className="button button--secondary button--lg"
to="https://pixelfed.social/estevez">
Pixelfed
</Link>
<Link <Link
className="button button--secondary button--lg" className="button button--secondary button--lg"
to="https://github.com/estevez-dev"> to="https://github.com/estevez-dev">
@@ -47,7 +42,7 @@ function HomepageHeader() {
to="https://www.linkedin.com/in/yehor-vialov-2a362158/"> to="https://www.linkedin.com/in/yehor-vialov-2a362158/">
LinkedIn LinkedIn
</Link> </Link>
</div> </div> */}
</div> </div>
</header> </header>
); );

View File

@@ -1,7 +0,0 @@
---
title: Markdown page example
---
# Markdown page example
You don't need React to write simple standalone pages.

21
static/icons/blog.svg Normal file
View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg height="800px" width="800px" version="1.1" id="_x32_" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 512 512" xml:space="preserve">
<style type="text/css">
.st0{fill:#000000;}
</style>
<g>
<polygon class="st0" points="93.539,218.584 275.004,218.584 354.699,138.894 355.448,138.145 355.448,125.045 93.539,125.045 "/>
<polygon class="st0" points="402.213,433.724 46.77,433.724 46.77,78.276 402.213,78.276 402.213,91.467 448.983,56.572
448.983,31.506 0,31.506 0,480.494 448.983,480.494 448.983,289.204 402.213,335.974 "/>
<path class="st0" d="M229.358,274.708H93.539v28.062h120.476C218.602,292.858,223.932,283.312,229.358,274.708z"/>
<path class="st0" d="M93.539,349.539v28.062h110.935c-3.275-8.796-4.302-18.334-3.649-28.062H93.539z"/>
<path class="st0" d="M290.939,268.789c-15.501,15.501-55.612,80.76-40.11,96.27c15.51,15.51,80.76-24.609,96.27-40.11l63.755-63.77
l-56.155-56.15L290.939,268.789z"/>
<path class="st0" d="M500.374,115.509c-15.511-15.502-40.649-15.502-56.15,0l-76.682,76.685l56.156,56.15l76.676-76.685
C515.875,156.158,515.875,131.019,500.374,115.509z M400.166,202.361l-9.636-9.628l53.684-53.684l9.619,9.618L400.166,202.361z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.5 KiB

1
static/icons/gitea.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 512 512"><path d="M502.6 103.7c-3.3-3.3-7.8-3.3-7.8-3.3s-95.5 5.4-144.9 6.5c-10.8.2-21.6.5-32.3.6V203c-4.5-2.1-9-4.3-13.5-6.4 0-29.6-.1-88.9-.1-88.9-23.6.3-72.7-1.8-72.7-1.8s-115.2-5.8-127.7-6.9c-8-.5-18.3-1.7-31.8 1.2-7.1 1.5-27.3 6-43.8 21.9C-8.7 154.8.7 206.7 1.9 214.5c1.4 9.5 5.6 36 25.8 59 37.3 45.7 117.6 44.6 117.6 44.6s9.9 23.5 24.9 45.2c20.4 27 41.3 48 61.7 50.5 51.3 0 153.9-.1 153.9-.1s9.8.1 23-8.4c11.4-6.9 21.6-19.1 21.6-19.1s10.5-11.2 25.2-36.9c4.5-7.9 8.2-15.6 11.5-22.8 0 0 45-95.4 45-188.2-1-28-7.9-33-9.5-34.6M97.7 269.9c-21.1-6.9-30.1-15.2-30.1-15.2S52 243.8 44.2 222.3c-13.4-36-1.1-58-1.1-58s6.8-18.3 31.4-24.4c11.2-3 25.2-2.5 25.2-2.5s5.8 48.4 12.8 76.7c5.9 23.8 20.2 63.3 20.2 63.3s-21.3-2.6-35-7.5m289.4-4.5c-5.2 12.6-44.8 92.1-44.8 92.1s-5 11.8-16 12.5c-4.7.3-8.4-1-8.4-1s-.2-.1-4.3-1.7l-92-44.8s-8.9-4.6-10.4-12.7c-1.8-6.6 2.2-14.7 2.2-14.7l44.2-91.1s3.9-7.9 9.9-10.6c.5-.2 1.9-.8 3.7-1.2 6.6-1.7 14.7 2.3 14.7 2.3l18.4 8.9c-3.7 7.6-7.5 15.2-11.2 22.9-5.5-.1-10.5 2.9-13.1 7.7-2.8 5.1-2.2 11.5 1.5 16.1-6.6 13.8-13.3 27.5-19.9 41.1-6.7.1-12.5 4.7-14.1 11.2-1.5 6.5 1.6 13.3 7.4 16.3 6.3 3.3 14.3 1.5 18.5-4.4 4.2-5.8 3.5-13.8-1.5-18.8l19.5-40c1.2.1 3 .2 5-.4 3.3-.7 5.8-2.9 5.8-2.9 3.4 1.5 7 3.1 10.8 5 3.9 2 7.6 4 10.9 5.9.7.4 1.5.9 2.3 1.5 1.3 1.1 2.8 2.5 3.8 4.5 1.5 4.5-1.5 12.1-1.5 12.1-1.9 6.2-15 33.1-15 33.1-6.6-.2-12.5 4.1-14.4 10.2-2.1 6.6.9 14.1 7.2 17.3 6.4 3.3 14.2 1.4 18.3-4.3 4.1-5.5 3.7-13.3-.9-18.4l4.6-9.2c4.1-8.5 11-24.8 11-24.8.7-1.4 4.6-8.4 2.2-17.3-2-9.3-10.3-13.6-10.3-13.6-9.9-6.4-23.8-12.4-23.8-12.4s0-3.3-.9-5.8-2.3-4.2-3.2-5.1c3.6-7.6 7.4-15.1 11-22.6l61.8 29.9s10.3 4.6 12.5 13.2c1.5 6-.4 11.4-1.5 14" style="fill:#fff"/></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

1
static/icons/github.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 512 512"><path d="M256 6.3C114.6 6.3 0 120.9 0 262.3c0 113.3 73.3 209 175 242.9 12.8 2.2 17.6-5.4 17.6-12.2 0-6.1-.3-26.2-.3-47.7-64.3 11.8-81-15.7-86.1-30.1-2.9-7.4-15.4-30.1-26.2-36.2-9-4.8-21.8-16.6-.3-17 20.2-.3 34.6 18.6 39.4 26.2 23 38.7 59.8 27.8 74.6 21.1 2.2-16.6 9-27.8 16.3-34.2-57-6.4-116.5-28.5-116.5-126.4 0-27.8 9.9-50.9 26.2-68.8-2.6-6.4-11.5-32.6 2.6-67.8 0 0 21.4-6.7 70.4 26.2 20.5-5.8 42.2-8.6 64-8.6s43.5 2.9 64 8.6c49-33.3 70.4-26.2 70.4-26.2 14.1 35.2 5.1 61.4 2.6 67.8 16.3 17.9 26.2 40.6 26.2 68.8 0 98.2-59.8 120-116.8 126.4 9.3 8 17.3 23.4 17.3 47.4 0 34.2-.3 61.8-.3 70.4 0 6.7 4.8 14.7 17.6 12.2C438.7 471.3 512 375.3 512 262.3c0-141.4-114.6-256-256-256" style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff"/></svg>

After

Width:  |  Height:  |  Size: 819 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 512 512"><path d="M455.1 0H56.9C25.5 0 0 25.5 0 56.9v398.2C0 486.5 25.5 512 56.9 512h398.2c31.4 0 56.9-25.5 56.9-56.9V56.9C512 25.5 486.5 0 455.1 0M154.8 440.9H78.5V194.4h76.4v246.5zm-38.5-278.8c-24.9 0-45.2-20.4-45.2-45.5s20.2-45.5 45.2-45.5 45.1 20.4 45.1 45.5-20.2 45.5-45.1 45.5m324.6 278.8h-76V311.5c0-35.5-13.5-55.3-41.6-55.3-30.5 0-46.5 20.6-46.5 55.3v129.4h-73.2V194.4h73.2v33.2s22-40.7 74.3-40.7 89.7 31.9 89.7 98v156z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff"/></svg>

After

Width:  |  Height:  |  Size: 564 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 512 512"><path d="M494.3 113.4C486.9 58.3 439 15 382.1 6.6 372.5 5.2 336.2 0 252 0h-.6c-84.2 0-102.2 5.2-111.8 6.6-55.3 8.2-105.7 47.1-118 102.8-5.9 27.4-6.5 57.8-5.4 85.7 1.6 40 1.9 79.9 5.5 119.7 2.5 26.4 6.9 52.7 13.1 78.5 11.6 47.7 58.7 87.4 104.9 103.6 49.4 16.9 102.6 19.7 153.5 8.1 5.6-1.3 11.1-2.8 16.6-4.5 12.4-3.9 26.9-8.3 37.5-16.1.1-.1.3-.2.4-.4s.1-.3.1-.5v-38.6c0-.2 0-.3-.1-.5s-.2-.3-.3-.4-.3-.2-.5-.2h-.5c-32.6 7.8-66.1 11.7-99.6 11.6-57.7 0-73.2-27.4-77.7-38.8-3.6-9.9-5.8-20.1-6.7-30.6 0-.2 0-.4.1-.5.1-.2.2-.3.3-.4s.3-.2.5-.2h.5c32.1 7.7 65 11.6 98 11.6 7.9 0 15.8 0 23.8-.2 33.2-.9 68.2-2.6 100.8-9 .8-.2 1.6-.3 2.3-.5 51.5-9.9 100.5-40.9 105.5-119.5.2-3.1.7-32.4.7-35.6-.1-11 3.4-77.5-.6-118.3m-81.6 198.5h-54.2V179.2c0-27.9-11.6-42.2-35.3-42.2-26 0-39.1 16.8-39.1 50.1v72.6h-53.8v-72.6c0-33.3-13.1-50.1-39.1-50.1-23.5 0-35.3 14.2-35.3 42.2v132.6h-54.1V175.2c0-27.9 7.1-50.1 21.4-66.6 14.7-16.4 34-24.8 58-24.8 27.7 0 48.7 10.7 62.6 32l13.5 22.6 13.5-22.6c14-21.3 34.9-32 62.6-32 23.9 0 43.2 8.4 58 24.8q21.3 24.6 21.3 66.6z" style="fill:#fff"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

1
static/icons/matrix.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 512 512"><path d="M465.3 499.7V11.8h-35V.1h48.6V512h-48.6v-11.7zM163.4 167v24.6h.7c6.2-9 14.3-16.5 23.8-21.9 9.3-5.2 20-7.8 31.8-7.8 11.5 0 22.1 2.2 31.5 6.7 9.5 4.5 16.8 12.3 21.8 23.7 5.4-8 12.7-15.1 22.1-21.1 9.3-6.1 20.3-9.2 33-9.2 9.6 0 18.6 1.2 26.7 3.5 8.2 2.4 15.3 6.1 21.1 11.3 5.9 5.2 10.4 11.9 13.7 20.3s4.9 18.4 4.9 30.2v122.1h-50.1V246.1c0-6.1-.2-11.9-.7-17.3-.3-4.9-1.6-9.7-3.9-14.1-2.1-4-5.4-7.3-9.3-9.5-4.1-2.3-9.7-3.5-16.8-3.5-7 0-12.7 1.4-17.1 4-4.4 2.7-7.8 6.2-10.2 10.6-2.5 4.6-4.2 9.6-4.9 14.8q-1.2 8.4-1.2 16.8v101.6h-50.1V247.1c0-5.4-.1-10.8-.3-16-.2-5-1.2-10-3-14.7-1.7-4.4-4.8-8.2-8.8-10.8-4.1-2.7-10.2-4-18.2-4-3.2.1-6.3.7-9.3 1.6-4.1 1.2-8 3.2-11.3 6-3.6 2.9-6.8 7.2-9.3 12.7-2.6 5.5-3.9 12.8-3.9 21.8v105.9h-50.2V167.2zM46.7 12.3v487.9h35v11.7H33.1V0h48.5v11.7z" style="fill:#fff"/></svg>

After

Width:  |  Height:  |  Size: 890 B

View File

@@ -0,0 +1,7 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="-10 -5 1034 1034" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" fill="#000000">
<g id="SVGRepo_bgCarrier" stroke-width="0"/>

After

Width:  |  Height:  |  Size: 845 B

1
static/icons/untappd.svg Normal file
View File

@@ -0,0 +1 @@
<?xml version="1.0"?><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title/><path d="M11 13.299l-5.824 8.133c-.298.416-.8.635-1.308.572-.578-.072-1.374-.289-2.195-.879S.392 19.849.139 19.323a1.402 1.402 0 0 1 .122-1.425l5.824-8.133a3.066 3.066 0 0 1 1.062-.927l1.146-.604c.23-.121.436-.283.608-.478.556-.631 2.049-2.284 4.696-4.957l.046-.212a.134.134 0 0 1 .096-.1l.146-.037a.135.135 0 0 0 .101-.141l-.015-.18a.13.13 0 0 1 .125-.142c.176-.005.518.046 1.001.393s.64.656.692.824a.13.13 0 0 1-.095.164l-.175.044a.133.133 0 0 0-.101.141l.012.15a.131.131 0 0 1-.063.123l-.186.112c-1.679 3.369-2.764 5.316-3.183 6.046a2.157 2.157 0 0 0-.257.73l-.205 1.281A3.074 3.074 0 0 1 11 13.3zm12.739 4.598l-5.824-8.133a3.066 3.066 0 0 0-1.062-.927l-1.146-.605a2.138 2.138 0 0 1-.608-.478 50.504 50.504 0 0 0-.587-.654.089.089 0 0 0-.142.018 97.261 97.261 0 0 1-1.745 3.223 1.42 1.42 0 0 0-.171.485 3.518 3.518 0 0 0 0 1.103l.01.064c.075.471.259.918.536 1.305l5.824 8.133c.296.413.79.635 1.294.574a4.759 4.759 0 0 0 2.209-.881 4.762 4.762 0 0 0 1.533-1.802 1.4 1.4 0 0 0-.122-1.425zM8.306 3.366l.175.044a.134.134 0 0 1 .101.141l-.012.15a.13.13 0 0 0 .063.123l.186.112c.311.623.599 1.194.869 1.721.026.051.091.06.129.019.437-.469.964-1.025 1.585-1.668a.137.137 0 0 0 .003-.19c-.315-.322-.645-.659-1.002-1.02l-.046-.212a.13.13 0 0 0-.096-.099l-.146-.037a.135.135 0 0 1-.101-.141l.015-.18a.13.13 0 0 0-.123-.142c-.175-.005-.518.045-1.002.393-.483.347-.64.656-.692.824a.13.13 0 0 0 .095.164z"/></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
static/img/homelab.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

939
yarn.lock

File diff suppressed because it is too large Load Diff