homelab-plan/plan.d2

219 lines
3.7 KiB
Plaintext

vars: {
d2-config: {
layout-engine: elk
theme-id: 300
}
}
direction: down
nebula <-> local: local storage root {
style: {
stroke: red
stroke-width: 8
}
}
nebula: base machine (nixos nebula): {
media: media (nfs shares)
mnt: {
label: mnt (device mounts)
zspeed <- _._.zspeed: zspeed device mount {
style: {
stroke: orange
stroke-width: 4
stroke-dash: 3
}
}
zmedia <- _._.zmedia: zmedia device mount {
style: {
stroke: orange
stroke-width: 4
stroke-dash: 3
}
}
}
vms <- mnt.zspeed.vms: vm system storage {
style: {
stroke: lime
stroke-width: 4
stroke-dash: 3
}
}
vms: {
btc-node <- _._.btc-node: btc-core device mount {
style: {
stroke: orange
stroke-width: 4
stroke-dash: 3
}
}
btc-node: {
bitcoin-core
electrum
"mempool.space"
lnd
rtl
btcpay-server
}
workhorse: {
osm-db-import
bitcoin-db-import
}
}
containers: {
docker <- _.mnt.zspeed.docker: docker system storage {
style: {
stroke: lime
stroke-width: 4
stroke-dash: 3
}
}
docker: {
arr-stack <- _._.media.downloads: arr-stack data storage {
style: {
stroke: blue
stroke-width: 4
stroke-dash: 3
}
}
postgres <- _._.mnt.zspeed.db: postgres data storage {
style: {
stroke: blue
stroke-width: 4
stroke-dash: 3
}
}
photoprism <- _._.media.photos: photoprism data storage {
style: {
stroke: blue
stroke-width: 4
stroke-dash: 3
}
}
jellyfin <- _._.media.media: jellyfin data storage {
style: {
stroke: blue
stroke-width: 4
stroke-dash: 3
}
}
searxng
syncthing-server <- _._.media.personal: syncthing data storage {
style: {
stroke: blue
stroke-width: 4
stroke-dash: 3
}
}
youtubedl-material
"..."
}
lxc <- _.mnt.zspeed.lxc: lxc system storage {
style: {
stroke: lime
stroke-width: 4
stroke-dash: 3
}
}
lxc: {
fileserver -> _._.media: fileserver network share {
style: {
stroke: red
stroke-width: 4
stroke-dash: 3
}
}
fileserver <- _._.mnt.zmedia: fileserver media mount
vpn (tailscale)
}
}
}
## storage
local: 1x500GB btrfs (local) {
local: {
shape: cylinder
width: 130
local: |`md
- nixos
`|
}
}
btc-node: 1x1TB ext4 (btc-node) {
btc-node: {
shape: cylinder
width: 130
btc-node: |`md
- bitcoin-core
- electrum
`|
}
}
zarchive: 3x4TB zpool (zarchive) {
backup: {
shape: cylinder
width: 130
backup: |`md
- restic-backup
`|
}
zfs-snap: {
shape: cylinder
width: 130
zfs-snap: |`md
- zfs snapshots
`|
}
}
zspeed: 2x2TB zpool (zspeed): {
db: {
shape: cylinder
width: 200
db: |`md
- postgres
`|
}
containers: {
shape: cylinder
width: 200
containers: |`md
- docker
- lxc
`|
}
vms: {
shape: cylinder
width: 130
vms: |`md
- btc-node
- workhorse
`|
}
}
zmedia: 1x4TB zpool (zmedia): {
media: {
shape: cylinder
media: |`md
- media
* tv
* music
* movies
- pictures
- downloads
`|
}
personal: {
shape: cylinder
personal: |`md
- sync
`|
}
}