add troyito

This commit is contained in:
tengel 2025-07-02 06:11:29 -05:00
parent 22060e1bf8
commit d35dfe7800
12 changed files with 517 additions and 0 deletions

21
doc/09_troyito-com.txt Normal file
View file

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

View file

@ -0,0 +1,87 @@
# troyito.com
# www.troyito.com
server {
server_name troyito.com;
root /var/xyzzy/html/troyito;
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/troyito.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/troyito.com/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;
# 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.troyito.com;
root /var/xyzzy/html/troyito;
index index.html;
location ~ /\.well-known {
allow all;
}
location ~ / {
return 301 $scheme://troyito.com$request_uri;
}
listen [::]:443 ssl; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/troyito.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/troyito.com/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;
# 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 = troyito.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
server_name troyito.com;
root /var/xyzzy/html/troyito;
index index.html;
return 404; # managed by Certbot
}
server {
if ($host = www.troyito.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
server_name www.troyito.com;
root /var/xyzzy/html/troyito;
index index.html;
return 404; # managed by Certbot
}

View file

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

View file

@ -0,0 +1 @@
Contact: https://troyito.com

35
html/troyito/divtable.css Normal file
View file

@ -0,0 +1,35 @@
/*
<div class="divTable">
<div class="divTableBody">
<div class="divTableRow">
<div class="divTableCell">
abcd1234
*/
.divTable {
font-size: 16px;
display: table;
margin: auto;
border: 1px solid #000;
}
.divTableRow {
display: table-row;
}
.divTableHeading {
display: table-header-group;
}
.divTableCell, .divTableHead {
vertical-align: middle;
display: table-cell;
border: 1px solid #000;
}
.divTableHeading {
display: table-header-group;
font-weight: bold;
}
.divTableFoot {
display: table-footer-group;
font-weight: bold;
}
.divTableBody {
display: table-row-group;
}

BIN
html/troyito/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
html/troyito/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

22
html/troyito/favicon.svg Normal file
View file

@ -0,0 +1,22 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="512" height="512" viewBox="0 0 512 512"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0,512) scale(0.1,-0.1)"
fill="#929ab6" stroke="none">
<path d="M2822 4576 c-532 -536 -676 -689 -669 -710 8 -25 47 -13 131 40 111
70 232 128 311 149 36 10 101 17 165 17 169 0 256 -37 376 -163 74 -79 109
-129 164 -239 113 -226 189 -561 220 -980 13 -174 13 -657 0 -870 -27 -443
-101 -1047 -193 -1572 -14 -76 -20 -138 -16 -138 20 0 209 332 339 595 259
526 437 1114 481 1590 8 82 13 275 13 465 0 354 -9 443 -74 752 -108 509 -325
1024 -630 1496 -39 62 -73 112 -75 112 -1 0 -246 -245 -543 -544z"/>
<path d="M1739 4898 c-392 -662 -615 -1238 -723 -1870 -34 -193 -46 -365 -46
-628 0 -269 13 -446 45 -636 83 -485 239 -907 530 -1438 77 -139 185 -309 205
-321 12 -8 1112 1088 1179 1174 33 42 39 56 30 67 -16 20 -40 11 -132 -48
-409 -260 -718 -218 -944 129 -213 326 -304 840 -289 1628 10 576 60 1076 171
1740 30 176 52 321 50 323 -1 2 -36 -52 -76 -120z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

136
html/troyito/index.css Normal file
View file

@ -0,0 +1,136 @@
:root {
--nord:#1b212a;
--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);
}
#main {
padding-top:30px;
}
#footer {
padding-top:30px;
}
.title-wrapper {
text-align:center;
}
.content {
margin-left:auto;
margin-right:auto;
padding:1px 20px;
position:relative;
}
.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(--three);
margin:20px 0 0;
display:block;
}
.title + .description {
margin-top:10px !important;
}
.footdesc {
color:var(--six);
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;
}
.squarethirty {
height:30px;
width:30px;
}

80
html/troyito/index.html Normal file
View file

