Skip to main content

Primary links

  • Home
  • AI
  • Kubernetes
  • Incus
  • Ansible
  • Terraform
  • OpenStack
  • Virtualization
  • Linux
  • SmartHome
  • HowTo

Misc

  • Linux
  • Hardware
  • Programming
  • Databases
  • Multimedia
  • Windows

Cloud

  • OpenStack
  • cloud-config
  • nextcloud

Virtualization

  • Virtualization
  • Incus
  • Docker
  • KVM
  • Kubernetes
  • LXC
  • LXD
  • QEMU
  • VMware
  • VirtualBox
  • multipass
  • podman
  • vagrant
  • XEN

Network

  • DNS
  • Firewall
  • Linux
  • OpenvSwitch
  • SSL
  • VLAN
  • VPN
  • iPXE
  • namespaces
  • nmcli
  • tcpdump

Storage

  • CEPH
  • DRBD
  • LVM
  • S3
  • ZFS
  • btrfs

Automation / CI/CD

  • Install
  • Ansible
  • GitLab
  • LLM
  • Preseed
  • Puppet
  • Terraform
  • Ubuntu autoinstall

Monitoring / Visualisation

  • Grafana
  • Icinga
  • Prometheus
  • Monitoring
  • ELK
  • mermaid

OpenStack Debug VPN

Find the VPN server and the relevant router UUID

# get VPN connection ID
openstack vpn ipsec site connection list | grep foo
openstack vpn ipsec site connection list --long | grep 

VPN_CONNECTION_ID=142dc25f-13bb-4fda-b093-edf13df98ed8
openstack vpn ipsec site connection show ${VPN_CONNECTION_ID}

VPN_SERVICE_ID=$(openstack vpn ipsec site connection show ${VPN_CONNECTION_ID} -c 'VPN Service' -f value)
openstack vpn service show ${VPN_SERVICE_ID}

# get router ID
ROUTER_ID=$(openstack vpn service show ${VPN_SERVICE_ID} -c Router -f value)
echo "ROUTER_ID=${ROUTER_ID}"

Find the ctl Node where the active router is running

ROUTER_PORT_ID=$(openstack port list --device-owner network:router_gateway -f value -c id --router ${ROUTER_ID})
CONTROL_NODE=$(openstack port show ${ROUTER_PORT_ID} -c binding_host_id -f value)
echo "CONTROL_NODE: ${CONTROL_NODE}"

echo "ssh ${CONTROL_NODE} sudo ip netns exec qrouter-${ROUTER_ID} ip a s"

Connect to that ctl node and "jump" in its neutron-l3-agent docker container

ssh ${CONTROL_NODE}
docker exec -u root -ti neutron_l3_agent bash

Enable file logging in strongswan configuration

PulseAudio

PulseAudio CLI

pulseaudio --check
pulseaudio -k
pulseaudio -D

PulseAudio CLI
https://rastating.github.io/setting-default-audio-device-in-ubuntu-18-04/
https://wiki.archlinux.org/index.php/PulseAudio/Examples

pactl list short sinks
pactl list short sources

pactl set-sink-volume 35 17%

# restart
systemctl --user restart pulseaudio

Equalizer

# https://raw.githubusercontent.com/panticz/installit/master/install.pulseaudio-equalizer.sh

if [ "$(pulseaudio-equalizer status | grep "Equalizer status" | cut -d"[" -f2 | cut -d"]" -f1)" == "enabled" ]; then
    pulseaudio-equalizer disable
else
    pulseaudio-equalizer enable
fi
INPUT_INDEX=$(pacmd list-sink-inputs | grep index | cut -d":" -f2)

pactl load-module module-null-sink sink_name=steam
pactl move-sink-input ${INPUT_INDEX} steam

DEFAULT_OUTPUT=$(pacmd list-sinks | grep -A1 "* index" | grep -oP "<\K[^ >]+")
echo $DEFAULT_OUTPUT

pactl load-module module-combine-sink \
    sink_name=record-n-play slaves=$DEFAULT_OUTPUT \
    sink_properties=device.description="Record-and-Play"

parec --format=s16le -d record-n-play.monitor | \
    lame -r --quiet -q 3 --lowpass 17 --abr 192 - "temp.mp3" \
    > /dev/null &1>/dev/null

