X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=distro-end;h=77cfa4ba89782d55ec1fa1b8497994c24531f93f;hb=7f94df0eb6002f4fd05ab3fc2d61e94a92ef5a1a;hp=acc1507d18283fc0ae72a6b7155a04edb8a4142d;hpb=86560196eb4ccc90a7c1d903de47fcb887656de4;p=distro-setup diff --git a/distro-end b/distro-end index acc1507..77cfa4b 100755 --- a/distro-end +++ b/distro-end @@ -1,6 +1,22 @@ #!/bin/bash -# Copyright (C) 2019 Ian Kelling -# SPDX-License-Identifier: AGPL-3.0-or-later + +# Setup Ian's computers +# Copyright (C) 2024 Ian Kelling + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# SPDX-License-Identifier: GPL-3.0-or-later # shellcheck source=/a/bin/ds/.bashrc export LC_USEBASHRC=t; if [[ -s ~/.bashrc ]]; then . ~/.bashrc; fi @@ -176,11 +192,16 @@ EOF fi done if $doupdate; then - cd $(mktemp -d) + tmpdir=$(mktemp -d) + cd $tmpdir + # otherwise we get a warning message: + # W: Download is performed unsandboxed as root as file '/tmp/tmp.UwxbPFG3CZ/debian-archive-keyring_2021.1.1+deb11u1_all.deb' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied) + chmod 775 . p download debian-archive-keyring - s dpkg -i debian-archive-keyring + s dpkg -i ./debian-archive-keyring* p update cd - + rm -rf $tmpdir fi if [[ ! -e /usr/share/debootstrap/scripts/bookworm ]]; then @@ -756,6 +777,35 @@ esac case $distro in trisquel|ubuntu) + + ## one time setup thing I did + # c /a/opt/obs-cmd/ + # cargo build --release + # cp target/release/obs-cmd ../bin + # + ## in obs, tools -> websocket server settings -> generate/copy password + # + # note: obs-studio on gnu does not support webrtc, it seems mainly because + # libdatachannel is not packaged. If it was, it would just need to do + # apt source obs-studio, obs-studio-30.1.1/debian/rules set -DENABLE_WEBRTC=ON + # + # I did manage to build libdatachannel following its instructions, then make install, + # then obs failed due to nvidia. found those options to disable with + # rg 'option\(ENABLE' | gr nv, then build obs like so: + # + # cmake -DLINUX_PORTABLE=ON -DCMAKE_INSTALL_PREFIX="${HOME}/obs-studio-portable" -DENABLE_BROWSER=OFF -DENABLE_AJA=OFF -DENABLE_NEW_MPEGTS_OUTPUT=OFF -DENABLE_WEBRTC=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DENABLE_NVVFX=OFF -DENABLE_NVAFX=OFF -DENABLE_NATIVE_NVENC=OFF .. + # + # + # + # however, I didn't end up trying it out. + # + # note, in terminal source, i setup a transform so it would show the + # bottom 1080p section of the terminal instead of the top if the + # screen was bigger. click like 2 times in the preview so the red + # lines show up, right click, edit transform (or ctrl-e). bounding + # box type: scale to width of bounds. alignment in bounding box: + # bottom left. bounding box size 1920 x 1080. + # ppa:obsproject/obs-studio if [[ ! -s /etc/apt/sources.list.d/obs.list ]]; then # https://blog.zackad.dev/en/2017/08/17/add-ppa-simple-way.html @@ -767,6 +817,7 @@ EOF p update fi ;; + esac case $codename_compat in @@ -1515,7 +1566,8 @@ m /a/bin/buildscripts/go # only needed for rg. cargo takes up 11 gigs, filled up the disk on je. m /a/bin/buildscripts/rust m /a/bin/buildscripts/misc -m /a/bin/buildscripts/pithosfly + +#m /a/bin/buildscripts/pithosfly #m /a/bin/buildscripts/alacritty #m /a/bin/buildscripts/kitty @@ -2009,6 +2061,48 @@ esac ### end bitcoin +### begin live streaming ### + +# comparing nginx rtmp to icecast +# `mpv --cache=no` had about 2.5 sec latency vs 4 seconds. +# Then I discovered this command which had about .5 sec latency: +#ffplay -f live_flv -fast -x 1280 -y 720 -fflags nobuffer -flags low_delay -strict experimental -vf "setpts=N/60/TB" -af "asetpts=N/60/TB" -noframedrop -i rtmp://url_here +## a lot of those args arent needed, here is what I ended up with: +# #ffplay -f live_flv -fflags nobuffer -flags low_delay -i rtmp://localhost/live +# +# A problem with rtmp is that it doesn't support vp8/vp9, requiring the partly patent encumbered h264. +# Looking at alternative protocols: dash & hls are both high latency, I tested dash with the nginx-rtmp +# module and got about 5 seconds of latency, web results imply that is normal. +# +# Webrtc is what jitsi & bbb use, but an annoying thing is that +# generally requires a web browser with javascript, or some special +# client, and afaik, it has a smaller limit on number of clients. +# +# Another option is to try rtp/rtsp, there are some servers here: +# https://en.wikipedia.org/wiki/Real-Time_Streaming_Protocol + + +## reference for setting up rtmp +# pi nginx libnginx-mod-rtmp +# cat >/etc/nginx/modules-enabled/rtmp.conf <<'EOF' +## based on https://opensource.com/article/19/1/basic-live-video-streaming-server#comments +## and https://github.com/arut/nginx-rtmp-module/wiki/Directives + +# rtmp { +# allow publish 127.0.0.1; +# deny publish all; +# server { +# listen 1935; +# application live { +# live on; +# record off; +# } +# } +# } +# EOF + +### end live streaming ### + ### begin gh #### # from https://raw.githubusercontent.com/cli/cli/trunk/docs/install_linux.md @@ -2079,6 +2173,13 @@ m /a/bin/buildscripts/tor-browser s ln -sf /a/opt/tor-browser/Browser/start-tor-browser /usr/local/bin +case $HOSTNAME in + kd) + web-conf -p 4500 -f 4533 -e ian@iankelling.org apache2 b8.nz + sgo navidrome + ;; +esac + # nfs server pi-nostart nfs-kernel-server