Compare commits

...

35 Commits

Author SHA1 Message Date
9d4ff8432c Add icon for netbox 2021-04-22 17:57:55 -05:00
f5d2a6220b Ignore cache on builds 2021-04-20 22:05:29 -05:00
4af9256041 Rename vhosts as well 2021-04-20 22:04:29 -05:00
225f57c048 s/desu.local/local.desu.ltd/g 2021-04-20 22:01:20 -05:00
65b1fcdacc Add stub zone for desu.local 2021-03-11 11:27:57 -06:00
7b5a77db18 Oh shit that's YAML 2021-03-11 11:19:44 -06:00
f3cfa01b74 Add netbox vhost 2021-03-11 10:34:19 -06:00
ff884a60a2 Switch to using a VIP 2021-03-11 10:29:34 -06:00
9ef861d10c Add CNAME for netbox 2021-03-11 10:28:34 -06:00
4bd9b23860 Add record for the VIP and flip records over to it 2021-03-11 10:28:17 -06:00
da11f15f78 Add ProxyPass directive for JF 2021-03-04 12:24:33 -06:00
feaf8d35a3 Add vhost for Radarr
whoops
2021-03-04 11:39:45 -06:00
ccb703e160 Add record for Radarr 2021-03-04 11:34:19 -06:00
3e9b0fad8a Add link to Radarr 2021-03-04 11:33:01 -06:00
dc52953b40 Add link to Jackett 2021-03-02 03:51:29 -06:00
08c09a4318 Add CNAME for jackett 2021-03-02 03:25:40 -06:00
c743291ad1 Add Jackett vhost 2021-03-02 03:24:55 -06:00
b865b6c44a This is why we have tests 2021-03-01 20:04:41 -06:00
6c35b7fb85 Root record should be an A 2021-03-01 20:02:05 -06:00
f042d4eaa7 Fix flattening 2021-03-01 19:58:44 -06:00
a1019449eb Condense down my needless PHP thing 2021-03-01 19:55:11 -06:00
e132bad0ea Alright maybe this is the problem and it's a health check 2021-03-01 19:53:04 -06:00
6826034958 Fix up vhost configuration 2021-03-01 19:51:39 -06:00
f10638e86e Add little stubby site for desu.local 2021-03-01 19:47:06 -06:00
2f861a7692 Transmission here we go 2021-03-01 15:37:06 -06:00
0dfe8e6b8a Add sonarr vhost 2021-03-01 15:10:49 -06:00
90d4a7438c Add more vhosts 2021-03-01 15:02:01 -06:00
61fba6197c Fix syntax errors 2021-02-28 05:10:05 -06:00
89524b475c Add a bunch of records to desu.local 2021-02-28 05:00:53 -06:00
3419d4d3e0 Add entry for switch-gs308epp-1.desu.ltd. 2021-02-27 19:01:21 -06:00
1c59f1a886 Reorganize, generalize build-and-push.sh 2021-02-27 05:59:33 -06:00
8c4462efb5 Enable prefetch 2021-02-27 05:57:09 -06:00
93056dddeb Add more records, also respond to the full 127.0.0.0/8 block 2021-02-27 05:44:04 -06:00
8da2445ccb Try typetransparent zones out 2021-02-27 05:34:15 -06:00
fa6189d81b Quick test at building a local zone 2021-02-27 05:29:00 -06:00
14 changed files with 398 additions and 12 deletions

3
desu.local/build-and-push.sh Executable file
View File

@@ -0,0 +1,3 @@
#! /bin/sh
project="$(basename -- "$PWD")"
docker build --no-cache --platform linux/arm,linux/arm64,linux/amd64 . -t "rehashedsalt/$project:latest" -t "rehashedsalt/$project:$(git rev-parse --short=7 HEAD)" --push

View File

@@ -1,2 +0,0 @@
FROM klutchell/unbound:latest
# TODO: Uh

View File

@@ -1,3 +0,0 @@
#! /bin/sh
project="unbound-desu-local"
docker build --platform linux/arm,linux/arm64,linux/amd64 . -t "rehashedsalt/$project:latest" -t "rehashedsalt/$project:$(git rev-parse --short=7 HEAD)" --push

