Added Personal Infrastructure talk
This commit is contained in:
1 parent
624ef4f394
commit
bf05413aff
7 files changed
+418
-15
No files matched your search
@@ -16,3 +16,4 @@ lerna-debug.log*
|
||||
.vscode
|
||||
*.code-workspace
|
||||
.history/
|
||||
Dockerfile
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
FROM node:14-alpine AS builder
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
RUN npm install -g @marp-team/marp-cli
|
||||
|
||||
ADD . .
|
||||
|
||||
RUN find . -maxdepth 2 -mindepth 2 -name "*.md" -not -name "README.md" -print0 | xargs -0 marp {} \;
|
||||
|
||||
RUN mkdir -p out && \
|
||||
find . -maxdepth 2 -mindepth 2 -name "*.html" -exec mv {} ./out/ \;
|
||||
|
||||
|
||||
FROM nginx:stable-alpine
|
||||
ENV NGINX_ENTRYPOINT_QUIET_LOGS=1
|
||||
COPY --from=builder /app/out/* /usr/share/nginx/html/
|
||||
ADD index.html /usr/share/nginx/html/index.html
|
||||
RUN echo "server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html; rewrite ^/([a-zA-Z0-9\-_]+)/?$ /\$1.html last; } }" > /etc/nginx/conf.d/default.conf
|
||||
@@ -1,6 +1,6 @@
|
||||
.DEFAULT_GOAL := default
|
||||
|
||||
IMAGE ?= docker.cluster.fun/private/talks:latest
|
||||
IMAGE ?= docker.cluster.fun/averagemarcus/talks:latest
|
||||
|
||||
.PHONY: test # Run all tests, linting and format checks
|
||||
test: lint check-format run-tests
|
||||
@@ -33,17 +33,11 @@ run-tests:
|
||||
|
||||
.PHONY: fetch-deps # Fetch all project dependencies
|
||||
fetch-deps:
|
||||
@echo "⚠️ 'fetch-deps' unimplemented"
|
||||
# GO Projects
|
||||
# @go mod tidy
|
||||
# Node Projects
|
||||
# @npm install
|
||||
@npm install -g @marp-team/marp-cli
|
||||
|
||||
.PHONY: build # Build the project
|
||||
build: lint check-format fetch-deps
|
||||
@echo "⚠️ 'build' unimplemented"
|
||||
# GO Projects
|
||||
# @go build -o PROJECT_NAME main.go
|
||||
@find . -maxdepth 2 -mindepth 2 -name "*.md" -not -name "README.md" -print0 | xargs -0 marp {} \;
|
||||
|
||||
.PHONY: docker-build # Build the docker image
|
||||
docker-build:
|
||||
@@ -54,12 +48,8 @@ docker-publish:
|
||||
@docker push $(IMAGE)
|
||||
|
||||
.PHONY: run # Run the application
|
||||
run:
|
||||
@echo "⚠️ 'run' unimplemented"
|
||||
# GO Projects
|
||||
# @go run main.go
|
||||
# Node Projects
|
||||
# @npm start
|
||||
run: docker-build
|
||||
@docker run --rm -it -p 8080:80 $(IMAGE)
|
||||
|
||||
.PHONY: ci # Perform CI specific tasks to perform on a pull request
|
||||
ci:
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
*.html
|
||||
@@ -0,0 +1,356 @@
|
||||
---
|
||||
title: Personal Infrastructure
|
||||
theme: gaia
|
||||
_class: lead
|
||||
backgroundColor: #fff
|
||||
backgroundImage: url('https://0.s3.envato.com/files/138380962/Preview%20Image%20White%20Low%20Poly%20Background2.jpg')
|
||||
marp: true
|
||||
---
|
||||
|
||||

|
||||
|
||||
---
|
||||
<!-- _class: lead -->
|
||||
|
||||
## Local Network setup
|
||||
|
||||
**FTTP** - Zen Internet
|
||||
↯
|
||||
**ISP Modem**
|
||||
↯
|
||||
**Powerline**
|
||||
↯
|
||||
**Router** - TP-Link Archer C7
|
||||
↯
|
||||
**Mesh WiFi beacons** - TP-Link Deco M4 (x3)
|
||||
↯
|
||||
**87 devices**
|
||||
|
||||
---
|
||||
<!-- _class: lead -->
|
||||
|
||||
## Local Network setup
|
||||
|
||||
5 devices connected via ethernet
|
||||
|
||||
Everything else via WiFi
|
||||
|
||||
All devices have static IPs and assigned hostnames
|
||||
(based on the periodic table of elements)
|
||||
|
||||
---
|
||||
|
||||
## Kubernetes - local
|
||||
|
||||
An old desktop machine repurposed as a single-node Kubernetes cluster
|
||||
|
||||
**OS**: Ubuntu
|
||||
**Kubernetes Version**: Microk8s v1.20.1
|
||||
**Specs**: CPU - 4 core | Memory - 12Gb | HDD - Lots
|
||||
|
||||
---
|
||||
|
||||
## Kubernetes - local
|
||||
|
||||
**Primary Use**: Hosting sensitive or local-specific applications that I want to keep off the internet.
|
||||
E.g.
|
||||
|
||||
- custom built CCTV monitoring application covering the 8 cameras I currently have set up
|
||||
- automated download tools so I can kick off downloads remotely while I'm out
|
||||
- DNS-based ad blocker (AdGuard)
|
||||
|
||||
---
|
||||
|
||||
## Kubernetes - cloud
|
||||
|
||||
Hosted on Scaleway's managed Kubernetes platform, Kapsule.
|
||||
1-3 *DEV1_M* instances, autoscaled based on load.
|
||||
|
||||
All defined in code using Terraform and stored in git.
|
||||
|
||||
**Kubernetes Version**: v1.20
|
||||
**Specs**: CPU - 3 vCPUs | Memory - 4Gb | HDD - 40Gb + 14 PVCs of varying size
|
||||
|
||||
---
|
||||
## Kubernetes - cloud
|
||||
|
||||
<style scoped>p, ul { font-size: 0.85em; }</style>
|
||||
|
||||
**Primary Use**: Hosting internet facing services and providing a secure, authenticated tunnel to my local cluster
|
||||
E.g.
|
||||
|
||||
- My personal blog plus some related sites
|
||||
- Self-hosted alternatives to cloud services: Gitea, Nextcloud, Harbor, Photoprism, etc.
|
||||
- Tekton - handle all my CI/CD needs, triggered by webhooks from Gitea
|
||||
- "Utility" applications to make my life easier:
|
||||
- Convert SVG to DXF - used when creating 3D print designs from SVG
|
||||
- website-to-remarkable - lets me send a webpage as a PDF to my reMarkable tablet for later reading
|
||||
|
||||
---
|
||||
<!-- _class: lead -->
|
||||
|
||||
## Time for a quick break
|
||||
|
||||
☕️
|
||||
|
||||
Questions so far?
|
||||
|
||||
---
|
||||
|
||||
<!-- _class: lead -->
|
||||
|
||||
## Smart Home
|
||||
|
||||
---
|
||||
|
||||
<style scoped>ul { font-size: 0.95em; }</style>
|
||||
|
||||
- Home Assistant centrally controlling all devices
|
||||
- Combination of Zigbee and WiFi devices
|
||||
- Amazon Echo in every room
|
||||
- Most rooms have smart lighting: ceiling bulbs, floor lamps, LED strips
|
||||
- Motion and light sensors used to trigger turning lights on
|
||||
- Outdoor lighting with LED strips + motion/light sensors
|
||||
- Cheap Android tablets acting as dashboards
|
||||
|
||||
googlebot.com",
|
||||
"request_Referer": "https://marcusnoble.co.uk/",
|
||||
"request_User-Agent": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Safari/537.36",
|
||||
"time": "2021-02-09T10:04:23Z"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
 on 10th February 2021 about my personal infrastructure setup, my smart home devices and how I make use of Kubernetes for a bunch of stuff.
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Talks</title>
|
||||
<style>
|
||||
body {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
font-size: 2em;
|
||||
font-family: monospace;
|
||||
background-color: gainsboro;
|
||||
}
|
||||
|
||||
a {
|
||||
color: tomato !important;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Marcus Noble - Talks</h1>
|
||||
|
||||
<figure>
|
||||
<iframe src="/PersonalInfrastructure" width="500px" height="300px"></iframe>
|
||||
<figcaption>
|
||||
<a href="/PersonalInfrastructure">Personal Infrastructure</a>
|
||||
</figcaption>
|
||||
</figure>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user