Adding dashboard, docs and git. - selfhost - Incus configurations for my self-hosted setup.
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
---
(DIR) commit b3613cb818921bdd51c75ffa05bd1452e10a71b7
(DIR) parent aa41dd9d04b1969a786e70ea1d80477b710ce38b
(HTM) Author: Jay Scott <me@jay.scot>
Date: Wed, 12 Jun 2024 22:29:38 +0100
Adding dashboard, docs and git.
Diffstat:
A dashboard/dashboard.yaml | 29 +++++++++++++++++++++++++++++
A dashboard/files/lighttpd.conf | 29 +++++++++++++++++++++++++++++
A dashboard/init.sh | 12 ++++++++++++
A docs/docs.yaml | 29 +++++++++++++++++++++++++++++
A docs/files/lighttpd.conf | 29 +++++++++++++++++++++++++++++
A docs/init.sh | 12 ++++++++++++
A git/files/cgitrc | 28 ++++++++++++++++++++++++++++
A git/files/favicon.ico | 0
A git/files/favicon.png | 0
A git/files/lighttpd.conf | 39 +++++++++++++++++++++++++++++++
A git/files/logo.png | 0
A git/files/theme.css | 825 +++++++++++++++++++++++++++++++
A git/git.yaml | 40 +++++++++++++++++++++++++++++++
A git/init.sh | 19 +++++++++++++++++++
M pi-hole/files/custom.list | 4 +++-
15 files changed, 1094 insertions(+), 1 deletion(-)
---
(DIR) diff --git a/dashboard/dashboard.yaml b/dashboard/dashboard.yaml
@@ -0,0 +1,29 @@
+devices:
+ htdocs:
+ path: /srv/www
+ source: /srv/services/dashboard
+ type: disk
+ certs:
+ path: /etc/lighttpd/certs
+ source: /srv/certs
+ type: disk
+ shift: true
+
+config:
+ cloud-init.network-config: |
+ version: 2
+ ethernets:
+ eth0:
+ addresses:
+ - 192.168.2.11/24
+ gateway4: 192.168.2.1
+ cloud-init.user-data: |
+ #cloud-config
+ package_upgrade: true
+ hostname: dashboard.jay.scot
+ timezone: Europe/London
+ manage_resolv_conf: true
+ resolv_conf:
+ nameservers: ['192.168.2.10', '1.1.1.1']
+ packages:
+ - lighttpd
(DIR) diff --git a/dashboard/files/lighttpd.conf b/dashboard/files/lighttpd.conf
@@ -0,0 +1,29 @@
+var.basedir = "/var/www/localhost"
+var.logdir = "/var/log/lighttpd"
+var.statedir = "/var/lib/lighttpd"
+
+include "mime-types.conf"
+server.username = "lighttpd"
+server.groupname = "lighttpd"
+server.document-root = var.basedir + "/htdocs"
+server.pid-file = "/run/lighttpd.pid"
+server.errorlog = var.logdir + "/error.log"
+index-file.names = ("index.html")
+
+server.modules += ( "mod_redirect", "mod_openssl")
+
+$SERVER["socket"] == ":443" {
+ ssl.engine = "enable"
+ ssl.pemfile = "/etc/lighttpd/certs/jay.scot.cer"
+ ssl.privkey = "/etc/lighttpd/certs/jay.scot.key"
+ ssl.openssl.ssl-conf-cmd = ("MinProtocol" => "TLSv1.3", "Options" => "-ServerPreference")
+
+ server.name = "dashboard.jay.scot"
+ server.document-root = "/srv/www/"
+}
+
+$HTTP["scheme"] == "http" {
+ $HTTP["host"] =~ ".*" {
+ url.redirect = (".*" => "https://%0$0")
+ }
+}
(DIR) diff --git a/dashboard/init.sh b/dashboard/init.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+HOST=dashboard
+
+incus stop $HOST
+incus delete $HOST
+incus launch images:alpine/3.20/cloud $HOST < $HOST.yaml
+
+incus file push ./files/lighttpd.conf $HOST/etc/lighttpd/ -pv --mode 644
+incus exec $HOST -- cloud-init status --wait
+incus exec $HOST -- rc-service lighttpd start
+
(DIR) diff --git a/docs/docs.yaml b/docs/docs.yaml
@@ -0,0 +1,29 @@
+devices:
+ htdocs:
+ path: /srv/www
+ source: /srv/services/docs
+ type: disk
+ certs:
+ path: /etc/lighttpd/certs
+ source: /srv/certs
+ type: disk
+ shift: true
+
+config:
+ cloud-init.network-config: |
+ version: 2
+ ethernets:
+ eth0:
+ addresses:
+ - 192.168.2.13/24
+ gateway4: 192.168.2.1
+ cloud-init.user-data: |
+ #cloud-config
+ package_upgrade: true
+ hostname: docs.jay.scot
+ timezone: Europe/London
+ manage_resolv_conf: true
+ resolv_conf:
+ nameservers: ['192.168.2.10', '1.1.1.1']
+ packages:
+ - lighttpd
(DIR) diff --git a/docs/files/lighttpd.conf b/docs/files/lighttpd.conf
@@ -0,0 +1,29 @@
+var.basedir = "/var/www/localhost"
+var.logdir = "/var/log/lighttpd"
+var.statedir = "/var/lib/lighttpd"
+
+include "mime-types.conf"
+server.username = "lighttpd"
+server.groupname = "lighttpd"
+server.document-root = var.basedir + "/htdocs"
+server.pid-file = "/run/lighttpd.pid"
+server.errorlog = var.logdir + "/error.log"
+index-file.names = ("index.html")
+
+server.modules += ( "mod_redirect", "mod_openssl")
+
+$SERVER["socket"] == ":443" {
+ ssl.engine = "enable"
+ ssl.pemfile = "/etc/lighttpd/certs/jay.scot.cer"
+ ssl.privkey = "/etc/lighttpd/certs/jay.scot.key"
+ ssl.openssl.ssl-conf-cmd = ("MinProtocol" => "TLSv1.3", "Options" => "-ServerPreference")
+
+ server.name = "dashboard.jay.scot"
+ server.document-root = "/srv/www/"
+}
+
+$HTTP["scheme"] == "http" {
+ $HTTP["host"] =~ ".*" {
+ url.redirect = (".*" => "https://%0$0")
+ }
+}
(DIR) diff --git a/docs/init.sh b/docs/init.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+HOST=docs
+
+incus stop $HOST
+incus delete $HOST
+incus launch images:alpine/3.20/cloud $HOST < $HOST.yaml
+
+incus file push ./files/lighttpd.conf $HOST/etc/lighttpd/ -pv --mode 644
+incus exec $HOST -- cloud-init status --wait
+incus exec $HOST -- rc-service lighttpd start
+
(DIR) diff --git a/git/files/cgitrc b/git/files/cgitrc
@@ -0,0 +1,28 @@
+#
+# cgit config
+#
+
+# theme
+css=/theme.css
+logo=/logo.png
+favicon=/favicon.png
+footer=
+readme=:README
+
+# header
+root-title=git.jay.scot
+root-desc=
+
+# options
+enable-http-clone=1
+enable-index-owner=0
+enable-index-links=1
+remove-suffix=1
+enable-commit-graph=1
+enable-log-filecount=1
+enable-git-config=1
+robots=noindex, nofollow
+
+# repos
+virtual-root=/
+scan-path=/srv/git
(DIR) diff --git a/git/files/favicon.ico b/git/files/favicon.ico
Binary files differ.
(DIR) diff --git a/git/files/favicon.png b/git/files/favicon.png
Binary files differ.
(DIR) diff --git a/git/files/lighttpd.conf b/git/files/lighttpd.conf
@@ -0,0 +1,39 @@
+var.basedir = "/var/www/localhost"
+var.logdir = "/var/log/lighttpd"
+var.statedir = "/var/lib/lighttpd"
+
+include "mime-types.conf"
+server.username = "lighttpd"
+server.groupname = "lighttpd"
+server.document-root = var.basedir + "/htdocs"
+server.pid-file = "/run/lighttpd.pid"
+server.errorlog = var.logdir + "/error.log"
+index-file.names = ("index.php", "index.html", "index.htm", "default.htm")
+
+server.modules += ( "mod_cgi", "mod_rewrite", "mod_openssl")
+
+$SERVER["socket"] == ":443" {
+ ssl.engine = "enable"
+ ssl.pemfile = "/etc/lighttpd/certs/jay.scot.cer"
+ ssl.privkey = "/etc/lighttpd/certs/jay.scot.key"
+ ssl.openssl.ssl-conf-cmd = ("MinProtocol" => "TLSv1.3", "Options" => "-ServerPreference")
+
+ server.name = "git.jay.scot"
+ server.document-root = "/usr/share/webapps/cgit/"
+
+ index-file.names = ( "cgit.cgi" )
+ cgi.assign = ( "cgit.cgi" => "" )
+ mimetype.assign = ( ".css" => "text/css" )
+ url.rewrite-once = (
+ "^/cgit/cgit.css" => "/cgit.css",
+ "^/cgit/cgit.png" => "/cgit.png",
+ "^/([^?/]+/[^?]*)?(?:\?(.*))?$" => "/cgit.cgi?url=$1&$2",
+ )
+
+}
+
+$HTTP["scheme"] == "http" {
+ $HTTP["host"] =~ ".*" {
+ url.redirect = (".*" => "https://%0$0")
+ }
+}
(DIR) diff --git a/git/files/logo.png b/git/files/logo.png
Binary files differ.
(DIR) diff --git a/git/files/theme.css b/git/files/theme.css
@@ -0,0 +1,825 @@
+body {
+ font-family: 'Droid Sans',sans-serif;
+}
+
+div#cgit {
+ padding: 0em;
+ margin: 0em;
+ font-family: 'Droid Sans',sans-serif;
+ font-size: 14pt;
+ color: #333;
+ padding: 4px;
+}
+
+div#cgit a {
+ color: #3232ff;
+ text-decoration: none;
+}
+
+div#cgit a:hover {
+ text-decoration: underline;
+}
+
+div#cgit table {
+ border-collapse: collapse;
+}
+
+div#cgit table#header {
+ width: 100%;
+ margin-bottom: 1em;
+}
+
+div#cgit table#header td.logo {
+ width: 50px;
+ vertical-align: top;
+}
+
+div#cgit table#header td.main {
+ font-size: 250%;
+ padding-left: 10px;
+ white-space: nowrap;
+}
+
+div#cgit table#header td.main a {
+ color: #000;
+}
+
+div#cgit table#header td.form {
+ text-align: right;
+ vertical-align: bottom;
+ padding-right: 1em;
+ padding-bottom: 2px;
+ white-space: nowrap;
+}
+
+div#cgit table#header td.form form,
+div#cgit table#header td.form input,
+div#cgit table#header td.form select {
+ font-size: 90%;
+}
+
+div#cgit table#header td.sub {
+ color: #777;
+ border-top: solid 1px #e0e0e0;
+ border-radius: 2px;
+ padding-left: 10px;
+}
+
+div#cgit table.tabs {
+ border-bottom: solid 3px #e0e0e0;
+ border-collapse: collapse;
+ border-radius: 2px;
+ margin-top: 2em;
+ margin-bottom: 0px;
+ width: 100%;
+}
+
+div#cgit table.tabs td {
+ padding: 0px 1em;
+ vertical-align: bottom;
+}
+
+div#cgit table.tabs td a {
+ padding: 2px 0.75em;
+ color: #777;
+ font-size: 110%;
+}
+
+div#cgit table.tabs td a.active {
+ color: #000;
+ background-color: #e0e0e0;
+}
+
+div#cgit table.tabs td.form {
+ text-align: right;
+}
+
+div#cgit table.tabs td.form form {
+ padding-bottom: 2px;
+ font-size: 90%;
+ white-space: nowrap;
+}
+
+div#cgit table.tabs td.form input,
+div#cgit table.tabs td.form select {
+ font-size: 90%;
+}
+
+div#cgit div.path {
+ margin: 0px;
+ padding: 5px 2em 2px 2em;
+ color: #000;
+ background-color: #eee;
+}
+
+div#cgit div.content {
+ margin: 0px;
+ padding: 2em;
+ border-bottom: solid 3px #e0e0e0;
+}
+
+
+div#cgit table.list {
+ width: 100%;
+ border: none;
+ background: #D6D4CC;
+ border-collapse: collapse;
+}
+
+div#cgit table.list tr {
+ background-image: url('body.jpg');
+}
+
+div#cgit table.list tr.logheader {
+ background: #eee;
+}
+
+div#cgit table.list tr:hover {
+ background: #e0e0e0;
+}
+
+div#cgit table.list tr.nohover:hover {
+ background-image: url('body.jpg');
+}
+
+div#cgit table.list th {
+ font-family: 'Droid Sans';
+ font-weight: bold;
+ padding: 0.1em 0.5em 0.05em 0.5em;
+ vertical-align: baseline;
+}
+
+div#cgit table.list td {
+ border: none;
+ padding: 0.1em 0.5em 0.1em 0.5em;
+}
+
+div#cgit table.list td.commitgraph {
+ font-family: 'Droid Sans Mono',monospace;
+ white-space: pre;
+}
+
+div#cgit table.list td.commitgraph .column1 {
+ color: #a00;
+}
+
+div#cgit table.list td.commitgraph .column2 {
+ color: #0a0;
+}
+
+div#cgit table.list td.commitgraph .column3 {
+ color: #aa0;
+}
+
+div#cgit table.list td.commitgraph .column4 {
+ color: #00a;
+}
+
+div#cgit table.list td.commitgraph .column5 {
+ color: #a0a;
+}
+
+div#cgit table.list td.commitgraph .column6 {
+ color: #0aa;
+}
+
+div#cgit table.list td.logsubject {
+ font-family: 'Droid Sans Mono', monospace;
+ font-weight: bold;
+}
+
+div#cgit table.list td.logmsg {
+ font-family: 'Droid Sans Mono', monospace;
+ white-space: pre;
+ padding: 0 0.5em;
+}
+
+div#cgit table.list td a {
+ color: black;
+}
+
+div#cgit table.list td a.ls-dir {
+ font-weight: bold;
+ color: #00f;
+}
+
+div#cgit table.list td a:hover {
+ color: #00f;
+}
+
+div#cgit img {
+ width: 60px;
+ border: none;
+}
+
+div#cgit input#switch-btn {
+ margin: 2px 0px 0px 0px;
+}
+
+div#cgit td#sidebar input.txt {
+ width: 100%;
+ margin: 2px 0px 0px 0px;
+}
+
+div#cgit table#grid {
+ margin: 0px;
+}
+
+div#cgit td#content {
+ vertical-align: top;
+ padding: 1em 2em 1em 1em;
+ border: none;
+}
+
+div#cgit div#summary {
+ vertical-align: top;
+ margin-bottom: 1em;
+}
+
+div#cgit table#downloads {
+ float: right;
+ border-collapse: collapse;
+ border: solid 1px #777;
+ border-radius: 2px;
+ margin-left: 0.5em;
+ margin-bottom: 0.5em;
+}
+
+div#cgit table#downloads th {
+ background-color: #e0e0e0;
+}
+
+div#cgit div#blob {
+ border: solid 1px black;
+ border-radius: 2px;
+}
+
+div#cgit div.error {
+ color: red;
+ font-weight: bold;
+ margin: 1em 2em;
+}
+
+div#cgit a.ls-blob, div#cgit a.ls-dir, div#cgit a.ls-mod {
+ font-family: 'Droid Sans Mono',monospace;
+}
+
+div#cgit td.ls-size {
+ text-align: right;
+ font-family: 'Droid Sans Mono',monospace;
+ width: 10em;
+}
+
+div#cgit td.ls-mode {
+ font-family: 'Droid Sans Mono', monospace;
+ width: 10em;
+}
+
+div#cgit table.blob {
+ margin-top: 0.5em;
+ border-top: solid 1px black;
+}
+
+div#cgit table.blob td.lines {
+ margin: 0; padding: 0 0 0 0.5em;
+ vertical-align: top;
+ color: black;
+}
+
+div#cgit table.blob td.linenumbers {
+ margin: 0; padding: 0 0.5em 0 0.5em;
+ vertical-align: top;
+ text-align: right;
+ border-right: 1px solid gray;
+}
+
+div#cgit table.blob pre {
+ padding: 0; margin: 0;
+}
+
+div#cgit table.blob td.linenumbers a,
+div#cgit table.ssdiff td.lineno a {
+ color: gray;
+ text-align: right;
+ text-decoration: none;
+}
+
+div#cgit table.blob td.linenumbers a:hover,
+div#cgit table.ssdiff td.lineno a:hover {
+ color: black;
+}
+
+div#cgit table.bin-blob {
+ margin-top: 0.5em;
+ border: solid 1px black;
+ border-radius: 2px;
+}
+
+div#cgit table.bin-blob th {
+ font-family: 'Droid Sans Mono', monospace;
+ white-space: pre;
+ border: solid 1px #777;
+ border-radius: 2px;
+ padding: 0.5em 1em;
+}
+
+div#cgit table.bin-blob td {
+ font-family: 'Droid Sans Mono', monospace;
+ white-space: pre;
+ border-left: solid 1px #777;
+ padding: 0em 1em;
+}
+
+div#cgit table.nowrap td {
+ white-space: nowrap;
+}
+
+div#cgit table.commit-info {
+ border-collapse: collapse;
+ margin-top: 1.5em;
+}
+
+div#cgit div.cgit-panel {
+ float: right;
+ margin-top: 1.5em;
+}
+
+div#cgit div.cgit-panel table {
+ border-collapse: collapse;
+ border: solid 1px #aaa;
+ background-color: #eee;
+}
+
+div#cgit div.cgit-panel th {
+ text-align: center;
+}
+
+div#cgit div.cgit-panel td {
+ padding: 0.25em 0.5em;
+}
+
+div#cgit div.cgit-panel td.label {
+ padding-right: 0.5em;
+}
+
+div#cgit div.cgit-panel td.ctrl {
+ padding-left: 0.5em;
+}
+
+div#cgit table.commit-info th {
+ text-align: left;
+ font-weight: normal;
+ padding: 0.1em 1em 0.1em 0.1em;
+ vertical-align: top;
+}
+
+div#cgit table.commit-info td {
+ font-weight: normal;
+ padding: 0.1em 1em 0.1em 0.1em;
+}
+
+div#cgit div.commit-subject {
+ font-weight: bold;
+ font-size: 125%;
+ margin: 1.5em 0em 0.5em 0em;
+ padding: 0em;
+}
+
+div#cgit div.commit-msg {
+ white-space: pre;
+ font-family: 'Droid Sans Mono', monospace;
+}
+
+div#cgit div.notes-header {
+ font-weight: bold;
+ padding-top: 1.5em;
+}
+
+div#cgit div.notes {
+ white-space: pre;
+ font-family: 'Droid Sans Mono', monospace;
+ border: solid 1px #ee9;
+ background-color: #ffd;
+ padding: 0.3em 2em 0.3em 1em;
+ float: left;
+}
+
+div#cgit div.notes-footer {
+ clear: left;
+}
+
+div#cgit div.diffstat-header {
+ font-weight: bold;
+ padding-top: 1.5em;
+}
+
+div#cgit table.diffstat {
+ border-collapse: collapse;
+ border: solid 1px #aaa;
+ background-color: #eee;
+}
+
+div#cgit table.diffstat th {
+ font-weight: normal;
+ text-align: left;
+ text-decoration: underline;
+ padding: 0.1em 1em 0.1em 0.1em;
+ font-size: 100%;
+}
+
+div#cgit table.diffstat td {
+ padding: 0.2em 0.2em 0.1em 0.1em;
+ font-size: 100%;
+ border: none;
+}
+
+div#cgit table.diffstat td.mode {
+ white-space: nowrap;
+}
+
+div#cgit table.diffstat td span.modechange {
+ padding-left: 1em;
+ color: red;
+}
+
+div#cgit table.diffstat td.add a {
+ color: #3232ff;
+}
+
+div#cgit table.diffstat td.del a {
+ color: #3232ff;
+}
+
+div#cgit table.diffstat td.upd a {
+ color: #3232ff;
+}
+
+div#cgit table.diffstat td.graph {
+ width: 500px;
+ vertical-align: middle;
+}
+
+div#cgit table.diffstat td.graph table {
+ border: none;
+}
+
+div#cgit table.diffstat td.graph td {
+ padding: 0px;
+ border: 0px;
+ height: 7pt;
+}
+
+div#cgit table.diffstat td.graph td.add {
+ background-color: #99cc99;
+}
+
+div#cgit table.diffstat td.graph td.rem {
+ background-color: #ff7f7f;
+}
+
+div#cgit div.diffstat-summary {
+ color: #888;
+ padding-top: 0.5em;
+}
+
+div#cgit table.diff {
+ width: 100%;
+}
+
+div#cgit table.diff td {
+ font-family: 'Droid Sans Mono', monospace;
+ white-space: pre;
+}
+
+div#cgit table.diff td div.head {
+ font-weight: bold;
+ margin-top: 1em;
+ color: black;
+}
+
+div#cgit table.diff td div.hunk {
+ color: #3232ff;
+}
+
+div#cgit table.diff td div.add {
+ background: #d9ffd9;
+ color: black;
+}
+
+div#cgit table.diff td div.del {
+ background: #ffcccc;
+ color: black;
+}
+
+div#cgit .sha1 {
+ font-family: 'Droid Sans Mono', monospace;
+ font-size: 90%;
+}
+
+div#cgit .left {
+ text-align: left;
+}
+
+div#cgit .right {
+ text-align: right;
+}
+
+div#cgit table.list td.reposection {
+ font-style: italic;
+ color: #888;
+}
+
+div#cgit a.button {
+ font-size: 80%;
+ padding: 0em 0.5em;
+}
+
+div#cgit a.primary {
+ font-size: 100%;
+}
+
+div#cgit a.secondary {
+ font-size: 90%;
+}
+
+div#cgit td.toplevel-repo {
+
+}
+
+div#cgit table.list td.sublevel-repo {
+ padding-left: 1.5em;
+}
+
+div#cgit ul.pager {
+ list-style-type: none;
+ text-align: center;
+ margin: 1em 0em 0em 0em;
+ padding: 0;
+}
+
+div#cgit ul.pager li {
+ display: inline-block;
+ margin: 0.25em 0.5em;
+}
+
+div#cgit ul.pager a {
+ color: #777;
+}
+
+div#cgit ul.pager .current {
+ font-weight: bold;
+}
+
+div#cgit span.age-mins {
+ font-weight: bold;
+ color: #080;
+}
+
+div#cgit span.age-hours {
+ color: #080;
+}
+
+div#cgit span.age-days {
+ color: #040;
+}
+
+div#cgit span.age-weeks {
+ color: #444;
+}
+
+div#cgit span.age-months {
+ color: #888;
+}
+
+div#cgit span.age-years {
+ color: #bbb;
+}
+div#cgit div.footer {
+ margin-top: 0.5em;
+ text-align: center;
+ font-size: 80%;
+ color: #e0e0e0;
+}
+div#cgit a.branch-deco {
+ color: #000;
+ margin: 0px 0.5em;
+ padding: 0px 0.25em;
+ background-color: #a2ffa2;
+ border: solid 1px #71b271;
+ border-radius: 4px;
+}
+div#cgit a.tag-deco {
+ color: #000;
+ margin: 0px 0.5em;
+ padding: 0px 0.25em;
+ background-color: #ffff88;
+ border: solid 1px #777700;
+ border-radius: 4px;
+}
+div#cgit a.remote-deco {
+ color: #000;
+ margin: 0px 0.5em;
+ padding: 0px 0.25em;
+ background-color: #ccccff;
+ border: solid 1px #000077;
+ border-radius: 4px;
+}
+div#cgit a.deco {
+ color: #000;
+ margin: 0px 0.5em;
+ padding: 0px 0.25em;
+ background-color: #ff9393;
+ border: solid 1px #b25f5f;
+ border-radius: 4px;
+}
+
+div#cgit div.commit-subject a.branch-deco,
+div#cgit div.commit-subject a.tag-deco,
+div#cgit div.commit-subject a.remote-deco,
+div#cgit div.commit-subject a.deco {
+ margin-left: 1em;
+ font-size: 75%;
+}
+
+div#cgit table.stats {
+ border: solid 1px black;
+ border-radius: 2px;
+ border-collapse: collapse;
+}
+
+div#cgit table.stats th {
+ text-align: left;
+ padding: 1px 0.5em;
+ background-color: #eee;
+ border: solid 1px black;
+}
+
+div#cgit table.stats td {
+ text-align: right;
+ padding: 1px 0.5em;
+ border: solid 1px black;
+ border-radius: 2px;
+}
+
+div#cgit table.stats td.total {
+ font-weight: bold;
+ text-align: left;
+}
+
+div#cgit table.stats td.sum {
+ color: #c00;
+ font-weight: bold;
+/* background-color: #eee; */
+}
+
+div#cgit table.stats td.left {
+ text-align: left;
+}
+
+div#cgit table.vgraph {
+ border-collapse: separate;
+ border: solid 1px black;
+ height: 200px;
+}
+
+div#cgit table.vgraph th {
+ background-color: #eee;
+ font-weight: bold;
+ border: solid 1px white;
+ padding: 1px 0.5em;
+}
+
+div#cgit table.vgraph td {
+ vertical-align: bottom;
+ padding: 0px 10px;
+}
+
+div#cgit table.vgraph div.bar {
+ background-color: #eee;
+}
+
+div#cgit table.hgraph {
+ border: solid 1px black;
+ width: 800px;
+}
+
+div#cgit table.hgraph th {
+ background-color: #eee;
+ font-weight: bold;
+ border: solid 1px black;
+ padding: 1px 0.5em;
+}
+
+div#cgit table.hgraph td {
+ vertical-align: middle;
+ padding: 2px 2px;
+}
+
+div#cgit table.hgraph div.bar {
+ background-color: #eee;
+ height: 1em;
+}
+
+div#cgit table.ssdiff {
+ width: 100%;
+}
+
+div#cgit table.ssdiff td {
+ font-size: 75%;
+ font-family: 'Droid Sans Mono', monospace;
+ white-space: pre;
+ padding: 1px 4px 1px 4px;
+ border-left: solid 1px #aaa;
+ border-right: solid 1px #aaa;
+ border-radius: 2px;
+}
+
+div#cgit table.ssdiff td.add {
+ color: black;
+ background: #cfc;
+ min-width: 50%;
+}
+
+div#cgit table.ssdiff td.add_dark {
+ color: black;
+ background: #aca;
+ min-width: 50%;
+}
+
+div#cgit table.ssdiff span.add {
+ background: #cfc;
+ font-weight: bold;
+}
+
+div#cgit table.ssdiff td.del {
+ color: black;
+ background: #ff6666;
+ min-width: 50%;
+}
+
+div#cgit table.ssdiff td.del_dark {
+ color: black;
+ background: #caa;
+ min-width: 50%;
+}
+
+div#cgit table.ssdiff span.del {
+ background: #ff6666;
+ font-weight: bold;
+}
+
+div#cgit table.ssdiff td.changed {
+ color: black;
+ background: #ffc;
+ min-width: 50%;
+}
+
+div#cgit table.ssdiff td.changed_dark {
+ color: black;
+ background: #cca;
+ min-width: 50%;
+}
+
+div#cgit table.ssdiff td.lineno {
+ color: black;
+ background: #eee;
+ text-align: right;
+ width: 3em;
+ min-width: 3em;
+}
+
+div#cgit table.ssdiff td.hunk {
+ color: black;
+ background: #ccf;
+ border-top: solid 1px #aaa;
+ border-bottom: solid 1px #aaa;
+ border-radius: 2px;
+}
+
+div#cgit table.ssdiff td.head {
+ border-top: solid 1px #aaa;
+ border-bottom: solid 1px #aaa;
+ border-radius: 2px;
+}
+
+div#cgit table.ssdiff td.head div.head {
+ font-weight: bold;
+ color: black;
+}
+
+div#cgit table.ssdiff td.foot {
+ border-top: solid 1px #aaa;
+ border-left: none;
+ border-right: none;
+ border-bottom: none;
+ border-radius: 2px;
+}
+
+div#cgit table.ssdiff td.space {
+ border: none;
+}
+
+div#cgit table.ssdiff td.space div {
+ min-height: 3em;
+}
+
(DIR) diff --git a/git/git.yaml b/git/git.yaml
@@ -0,0 +1,40 @@
+devices:
+ repos:
+ path: /srv/git
+ source: /srv/services/git
+ type: disk
+ shift: true
+ certs:
+ path: /etc/lighttpd/certs
+ source: /srv/certs
+ type: disk
+ shift: true
+
+config:
+ cloud-init.network-config: |
+ version: 2
+ ethernets:
+ eth0:
+ addresses:
+ - 192.168.2.12/24
+ gateway4: 192.168.2.1
+ cloud-init.user-data: |
+ #cloud-config
+ package_upgrade: true
+ hostname: git.jay.scot
+ timezone: Europe/London
+ manage_resolv_conf: true
+ resolv_conf:
+ nameservers: ['192.168.2.10', '1.1.1.1']
+ users:
+ - name: git
+ shell: /usr/bin/git-shell
+ homedir: /srv/git
+ ssh_authorized_keys:
+ - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDLmKYxwXTbyRWLG0S24RTpyfyBO6AL8Dcy0XvVZ97Do
+ runcmd:
+ - echo "git:*" | chpasswd -e
+ packages:
+ - git
+ - cgit
+ - lighttpd
(DIR) diff --git a/git/init.sh b/git/init.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+HOST=git
+
+incus stop $HOST
+incus delete $HOST
+incus launch images:alpine/3.20/cloud $HOST < $HOST.yaml
+
+incus file push ./files/lighttpd.conf $HOST/etc/lighttpd/ -pv --mode 644
+incus file push ./files/cgitrc $HOST/etc/cgitrc -pv --mode 644
+
+incus exec $HOST -- cloud-init status --wait
+incus exec $HOST -- rc-service lighttpd start
+
+incus file push ./files/logo.png $HOST/usr/share/webapps/cgit/ -pv --mode 644
+incus file push ./files/theme.css $HOST/usr/share/webapps/cgit/ -pv --mode 644
+incus file push ./files/favicon.png $HOST/usr/share/webapps/cgit/ -pv --mode 644
+
+
(DIR) diff --git a/pi-hole/files/custom.list b/pi-hole/files/custom.list
@@ -1 +1,3 @@
-192.168.2.10 hole.jay.scot
+192.168.1.100 meshtastic.jay.scot
+192.168.2.11 dashboard.jay.scot
+192.168.2.10 pihole.jay.scot