View File

@@ -1,7 +0,0 @@
# vim:set ft=apache:
<VirtualHost *:80>
ServerName jellyfin.desu.local
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://192.168.102.10:8081/
</VirtualHost>

View File

@@ -1,4 +1,5 @@
FROM httpd:latest
COPY httpd.conf /usr/local/apache2/conf/httpd.conf
COPY vhost.conf /usr/local/apache2/conf/vhost.conf
COPY src/ /usr/local/apache2/htdocs
EXPOSE 80

View File

@@ -0,0 +1,69 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" rel="stylesheet">
<link href="/styles/styles.css" type="text/css" rel="stylesheet" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.7/css/fork-awesome.min.css" integrity="sha256-gsmEoJAws/Kd3CjuOQzLie5Q3yshhvmo7YNtBG7aaEY=" crossorigin="anonymous">
<link href="/favicon.ico" rel="shortcut icon" />
<link href="/styles/buttons.css" type="text/css" rel="stylesheet" />
<title>local.desu.ltd</title>
</head>
<body>
<div class="header">
<a href="/" class="logocontainer">
<span>
<h1>local.desu.ltd</h1>
<p class="nomobile">Local services and stuffs</p>
</span>
</a>
</div>
<div class="content">
<div class="iconbuttoncontainer">
<a href="http://jellyfin.local.desu.ltd" class="iconbutton">
<i class="fa fa-film"></i>
<h1>Jellyfin</h1>
<p>Media server, the thing the Roku uses</p>
</a>
<a href="http://sonarr.local.desu.ltd" class="iconbutton">
<i class="fa fa-feed"></i>
<h1>Sonarr</h1>
<p>Media library downloader and organizer</p>
</a>
<a href="http://radarr.local.desu.ltd" class="iconbutton">
<i class="fa fa-feed"></i>
<h1>Radarr</h1>
<p>Similar to Sonarr, but specializing in movies</p>
</a>
<a href="http://transmission.local.desu.ltd" class="iconbutton">
<i class="fa fa-arrow-circle-down"></i>
<h1>Transmission</h1>
<p>Simple BitTorrent client with few moving parts</p>
</a>
<a href="http://jackett.local.desu.ltd" class="iconbutton">
<i class="fa fa-arrow-circle-o-down"></i>
<h1>Jackett</h1>
<p>Torrent feed aggregator that Just Werks</p>
</a>
</div>
<div class="break"></div>
<div class="iconbuttoncontainer">
<a href="http://grafana.local.desu.ltd" class="iconbutton">
<i class="fa fa-line-chart"></i>
<h1>Grafana</h1>
<p>Monitoring and graphing solution</p>
</a>
<a href="http://netbox.local.desu.ltd" class="iconbutton">
<i class="fa fa-database"></i>
<h1>Netbox</h1>
<p>IPAM, secrets, and more</p>
</a>
</div>
</div>
<div class="footer">
<p>Copyright &copy 2019-<?php echo date("Y"); ?> rehashedsalt. Distributed under the terms of the MIT License.</p>
<p><a href="https://git.desu.ltd/salt/9iron">source</a> <a href="/">home</a></p>
</div>
</body>
</html>

View File

@@ -0,0 +1,37 @@
/*
* buttons.css
* Copyright (C) 2020 Vintage Salt
*
* Distributed under terms of the MIT license.
*/
/* BIG ICON BUTTONS
* Used on the index for services */
div.iconbuttoncontainer {
display: grid;
grid-gap: 1em;
grid-template-columns: 1fr 1fr 1fr;
}
a.iconbutton {
background: var(--background-bright);
border-radius: 8px;
box-shadow: 5px 5px var(--shadow);
display: block;
padding: 1em;
text-align: center;
}
a.iconbutton:hover {
background: var(--link-hover);
color: var(--background);
}
a.iconbutton i {
font-size: 400%
}
/* MOBILE */
@media only screen and (max-width: 600px) {
div.iconbuttoncontainer {
grid-template-columns: 1fr;
}
}

