diff --git a/doc/09_troyito-com.txt b/doc/09_troyito-com.txt new file mode 100644 index 0000000..d25fd47 --- /dev/null +++ b/doc/09_troyito-com.txt @@ -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 + diff --git a/etc/nginx/sites-available/troyito.com.conf b/etc/nginx/sites-available/troyito.com.conf new file mode 100644 index 0000000..710600e --- /dev/null +++ b/etc/nginx/sites-available/troyito.com.conf @@ -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 +} + diff --git a/etc/nginx/sites-available/troyito.com.conf.bootstrap b/etc/nginx/sites-available/troyito.com.conf.bootstrap new file mode 100644 index 0000000..6d25059 --- /dev/null +++ b/etc/nginx/sites-available/troyito.com.conf.bootstrap @@ -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; + } +} diff --git a/html/troyito/.well-known/security.txt b/html/troyito/.well-known/security.txt new file mode 100644 index 0000000..358e363 --- /dev/null +++ b/html/troyito/.well-known/security.txt @@ -0,0 +1 @@ +Contact: https://troyito.com diff --git a/html/troyito/divtable.css b/html/troyito/divtable.css new file mode 100644 index 0000000..1e16b77 --- /dev/null +++ b/html/troyito/divtable.css @@ -0,0 +1,35 @@ +/* +
+
+
+
+ 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; +} diff --git a/html/troyito/favicon.ico b/html/troyito/favicon.ico new file mode 100644 index 0000000..8b0bac7 Binary files /dev/null and b/html/troyito/favicon.ico differ diff --git a/html/troyito/favicon.png b/html/troyito/favicon.png new file mode 100644 index 0000000..8af2043 Binary files /dev/null and b/html/troyito/favicon.png differ diff --git a/html/troyito/favicon.svg b/html/troyito/favicon.svg new file mode 100644 index 0000000..deaa624 --- /dev/null +++ b/html/troyito/favicon.svg @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/html/troyito/index.css b/html/troyito/index.css new file mode 100644 index 0000000..46ce7a1 --- /dev/null +++ b/html/troyito/index.css @@ -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; +} diff --git a/html/troyito/index.html b/html/troyito/index.html new file mode 100644 index 0000000..7795faf --- /dev/null +++ b/html/troyito/index.html @@ -0,0 +1,80 @@ + + + + + + ¡troyito! + + + + + + + + + + + + + +
+ + +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ +
+ + + + + + + diff --git a/html/troyito/razzledazzle.css b/html/troyito/razzledazzle.css new file mode 100644 index 0000000..faab623 --- /dev/null +++ b/html/troyito/razzledazzle.css @@ -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); +} diff --git a/html/troyito/robots.txt b/html/troyito/robots.txt new file mode 100644 index 0000000..8c3fe66 --- /dev/null +++ b/html/troyito/robots.txt @@ -0,0 +1,8 @@ +User-Agent: * + +# credit: jonty, asimov +Disallow: /harming/humans +Disallow: /ignoring/human/orders +Disallow: /harm/to/self + +Allow: /