Add packages to a pre-existing docker image

A little test building a custom docker image, for a friend.

Q: I have a Node-red docker, but without ffmpeg binary

Using below code, i’ve added a overlay with ffmpeg.
Podman command’s should be working for docker command also.
(Note: When adding multiple packages OR other commands, try to use a single commandline, Every RUN command adds a overlay.

mkdir noderedbuild
cd  noderedbuild
vi Dockerfile
FROM nodered/node-red
LABEL description="Custom Nodered Build"
MAINTAINER haanstoot <fash@fash.nu>
USER root
RUN apk add  --no-cache ffmpeg
EXPOSE 1880

Below builds a local image named nodered:v1
NOTE: docker run command may be incomplete for Node-Red, this was just a example to add packages

podman build -t nodered:v1 .    
podman images
docker run -it -p 1880:1880 -v node_red_data:/data --name mynodered localhost/nodered:v1 -d

Tested with

[root@podman ~]# podman exec -it mynodered /bin/bash
bash-5.0# ffmpeg
ffmpeg version 4.3.1 Copyright (c) 2000-2020 the FFmpeg developers

Usage:

https://flows.nodered.org/flow/127b038961f873d1babeecaf5578959e

RTSP Frame save in Node-Red

Audio switcher

Doing my work from home via Jitsi (Jabra headset) and Listening to music on my speakers. Sometimes i want to switch output. For example spotify on my headset.

Using below code, i can easily switch between output sinks.

#!/bin/bash

if [ -z "$1" ]; then
    echo "DEVICE"
    pactl list sinks | egrep "^Sink|Description" | sed 'N;s/\n/,/' |sed -e 's/\t/ /g'  | cut -f2,5- -d" "
        echo "APPLICATIONS"
    pactl list sink-inputs | egrep -ie "^Sink|application.name" | grep -v "\-application-name" | sed 'N;s/\n/,/' | sed -e 's/\t/ /g' | sed -e 's/  / /g' | cut -f3,6- -d" "
    echo "Usage: $0 APPID DEVICEID" >&2
    exit 1
fi

pactl move-sink-input $1 $2

It shows output devices, and applications which are using audio sinks.
Just match them up.

OldSkool Computer Cartridges/expansions/add-ons

(Todo : add photos/designs )

Amiga:

Action Replay IIOwned since … 80s 90s?

Modded this one, as part of my modular
amiga system where i wanted to remake
every part onto 10×15 euro prints. So i could
swap things out for other boards.
Memory expansion512k .. missing in action
Go a new one in … ?
Boot selectorSwaps df0 and df1
DIY version was a wirewrap ic socket with a cross switch, now i have a Gotek buffered switching module with can be actvated with a keystroke.
(Gotek post)
Keyboard modHidden key (in the space of the stands, which triggered a extra key stroke)
Kickstart selectorA print you can insert in the ROM socket of your amiga. Had only 1.2 and 1.3.
Now there are many .. like diagnostic roms.
I made a altered 1.2 version .. which was unusable .. i f*cked it up
SID modAdded a sid parallel on the 8020 CIA chip
Gotek driver emulatorI made a arduino version to read disks. (Other post)
But this is a disk image drive emulator.
See Gotek post
Boot sector warnPiezo beeper which warned me when a boot sector was being written (virus alert)
Sound filter fixAmiga audio filter enhancer, using capacitors and resistors

C64:

Final Cartridge III
Led modMemory activation leds
KCS Power CartridgeSepp’s old cartridge?
Rom selectorDIY rom selector
Data Manager 2Can’t find anything on this one on other sites !?!?!
https://www.henriaanstoot.nl/2022/07/17/mystery-cartridge-c64/

Atari:

Vic-20:

Reset modDIY reset mod
ROM selectorDIY ROM selector
Many cartridgesSold in 2022, kept only some useful once’s

PC:

PC speaker modSpeaker to audio jack
Seek time monitorWhen a seek took too long, LEDs would light up, time to defrag!
Covox modA pre sound card parallel to audio resistor bridge.
Only a few demo’s and games supported this mod.
VGA to scartDisplay hack
VGA to Scart hack

Monitor:

Monitor modDIY horizontal flip using relays
Color modGreyscale / RGB switcher

Generic:

Joystick recorderrecorded movements when playing a game, so it could replay parts.

MQTT Keyboard

A fancy keyboard….. At last a clickety keyboard. A Razer Blackwidow V3 mechanical keyboard. I’m not a gamer, but i like the clickety sounds. RGB leds are always nice to play with.

One of the nice things about razer is the Linux support!

Some nice links:

https://github.com/openrazer/openrazer

https://openrazer.github.io/

Even several python scripts can be found, but no MQTT.
So made a fast ‘n simple hack to control my keyboard with mqtt/nodered.

When someone is at the frontdoor, my keyboard changes from white to red.

Below a node-red example

My python code:

import paho.mqtt.client as mqttClient
import time
import os
import subprocess
import json

def on_connect(client, userdata, flags, rc):
    if rc == 0:
        print("Connected to broker")
        global Connected
        Connected =True
    else:
        print("Connection failed")

def on_message(client, userdata, message):
    subprocess.Popen(["razer-cli", "-c", message.payload])

Connected = False

broker_address = "your.mqtt.brokerip.here"
port = 1883
#user = "user"
#password = "password"
client = mqttClient.Client("mqttrazer")
#client.username_pw_set(user, password=password)
client.on_connect = on_connect
client.on_message = on_message

client.connect(broker_address, port=port)
client.loop_start()

while Connected != True:
    time.sleep(0.1)

client.subscribe('razer/in')

try:
    while True:
        time.sleep(1)

except KeyboardInterrupt:
    print ("exiting")
    client.disconnect()
    client.loop_stop()

Android / Oculus Quest screen record

Needed a way to record stuff from phone and VR set, found scrcpy.

A really usefull tool, you can control you phone, and what i was looking for .. screen record.

Used this to show via Jitsi screen share, how to do stuff on your phone.

scrcpy –record file.mkv

https://github.com/Genymobile/scrcpy#copy-paste

Switch fullscreen modeMOD+f
Rotate display leftMOD+ (left)
Rotate display rightMOD+ (right)
Resize window to 1:1 (pixel-perfect)MOD+g
Resize window to remove black bordersMOD+w | Double-left-click¹
Click on HOMEMOD+h | Middle-click
Click on BACKMOD+b | Right-click²
Click on APP_SWITCHMOD+s | 4th-click³
Click on MENU (unlock screen)⁴MOD+m
Click on VOLUME_UPMOD+ (up)
Click on VOLUME_DOWNMOD+ (down)
Click on POWERMOD+p
Power onRight-click²
Turn device screen off (keep mirroring)MOD+o
Turn device screen onMOD+Shift+o
Rotate device screenMOD+r
Expand notification panelMOD+n | 5th-click³
Expand settings panelMOD+n+n | Double-5th-click³
Collapse panelsMOD+Shift+n
Copy to clipboard⁵MOD+c
Cut to clipboard⁵MOD+x
Synchronize clipboards and paste⁵MOD+v
Inject computer clipboard textMOD+Shift+v
Enable/disable FPS counter (on stdout)MOD+i
Pinch-to-zoomCtrl+click-and-move
Drag & drop APK fileInstall APK from computer
Drag & drop non-APK filePush file to device

"If something is worth doing, it's worth overdoing."