@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>¡troyito!</title>
<meta name="description" content="uninvited cacophony">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" media="screen" href="index.css">
<link rel="stylesheet" media="screen" href="razzledazzle.css" />
<link rel="stylesheet" media="screen" href="divtable.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">¡troyito!</h1>
<span class="description">
<em>uninvited cacophony</em>
</span>
</div>
</div>
</header>
<main id="main">
<!-- raaazzle...daaazzle -->
<div class="divTable">
<div class="divTableBody">
<div class="divTableRow">
<div class="divTableCell squarethirty base-white" title="Base (white)"></div>
<div class="divTableCell squarethirty thayer-blue" title="Thayer Blue"></div>
<div class="divTableCell squarethirty pale-gray" title="Pale Gray"></div>
<div class="divTableCell squarethirty standard-gray" title="Standard Gray"></div>
<div class="divTableCell squarethirty light-gray-early" title="Light Gray (early)"></div>
<div class="divTableCell squarethirty light-gray" title="Light Gray"></div>
<div class="divTableCell squarethirty light-gray-late" title="Light Gray (late)"></div>
<div class="divTableCell squarethirty haze-gray" title="Haze Gray"></div>
</div>
<div class="divTableRow">
<div class="divTableCell squarethirty haze-gray-late" title="Haze Gray (late)"></div>
<div class="divTableCell squarethirty ocean-gray-early" title="Ocean Gray (early)"></div>
<div class="divTableCell squarethirty ocean-gray" title="Ocean Gray"></div>
<div class="divTableCell squarethirty ocean-gray-late" title="Ocean Gray (late)"></div>
<div class="divTableCell squarethirty sea-blue" title="Sea Blue"></div>
<div class="divTableCell squarethirty navy-blue" title="Navy Blue"></div>
<div class="divTableCell squarethirty navy-gray" title="Navy Gray"></div>
<div class="divTableCell squarethirty dark-gray" title="Dark Gray"></div>
</div>
<div class="divTableRow">
<div class="divTableCell squarethirty dark-gray-conv" title="Dark Gray (conversion)"></div>
<div class="divTableCell squarethirty dull-black" title="Dull Black"></div>
<div class="divTableCell squarethirty deck-blue" title="Deck Blue"></div>
<div class="divTableCell squarethirty deck-gray" title="Deck Gray"></div>
<div class="divTableCell squarethirty flight-deck-earl" title="Flight Deck Stain (early)"></div>
<div class="divTableCell squarethirty flight-deck-mid" title="Flight Deck Stain (mid)"></div>
<div class="divTableCell squarethirty flight-deck-late" title="Flight Deck Stain (late)"></div>
<div class="divTableCell squarethirty" title="(unused cell)"></div>
</div>
</div>
</div>
</main>
<footer id="footer">
<div class="content middle">
<span class="footdesc"></span>
</div>
</footer>
</body>
</html>

View file

@ -0,0 +1,97 @@
/* https://en.wikipedia.org/wiki/Dazzle_camouflage */
:root {
--base-white:#ffffff;
--thayer-blue:#b0c6cb;
--pale-gray:#c6c9ce;
--standard-gray:#a3a6ab;
--light-gray-early:#a4a6a8;
--light-gray:#a9afb9;
--light-gray-late:#acacac;
--haze-gray:#878d96;
--haze-gray-late:#939393;
--ocean-gray-early:#626971;
--ocean-gray:#6e798d;
--ocean-gray-late:#7a7a7a;
--sea-blue:#52617c;
--navy-blue:#455168;
--navy-gray:#505050;
--dark-gray:#3c3c3c;
--dark-gray-conv:#363940;
--dull-black:#262626;
--deck-blue:#384864;
--deck-grey:#484848;
--flight-deck-early:#434a58;
--flight-deck-mid:#626d81;
--flight-deck-late:#384864;
}
/* CSP "style-src 'self'" blocks inline style="" by design */
.base-white {
background-color:var(--base-white);
}
.thayer-blue {
background-color:var(--thayer-blue);
}
.pale-gray {
background-color:var(--pale-gray);
}
.standard-gray {
background-color:var(--standard-gray);
}
.light-gray-early {
background-color:var(--light-gray-early);
}
.light-gray {
background-color:var(--light-gray);
}
.light-gray-late {
background-color:var(--light-gray-late);
}
.haze-gray {
background-color:var(--haze-gray);
}
.haze-gray-late {
background-color:var(--haze-gray-late);
}
.ocean-gray-early {
background-color:var(--ocean-gray-early);
}
.ocean-gray {
background-color:var(--ocean-gray);
}
.ocean-gray-late {
background-color:var(--ocean-gray-late);
}
.sea-blue {
background-color:var(--sea-blue);
}
.navy-blue {
background-color:var(--navy-blue);
}
.navy-gray {
background-color:var(--navy-gray);
}
.dark-gray {
background-color:var(--dark-gray);
}
.dark-gray-conv {
background-color:var(--dark-gray-conv);
}
.dull-black {
background-color:var(--dull-black);
}
.deck-blue {
background-color:var(--deck-blue);
}
.deck-gray {
background-color:var(--deck-gray);
}
.flight-deck-early {
background-color:var(--flight-deck-early);
}
.flight-deck-mid {
background-color:var(--flight-deck-mid);
}
.flight-deck-late {
background-color:var(--flight-deck-late);
}

8
html/troyito/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: /