tcpdump -i enp3s0 'host 192.168.178.32' -w /tmp/mydump.pcap
How to autoscale matplotlib X&Y axis after set_data() call
After calling set_data()
or set_ydata()
in matplotlib the axis scale is not updated automatically. Use
ax.relim() ax.autoscale_view(True,True,True)
to update both the X and the Y scale.
Full example:
line.set_data(x, y) # Autoscale view ax.relim() ax.autoscale_view(True,True,True) # Redraw figure.canvas.draw() figure.canvas.flush_events()
tcpdump capture on specific port
tcpdump -i enp3s0 'port 8918' -w /tmp/mydump.pcap
How to enable Collabora for multiple domains using docker-compose
In our previous post How to run Collabora office for Nextcloud using docker-compose we investigated how to configure your Collabora office server using docker-compose.yml
.
NEW answer for newer collabora versions
If you want to use multiple domains, you need to change this line in .env
:
COLLABORA_DOMAIN=collabora.mydomain.com
to
aliasgroup1=https://nextcloud.mydomain.com:443,https://nextcloud.myseconddomain.com:443
OLD answer for older versions of collabora
If you want to use multiple domains, you need to change this line in .env
:
COLLABORA_DOMAIN=collabora.mydomain.com
By reading the source code I found out that COLLABORA_DOMAIN
is interpreted as a regular expression. Therefore you can use a (...|...|...)
syntax.
COLLABORA_DOMAIN=(nextcloud.mydomain.com|nextcloud.myseconddomain.com)
After that, restart collabora.
How to run Collabora office for Nextcloud using docker-compose
Create this docker-compose.yml
, e.g. in /opt/collabora-mydomain
:
version: '3' services: code: image: collabora/code:latest restart: always environment: - password=${COLLABORA_PASSWORD} - username=${COLLABORA_USERNAME} - domain=${COLLABORA_DOMAIN} - extra_params=--o:ssl.enable=true ports: - 9980:9980
Now create this .env
with the configuration. You need to change the password and the domain!
COLLABORA_USERNAME=admin COLLABORA_PASSWORD=veecheit0Phophiesh1fahPah0Wue3 COLLABORA_DOMAIN=collabora.mydomain.com
Now you can create a systemd service to autostart by using our script from Create a systemd service for your docker-compose project in 10 seconds.
Run from inside your directory (e.g. /opt/collabora-mydomain
)
curl -fsSL https://techoverflow.net/scripts/create-docker-compose-service.sh | sudo bash /dev/stdin
Now you need to configure your reverse proxy to point to port 9980
. Here’s an example nginx
config:
server { server_name collabora.mydomain.com; access_log /var/log/nginx/collabora.mydomain.com.access_log; error_log /var/log/nginx/collabora.mydomain.com.error_log info; location / { proxy_pass https://127.0.0.1:9980; proxy_http_version 1.1; proxy_read_timeout 3600s; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; add_header X-Frontend-Host $host; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; } listen [::]:80; # managed by Certbot }
Now open your browser and open collabora.mydomain.com
. If collabora is running correctly, you should see:
OK
In Nextcloud, goto https://nextcloud.mydomain.com/settings/admin/richdocuments
and set the
https://admin:[email protected]
Ensure to use your custom password from .env
and your custom domain!
Click Save and you should see Collabora Online server is reachable
:
What image / distribution should you use on Oracle Cloud?
I recommend to always use either CentOS or Ubuntu. This way you will be compatible with other hosting providers and cloud vendors. Additionally, there is much more documentation regarding Ubuntu out there than for distributions like Oracle Linux.
Oracle Cloud free tier VM.Standard.E2.1.Micro /proc/cpuinfo
processor : 0 vendor_id : AuthenticAMD cpu family : 23 model : 1 model name : AMD EPYC 7551 32-Core Processor stepping : 2 microcode : 0x1000065 cpu MHz : 1996.246 cache size : 512 KB physical id : 0 siblings : 2 core id : 0 cpu cores : 1 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm rep_good nopl cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext perfctr_core ssbd ibpb vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero xsaveerptr virt_ssbd arat arch_capabilities bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass bogomips : 3992.49 TLB size : 1024 4K pages clflush size : 64 cache_alignment : 64 address sizes : 40 bits physical, 48 bits virtual power management: processor : 1 vendor_id : AuthenticAMD cpu family : 23 model : 1 model name : AMD EPYC 7551 32-Core Processor stepping : 2 microcode : 0x1000065 cpu MHz : 1996.246 cache size : 512 KB physical id : 0 siblings : 2 core id : 0 cpu cores : 1 apicid : 1 initial apicid : 1 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm rep_good nopl cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext perfctr_core ssbd ibpb vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero xsaveerptr virt_ssbd arat arch_capabilities bugs : sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass bogomips : 3992.49 TLB size : 1024 4K pages clflush size : 64 cache_alignment : 64 address sizes : 40 bits physical, 48 bits virtual power management:
How to disable virtual cloud network firewall on Oracle Cloud
When running VM instances on Oracle Cloud, you might want to use all ports, not just the few ports that are open by default. This post shows how to disable the Virtual Cloud Network firewall altogether. Additionally, you need to configure the instance firewall e.g. via SSH. For Ubuntu, see How to disable instance firewall on Ubuntu on Oracle Cloud.
You need to use firefox to access the UI. It will not work in chrome!
First login to the cloud network dashboard at https://cloud.oracle.com/networking/vcns
Now click the virtual cloud network:
Now click Security lists on the bottom left:
Click the Default security list (which has been automatically created)
Click Add Ingress Rules
Enter source 0.0.0.0/0
(i.e. all IP addresses) and IP protocol All protocols
:
Now click Save changes and don’t forget to configure your instance firewall
How to automatically re-resolve DNS in Wireguard on Linux
When installing wireguard-tools
on Linux, it includes a script called reresolve-dns.sh
. This will take care of automatically re-resolving.
According to its documentation, you should run it every 30 seconds or so.
So we can just create a systemd timer to run it every 30 seconds.
Easy way
Use our script
wget -qO- https://techoverflow.net/scripts/install-wireguard-reresolve-dns.sh | sudo bash /dev/stdin
Now you need to enable it for each relevant interface separately, for example for wg0
:
systemctl enable --now [email protected]
Hard way
Do manually what our script does.
Create /etc/systemd/system/[email protected]
:
[Unit] Description=wg-reresolve-dns@ [Service] Type=oneshot ExecStart=/usr/share/doc/wireguard-tools/examples/reresolve-dns/reresolve-dns.sh %i
Create /etc/systemd/system/[email protected]
:
[Unit] Description=wg-reresolve-dns@ timer [Timer] Unit=wg-reresolve-dns@%i.service OnCalendar=*-*-* *:*:00,30 Persistent=true [Install] WantedBy=timers.target
Now you need to enable it for each relevant interface separately, for example for wg0
:
systemctl enable --now [email protected]
How to run systemd timer every 30 seconds
The syntax to run a systemd timer every 30 seconds is:
OnCalendar=*-*-* *:*:00,30
i.e. run on the first (00
) and 30
th second of every minute.
How to disable instance firewall on Ubuntu on Oracle Cloud
Note: This describes how to disable the firewall on an Ubuntu instance. You additionally need to configure the cloud network security list! See How to disable virtual cloud network firewall on Oracle Cloud for details!
The Oracle firewall is iptables
based. We can disable the Ubuntu instance firewall using
sudo iptables -F sudo netfilter-persistent save
Explanation:
iptables -F
: Flush (remove all) iptables rulesnetfilter-persistent save
Save empty ruleset to disk so it will be reloaded on reboot.
How to fix Nextcloud Can not validate phone numbers without `default_phone_region` being set in the config file
Problem:
When running Nextcloud occ maintenance:repair
you see an error message like
ERROR: Can not validate phone numbers without `default_phone_region` being set in the config file
Solution:
Add the config option using
php occ config:system:set default_phone_region --type string --value="DE"
or, when using docker-compose:
docker-compose exec -u www-data nextcloud php occ config:system:set default_phone_region --type string --value="DE"
and run maintenance:repair
again.
How to fix Docker-Nextcloud Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it.
Problem:
When using the official nextcloud
docker image, you will see a message like
Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it.
on the system overview page
Solution
This is a bug in the docker image and will likely be resolved soon – in the meantime, we can just manually install the required library on the container:
docker-compose exec nextcloud apt -y update docker-compose exec nextcloud apt -y install libmagickcore-6.q16-6-extra
If you re-create the container, this change will be lost, but in my opinion it’s best to opt for a simple solution here and possible do it again once or twice as opposed to a permanent but much more labour-intensive procedure like updating the docker image and later migrating back to the official image.
How to fix Nextcloud 4047 InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED or KEY_BLOCK_SIZE.
Problem:
When trying to maintenance:repair
your Nextcloud instance, e.g. during a utf8mb4 upgrade, you see an error message like
ERROR: An exception occurred while executing a query: SQLSTATE[HY000]: General error: 4047 InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED or KEY_BLOCK_SIZE.
Solution:
You need to turn off innodb-read-only-compressed
. I do this by starting my MySQL docker with
--skip-innodb-read-only-compressed
Full command line which worked for me:
--transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 --skip-innodb-read-only-compressed
Full docker-compose.yml
nextcloud section:
nextcloud-db: image: mariadb command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 --skip-innodb-read-only-compressed restart: always volumes: - ./nextcloud-db:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - MYSQL_PASSWORD=${MYSQL_PASSWORD}
What 4-pin connectors are used on 3D printer mainboards for stepper motors?
Most currently available mainboards use this connector for connecting a stepper motor to the mainboard:
These connectors are named JST XH 2.54mm.
While many people interface these using standard 2.54mm female connectors
they should be interfaces using the proper JST XH 2.54mm female connector.
3D printer: How to home only Z axis using G-Code?
To home only the Z axis on 3D printers running on most firmwares, use G28
with the Z
axis specifier
G28 Z
3D printer: How to home only Y axis using G-Code?
To home only the Y axis on 3D printers running on most firmwares, use G28
with the Y
axis specifier
G28 Y
3D printer: How to home only X axis using G-Code?
To home only the X axis on 3D printers running on most firmwares, use G28
with the X
axis specifier
G28 X
What free audio transcription service works best for noisy audio?
We tested some free transcription services with a MP4 video with large amounts of background noise and a very badly recorded voice from a camera microphone.
We tested:
The best result was from amberscript.com which was much much better than the next best result from temi.
Further notes:
- We did not find out how to export the entire subtitle file from veed.io
- temi provides an interface where words that have not been recognized clearly are marked. This helps enormously when manually correcting transcriptions.
- freetranscriptions takes audio files as input, not video files
- amberscript took the longest of all tools to transcribe.
How to fix pip cartopy error: “geos_c.h: No such file or directory”
Problem:
When trying to install cartopy on Linux using e.g. sudo pip3 install cartopy
, you see an error message like
lib/cartopy/trace.cpp:633:10: fatal error: geos_c.h: Datei oder Verzeichnis nicht gefunden 633 | #include "geos_c.h" | ^~~~~~~~~~ compilation terminated. setup.py:117: UserWarning: Unable to determine GEOS version. Ensure you have 3.3.3 or later installed, or installation may fail.
Solution:
Install libgeos-dev
using
sudo apt -y install libgeos-dev