Feature: Init stack.nix for homeassistant.
- Move from `home-assistant` to `homeassistant`. - Delete unused Wyze-bridge. - Delete unused README. - Rotate keys in mosquitto.passwd.
This commit is contained in:
parent
09a4d88e00
commit
513f278be1
@ -1 +0,0 @@
|
||||
DOCKER_DATA=/mnt/iscsi/barbarian/home-assistant
|
@ -1,7 +0,0 @@
|
||||
# TODO
|
||||
- Export configuration to code, import to version control.
|
||||
- Build automation to apply changes to code.
|
||||
- [X] Integrate Eaton UPS via [NUT](https://networkupstools.org/). [shawly/docker-nut](https://github.com/shawly/docker-nut), [Home Assistant - NUT integration](https://www.home-assistant.io/integrations/nut/).
|
||||
- [X] Integrate [Wyze bridge](https://github.com/mrlt8/docker-wyze-bridge).
|
||||
- Integrate [Traccar](https://www.home-assistant.io/integrations/traccar_server/).
|
||||
- Integrate [Frigate](https://docs.frigate.video/frigate/installation).
|
@ -1,67 +0,0 @@
|
||||
services:
|
||||
home-assistant:
|
||||
image: lscr.io/linuxserver/homeassistant:latest
|
||||
container_name: home-assistant_home-assistant
|
||||
environment:
|
||||
PUID: "1001"
|
||||
PGID: "1001"
|
||||
TZ: "America/Los_Angeles"
|
||||
networks:
|
||||
- web
|
||||
- home-assistant
|
||||
volumes:
|
||||
- $DOCKER_DATA/home-assistant:/config
|
||||
- /run/dbus:/run/dbus:ro
|
||||
labels:
|
||||
- traefik.http.routers.home-assistant.rule=Host(`homeassistant.jafner.net`)
|
||||
- traefik.http.routers.home-assistant.tls.certresolver=lets-encrypt
|
||||
|
||||
mosquitto:
|
||||
image: eclipse-mosquitto:latest
|
||||
container_name: home-assistant_mosquitto
|
||||
networks:
|
||||
- home-assistant
|
||||
volumes:
|
||||
- ./mosquitto.conf:/mosquitto/config/mosquitto.conf
|
||||
- ./mosquitto.passwd:/mosquitto/config/mosquitto.passwd
|
||||
- $DOCKER_DATA/mosquitto:/mosquitto/data
|
||||
ports:
|
||||
- 12883:1883
|
||||
- 19001:9001
|
||||
|
||||
wyze-bridge:
|
||||
image: mrlt8/wyze-bridge:latest
|
||||
container_name: home-assistant_wyze-bridge
|
||||
networks:
|
||||
- web
|
||||
environment:
|
||||
WB_IP: "192.168.1.23"
|
||||
WB_RTSP_URL: "rtsp://192.168.1.23:18554/"
|
||||
WB_RTMP_URL: "rtmp://192.168.1.23:11935/"
|
||||
WB_HLS_URL: "http://192.168.1.23:19090/"
|
||||
WB_WEBRTC_URL: "http://192.168.1.23:19091/"
|
||||
env_file:
|
||||
- path: ./wyze-bridge.secrets
|
||||
required: true
|
||||
|
||||
ports:
|
||||
- 11935:1935 # RTMP
|
||||
- 18554:8554 # RTSP
|
||||
- 19090:8888 # HLS
|
||||
- 19091:8889 # WebRTC
|
||||
- 19092:8189/udp # WebRTC/ICE
|
||||
volumes:
|
||||
- type: tmpfs
|
||||
target: /tmp/docker-wyze
|
||||
tmpfs:
|
||||
size: 4000000000
|
||||
labels:
|
||||
- traefik.http.routers.wyze-bridge.rule=Host(`wyze.homeassistant.jafner.net`)
|
||||
- traefik.http.routers.wyze-bridge.tls.certresolver=lets-encrypt
|
||||
- traefik.http.routers.wyze-bridge.middlewares=lan-only@file
|
||||
- traefik.http.services.wyze-bridge.loadbalancer.server.port=5000
|
||||
|
||||
networks:
|
||||
web:
|
||||
external: true
|
||||
home-assistant:
|
@ -1,58 +0,0 @@
|
||||
{
|
||||
"data": "ENC[AES256_GCM,data:I/sy8/aq6y5FvQbeunSzvHtl6MxLbr0UA5RtYGVnyF5piev8bg8BhnZQT4uBgefwQfhCeTkH+1vSLvlT4zBhXGAfIcM1zcWJQIoaWcIa9AI2df7r6XDzcWypRr6179ZSE5GzQoUKZO/l70jl1ATfRlWEhhLevA==,iv:CiP8d2E/Bj74jD7trdUDyzCvSipVtBZDepnbaam9kCE=,tag:b6KgsaTYXut4HckXoMpPlg==,type:str]",
|
||||
"sops": {
|
||||
"shamir_threshold": 2,
|
||||
"key_groups": [
|
||||
{
|
||||
"hc_vault": null,
|
||||
"age": [
|
||||
{
|
||||
"recipient": "age1zswcq6t5wl8spr3g2wpxhxukjklngcav0vw8py0jnfkqd2jm2ypq53ga00",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBWb3hkQjlCeW1JS1ZHYi9I\nbDdFbDc1bnhsUzVISnMxZ0RVeXQ3WEhYOEdrCnIvVHRhcDIxSk5qc1ZiYVBoeCt0\nQ2NyQzEwMzlVL3R2dHg3c1ZsZXdXYUkKLS0tIEY4UTZLelNZT3VLOENMcjVzQnVy\nZVdlSVdRRnBiaS9FS2p5WEV1QU0ySWsKt55YSWLyfW/WiDOhQO51PhJNCUMeOpNa\n1YCKBpDfjSuSReJglSA/OALgt13M+hbvs1YdC8pSe7jzw+lhdrmKfJA=\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"hc_vault": null,
|
||||
"age": [
|
||||
{
|
||||
"recipient": "age1zswcq6t5wl8spr3g2wpxhxukjklngcav0vw8py0jnfkqd2jm2ypq53ga00",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAycFNBSXA2NjFwNWQ1N3lx\ndDEzTzNHV1JXVldQcWZlaEsxd2kvdnRzWnlRCnNENGRpTGpCOTdpbU9pL1F6eXZG\nRDFKRzVOWENVL0hXNGRjc2I2VjFLdDAKLS0tIEZqZ2ZuMk5SY0x4cExxeTFhSzFu\namNDclRlV3JnMmNIQW0yKzM4eDdUQ3cKK5CpNx5YTDNc9uHTIFcOVGa5uiDU0vWL\njTwUqnPr6F3X4pAccR8P3iuZ0klpUA4gaRm6Jto8q8mAA6gA0eMIMvI=\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"hc_vault": null,
|
||||
"age": [
|
||||
{
|
||||
"recipient": "age193t908fjxl8ekl77p5xqnpj4xmw3y0khvyzlrw22hdzjduk6l53q05spq3",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBXWEMvRjVrTWlqOFY4dVp2\ncFN3cDU1NVovTU5WMnJGTTh2VER3MEl5NlJJCk4xUTFNL2ExYUpPWE1Ea0QrdERX\nVnhtS2l6VlozRmhMZzB0OXNGMU4zOEEKLS0tIE1TOFlSNW1CMTdqZVN4Y2tuUWNZ\nSzZnT0hGT05VZnp4OFFQUDFibnBmakEKopJt6tPxXAfKMVCG9IwJx3iOnkNNp4jL\nWXiOccneF6oFHGe+Kjtz9nvYFjD0WyFf7lSRzVoa8Pmq0GVpJC3WgzI=\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"hc_vault": null,
|
||||
"age": [
|
||||
{
|
||||
"recipient": "age13prhyye2jy3ysa6ltnjgkrqtxrxgs0035d86jyn4ltgk3wxtqgrqgav855",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBOVzlralpVSVJDQU4waFlm\nSk5oZTIwY3E2MWtyaCtoYVcxRVpqai9kT0Y4CjQxKzE2b2xUMFRadjByUVJGS3hn\nWHJBMFpnN2ZZSnlra0gxVFp0QzNtQ28KLS0tIHhOSGN2em44ZTFrVCtLaU4xRWZy\nbVhsOWlaVkNWdXBFeGlJRG9BOTF0ZkUKsctx03J5DoJPuU61Upc/lHF7wRQSIaug\nY1Z15Lniqt147qByCIoKky7KJPT/UykNjnw+D/36BTI7iJbOAvuDBz0=\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1n20krynrj75jqfy2muvhrygvzd4ee8ngamljqavsrk033zwx0ses2tdtfe",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKVE4yMVJubEYzU25Gam1V\nY1JSc3pCSEpHK3dvUHh2TXlGS2FKY0lZRlU0CmpSVmE0a2lFUENBUE9nZUFpTVpp\nQUgrYmIzTWl6c2VuZ1dpVXkrNFp6VG8KLS0tIExFS3FyVmxaUFYraEw2MzNKcDZo\nNFRnYnMrUWZTdzdaNXBkSVlhVDduMncKpqF9A5++9Kz5EqVbftagrSq27/O5Re4i\nIWENGjdWtEsoEz74qpJBns5egGkdgz+PgwxzpAZ3V6T2Urk5la3qp84=\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"kms": null,
|
||||
"gcp_kms": null,
|
||||
"azure_kv": null,
|
||||
"hc_vault": null,
|
||||
"age": null,
|
||||
"lastmodified": "2024-10-08T18:50:29Z",
|
||||
"mac": "ENC[AES256_GCM,data:nqLhMVANaNfLN/cZaZizFDb7JCCF5mc4xBy58AT2nzS7qhxIee7teYRThd7kDJd1l4sG/ir+JeCUZMIAMHG2PrjKBK4+RwJW2NLxBTGx5xXJpyBUcKHZcrKCXGN7+SJjfOjIH3TDednmmCk3NEBBO6CSVWAlPZQHyqhkuPbIuDE=,iv:dW5i9GyAExrsxHUzB/hzEx8ZxnkOBSOncZc/DSKl1I4=,tag:iXJcYFZRpp92qemsLfOJog==,type:str]",
|
||||
"pgp": null,
|
||||
"unencrypted_suffix": "_unencrypted",
|
||||
"version": "3.9.0"
|
||||
}
|
||||
}
|
35
homelab/stacks/homeassistant/docker-compose.yml
Normal file
35
homelab/stacks/homeassistant/docker-compose.yml
Normal file
@ -0,0 +1,35 @@
|
||||
services:
|
||||
homeassistant:
|
||||
image: lscr.io/linuxserver/homeassistant:latest
|
||||
container_name: homeassistant_homeassistant
|
||||
environment:
|
||||
PUID: "1001"
|
||||
PGID: "1001"
|
||||
TZ: "America/Los_Angeles"
|
||||
networks:
|
||||
- web
|
||||
- homeassistant
|
||||
volumes:
|
||||
- $APPDATA/homeassistant:/config
|
||||
- /run/dbus:/run/dbus:ro
|
||||
labels:
|
||||
- traefik.http.routers.homeassistant.rule=Host(`homeassistant.jafner.net`)
|
||||
- traefik.http.routers.homeassistant.tls.certresolver=lets-encrypt
|
||||
|
||||
mosquitto:
|
||||
image: eclipse-mosquitto:latest
|
||||
container_name: homeassistant_mosquitto
|
||||
networks:
|
||||
- homeassistant
|
||||
volumes:
|
||||
- ./mosquitto.conf:/mosquitto/config/mosquitto.conf
|
||||
- /run/secrets/homeassistant/mosquitto:/mosquitto/config/mosquitto.passwd
|
||||
- $APPDATA/mosquitto:/mosquitto/data
|
||||
ports:
|
||||
- 12883:1883
|
||||
- 19001:9001
|
||||
|
||||
networks:
|
||||
web:
|
||||
external: true
|
||||
homeassistant:
|
25
homelab/stacks/homeassistant/mosquitto.passwd
Normal file
25
homelab/stacks/homeassistant/mosquitto.passwd
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"data": "ENC[AES256_GCM,data:I/sy8/aq6y5FvQbeunSzvHtl6MxLbr0UA5RtYGVnyF5piev8bg8BhnZQT4uBgefwQfhCeTkH+1vSLvlT4zBhXGAfIcM1zcWJQIoaWcIa9AI2df7r6XDzcWypRr6179ZSE5GzQoUKZO/l70jl1ATfRlWEhhLevA==,iv:CiP8d2E/Bj74jD7trdUDyzCvSipVtBZDepnbaam9kCE=,tag:b6KgsaTYXut4HckXoMpPlg==,type:str]",
|
||||
"sops": {
|
||||
"shamir_threshold": 1,
|
||||
"kms": null,
|
||||
"gcp_kms": null,
|
||||
"azure_kv": null,
|
||||
"hc_vault": null,
|
||||
"age": [
|
||||
{
|
||||
"recipient": "age1v5wy7epv5mm8ddf3cfv8m0e9w4s693dw7djpuytz9td8ycha5f0sv2se9n",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4T2RJT0JzT3ZaUCtwMlpT\nWndnSHF2cWV3QlZ6OE5RbURTNTJiUHUyY0g0Cjd3RVh4LzQzTkEwc0FBQXkvZjF0\na1EvenlDZ3V5b2RwQUpRMVRQVFZTeG8KLS0tIHIzUjYvZ0NQUlczaHRKVW1QaWtV\nbFV2WUtOeVdoV1ErTGlVcFM3cVpKUVEKvn3CclsonL34kiG+TY0ajtPeZ+oMwfls\n87LC/+0nFTnLjAHcjAdx1xi6HrM94HAMNiEgglba5cr5S1Ag67PkWQ==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
},
|
||||
{
|
||||
"recipient": "age1zswcq6t5wl8spr3g2wpxhxukjklngcav0vw8py0jnfkqd2jm2ypq53ga00",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkUnJ5YmErTzdNaDNIcFpQ\nWlYrS3A2ZXRhTUdoVXVWajloM3dJeElkbGswCkRkRXVPSGpNcmJaV0l3N2hoYmNm\nVnhPT3BUN0Z3Y1YvcUl3dC9DQlJESmMKLS0tIEhJblRZYm4xa1pLWmFXQjEzZjA2\nWlVuQmxGTGN3S2pRaHpZVVZsYy9zN3MKncdkMfI4J5vTPPnBMM9kKRHHpJ3PJ6/F\nTiw/lVi5M01mk/2PxKRQ83FziZWOGtylpub54KbZbQPQ1YosodmTrQ==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
],
|
||||
"lastmodified": "2024-10-08T18:50:29Z",
|
||||
"mac": "ENC[AES256_GCM,data:nqLhMVANaNfLN/cZaZizFDb7JCCF5mc4xBy58AT2nzS7qhxIee7teYRThd7kDJd1l4sG/ir+JeCUZMIAMHG2PrjKBK4+RwJW2NLxBTGx5xXJpyBUcKHZcrKCXGN7+SJjfOjIH3TDednmmCk3NEBBO6CSVWAlPZQHyqhkuPbIuDE=,iv:dW5i9GyAExrsxHUzB/hzEx8ZxnkOBSOncZc/DSKl1I4=,tag:iXJcYFZRpp92qemsLfOJog==,type:str]",
|
||||
"pgp": null,
|
||||
"unencrypted_suffix": "_unencrypted",
|
||||
"version": "3.9.0"
|
||||
}
|
||||
}
|
21
homelab/stacks/homeassistant/stack.nix
Normal file
21
homelab/stacks/homeassistant/stack.nix
Normal file
@ -0,0 +1,21 @@
|
||||
{ sys, ... }: let stack = "homeassistant"; in {
|
||||
home-manager.users."${sys.username}".home.file = {
|
||||
"${stack}" = {
|
||||
enable = true;
|
||||
recursive = true;
|
||||
source = ./.;
|
||||
target = "stacks/${stack}/";
|
||||
};
|
||||
"${stack}/.env" = {
|
||||
enable = true;
|
||||
text = ''APPDATA=${sys.dataDirs.appdata}/${stack}'';
|
||||
target = "stacks/${stack}/.env";
|
||||
};
|
||||
};
|
||||
sops.secrets."${stack}/mosquitto" = {
|
||||
sopsFile = ./mosquitto.passwd;
|
||||
key = "";
|
||||
mode = "0440";
|
||||
owner = sys.username;
|
||||
};
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user