View File

@@ -0,0 +1,181 @@
/*
* styles.css
* Copyright (C) 2020 Vintage Salt
*
* Distributed under terms of the MIT license.
*/
/* GLOBALS */
:root {
--background-bright: #fdfcfa;
--background: #ecebe9;
--line: rgba(0,0,0,0.1);
--greenlink: #327117;
--greenlink-hover: #47b625;
--link: #286a9d;
--link-hover: #3ea5f3;
--shadow: 8px -5px rgba(0,0,0,0.1);
--text: #414040;
--text-code: #a7674e;
}
html {
overflow-y: scroll;
}
body {
background: var(--background);
color: var(--text);
font-family: "Roboto", sans-serif;
margin: 0;
}
/* TYPES */
/* a */
a {
color: var(--link);
text-decoration: none;
transition: .04s ease-in;
}
a:hover {
color: var(--link-hover);
}
code {
color: var(--text-code);
display: inline-block;
font-size: 12pt;
padding: 2px 4px;
}
dl {
list-style-type: none;
margin: 0;
}
dl dt {
font-weight: bold;
margin: 1em 0 0 0;
}
dl dd {
margin: 0;
}
/* CUSTOM DIVS AND SPANS */
a.quickbutton {
background: var(--background-bright);
border-radius: 8px;
box-shadow: 5px 5px var(--shadow);
display: block;
font-size: 150%;
margin: 0.5em 0;
padding: 1em;
text-align: center;
}
a.quickbutton:hover {
background: var(--link-hover);
color: var(--background);
}
div.break {
width: 4em;
margin: 2em auto;
border-bottom: 3px double var(--line);
}
div.quote {
border-left: 4px solid var(--line);
margin: 1em 4em;
padding: 1em;
}
i.badge {
font-size: 200%;
float: right;
}
img.bigimg {
border-radius: 8px;
box-shadow: 5px 5px var(--shadow);
display: block;
margin: 1em auto;
}
/* HIERARCHICAL CLASSES */
/* HEADER */
.header {
background: var(--background-bright);
box-shadow: 0 5px var(--shadow);
text-align: center;
}
.logocontainer {
align-items: center;
display: flex;
justify-content: center;
padding: 1em 0;
}
.logo {
border-radius: 50%;
height: 64px;
vertical-align: middle;
margin: 0 1em;
max-width: 64px;
}
.header h1 {
display: inline;
margin: 0;
}
.header p {
margin: 0;
}
.header nav ul {
list-style-type: none;
margin: 0;
padding: 0;
text-align: center;
}
.header nav ul li {
display: inline-block;
padding: 0.8em;
}
.header nav ul li:hover {
background: var(--link-hover);
color: var(--background);
transition: .04s ease-in;
}
/* CONTENT */
.content {
max-width: 48em;
margin: 2em auto;
padding: 1em;
}
.subcontainer {
background: var(--background-bright);
border-radius: 8px;
box-shadow: 5px 5px var(--shadow);
margin: 1em 0;
padding: 1em;
}
.subcontainer h2 {
margin: 0;
}
.toc {
background: var(--background-bright);
border-radius: 4px;
box-shadow: 5px 5px var(--shadow);
display: inline-block;
margin: 0 1em 1em 1em;
padding: 0 1em;
width: auto;
}
/* FOOTER */
.footer {
font-size: 11px;
line-height: 1.3;
margin: 0 0 4em 0;
text-align: center;
}
.footer p {
margin: 0;
}
/* MOBILE */
@media only screen and (max-width: 600px) {
.nomobile {
display: none;
}
}

View File