pacmd list-sinks | grep -A1 "* index" | grep -oP "<\K[^ >]+"

Switch audio output with CLI

pactl list short sinks
pacmd set-default-sink 6
pacmd set-default-sink alsa_output.pci-0000_00_03.0.hdmi-stereo

# get default
LANG=en pactl info | sed -En 's/Default Sink: (.*)/\1/p'
pacmd list-sinks | grep -e 'name:' -e index | paste - -

Switch to next output sink

OpenStack: quotas

Documentation
https://docs.openstack.org/python-openstackclient/latest/cli/command-objects/quota.html

Xiaomi Mi A2 Lite (daisy)

Enable USB-Debugging and unlock phone

# Connect phone to Wifi
Settings > About Phone > Build number > tap 7x times to become developer
Settings > System > Advanced > Developer Options > OEM unclocking
Settings > System > Advanced > Developer Options > USB Debugging > OK

Unlock phone

# Connect phone to computer
adb devices
# Accept "Allow access with your computer RSA key" on phone
adb reboot bootloader
fastboot oem unlock

Boot bootloader

Power Off phone
Hold volume_down + power

OPTIONAL: Recovery phone with original Xiaomi image to update firmware

Flash custom image
https://arrowos.net/download
# ArrowOS download: https://get.mirror1.arrowos.net/download.php?token=oD03QRrG9umnU1Egj6VspKXNwaiIlcYSOqbfCdyP4x8WzMtT7kL2hHZFJAv5&version=arrow-11.0&variant=community&device=daisy
#OpenGA apps: https://netix.dl.sourceforge.net/project/opengapps/arm64/test/20210130/open_gapps-arm64-11.0-pico-20210130-TEST.zip
NikGapps: https://sourceforge.net/projects/nikgapps/files/Releases/NikGapps-SL/18-Feb-2023/NikGapps-core-arm64-12.1-20230218-signed.zip/download

OpenStack: control node

Decommision control node
https://review.opendev.org/plugins/gitiles/openstack/kolla-ansible/+/refs/changes/85/758085/1/doc/source/user/adding-and-removing-hosts.rst

# Migrage VMs
SOURCE_NODE=ctl2-dev
openstack server list --all --host ${SOURCE_NODE}

# Disable DHCP agents
SOURCE_NODE=ctl2-dev
TARGET_NODE=ctl1-dev
SOURCE_DHCP_ID=$(openstack network agent list --host ${SOURCE_NODE} --agent-type dhcp -f value -c ID)
TARGET_SOURCE_DHCP_ID=$(openstack network agent list --host ${TARGET_NODE} --agent-type dhcp -f value -c ID)
openstack network list --agent $SOURCE_DHCP_ID -f value -c ID | while read network; do
    openstack network agent remove network $SOURCE_DHCP_ID $network --dhcp
    openstack network agent add network $TARGET_SOURCE_DHCP_ID $network --dhcp
done


# Network
openstack network agent list --host ${SOURCE_NODE} -c ID -f value | xargs -i openstack network agent set --disable {}
openstack network agent list --host ${SOURCE_NODE} -c ID -f value | xargs -i openstack network agent delete {}


# Compute
openstack compute service list --host ${SOURCE_NODE} -c ID -f value  | xargs -i openstack compute set --disable {}
openstack compute service list --host ${SOURCE_NODE} -c ID -f value  | xargs -i openstack compute service delete {}


# Volme
openstack volume service list --host ${SOURCE_NODE}
openstack volume service set --disable ${SOURCE_NODE} cinder-scheduler
openstack volume service set --disable ${SOURCE_NODE} cinder-backup
openstack volume service set --disable ${SOURCE_NODE} cinder-volume
openstack volume service set --disable ctl2-dev@ceph1-ec-1  cinder-volume


# ssh ${COMPUTE_HOST} docker exec -t neutron_openvswitch_agent neutron-ovs-cleanup

Terraform: Create LoadBalancer in OpenStack

provider "openstack" {
  cloud = "lab-admin"
  use_octavia = true
}

# data "template_file" "user_data" {
#   template = file("user-data.txt")
# }

