Compare commits

...

9 commits
main ... master

Author SHA1 Message Date
Michael Rodin 441e4781de PHP 2024-06-13 13:15:47 +02:00
Michael Rodin b125f86fa9 White box not centering 2024-05-16 16:35:47 +02:00
Michael Rodin cae4cc03fb White box at least box 2024-05-16 01:04:18 +02:00
Michael Rodin 0f33db1175 Added PeerTube as tile 2024-05-16 01:01:59 +02:00
Michael Rodin d8c6c2036f Added viewport stuff 2024-04-23 18:15:52 +02:00
Michael Rodin e83758fc07 Added Uptime Kuma 2024-04-22 13:45:28 +02:00
Michael Rodin 05500cb27b Redesign 2024-03-30 16:22:08 +01:00
Michael Rodin 2734bc7fbb added requirements.txt 2024-03-07 11:47:08 +01:00
Michael Rodin b8cc89163d Tiny edits; IPFS 2024-03-07 11:32:36 +01:00
12 changed files with 160 additions and 53 deletions

8
.gitignore vendored
View file

@ -1,8 +1,8 @@
/*
/**
!/root
!/root/static
!/root/static/**
!/.gitignore
!/uptime-kuma-homepage.py
!/example.env.py
/root/homepagehtml.html
!/requirements.txt

1
requirements.txt Normal file
View file

@ -0,0 +1 @@
uptime-kuma-api

View file

@ -1,81 +1,117 @@
:root {
--foreground: #aa998fff; /*cinereous*/
--background: hsl(20, 12%, 75%);
--text: #454545ff; /*onyx*/
--tea-green: #e0fbb1ff;
--celestial-blue: #20a4f3ff;
--rust: #bc3908ff;
}
body {
position: relative;
min-height: 100em;
padding: 0;
margin: 0;
font-family: Roboto;
color: var(--text);
background: var(--background);
}
@font-face {
font-family: Roboto;
src: url(/roboto-regular.ttf);
src: url(/ipfs/QmfR5nD3dZwZF9ZmSs9XJiLhzVA4p1FtuvPYJCQyjPCTqD);
}
.darkerbar {
background: lightgrey;
background: var(--foreground);
width: 100%;
}
#content > p {
text-align: justify;
}
#topbar {
header {
display: inline-block;
height: 5em;
border-bottom: grey 1px solid;
}
#content {
main {
padding: 1em;
}
a.item {
text-decoration: none;
display: inline-flex;
flex: 0 2 80em;
main > p {
text-align: justify;
}
#links-container {
justify-content: center;
display: flex;
flex-flow: row wrap;
width: 100%;
}
div.item {
background: lightgrey;
margin: 0 0.4em;
display: flex;
flex: 0 2 80em;
margin: 0.1em;
padding: 0em 0.4em;
border: 1px grey solid;
border-radius: 0.5em;
box-sizing: border-box;
vertical-align: middle;
position: relative;
width: min-content;
background: var(--foreground);
border: solid grey 2px;
border-radius: 15pt;
}
div.item > a {
border-radius: inherit;
position: absolute;
height: 100%;
width: 100%;
}
div.item:hover {
background: beige;
animation: hover 0.2s forwards;
}
h2.item {
text-decoration: none;
white-space: nowrap;
color: black;
min-width: 7em;
margin: 1em 0;
@keyframes hover {
0% {background: var(--foreground)}
100% {background: var(--tea-green)}
}
.desc {
text-decoration: none;
font-size: 1em;
color: black;
margin: 0 3em;
img.item {
height: inherit;
margin: 0 auto;
}
div.image {
border-radius: 15pt;
height: 58pt;
min-width: 58pt;
display: block;
width: fit-content;
padding: 5pt;
margin: 12pt 10pt 12pt 12pt;
text-align: center;
align-self: center;
background: white;
}
div.item-list {
display: flex;
justify-content: center;
flex-wrap: wrap;
div.desc {
margin: auto 6pt auto 0;
text-align: center;
font-weight: 800;
font-size: 14pt;
}
footer {
display: block;
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 10em;
border-top: grey 1px solid;
display: flex;
justify-content: center;
align-items: center;
}
@media screen and (max-width: 600px) {
div.item {
width: 70%;
}
}

37
root/index.php Executable file → Normal file
View file

@ -2,27 +2,44 @@
<html>
<?php
$title = "Marcel's Homepage";
$services = [
array("name" => "authentik","displayname" => "Authentik", "link" => "https://auth.marcelsite.com", "image" => "/static/authentik.svg"),
array("name" => "uptime-kuma","displayname" => "Uptime Kuma", "link" => "https://status.marcelsite.com", "image" => "/static/uptime-kuma.svg"),
array("name" => "forgejo","displayname" => "Forgejo", "link" => "https://git.marcelsite.com", "image" => "/static/forgejo.svg"),
array("name" => "peertube","displayname" => "Peertube", "link" => "https://peertube.marcelsite.com", "image" => "/static/peertube.svg"),
array("name" => "element","displayname" => "Matrix (Element)", "link" => "https://element.marcelsite.com", "image" => "/static/element.svg"),
];
?>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="css/base.css" type="text/css">
<title> <?php echo $title; ?> </title>
</head>
<body>
<div id="topbar" class="darkerbar"><h1><?php echo $title; ?></h1> </div>
<header id="topbar" class="darkerbar"><h1><?php echo $title; ?></h1> </header>
<div id="content">
<p>Hi, I am Marcel and this is my server (and my ugly homepage)! Lorem ipsum dolor sit amet or something.<br>
Most of my services are for private use, because I don't want to track every user on my server or guarantee flawless connectivity.<br>
If you know me personally, you may ask me for an account on one of my services.
If you don't know me personally, then I probably won't give you access to my services.</p>
<div class="item-list">
<?php include "/var/www/html/root/homepagehtml.html" ?>
</div>
<main>
<p>
You've reached my realm. Now look around or leave.
</p>
<div id="links-container">
<?php
foreach ($services as $service) {
echo " <div class='item' id='$service[name]'>";
echo " <div class='image'><img class='item' alt='logo' src='$service[image]'></div><div class='desc'>$service[displayname]</div>";
echo " <a href='$service[link]'></a>";
echo " </div>";
}
?>
</div>
</main>
<footer id="bottombar" class="darkerbar"> </footer>
<footer id="bottombar" class="darkerbar">
Footer currently completely empty.
</footer>
</body>
</html>

Binary file not shown.

2
root/robots.txt Normal file
View file

@ -0,0 +1,2 @@
User-agent: *
Disallow: /

View file

@ -0,0 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000"><defs><style>.cls-1{fill:#fd4b2d;}</style></defs><rect class="cls-1" x="546.66" y="275.34" width="34.99" height="99.97"/><rect class="cls-1" x="637.66" y="271.13" width="34.99" height="78.19"/><path class="cls-1" d="M127.64,385.31a127.57,127.57,0,0,0-112.13,66.9H74.82c26.27-22.67,64.42-29.28,92,0h62.8C205.11,419.06,168.36,385.31,127.64,385.31Z"/><path class="cls-1" d="M212.39,512.53C130.55,683.65-12.89,537.81,74.82,452.21H15.51C-31,533.33,33.3,642.73,127.64,640.24c73,0,133.2-108.3,133.2-127.46,0-8.47-11.78-34.33-31.2-60.57h-62.8C187.65,471.08,205.81,498.56,212.39,512.53Zm2.17-5h0Z"/><path class="cls-1" d="M999.94,274.11V725.89c0,86.58-70.42,157.06-157.05,157.06H776.22V729.12H457.88V883H391.22c-86.64,0-157.06-70.48-157.06-157.06V583.81H738.87V312.11H495.24V464.76H234.16V274.11a151.29,151.29,0,0,1,1.06-18,154.4,154.4,0,0,1,3.88-21.15c.58-2.23,1.23-4.46,1.88-6.64a13.66,13.66,0,0,1,.52-1.64c.36-1.12.71-2.17,1.06-3.23s.76-2.17,1.18-3.23c.47-1.23.88-2.41,1.35-3.58s1-2.35,1.47-3.53a159,159,0,0,1,14.27-26.49c.06-.06.12-.17.17-.23,1.41-2.06,2.88-4.11,4.41-6.17,1.29-1.7,2.58-3.35,3.88-5,1.52-1.82,3.11-3.7,4.69-5.46s3.12-3.47,4.76-5.11l.18-.18a36.53,36.53,0,0,1,2.64-2.64,159.75,159.75,0,0,1,18.68-15.63c1.76-1.29,3.64-2.52,5.52-3.76,2.11-1.35,4.23-2.64,6.4-3.93,4.11-2.41,8.28-4.64,12.63-6.64,1.35-.64,2.76-1.29,4.11-1.88a152.81,152.81,0,0,1,18.38-6.63c2.41-.71,4.82-1.35,7.29-1.94,1.17-.3,2.35-.59,3.58-.82a158.5,158.5,0,0,1,21.26-3.12l3.12-.17c.52,0,1-.06,1.52-.06,2.35-.12,4.76-.18,7.17-.18H842.89c2.4,0,4.81.06,7.16.18.53,0,1,.06,1.53.06l3.11.17A158.26,158.26,0,0,1,876,120.58c1.24.23,2.41.52,3.59.82,2.46.59,4.87,1.23,7.28,1.94A152.81,152.81,0,0,1,905.2,130c1.35.59,2.76,1.24,4.11,1.88,4.35,2,8.52,4.23,12.63,6.64,2.18,1.29,4.29,2.58,6.4,3.93,1.88,1.24,3.76,2.47,5.52,3.76a157.53,157.53,0,0,1,21.5,18.45c1.65,1.64,3.23,3.34,4.76,5.11s3.17,3.64,4.7,5.46c1.29,1.64,2.58,3.29,3.87,5,1.53,2.06,3,4.11,4.41,6.17.06.06.12.17.18.23a159.71,159.71,0,0,1,14.27,26.49c.47,1.18,1,2.35,1.47,3.53s.88,2.35,1.35,3.58c.41,1.06.82,2.11,1.17,3.23s.71,2.11,1.06,3.23a15.74,15.74,0,0,1,.53,1.64c.64,2.18,1.29,4.41,1.88,6.64a155.92,155.92,0,0,1,3.87,21.15A151.29,151.29,0,0,1,999.94,274.11Z"/><path class="cls-1" d="M973.27,186.59H260.84A157.05,157.05,0,0,1,391.2,117.07H842.9A157.08,157.08,0,0,1,973.27,186.59Z"/><path class="cls-1" d="M998.94,256.1H235.16a155.35,155.35,0,0,1,25.68-69.51H973.27A155.34,155.34,0,0,1,998.94,256.1Z"/><path class="cls-1" d="M1000,274.11v51.51H738.87V312.11H495.24v13.51H234.1V274.11a153.41,153.41,0,0,1,1.06-18H998.94A151.29,151.29,0,0,1,1000,274.11Z"/><rect class="cls-1" x="234.1" y="325.62" width="261.13" height="69.54"/><rect class="cls-1" x="738.87" y="325.62" width="261.13" height="69.54"/><rect class="cls-1" x="234.1" y="395.16" width="261.13" height="69.48"/><rect class="cls-1" x="738.87" y="395.16" width="261.13" height="69.48"/></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

6
root/static/element.svg Normal file
View file

@ -0,0 +1,6 @@
<svg width="54" height="54" viewBox="0 0 54 54" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M19.4414 3.24C19.4414 1.4506 20.892 0 22.6814 0C34.6108 0 44.2814 9.67065 44.2814 21.6C44.2814 23.3894 42.8308 24.84 41.0414 24.84C39.252 24.84 37.8014 23.3894 37.8014 21.6C37.8014 13.2494 31.032 6.48 22.6814 6.48C20.892 6.48 19.4414 5.0294 19.4414 3.24Z" fill="#0DBD8B"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M34.5586 50.76C34.5586 52.5494 33.108 54 31.3186 54C19.3893 54 9.71861 44.3294 9.71861 32.4C9.71861 30.6106 11.1692 29.16 12.9586 29.16C14.748 29.16 16.1986 30.6106 16.1986 32.4C16.1986 40.7505 22.9681 47.52 31.3186 47.52C33.108 47.52 34.5586 48.9706 34.5586 50.76Z" fill="#0DBD8B"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.24 34.5601C1.4506 34.5601 -6.34076e-08 33.1095 -1.41625e-07 31.3201C-6.63074e-07 19.3907 9.67065 9.72007 21.6 9.72007C23.3894 9.72007 24.84 11.1707 24.84 12.9601C24.84 14.7495 23.3894 16.2001 21.6 16.2001C13.2495 16.2001 6.48 22.9695 6.48 31.3201C6.48 33.1095 5.0294 34.5601 3.24 34.5601Z" fill="#0DBD8B"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M50.76 19.4399C52.5494 19.4399 54 20.8905 54 22.6799C54 34.6093 44.3294 44.2799 32.4 44.2799C30.6106 44.2799 29.16 42.8293 29.16 41.0399C29.16 39.2505 30.6106 37.7999 32.4 37.7999C40.7505 37.7999 47.52 31.0305 47.52 22.6799C47.52 20.8905 48.9706 19.4399 50.76 19.4399Z" fill="#0DBD8B"/>
<style xmlns="http://www.w3.org/1999/xhtml" id="luctb0yu.0tf">.wk_K { display:inline!important;margin:0!important;padding:1px!important;border:0!important;outline:0!important;color:black;font-size:100%!important;vertical-align:baseline!important; background-color: rgba(221, 255, 208, 1) !important; /*color: black !important;*/ } .wk_X { display:inline!important;margin:0!important;padding:1px!important;border:0!important;outline:0!important;color:black;font-size:100%!important;vertical-align:baseline!important; background-color: rgba(190, 190, 190, 1) !important; /*color: black !important;*/ } .wk_A { display:inline!important;margin:0!important;padding:1px!important;border:0!important;outline:0!important;color:black;font-size:100%!important;vertical-align:baseline!important; background-color: rgba(208, 255, 255, 1) !important; /*color: black !important;*/ } .wk_S { display:inline!important;margin:0!important;padding:1px!important;border:0!important;outline:0!important;color:black;font-size:100%!important;vertical-align:baseline!important; background-color: rgba(255, 192, 255, 1) !important; /*color: black !important;*/ } .wk_C { display:inline!important;margin:0!important;padding:1px!important;border:0!important;outline:0!important;color:black;font-size:100%!important;vertical-align:baseline!important; background-color: rgba(140, 255, 120, 1) !important; /*color: black !important;*/ } .wk_0 { display:inline!important;margin:0!important;padding:1px!important;border:0!important;outline:0!important;color:black;font-size:100%!important;vertical-align:baseline!important; /*color: black;*/ background-color: rgba(255,255, 128, 1) !important; } .wk_1 { display:inline!important;margin:0!important;padding:1px!important;border:0!important;outline:0!important;color:black;font-size:100%!important;vertical-align:baseline!important; /*color: black;*/ background-color: rgba(255,223, 128, 1) !important; } .wk_2 { display:inline!important;margin:0!important;padding:1px!important;border:0!important;outline:0!important;color:black;font-size:100%!important;vertical-align:baseline!important; /*color: black;*/ background-color: rgba(255,191, 128, 1) !important; } .wk_3 { display:inline!important;margin:0!important;padding:1px!important;border:0!important;outline:0!important;color:black;font-size:100%!important;vertical-align:baseline!important; /*color: black;*/ background-color: rgba(255,159, 128, 1) !important; } .wk_4 { display:inline!important;margin:0!important;padding:1px!important;border:0!important;outline:0!important;color:black;font-size:100%!important;vertical-align:baseline!important; /*color: black;*/ background-color: rgba(255,128, 128, 1) !important; } </style></svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

27
root/static/forgejo.svg Normal file
View file

@ -0,0 +1,27 @@
<svg viewBox="0 0 212 212" xmlns="http://www.w3.org/2000/svg">
<style type="text/css">
circle {
fill: none;
stroke: #000;
stroke-width: 15;
}
path {
fill: none;
stroke: #000;
stroke-width: 25;
}
.orange {
stroke:#ff6600;
}
.red {
stroke:#d40000;
}
</style>
<g transform="translate(6,6)">
<path d="M58 168 v-98 a50 50 0 0 1 50-50 h20" class="orange" />
<path d="M58 168 v-30 a50 50 0 0 1 50-50 h20" class="red" />
<circle cx="142" cy="20" r="18" class="orange" />
<circle cx="142" cy="88" r="18" class="red" />
<circle cx="58" cy="180" r="18" class="red" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 677 B

8
root/static/peertube.svg Normal file
View file

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="2799 -911 16 22">
<g>
<path fill="#211f20" d="M2799-911v11l8-5" />
<path fill="#737373" d="M2799-900v11l8-6" />
<path fill="#f1680d" d="M2807-905v10l8-5" />
<path fill="transparent" d="M2807-895v-10l-8 5z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 290 B

View file

@ -0,0 +1,9 @@
<svg width="640" height="640" viewBox="0 0 640 640" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 320 320)">
<linearGradient id="S3" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1 0 0 1 -319.99875 -320.0001577393)" x1="259.78" y1="261.15" x2="463.85" y2="456.49">
<stop stop-color="#5CDD8B"/>
<stop offset="1" stop-color="#86E6A9"/>
</linearGradient>
<path style="stroke: rgb(242,242,242); stroke-opacity: 0.51; stroke-width: 200; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: url(#S3); fill-rule: nonzero; opacity: 1;" transform=" translate(0, 0)" d="M 170.40125 -84.36016 C 224.09125 38.37984 224.09125 115.33984 170.40125 146.49984 C 89.85125000000001 193.23984000000002 -120.03875 207.48984000000002 -180.45875 135.63984 C -220.73875 87.73983999999999 -220.73875 14.399839999999998 -180.45875 -84.36016000000001 C -139.49875 -151.82016 -81.28875000000001 -185.55016 -5.828750000000014 -185.55016 C 69.64124999999999 -185.55016 128.38125 -151.82016000000002 170.40124999999998 -84.36016000000001 z" stroke-linecap="round" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

2
uptime-kuma-homepage.py Executable file → Normal file
View file

@ -15,7 +15,7 @@ descriptions = {
"Calibre Web":"Calibre-Web is a web app that offers a clean and intuitive interface for browsing, reading, and downloading eBooks."}
exclude=('Synapse','Mailserver')
HTMLTEMPLATE='<a class="item" href="{link}"><div id="{item}" class="item"><h2 class="item">{item}</h2><p class="desc">{desc}</p></div></a>'
HTMLTEMPLATE='<a class="item" href="{link}"><div id="{item}" class="item"><h2 class="item">{item}</h2><br/><p class="desc">{desc}</p></div></a>'
htmllist=[]
htmllist.append(HTMLTEMPLATE.format(link=UPTIME_KUMA_URL,item="Uptime Kuma",desc=descriptions["Uptime Kuma"]))