adding tenno

This commit is contained in:
tengel 2025-02-11 12:06:06 -06:00
parent 476637c576
commit 7c82395b47
9 changed files with 366 additions and 0 deletions

21
doc/07_tenno-nz.txt Normal file
View file

@ -0,0 +1,21 @@
cp tenno.nz.conf.bootstrap \
/etc/nginx/sites-available/tenno.nz.conf
cd /etc/nginx/sites-enabled
ln -s /etc/nginx/sites-available/tenno.nz.conf 07tenno.nz.conf
cd -
nginx -t
systemctl restart nginx
certbot --nginx \
-d tenno.nz,www.tenno.nz \
--agree-tos -m "hostmaster@tenno.nz" --no-eff-email \
--deploy-hook "systemctl reload nginx"
cp tenno.nz.conf /etc/nginx/sites-available/tenno.nz.conf
nginx -t
systemctl restart nginx

View file

@ -0,0 +1,101 @@
# tenno.nz
# www.tenno.nz
server {
server_name tenno.nz;
root /var/xyzzy/html/tenno;
index index.html;
location / {
try_files $uri $uri/ =404;
}
listen [::]:443 ssl; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/tenno.nz/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/tenno.nz/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
# https://ssl-config.mozilla.org/
add_header Strict-Transport-Security "max-age=15724800" always;
# OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/tenno.nz/chain.pem;
resolver 9.9.9.9 8.8.8.8 1.1.1.1;
resolver_timeout 5s;
# https://observatory.mozilla.org
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
add_header Referrer-Policy "strict-origin-when-cross-origin";
add_header Content-Security-Policy "default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; base-uri 'self'; form-action 'self'; frame-ancestors 'self';";
}
server {
server_name www.tenno.nz;
root /var/xyzzy/html/tenno;
index index.html;
location ~ /\.well-known {
allow all;
}
location ~ / {
return 301 $scheme://tenno.nz$request_uri;
}
listen [::]:443 ssl; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/tenno.nz/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/tenno.nz/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
# https://ssl-config.mozilla.org/
add_header Strict-Transport-Security "max-age=15724800" always;
# OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/tenno.nz/chain.pem;
resolver 9.9.9.9 8.8.8.8 1.1.1.1;
resolver_timeout 5s;
# https://observatory.mozilla.org
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
add_header Referrer-Policy "strict-origin-when-cross-origin";
add_header Content-Security-Policy "default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; base-uri 'self'; form-action 'self'; frame-ancestors 'self';";
}
server {
if ($host = tenno.nz) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
server_name tenno.nz;
root /var/xyzzy/html/tenno;
index index.html;
return 404; # managed by Certbot
}
server {
if ($host = www.tenno.nz) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
server_name www.tenno.nz;
root /var/xyzzy/html/tenno;
index index.html;
return 404; # managed by Certbot
}

View file