data "template_file" "user_data" {
  template = < /tmp/debug
EOF
}

variable "http_instance_names" {
  type = set(string)
  default = ["www1", "www2"]
}

resource "openstack_compute_instance_v2" "http" {
  for_each    = var.http_instance_names
  name        = each.key
 #name = "www${count.index + 1}"
 #count = 2
 image_name = "Ubuntu 20.04 minimal"
 flavor_name = "m1.small"
 key_pair = "lab-key"
 security_groups = ["default"]
 user_data = data.template_file.user_data.rendered

 network {
   name = "demo-net"
 }
}

data "openstack_networking_network_v2" "network_1" {
  name = "demo-net"
}

data "openstack_networking_subnet_v2" "subnet_1" {
  name = "demo-subnet"
  network_id = data.openstack_networking_network_v2.network_1.id
}

# Create loadbalancer
resource "openstack_lb_loadbalancer_v2" "http" {
  name          = "demo-lb1"
  vip_subnet_id = data.openstack_networking_subnet_v2.subnet_1.id
}

# Create listener
resource "openstack_lb_listener_v2" "http" {
  name            = "demo-lb1-http-listener"
  protocol        = "TCP"
  protocol_port   = 80
  loadbalancer_id = openstack_lb_loadbalancer_v2.http.id
  #depends_on      = [openstack_lb_loadbalancer_v2.http]

  insert_headers = {
    X-Forwarded-For = "true"
    X-Forwarded-Proto = "true"
  }
}

# Create pool
resource "openstack_lb_pool_v2" "http" {
  name        = "demo-lb1-http-pool1"
  protocol    = "TCP"
  lb_method   = "ROUND_ROBIN"
  listener_id = openstack_lb_listener_v2.http.id
  #depends_on  = [openstack_lb_listener_v2.http]
}

# Add member to pool
resource "openstack_lb_member_v2" "http1" {
  for_each      = var.http_instance_names
  address       = openstack_compute_instance_v2.http[each.key].access_ip_v4
  protocol_port = 80
  pool_id       = openstack_lb_pool_v2.http.id
  subnet_id     = data.openstack_networking_subnet_v2.subnet_1.id
  #depends_on    = [openstack_lb_pool_v2.http]
}

# Get floating IP
resource "openstack_networking_floatingip_v2" "floatingip_1" {
  pool = "public"
}

# Associate floating IP to LoadBalancer
resource "openstack_networking_floatingip_associate_v2" "floatip_1" {
  floating_ip = openstack_networking_floatingip_v2.floatingip_1.address
  port_id = openstack_lb_loadbalancer_v2.http.vip_port_id
}

output "LoadBalancer_IP" {
  value = "http://${openstack_networking_floatingip_v2.floatingip_1.address}"
}

TERMINATED_HTTPS loadbalancer

OpenWRT: USB storage

https://openwrt.org/docs/guide-user/storage/usb-drives-quickstart

opkg update
opkg install kmod-usb-storage kmod-fs-ext4 fdisk e2fsprogs
opkg install rsync

# deinstall
opkg remove ppp-mod-pppoe ppp kmod-pppoe kmod-pppox kmod-ppp

# OPTIONAL: remove webinterface
opkg remove "luci-*"   #run multiple times
opkg remove uhttpd

OpenWRT Wireguard server

OpenWrt server
https://openwrt.org/docs/guide-user/services/vpn/wireguard/client

opkg update
opkg install wireguard luci-app-wireguard

WG_IF="vpn"
WG_PORT="51820"
WG_ADDR="192.168.9.1/24"

# Generate keys
umask go=
wg genkey | tee wgserver.key | wg pubkey > wgserver.pub
wg genpsk > wgserver.psk
WG_KEY="$(cat wgserver.key)"
WG_PSK="$(cat wgserver.psk)"
WG_PUB="*******[ copy from wg client ]********"

# Configure firewall
uci rename firewall.@zone[0]="lan"
uci rename firewall.@zone[1]="wan"
uci del_list firewall.lan.network="${WG_IF}"
uci add_list firewall.lan.network="${WG_IF}"
uci -q delete firewall.wg
uci set firewall.wg="rule"
uci set firewall.wg.name="Allow-WireGuard"
uci set firewall.wg.src="wan"
uci set firewall.wg.dest_port="${WG_PORT}"
uci set firewall.wg.proto="udp"
uci set firewall.wg.target="ACCEPT"
uci commit firewall
/etc/init.d/firewall restart

