diff --git a/docs/config-manangement/ansible/ansible.md b/docs/config-manangement/ansible/ansible.md index e990dcea603e2c9731245419df9c3c24093f5ed5..425b1ae5af04392c12799b9ca11e0fa24165536b 100644 --- a/docs/config-manangement/ansible/ansible.md +++ b/docs/config-manangement/ansible/ansible.md @@ -2,45 +2,63 @@ ## Ansible galaxy - ansible role list - ansible-galaxy role info borgbase.borgbackup +```sh +ansible role list +ansible-galaxy role info borgbase.borgbackup +``` Search on galaxy.ansible.com for roles: - ansible role search borg +```sh +ansible role search borg +``` Install: - ansible-galaxy role install jnv.debian-backports - ansible-galaxy role install debops.docker +```sh +ansible-galaxy role install jnv.debian-backports +ansible-galaxy role install debops.docker +``` Install from `requirements.yml` - ansible-galaxy install -r requirements.yml +```sh +ansible-galaxy install -r requirements.yml +``` ## Ping all hosts - ansible all -m ping +```sh +ansible all -m ping +``` ## Gather facts -[Gather facts](http://docs.ansible.com/ansible/latest/setup_module.html) +[Gather facts](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/setup_module.html) - ansible all -m setup > facts.json - ansible all -m setup --tree ./facts - ansible mumble.digital -m setup > facts.json +```sh +ansible all -m setup > facts.json +ansible all -m setup --tree ./facts +ansible mumble.digital -m setup > facts.json +``` Disable fact gathering (i.e. for debugging / speeding up the run): - export ANSIBLE_GATHERING=explicit +```sh +export ANSIBLE_GATHERING=explicit +``` or: - ANSIBLE_GATHERING=explicit ansible-playbook -l device.lan site.yml +```sh +ANSIBLE_GATHERING=explicit ansible-playbook -l device.lan site.yml +``` ## Deploy only to one host - ansible-playbook -i 'dashboard.digital,' ssh.yml +```sh +ansible-playbook -i 'dashboard.digital,' ssh.yml +``` ## Ad-hoc commands @@ -48,29 +66,40 @@ or: Beware the trailing comma ! - ansible all -i gl.varac.net, -a uptime +```sh +ansible all -i gl.varac.net -a uptime +ansible all -l server -a reboot +``` ### Using an inventory file <http://docs.ansible.com/ansible/latest/intro_adhoc.html> - ansible bitrigger.de -m shell -a 'echo hi' +```sh +ansible bitrigger.de -m shell -a 'echo hi' - ansible localhost -m debug -a 'msg="{{ traefik_admin_email | checksum }}"' +ansible localhost -m debug -a 'msg="{{ traefik_admin_email | checksum }}"' +``` ## Debugging Don't remove target tmp files: - export ANSIBLE_KEEP_REMOTE_FILES=1 +```sh +export ANSIBLE_KEEP_REMOTE_FILES=1 +``` List tasks that would be applied: - ansible-playbook --list-tasks -l internal.digital site.yml +```sh +ansible-playbook --list-tasks -l internal.digital site.yml +``` List tags that would be applied: - ansible-playbook --list-tags -l internal.digital site.yml +```sh +ansible-playbook --list-tags -l internal.digital site.yml +``` ## Using the debugger diff --git a/docs/hardware/disks/exfat.md b/docs/hardware/disks/exfat.md new file mode 100644 index 0000000000000000000000000000000000000000..3e70be85fa81451352c134dba7662bf221c8e98a --- /dev/null +++ b/docs/hardware/disks/exfat.md @@ -0,0 +1,6 @@ +# ExFAT filesystem + +- [Arch wiki: Filesystems](https://wiki.archlinux.org/title/File_systems) +- [exfatprogs](https://archlinux.org/packages/extra/x86_64/exfatprogs/) is installed by default on Arch/Manjaro systems +- [exfat-utils](https://archlinux.org/packages/extra/x86_64/exfat-utils/) is [needed for mounting exfat formatted drives](https://andreas.scherbaum.la/post/2024-08-12_arch-linux-mount-unknown-filesystem-type-exfat/), + but it conflicts with `exfatprogs` diff --git a/docs/network/ssh.md b/docs/network/ssh.md index 89ed043850b19d5bdada1bab3ce6aec816fce75a..4b0cd38e65c1b15caad2e649df9cdfb3e29d340b 100644 --- a/docs/network/ssh.md +++ b/docs/network/ssh.md @@ -4,19 +4,27 @@ <https://security.stackexchange.com/a/144044> - ssh-keygen -a 100 -t ed25519 -f ./id_ed25519 +```sh +ssh-keygen -a 100 -t ed25519 -f ./id_ed25519 +``` ## Disable pubkey auth - ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no localhost +```sh +ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no localhost +``` ## Force certain identity file - ssh -o IdentitiesOnly=yes -i id_ed25519 bitrigger -v +```sh +ssh -o IdentitiesOnly=yes -i id_ed25519 bitrigger -v +``` ## Deploy pubkey - ssh-copy-id -i keydir/work.pub server +```sh +ssh-copy-id -i keydir/work.pub server +``` ## SSH into old boxes @@ -24,24 +32,32 @@ When the remote host shows this: - ssh 10.27.13.130 - Unable to negotiate with 10.27.13.130 port 22: no matching key exchange method - found. Their offer: - diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au +```sh +ssh 10.27.13.130 +Unable to negotiate with 10.27.13.130 port 22: no matching key exchange method +found. Their offer: +diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,kexguess2@matt.ucc.asn.au +``` Use: - ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 +```sh +ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 +``` ## SSH-Agent Start ssh-agent if none is running: - eval $(ssh-agent) +```sh +eval $(ssh-agent) +``` Then add keys: - ssh-add /root/.ssh/work_rsa +```sh +ssh-add /root/.ssh/work_rsa +``` ## GPG as ssh-agent @@ -49,30 +65,38 @@ Key-DB: `~/.gnupg/sshcontrol` Show keys added to gpg ssh-agent: - ssh-add -E md5 -l +```sh +ssh-add -E md5 -l - echo 'KEYINFO --ssh-list --ssh-fpr' | gpg-connect-agent - cat ~/.gnupg/sshcontrol +echo 'KEYINFO --ssh-list --ssh-fpr' | gpg-connect-agent +cat ~/.gnupg/sshcontrol +``` ### Remove ssh-key from agent <https://lists.gnupg.org/pipermail/gnupg-users/2016-August/056499.html> - ssh-add -E md5 -l - gpg-connect-agent - KEYINFO --ssh-list --ssh-fpr - DELETE_KEY <key_id> +```sh +ssh-add -E md5 -l +gpg-connect-agent + KEYINFO --ssh-list --ssh-fpr + DELETE_KEY <key_id> +``` ## SSH-Tunnel Create tunnel: - ssh -L 8080:192.168.9.5:80 server +```sh +ssh -L 8080:192.168.9.5:80 server +``` ## Socks proxy tunnel - ssh -D 1080 kermit +```sh +ssh -D 1080 kermit +``` Then configure browser proxy settings as socks proxy: `localhost:1080` @@ -80,20 +104,26 @@ Then configure browser proxy settings as socks proxy: `localhost:1080` ## in file - ssh-keygen -lf /etc/ssh/ssh_known_hosts - ssh-keygen -lf ~/.ssh/known_hosts -E md5 -F '[server1.example.org]:22' +```sh +ssh-keygen -lf /etc/ssh/ssh_known_hosts +ssh-keygen -lf ~/.ssh/known_hosts -E md5 -F '[server1.example.org]:22' - ssh-keygen -E sha256 -lf <(ssh-keyscan -t ecdsa 10.1.1.12 2>/dev/null) - 256 SHA256:0N6VUnfoJyfkgaRCAkSOWOp0WB6/au5LbrQ0x9FUm44 10.1.1.12 (ECDSA) +ssh-keygen -E sha256 -lf <(ssh-keyscan -t ecdsa 10.1.1.12 2>/dev/null) + 256 SHA256:0N6VUnfoJyfkgaRCAkSOWOp0WB6/au5LbrQ0x9FUm44 10.1.1.12 (ECDSA) +``` ## DSH - dsh -cM -g bm.couch "grep '\[error\]' /opt/bigcouch/var/log/bigcouch.log|wc -l" +```sh +dsh -cM -g bm.couch "grep '\[error\]' /opt/bigcouch/var/log/bigcouch.log|wc -l" +``` ## endlessh - SSH tarpit <https://nullprogram.com/blog/2019/03/22/> <https://github.com/skeeto/endlessh> - docker container run --rm --name endlessh -p 2222:2222 harshavardhanj/endlessh - ssh -v localhost -p 2222 +```sh +docker container run --rm --name endlessh -p 2222:2222 harshavardhanj/endlessh +ssh -v localhost -p 2222 +``` diff --git a/docs/smarthome/home-assistant/power-consumption.md b/docs/smarthome/home-assistant/power-consumption.md index c3b7ccdae4bf43820bf385fe7f22a27d38ea8c89..089aeb3dffdcc43c84ee676419a5aa5735bdbbf6 100644 --- a/docs/smarthome/home-assistant/power-consumption.md +++ b/docs/smarthome/home-assistant/power-consumption.md @@ -4,5 +4,17 @@ See also [../smart-meter.md](../smart-meter.md) for reading smart meters. ## Appliance detection -- [Detect and monitor the state of an appliance based on its power consumption](https://community.home-assistant.io/t/detect-and-monitor-the-state-of-an-appliance-based-on-its-power-consumption-v2-1-1-updated/421670) +- [Best way to detect a pattern in a power sensor?](https://community.home-assistant.io/t/best-way-to-detect-a-pattern-in-a-power-sensor/546125) +- [Blueprint: Detect and monitor the state of an appliance based on its power consumption](https://community.home-assistant.io/t/detect-and-monitor-the-state-of-an-appliance-based-on-its-power-consumption-v2-1-1-updated/421670) - [leofabri/hassio_appliance-status-monitor](https://github.com/leofabri/hassio_appliance-status-monitor) + - Outdates, last commit 2022 + +### AI / ML based + +- [AI Power Consumption](https://community.home-assistant.io/t/ai-power-consumption/389064/4) +- [FR: Machine learning device states from power meter parameters](https://community.home-assistant.io/t/machine-learning-device-states-from-power-meter-parameters/818178) +- [Energy Disaggregation or Non-Intrusive Load Monitoring (NILM) blueprint](https://community.home-assistant.io/t/energy-disaggregation-or-non-intrusive-load-monitoring-nilm-blueprint/619672) +- [Development of an Open Source Energy + Disaggregation Tool for the Home Automation + Platform Home Assistant](https://htwk-leipzig.qucosa.de/api/qucosa%3A83837/attachment/ATT-0/) + - [Source code](https://git.fh-aachen.de/energy-disaggregation-tool)