@ -0,0 +1,30 @@
# tenno.nz
# www.tenno.nz
server {
listen 80;
listen [::]:80;
server_name tenno.nz;
root /var/xyzzy/html/tenno;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
server {
listen 80;
listen [::]:80;
server_name www.tenno.nz;
root /var/xyzzy/html/tenno;
index index.html;
location ~ /\.well-known {
allow all;
}
location ~ / {
return 301 $scheme://tenno.nz$request_uri;
}
}

View file

@ -0,0 +1 @@
Contact: https://tenno.nz

BIN
html/tenno/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

4
html/tenno/favicon.svg Normal file
View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<svg width="800px" height="800px" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet">
<path fill="#929ab6" d="M15.676 11.203h-3.38c-1.488 0-2.108-1.085-2.108-2.139c0-1.085.775-2.14 2.108-2.14h11.411c1.332 0 2.108 1.054 2.108 2.14c0 1.054-.619 2.139-2.108 2.139h-3.381v15.565c0 1.551-.992 2.418-2.325 2.418c-1.333 0-2.325-.867-2.325-2.418V11.203z"></path>
</svg>

After

Width:  |  Height:  |  Size: 547 B

160
html/tenno/index.css Normal file
View file

@ -0,0 +1,160 @@
:root {
--nord:#1e252f;
--snow:#ccd2dc;
--one:#b8c0e0;
--two:#a5adcb;
--three:#929ab6;
--four:#7f87a1;
--five:#6c748c;
--six:#596177;
--seven:#464e62;
--eight:#333b4d;
--nine:#202838;
--ten:#0d1523;
--code:#1e2030;
--grey:#757575;
}
header,section {
display:block;
}
body {
font-size:16px;
margin:0 auto;
line-height:1.4;
background:var(--nord);
color:var(--two);
font-family:"Noto Sans", Futura, Verdana, "Liberation Sans", sans-serif;
}
a {
color:var(--two);
text-decoration:none;
}
a:hover {
color:var(--snow);
text-decoration:underline;
}
h1, h2, h3, h4, h5, h6 {
color:var(--snow);
}
a code {
box-shadow:0 -1px 0 var(--one) inset;
}
pre, code {
display:block;
margin:auto 0;
padding:5px;
overflow-x:auto;
word-break:break-all;
background:var(--code);
}
blockquote {
margin:15px;
padding:0 10px;
border-inline-start:3px solid var(--three);
}
hr {
background:var(--three);
}
::selection {
color:var(--nord);
background:var(--one);
}
h1 {
font-size:2em;
margin:.67em 0;
}
#page {
position:relative;
}
#header {
padding-top:30px;
transform:translate3d(0,0,0);
}
.title-wrapper {
text-align:center;
}
.content {
margin-left:auto;
margin-right:auto;
padding:1px 20px;
position:relative;
z-index:2;
min-width:270px;
}
.title {
font-size:42px;
line-height:1.2;
margin:40px 0 0;
word-wrap:break-word;
}
.title a:active {
transform:translateY(1px);
}
.title a {
display:block;
text-decoration:none;
}
.description {
color:var(--four);
margin:20px 0 0;
display:block;
}
.title + .description {
margin-top:10px !important;
}
.footdesc {
color:var(--six);
margin:20px 0 0;
display:block;
font-size:14px;
}
.footdesc a {
color:var(--six);
}
.footdesc a:hover {
color:var(--four);
}
.footlink {
text-align:center;
}
.middle {
overflow:auto;
margin:auto;
display:inline;
text-align:center;
vertical-align:middle;
}
.valign {
vertical-align:middle;
}
.divTable {
font-size:16px;
line-height:2.0;
display:table;
margin:auto;
border:1px solid var(--seven);
}
.divTableRow {
display:table-row;
}
.divTableHeading {
display:table-header-group;
}
.divTableCell, .divTableHead {
vertical-align:middle;
display:table-cell;
padding:5px 10px;
border:1px solid var(--seven);
}
.divTableHeading {
display:table-header-group;
font-weight:bold;
}
.divTableFoot {
display:table-footer-group;
font-weight:bold;
}
.divTableBody {
display:table-row-group;
}

41
html/tenno/index.html Normal file
View file

@ -0,0 +1,41 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>tenno</title>
<meta name="description" content="tenno">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" media="screen" href="index.css">
<link rel="icon" href="favicon.svg" type="image/svg+xml">
<link rel="alternate icon" href="favicon.png" type="image/png">
</head>
<body>
<header id="header">
<div class="title-wrapper content">
<div class="title-group">
<h1 class="title">tenno</h1>
<span class="description">
<em>a personal domain</em>
</span>
</div>
</div>
</header>
<main id="main">
<div class="content middle">
</div>
</main>
<footer id="footer">
<div class="content middle">
<span class="footdesc">[ xyzzy ]</span>
</div>
</footer>
</body>
</html>

8
html/tenno/robots.txt Normal file
View file

@ -0,0 +1,8 @@
User-Agent: *
# credit: jonty, asimov
Disallow: /harming/humans
Disallow: /ignoring/human/orders
Disallow: /harm/to/self
Allow: /