# Configure network
uci -q delete network.${WG_IF}
uci set network.${WG_IF}="interface"
uci set network.${WG_IF}.proto="wireguard"
uci set network.${WG_IF}.private_key="${WG_KEY}"
uci set network.${WG_IF}.listen_port="${WG_PORT}"
uci add_list network.${WG_IF}.addresses="${WG_ADDR}"
uci add_list network.${WG_IF}.addresses="${WG_ADDR6}"

# Add VPN peers
uci -q delete network.wgclient
uci set network.wgclient="wireguard_${WG_IF}"
uci set network.wgclient.public_key="${WG_PUB}"
uci set network.wgclient.preshared_key="${WG_PSK}"
uci add_list network.wgclient.allowed_ips="${WG_ADDR%.*}.2/32"
uci add_list network.wgclient.allowed_ips="${WG_ADDR6%:*}:2/128"
uci commit network
/etc/init.d/network restart

OpenWrt client
https://openwrt.org/docs/guide-user/services/vpn/wireguard/client

nextcloud

# install nextcloud with snap
snap install nextcloud

sudo snap enable nextcloud
sudo snap disable nextcloud

# set domain
nextcloud.occ config:system:set trusted_domains 0 --value="nextcloud.example.com"

User
https://docs.nextcloud.com/server/15/admin_manual/configuration_server/occ_command.html#file-operations-label

# create user
export OC_PASS=pass1234
nextcloud.occ user:add --display-name "Foo Bar" --group=bar --password-from-env foo

Email

# create email
nextcloud.occ mail:account:create fobr "Foo Bar" foo.bar@example.com imap.example.com 143 off foo.bar pass1234 smtp.example.com 25 off foo.bar pass1234

Files
https://docs.nextcloud.com/server/15/admin_manual/configuration_server/occ_command.html#file-operations-label

# path
/var/snap/nextcloud/common/nextcloud/data/admin/file

# rescan files
nextcloud.occ files:scan --path=admin
nextcloud.occ files:scan --all

# external files
nextcloud.occ files_external:list
sudo snap connect nextcloud:removable-media

Calendar

# create calendar
nextcloud.occ dav:create-calendar ritter Auktionen

maintenance:mode
https://docs.nextcloud.com/server/15/admin_manual/configuration_server/occ_command.html#file-operations-label

nextcloud.occ maintenance:mode --on
nextcloud.occ maintenance:mode --off

cloud-config / cloud-init

Cloud config examples
https://cloudinit.readthedocs.io/en/latest/reference/examples.html

Network
https://cloudinit.readthedocs.io/en/latest/reference/network-config-format-v2.html

cloud-init.network-config: |
            network:
              version: 2
              ethernets:
                mgmt-dev:
                  mtu: 9000
                  addresses:
                    - 10.33.1.21/20
                  routes:
                    - to: 10.33.0.0/16
                      via: 10.33.1.1
                    - to: 10.8.0.0/22
                      via: 10.33.1.1
                    - to: 192.168.252.0/23
                      via: 10.33.1.1
                  nameservers:
                    addresses:
                      - 10.8.1.74
                      - 10.8.1.174
                    search:
                      - dev.example.com
                mgmt-public:
                  addresses:
                    - 10.0.1.100/24
                  gateway4: 10.0.1.1

V1

Pagination

  • First page
  • Previous page
  • …
  • Page 4
  • Page 5
  • Page 6
  • Page 7
  • Page 8
  • Page 9
  • Page 10
  • Page 11
  • Page 12
  • …
  • Next page
  • Last page
Profiles GitHub StackOverflow LinkedIn Xing
Contact Imprint
© panticz 2026

Cookie-Einstellungen

Diese Website nutzt eingebettete Inhalte von Drittanbietern (z.B. YouTube, SoundCloud). Beim Laden dieser Inhalte werden Daten an die jeweiligen Anbieter übermittelt. Datenverarbeitungserklärung