diff --git a/homeserver.md b/homeserver.md new file mode 100644 index 0000000..8429208 --- /dev/null +++ b/homeserver.md @@ -0,0 +1,281 @@ +--- +inlineSVG: true +--- + +# The Home Server Talk + +\- _nemo_ + +--- + +# about me + +- Nemo +- [@captn3m0](https://twitter.com/captn3m0) +- [@razorpay](https://razorpay.com) (:money_with_wings: :credit_card:) + +--- + +# agenda + +1. the hardware +2. the software +3. the alternatives +4. the CTA + +--- + +# motivation? + +1. owning your data +2. de-googling +3. backing up your data locally +4. learning/experimenting with tech +5. playing mario + +--- + +# time? + +_<5 hr a month_ + +--- + +# ![drop-shadow](./images/sideproject.jpg) + +--- + +![bg vertical](https://fakeimg.pl/1920x800/C4E538/fff/?text=hardware) +![bg](https://fakeimg.pl/1920x800/A3CB38/fff/?text=software) +![bg](https://fakeimg.pl/1920x800/009432/fff/?text=glue) + +--- + +# Raspberry Pi 3 + +- :memo: 1GB RAM +- :globe_with_meridians: Wireless/BLE/Ethernet +- :chains: 4 USB ports +- :musical_note: Audio/HDMI/Composite VGA +- :zap: 2.5A +- :money_with_wings: ~3k INR +- :camera:, GPIO + +![bg right](https://cdn.shopify.com/s/files/1/0176/3274/products/Kit-game_1024x1024.jpg) + +--- + +# A VM on the :cloud: + +- Scaleway: 4ARMv8/2GB/50GB - 300 INR +- AWS Lightsail: 1vCPU/512MB/20GB - 250 INR +- Digital Ocean: 1vCPU/1GB/25GB - 350 INR + +_Beware of Persistent Storage cost_ + +--- + +# Other Alternatives + +![bg right](http://www.thebookpc.com/v/vspfiles/photos/RV-NUC-I3-LINUX-2.jpg) + +1. Intel NUCs +2. [Hetzner Server Auctions](https://www.hetzner.com/sb) (20-50USD/mo). +3. NAS/Network device. +4. Gamer? [`r/pcmasterrace/wiki`](https://www.reddit.com/r/pcmasterrace/wiki/builds) + + + +--- + +# system76 Meerak + +![bg](https://d1vhcvzji58n1j.cloudfront.net/assets/products/meer4/hero_wide-7cf0ee6536_2560.jpg) + + + +--- + +# my build + +- TODO + +--- + +# software + +1. docker +2. kubernetes +3. ansible/puppet/chef +4. [tool-of-your-choice](https://docs.google.com/spreadsheets/d/1FCgqz1Ci7_VCz_wdh8vBitZ3giBtac_H8SBw4uxnrsE/edit#gid=0) + +--- + +# software + +1. docker **\*** +2. kubernetes +3. ansible/puppet/chef +4. helm? + +--- + +# containers? + +- secure +- declarative configuration +- orchestration is 100x easier + +--- + +# what I run + +## Monitoring + +- Prometheus +- Grafana +- speedtest-exporter +- ACT Exporter +- CAdvisor + +--- + +## Media + +- Airsonic (:musical_note:) +- Jellyfin (:movie_camera:) +- Kodi (:tv:) +- Audioserve (:studio_microphone: :book:) + +--- + +## Content + +- NextCloud :cloud: :white_check_mark: +- Miniflux (:newspaper_roll: `RSS`) +- Timemachine (💻 ⏮) +- wiki.js +- Radicale :date: :card_index_dividers: +- RSS Bridge +- Resilio :arrows_counterclockwise: +- Gitea + +--- + +# networking + +- Public+Static IP Address +- Floating/Elastic IP + +--- + +![bg cover](images/networking.jpg) + +--- + +# really into networking? + + + +![bg cover](images/homelab1.jpg) + +--- + +# really into networking? + + + +![bg cover](images/homelab2.jpg) + +--- + +# really want a cluster? + + + +![bg cover](images/cluster.jpg) + +--- + +# configuration + +- terraform + docker +- kubernetes + helm +- ansible + galaxy +- docker-compose + +--- + +# terraform + +```json +module "requestbin" { + name = "requestbin" + source = "./modules/container" + image = "jankysolutions/requestbin:latest" + web { + expose = true + port = "8000" + host = "requestbin.bb8.fun" + } + networks = "${list(module.docker.traefik-network-id)}" +} +``` + +--- + +# docker + +```json +"Labels": { + "traefik.docker.network": "traefik", + "traefik.enable": "true", + "traefik.frontend.headers.STSSeconds": "2592000", + "traefik.frontend.headers.browserXSSFilter": "true", + "traefik.frontend.rule": "Host:requestbin.bb8.fun", + "traefik.port": "8000", + "traefik.protocol": "http" +} +``` + +`docker run --tags ... --network traefik jankysolutions/requestbin:latest` + +--- + +### OTA Updates + +```json +provider "docker" { + host = "tcp://docker.vpn.bb8.fun:2376" + cert_path = "./secrets/tatooine" + version = "~> 2.0.0" +} +``` + +--- + +# Docker API + +1. Manage networks, +2. Containers, +3. Configuration + +All over a API, but only for one host. + +docker swarm, but + +--- + +# self-hosting references + +- [kickball/awesome-selfhosted](https://github.com/Kickball/awesome-selfhosted) +- [linuxserver.io](https://www.linuxserver.io/) +- [r/selfhosted](https://reddit.com/r/selfhosted) + + + + diff --git a/images/cluster.jpg b/images/cluster.jpg new file mode 100644 index 0000000..388eeff Binary files /dev/null and b/images/cluster.jpg differ diff --git a/images/homelab1.jpg b/images/homelab1.jpg new file mode 100644 index 0000000..2a47d73 Binary files /dev/null and b/images/homelab1.jpg differ diff --git a/images/homelab2.jpg b/images/homelab2.jpg new file mode 100644 index 0000000..d0dba47 Binary files /dev/null and b/images/homelab2.jpg differ diff --git a/images/networking.jpg b/images/networking.jpg new file mode 100644 index 0000000..a71163f Binary files /dev/null and b/images/networking.jpg differ diff --git a/images/sideproject.jpg b/images/sideproject.jpg new file mode 100644 index 0000000..c58ab07 Binary files /dev/null and b/images/sideproject.jpg differ