@@ -0,0 +1,53 @@
# vim:set ft=apache:
<VirtualHost *:80>
ServerName local.desu.ltd
DocumentRoot /usr/local/apache2/htdocs
<Directory "/usr/local/apache2/htdocs">
AllowOverride All
Options -Indexes +FollowSymLinks
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName jellyfin.local.desu.ltd
ProxyPreserveHost On
ProxyRequests Off
ProxyPass /socket http://192.168.102.200:8081/
ProxyPass / http://192.168.102.200:8081/
</VirtualHost>
<VirtualHost *:80>
ServerName grafana.local.desu.ltd
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://192.168.102.200:8082/
</VirtualHost>
<VirtualHost *:80>
ServerName sonarr.local.desu.ltd
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://192.168.102.200:8083/
</VirtualHost>
<VirtualHost *:80>
ServerName transmission.local.desu.ltd
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://192.168.102.200:8084/
</VirtualHost>
<VirtualHost *:80>
ServerName jackett.local.desu.ltd
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://192.168.102.200:8085/
</VirtualHost>
<VirtualHost *:80>
ServerName radarr.local.desu.ltd
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://192.168.102.200:8086/
</VirtualHost>
<VirtualHost *:80>
ServerName netbox.local.desu.ltd
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://192.168.102.200:8087/
</VirtualHost>

View File

@@ -0,0 +1,2 @@
FROM klutchell/unbound:latest
COPY unbound.conf /opt/unbound/etc/unbound/unbound.conf

View File

@@ -0,0 +1,52 @@
# !vim:set ft=yaml:
server:
interface: 0.0.0.0@5053
do-ip6: no
do-daemonize: no
access-control: 127.0.0.0/8 allow
access-control: 192.168.0.0/16 allow
access-control: 172.16.0.0/12 allow
access-control: 10.0.0.0/8 allow
auto-trust-anchor-file: /var/run/unbound/root.key
logfile: ""
prefetch: yes
verbosity: 1
statistics-interval: 600
statistics-cumulative: yes
local-zone: "desu.ltd." typetransparent
local-data: "switch-gs308epp-1.desu.ltd. 3600 IN A 192.168.1.2"
# IoT shit on .99
local-data: "botnet-roku-1.desu.ltd. 3600 IN A 192.168.99.1"
# Others workstations on .100
local-data: "sad.desu.ltd. 3600 IN A 192.168.100.1"
# My workstations and devices on .101
local-data: "lap-s76-lemp9-0.desu.ltd. 3600 IN A 192.168.101.1"
local-data: "dsk-ryzen-0.desu.ltd. 3600 IN A 192.168.101.2"
local-data: "ph-flame-0.desu.ltd. 3600 IN A 192.168.101.100"
# k8s on .102
local-data: "pi-kub-master-1.desu.ltd. 3600 IN A 192.168.102.1"
local-data: "pi-kub-node-1.desu.ltd. 3600 IN A 192.168.102.10"
local-data: "pi-kub-node-2.desu.ltd. 3600 IN A 192.168.102.11"
local-data: "pi-kub-node-3.desu.ltd. 3600 IN A 192.168.102.12"
local-data: "pi-kub-vip-1.desu.ltd. 3600 IN A 192.168.102.200"
# General-purpose nodes on .103
local-data: "pi-mp-1.desu.ltd. 3600 IN A 192.168.103.100"
local-data: "pi-mp-2.desu.ltd. 3600 IN A 192.168.103.101"
domain-insecure: "desu.local"
local-zone: "desu.local." static
local-data: "desu.local. 3600 IN A 192.168.102.200"
local-data: "www.desu.local. 3600 IN CNAME desu.local."
local-data: "grafana.desu.local. 3600 IN CNAME pi-kub-vip-1.desu.ltd."
local-data: "jellyfin.desu.local. 3600 IN CNAME pi-kub-vip-1.desu.ltd."
local-data: "radarr.desu.local. 3600 IN CNAME pi-kub-vip-1.desu.ltd."
local-data: "sonarr.desu.local. 3600 IN CNAME pi-kub-vip-1.desu.ltd."
local-data: "transmission.desu.local. 3600 IN CNAME pi-kub-vip-1.desu.ltd."
local-data: "jackett.desu.local. 3600 IN CNAME pi-kub-vip-1.desu.ltd."
local-data: "netbox.desu.local. 3600 IN CNAME pi-kub-vip-1.desu.ltd."
stub-zone:
name: "desu.local."
stub-addr: "192.168.103.100"
stub-first: yes