🥧
This commit is contained in:
		
						commit
						3efc55d7b9
					
				
							
								
								
									
										5
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
			
		||||
# piblog
 | 
			
		||||
 | 
			
		||||
this is a log of stuff i do for my raspberry pi homelab
 | 
			
		||||
 | 
			
		||||
check it out
 | 
			
		||||
							
								
								
									
										43
									
								
								justfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								justfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,43 @@
 | 
			
		||||
# show all options
 | 
			
		||||
default:
 | 
			
		||||
  just --list --unsorted
 | 
			
		||||
 | 
			
		||||
# build html from markdown
 | 
			
		||||
html:
 | 
			
		||||
  pandoc -f markdown+autolink_bare_uris -t html --standalone -H templates/header-includes.html --toc -o www/index.html src/piblog.md
 | 
			
		||||
 | 
			
		||||
# build rss feed from journal
 | 
			
		||||
rss:
 | 
			
		||||
  #!/usr/bin/env sh
 | 
			
		||||
  echo "<rss version=\"2.0\"><channel><title>piblog</title>" > www/feed.xml
 | 
			
		||||
  echo "<link>http://tilde.town/~dozens/piblog/index.html</link><description>just a little log about my raspberry pi</description><atom:link rel=\"self\" type=\"application/rss+xml\" href=\"http://tilde.town/~dozens/piblog/feed.xml\"/>" >> www/feed.xml
 | 
			
		||||
  ed -s !'markdown src/piblog.md' << HEREDOC | recfmt -f templates/feeditem.template | m4 >> www/feed.xml
 | 
			
		||||
  /BEGIN/ka
 | 
			
		||||
  /END/kb
 | 
			
		||||
  1,'ad
 | 
			
		||||
  'b,d
 | 
			
		||||
  g/^<h2>/+s/^/note: /
 | 
			
		||||
  v/^note/s/^/+ /
 | 
			
		||||
  %s/+ <h2>/<h2>/
 | 
			
		||||
  %s_^<h2><time>\(.*\)</time> - \(.*\)</h2>_\\
 | 
			
		||||
  time: \1\\
 | 
			
		||||
  title: \2_
 | 
			
		||||
  g/^+ $/d
 | 
			
		||||
  ,w /dev/stdout
 | 
			
		||||
  Q
 | 
			
		||||
  HEREDOC
 | 
			
		||||
  echo '</channel></rss>' >> www/feed.xml
 | 
			
		||||
 | 
			
		||||
# watch for changes
 | 
			
		||||
watch:
 | 
			
		||||
  ls src/piblog.md | entr just html
 | 
			
		||||
 | 
			
		||||
# build html and rss
 | 
			
		||||
build: html rss
 | 
			
		||||
 | 
			
		||||
# upload
 | 
			
		||||
up:
 | 
			
		||||
  rsync -zaP www/ tilde:public_html/piblog
 | 
			
		||||
 | 
			
		||||
# build and upload
 | 
			
		||||
all: build up
 | 
			
		||||
							
								
								
									
										354
									
								
								src/piblog.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										354
									
								
								src/piblog.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,354 @@
 | 
			
		||||
---
 | 
			
		||||
title: piblog
 | 
			
		||||
subtitle: adventures with my raspberry pi
 | 
			
		||||
author: dozens
 | 
			
		||||
toc-title: entries
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
## about
 | 
			
		||||
 | 
			
		||||
Hi! This is my journal
 | 
			
		||||
about my experiences,
 | 
			
		||||
exploits,
 | 
			
		||||
and hijinks
 | 
			
		||||
while setting up a raspberry pi homelab.
 | 
			
		||||
it is a Pi 3 Model B named guyute
 | 
			
		||||
 | 
			
		||||
- www: tilde.town/~dozens
 | 
			
		||||
- email: dozens@tilde.team
 | 
			
		||||
- fedi: @dozens@tiny.tilde.website
 | 
			
		||||
- irc: dozens on {libera,tilde}.chat
 | 
			
		||||
- webring: 
 | 
			
		||||
    <a href="https://tilde.town/~dozens/webring/dozens/index.html?name=piblog&dir=prev">prev</a>
 | 
			
		||||
    <a href="https://tilde.town/~dozens/webring/dozens/index.html">index</a>
 | 
			
		||||
    <a href="https://tilde.town/~dozens/webring/dozens/index.html?name=piblog&dir=next">next</a>
 | 
			
		||||
 | 
			
		||||
<!-- BEGIN //-->
 | 
			
		||||
## <time>2023-11-13</time> - audiobooks
 | 
			
		||||
 | 
			
		||||
okay so tomasino reminded me today that i used to love listening to audiobooks.
 | 
			
		||||
 | 
			
		||||
https://labs.tomasino.org/audiobooks/
 | 
			
		||||
 | 
			
		||||
but i haven't done it as fanatically as i used to in a long time.
 | 
			
		||||
for a while, i didn't have a commute.
 | 
			
		||||
and now i do, but i often carpool.
 | 
			
		||||
but sometimes i have a solo, quiet commute.
 | 
			
		||||
ideal for some audiobooks!
 | 
			
		||||
 | 
			
		||||
further complications:
 | 
			
		||||
i am unable to download and archive audiobooks from overdrive the same way i used to be able to.
 | 
			
		||||
because they barely support their desktop apps anymore,
 | 
			
		||||
and instead push really hard for everybody to use their streaming apps.
 | 
			
		||||
 | 
			
		||||
but i learned that if i spoof my user-agent
 | 
			
		||||
 | 
			
		||||
https://addons.mozilla.org/en-US/firefox/addon/user-agent-string-switcher/
 | 
			
		||||
 | 
			
		||||
then i can get a 'Have overdrive for mac/windows?' link upon checkout
 | 
			
		||||
that will enable me to download the odm file.
 | 
			
		||||
which i can then use to download the mp3s thanks to this special little script.
 | 
			
		||||
 | 
			
		||||
https://github.com/jamestomasino/dotfiles-minimal/blob/master/bin/overdrive
 | 
			
		||||
 | 
			
		||||
so that's great!
 | 
			
		||||
while i was troubleshooting all of this,
 | 
			
		||||
i downloaded a book to my linux laptop,
 | 
			
		||||
because the download link is already readily available there,
 | 
			
		||||
and then transferred it over to the pi.
 | 
			
		||||
 | 
			
		||||
so now i guess i'm going to start collecting and archiving audiobooks on the pi too!
 | 
			
		||||
i might look into jellyfin in earnest so i can serve them
 | 
			
		||||
and download them over my home network.
 | 
			
		||||
 | 
			
		||||
i might also have to start really considering a vpn
 | 
			
		||||
so i can access my files away from the house.
 | 
			
		||||
 | 
			
		||||
## <time>2023-11-07</time> - add email to calibre-web
 | 
			
		||||
 | 
			
		||||
just a quick note to look into configuring email for calibre-web
 | 
			
		||||
so i can send books direct to my kindle
 | 
			
		||||
 | 
			
		||||
whoa this fork looks really great
 | 
			
		||||
compared to what i have
 | 
			
		||||
 | 
			
		||||
<https://github.com/janeczku/calibre-web>
 | 
			
		||||
 | 
			
		||||
the ui looks good
 | 
			
		||||
and it has single click send to e-mail
 | 
			
		||||
and also "Magic Link" login for easy access on eReaders..
 | 
			
		||||
that's great.
 | 
			
		||||
 | 
			
		||||
what is that i'm running?
 | 
			
		||||
 | 
			
		||||
just the base `calibre-server` that comes with the calibre package in apt.
 | 
			
		||||
 | 
			
		||||
okay new goal: install and run `calibre-web`,
 | 
			
		||||
and stop using `calibre-server`?
 | 
			
		||||
 | 
			
		||||
## <time>2023-10-28</time> - abduco + dvtm = tmux replacement?
 | 
			
		||||
 | 
			
		||||
i can't remember how i fell down this rabbit hole..
 | 
			
		||||
i think it's because elly had been talking about dtach over on #tildetown,
 | 
			
		||||
which is a utility that just provides the attach/detach
 | 
			
		||||
functionality of tmux.
 | 
			
		||||
 | 
			
		||||
so anyway i started using abduco + dvtm on my pi
 | 
			
		||||
just to test it out
 | 
			
		||||
and see what it was like
 | 
			
		||||
and i quite like it!
 | 
			
		||||
dvtm especially is kind of nice
 | 
			
		||||
as a tiling window manager for the terminal.
 | 
			
		||||
 | 
			
		||||
abduco isn't in the package repository at work,
 | 
			
		||||
but i started using dtach + dvtm this week.
 | 
			
		||||
we'll see if i stick with it.
 | 
			
		||||
pretty nice so far!
 | 
			
		||||
 | 
			
		||||
- <https://www.brain-dump.org/projects/abduco/>
 | 
			
		||||
- <https://www.brain-dump.org/projects/dvtm/>
 | 
			
		||||
- <https://github.com/crigler/dtach>
 | 
			
		||||
 | 
			
		||||
## <time>2023-10-11</time> - jellyfin
 | 
			
		||||
 | 
			
		||||
just a quick note to remind myself to check out jellyfin
 | 
			
		||||
 | 
			
		||||
<https://jellyfin.org/>
 | 
			
		||||
 | 
			
		||||
a media server alternative to plex
 | 
			
		||||
that is supposed to be much lighter and more simple
 | 
			
		||||
than plex.
 | 
			
		||||
 | 
			
		||||
## <time>2023-09-29</time> - DeDRM
 | 
			
		||||
 | 
			
		||||
shelled into the pi and curled the latest DeDRM tools release
 | 
			
		||||
 | 
			
		||||
https://github.com/noDRM/DeDRM_tools/releases/tag/v10.0.3
 | 
			
		||||
 | 
			
		||||
but i kept getting an empty file for some reason?
 | 
			
		||||
 | 
			
		||||
no matter, downloaded it to my laptop and `scp`d it
 | 
			
		||||
 | 
			
		||||
unzipped it on the pi and
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
calibre-customize --add DeDRM.zip
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
it wasn't working at that point because i didn't have any keys defined in the `dedrm.json` so I `scp`d my config json from my laptop to `.config/calibre/plugins/DeDRM`.  at this point, i'm still unable to open the book after adding it via the web ui.  but when i `calibredb --add book.epub --with-library=books --duplicates` on the pi terminal, it adds it. (`--duplicates` is necessary only in this test instance because---oops!---turns out i already have this book in my library, but i am determined to use this opportunity to set up DeDRM. i will delete the duplicate later.)  I can't verify in the web ui though because it's not showing the duplicate.  must have merged it with the old one.
 | 
			
		||||
 | 
			
		||||
oh well. i'll try it again next time i get a book from the library. shortest wait: currently 6 weeks.
 | 
			
		||||
 | 
			
		||||
actually no, let's just go checkout an Available Now book.  Song of Achilles.  I liked Circe.  Let's get this one.
 | 
			
		||||
 | 
			
		||||
- confirmed: can add the book via web ui, but not open or read it because of drm
 | 
			
		||||
 | 
			
		||||
- confirmed: can scp the book to the pi, `calibre add book.epub --with-library=books` and get an `Added book ids: <id>` message 
 | 
			
		||||
 | 
			
		||||
- confirmed: new book does NOT show up in web ui after killing and restarting the daemon
 | 
			
		||||
 | 
			
		||||
- confirmed: the book IS there:
 | 
			
		||||
 | 
			
		||||
        ```
 | 
			
		||||
        $ calibredb list --search='id:3' --with-library=books
 | 
			
		||||
        id title                authors
 | 
			
		||||
        3 The Song of Achilles Madeline Miller
 | 
			
		||||
        $ #wtf
 | 
			
		||||
        ```
 | 
			
		||||
 | 
			
		||||
what the hell. does `calibre-server` has a db cache or something?  i don't see anything
 | 
			
		||||
 | 
			
		||||
https://manual.calibre-ebook.com/generated/en/calibre-server.html
 | 
			
		||||
 | 
			
		||||
i give up for now
 | 
			
		||||
 | 
			
		||||
~
 | 
			
		||||
 | 
			
		||||
to kill the process:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
ps aux | grep calibre
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
and then kill the id
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
removing the dulplicate:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
calibredb search 'title:"world we make"' --with-library=books
 | 
			
		||||
> 1,2
 | 
			
		||||
calibredb list --search 'id:2' --with-library=books
 | 
			
		||||
> (book info)
 | 
			
		||||
calibredb list --search 'id:1' --with-library=books
 | 
			
		||||
> (book info)
 | 
			
		||||
calibredb remove 2
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
tags: #calibre #drm
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## <time>2023-09-29</time> - reboot
 | 
			
		||||
 | 
			
		||||
been uploading photos and books, and editing metadata for my rpgs.
 | 
			
		||||
 | 
			
		||||
pi became unresponsive last night / this morning to web and ssh so rebooted this morning and restarted web services. everything seems to be fine now.
 | 
			
		||||
 | 
			
		||||
found these resources recently and consider them next steps on my todo list:
 | 
			
		||||
 | 
			
		||||
- Add deDRM tools for CLI so I can upload library books. I can pretty much delete local calibre after this. https://github.com/noDRM/DeDRM_tools/blob/master/CALIBRE_CLI_INSTRUCTIONS.md
 | 
			
		||||
 | 
			
		||||
- Be your own CA Authority! which initially sounds to me like not that good of an idea, but then I can use `https` for my local webservices. https://jamielinux.com/docs/openssl-certificate-authority/
 | 
			
		||||
 | 
			
		||||
- still want to install a reverse proxy (lapis + openresty?) so i can hit canonical urls instead of typing in address + port number. this would make it easier to share URLs with household members. NOTE: do i want a local DNS server??
 | 
			
		||||
 | 
			
		||||
Incidentally, mDNS seemed to just magically start working on its self at some point. I can hit my pi's url on macbook and on my phone now. weeeeeird
 | 
			
		||||
 | 
			
		||||
tags: #reboot #mdns
 | 
			
		||||
 | 
			
		||||
## <time>2023-09-13</time> - rpg library
 | 
			
		||||
 | 
			
		||||
tried searching for an rpg that i know is in my collection and couldn't find it by title or by author.
 | 
			
		||||
this is going to be really painful until i update the metadata on everything.
 | 
			
		||||
i've done about 60 so far. out of 1.4k. big yikes!
 | 
			
		||||
 | 
			
		||||
tags: #calibre #rpg #metadata
 | 
			
		||||
 | 
			
		||||
## <time>2023-09-12</time> - mDNS
 | 
			
		||||
 | 
			
		||||
still can't hit any multi DNS urls on any of my devices.
 | 
			
		||||
 | 
			
		||||
not a solution but a workaround (for desktop only): added a line to `/etc/hosts` on my MBP:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
192.168.0.83  pi.local
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
and now i can hit e.g. calibre with http://pi.local:8080
 | 
			
		||||
 | 
			
		||||
maybe i can configure something on my actual router?
 | 
			
		||||
 | 
			
		||||
tags: #mdns
 | 
			
		||||
 | 
			
		||||
## <time>2023-09-11</time> - miniflux
 | 
			
		||||
 | 
			
		||||
rss reader!
 | 
			
		||||
 | 
			
		||||
one thing i would like to be able to do
 | 
			
		||||
is to read my rss feeds on my computer
 | 
			
		||||
and on my phone
 | 
			
		||||
and on my tablet,
 | 
			
		||||
and have my un/read status sync between decives.
 | 
			
		||||
 | 
			
		||||
which i guess means hosting a feed reader!
 | 
			
		||||
 | 
			
		||||
i glanced at `awesome-selfhosted`
 | 
			
		||||
and then asked some of my friends in the basement
 | 
			
		||||
because i know that they have already undertaken
 | 
			
		||||
great adventures in rss,
 | 
			
		||||
trailblazers that they are.
 | 
			
		||||
 | 
			
		||||
and they recommended miniflux.
 | 
			
		||||
 | 
			
		||||
written in go, and it uses postgres.
 | 
			
		||||
luckily they have a docker image so i don't have to install either.
 | 
			
		||||
the docker-compose file on their installation instructions is a little out of date,
 | 
			
		||||
but you can find a more correct 'basic.yml' on github at `miniflux/v2`
 | 
			
		||||
 | 
			
		||||
after a few tweaks,
 | 
			
		||||
it is installed and running!
 | 
			
		||||
 | 
			
		||||
the ui is super minimal.
 | 
			
		||||
i'm sure i'll grow to like it,
 | 
			
		||||
but at the moment
 | 
			
		||||
i am missing the classic
 | 
			
		||||
three-pane "feeds / entries / content" view.
 | 
			
		||||
 | 
			
		||||
Up next:
 | 
			
		||||
 | 
			
		||||
- gemini/gopher server? just for fun
 | 
			
		||||
- nginx reverse proxy: i have three services running on three ports now. i want a proxy for more easiy routing between these. i choose nginx because lua, so i can fennel
 | 
			
		||||
 | 
			
		||||
tags: #rss #feeds #miniflux
 | 
			
		||||
 | 
			
		||||
## <time>2023-09-08</time> - calibre
 | 
			
		||||
 | 
			
		||||
had to add the upstream debian bullseye repo to install `calibre-server`. (and then remove it.) got the web server up and running pretty easy.
 | 
			
		||||
 | 
			
		||||
fussed around for a while trying to make a second calibre library out of my rpg collection. here's what ended up working:
 | 
			
		||||
create a new dir and then `calibredb add path/to/file.pdf --library-path new/library/location`. adding a single file this way created the necessary database file. then i was able to `find rpgsbak -type f -name '*.pdf' -exec -I {} calibredb add {} --library-path new/library/loction`. (or something like that; wrote the command just now from memory.) and pull all my pdfs in!
 | 
			
		||||
 | 
			
		||||
so now i have 1.4k pdfs in a new 'rpgs' library alongside my 'books' library.
 | 
			
		||||
 | 
			
		||||
on the whole, hobby ttrpg creators can stand to get a LOT better at exporting metadata with their pdfs. now i have a whole lot of manual updating to do. but i can read books and pdfs now from my calibre library on any device on the network.
 | 
			
		||||
 | 
			
		||||
also adding new items via the web ui is pretty easy!
 | 
			
		||||
 | 
			
		||||
TODO: disable converting to epub on 'read' for rpg library. 'download' to read still works great for reading in the meantime.
 | 
			
		||||
 | 
			
		||||
tags: #calibre
 | 
			
		||||
 | 
			
		||||
## <time>2023-09-03</time> - photoprism
 | 
			
		||||
 | 
			
		||||
browsed the photo hosting options on `awesome-selfhosted` on github and decided on photoprism
 | 
			
		||||
 | 
			
		||||
it has a docker image and i was able to get it working no problem, with no modifications. quick and easy. this is the future containers promised us.
 | 
			
		||||
 | 
			
		||||
the ui is slow. i have the number of workers cranked down to 1. might bump it to 2.
 | 
			
		||||
 | 
			
		||||
i had been rsyncing photos to the pi and then reindexing the collection. but i'm finding it quicker to do a bulk upload using the web ui. it's working rather reliably. it still has to reindex on upload, but i no longer have to reindex the entire collection.
 | 
			
		||||
 | 
			
		||||
tags: #photos #photoprism
 | 
			
		||||
 | 
			
		||||
## <time>2023-08-30</time> - git
 | 
			
		||||
 | 
			
		||||
Add a "git" user. Create a home dir for it. Do `git init --bare repo.git`.
 | 
			
		||||
 | 
			
		||||
Copy my ssh key over and add an entry to `.ssh/config`:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
  21   │ Host git
 | 
			
		||||
  22   │ Hostname 192.168.0.83
 | 
			
		||||
  23   │ User git
 | 
			
		||||
  24   │ IdentityFile ~/.ssh/id_rsa
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Now I can `git remote add pi git:repo.git` in a local repo and push away!
 | 
			
		||||
 | 
			
		||||
tags: #git
 | 
			
		||||
 | 
			
		||||
## <time>2023-08-28</time> - Hello World
 | 
			
		||||
 | 
			
		||||
Okay let's get this party started!
 | 
			
		||||
 | 
			
		||||
I have a raspberry pi model 3b that has been gathering dust in a drawer for a couple years now.
 | 
			
		||||
 | 
			
		||||
I decided I wanted to dust it off and use it to backup some photos and some files.
 | 
			
		||||
 | 
			
		||||
I bought a 4TB external hard drive and a 128gb microSD card and hooked it all up.
 | 
			
		||||
 | 
			
		||||
I downloaded the NOOBS installer from raspberrypi.com/software and installed it on the SD card, which I was able to do because I have a ton of dongles thanks to the fact that my MacbookPro has no peripherals. I popped the card in to the pi, connected my usb keyboard and hdmi monitor and booted it up, and went through the setup.
 | 
			
		||||
 | 
			
		||||
Then, after testing that I can ssh into the pi, I unplugged my keyboard and monitor and never plugged them back in again.
 | 
			
		||||
 | 
			
		||||
Plugged in my hard drive and formatted it with an ext3 filesystem.
 | 
			
		||||
 | 
			
		||||
Created a backup user. (Not a spare user in case of emergencies, but a user specifically for creating backups.)
 | 
			
		||||
 | 
			
		||||
Copied my ssh keys over:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
ssh-copy-id -i ~/.ssh/id_rsa pi.local
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Mounted the drive, added it to `/etc/fstab` so it will auto-mount, and added a slight delay to the boot command so that there is time for the drive to mount before the system boots. As suggested here:
 | 
			
		||||
 | 
			
		||||
<https://howtoforge.com/tutorial/raspberry-pi-as-backup-server-for-linux-and-windows/>
 | 
			
		||||
 | 
			
		||||
Copied over my first photo export and my calibre library with an `rsync -zaP`.
 | 
			
		||||
 | 
			
		||||
Messed around with mDNS and avahi-daemon because I can't hit http://pi.local in the browser. Still haven't figured this out.
 | 
			
		||||
 | 
			
		||||
tags: #mdns #getting-started
 | 
			
		||||
<!-- END //-->
 | 
			
		||||
							
								
								
									
										13
									
								
								templates/feeditem.template
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								templates/feeditem.template
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,13 @@
 | 
			
		||||
<item>
 | 
			
		||||
  <title>{{title}}</title>
 | 
			
		||||
  <link>http://tilde.town/~dozens/piblog/index.html</link>
 | 
			
		||||
  <guid isPermaLink="false">{{time}} {{title}}</guid>
 | 
			
		||||
  <pubDate>syscmd(`gdate -d {{time}}')</pubDate>
 | 
			
		||||
  <description>
 | 
			
		||||
    <![CDATA[
 | 
			
		||||
changequote({%,%})dnl Or else `code blocks` confuse m4
 | 
			
		||||
{{note}}
 | 
			
		||||
changequote`'dnl change quotes `back to default'
 | 
			
		||||
    ]]>
 | 
			
		||||
  </description>
 | 
			
		||||
</item>
 | 
			
		||||
							
								
								
									
										1
									
								
								templates/header-includes.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								templates/header-includes.html
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
  <link rel="alternate" type="application/rss+xml" href="http://tilde.town/~dozens/piblog/feed.xml" title="dozens pi blog">
 | 
			
		||||
							
								
								
									
										359
									
								
								www/feed.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										359
									
								
								www/feed.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,359 @@
 | 
			
		||||
<rss version="2.0"><channel><title>piblog</title>
 | 
			
		||||
<link>http://tilde.town/~dozens/piblog/index.html</link><description>just a little log about my raspberry pi</description><atom:link rel="self" type="application/rss+xml" href="http://tilde.town/~dozens/piblog/feed.xml"/>
 | 
			
		||||
<item>
 | 
			
		||||
  <title>audiobooks</title>
 | 
			
		||||
  <link>http://tilde.town/~dozens/piblog/index.html</link>
 | 
			
		||||
  <guid isPermaLink="false">2023-11-13 audiobooks</guid>
 | 
			
		||||
  <pubDate>Mon Nov 13 00:00:00 MST 2023
 | 
			
		||||
</pubDate>
 | 
			
		||||
  <description>
 | 
			
		||||
    <![CDATA[
 | 
			
		||||
 | 
			
		||||
<p>okay so tomasino reminded me today that i used to love listening to audiobooks.</p>
 | 
			
		||||
<p>https://labs.tomasino.org/audiobooks/</p>
 | 
			
		||||
<p>but i haven’t done it as fanatically as i used to in a long time.
 | 
			
		||||
for a while, i didn’t have a commute.
 | 
			
		||||
and now i do, but i often carpool.
 | 
			
		||||
but sometimes i have a solo, quiet commute.
 | 
			
		||||
ideal for some audiobooks!</p>
 | 
			
		||||
<p>further complications:
 | 
			
		||||
i am unable to download and archive audiobooks from overdrive the same way i used to be able to.
 | 
			
		||||
because they barely support their desktop apps anymore,
 | 
			
		||||
and instead push really hard for everybody to use their streaming apps.</p>
 | 
			
		||||
<p>but i learned that if i spoof my user-agent</p>
 | 
			
		||||
<p>https://addons.mozilla.org/en-US/firefox/addon/user-agent-string-switcher/</p>
 | 
			
		||||
<p>then i can get a ‘Have overdrive for mac/windows?’ link upon checkout
 | 
			
		||||
that will enable me to download the odm file.
 | 
			
		||||
which i can then use to download the mp3s thanks to this special little script.</p>
 | 
			
		||||
<p>https://github.com/jamestomasino/dotfiles-minimal/blob/master/bin/overdrive</p>
 | 
			
		||||
<p>so that’s great!
 | 
			
		||||
while i was troubleshooting all of this,
 | 
			
		||||
i downloaded a book to my linux laptop,
 | 
			
		||||
because the download link is already readily available there,
 | 
			
		||||
and then transferred it over to the pi.</p>
 | 
			
		||||
<p>so now i guess i’m going to start collecting and archiving audiobooks on the pi too!
 | 
			
		||||
i might look into jellyfin in earnest so i can serve them
 | 
			
		||||
and download them over my home network.</p>
 | 
			
		||||
<p>i might also have to start really considering a vpn
 | 
			
		||||
so i can access my files away from the house.</p>
 | 
			
		||||
    ]]>
 | 
			
		||||
  </description>
 | 
			
		||||
</item>
 | 
			
		||||
<item>
 | 
			
		||||
  <title>add email to calibre-web</title>
 | 
			
		||||
  <link>http://tilde.town/~dozens/piblog/index.html</link>
 | 
			
		||||
  <guid isPermaLink="false">2023-11-07 add email to calibre-web</guid>
 | 
			
		||||
  <pubDate>Tue Nov  7 00:00:00 MST 2023
 | 
			
		||||
</pubDate>
 | 
			
		||||
  <description>
 | 
			
		||||
    <![CDATA[
 | 
			
		||||
 | 
			
		||||
<p>just a quick note to look into configuring email for calibre-web
 | 
			
		||||
so i can send books direct to my kindle</p>
 | 
			
		||||
<p>whoa this fork looks really great
 | 
			
		||||
compared to what i have</p>
 | 
			
		||||
<p><a href="https://github.com/janeczku/calibre-web">https://github.com/janeczku/calibre-web</a></p>
 | 
			
		||||
<p>the ui looks good
 | 
			
		||||
and it has single click send to e-mail
 | 
			
		||||
and also “Magic Link” login for easy access on eReaders..
 | 
			
		||||
that’s great.</p>
 | 
			
		||||
<p>what is that i’m running?</p>
 | 
			
		||||
<p>just the base <code>calibre-server</code> that comes with the calibre package in apt.</p>
 | 
			
		||||
<p>okay new goal: install and run <code>calibre-web</code>,
 | 
			
		||||
and stop using <code>calibre-server</code>?</p>
 | 
			
		||||
    ]]>
 | 
			
		||||
  </description>
 | 
			
		||||
</item>
 | 
			
		||||
<item>
 | 
			
		||||
  <title>abduco + dvtm = tmux replacement?</title>
 | 
			
		||||
  <link>http://tilde.town/~dozens/piblog/index.html</link>
 | 
			
		||||
  <guid isPermaLink="false">2023-10-28 abduco + dvtm = tmux replacement?</guid>
 | 
			
		||||
  <pubDate>Sat Oct 28 00:00:00 MDT 2023
 | 
			
		||||
</pubDate>
 | 
			
		||||
  <description>
 | 
			
		||||
    <![CDATA[
 | 
			
		||||
 | 
			
		||||
<p>i can’t remember how i fell down this rabbit hole..
 | 
			
		||||
i think it’s because elly had been talking about dtach over on #tildetown,
 | 
			
		||||
which is a utility that just provides the attach/detach
 | 
			
		||||
functionality of tmux.</p>
 | 
			
		||||
<p>so anyway i started using abduco + dvtm on my pi
 | 
			
		||||
just to test it out
 | 
			
		||||
and see what it was like
 | 
			
		||||
and i quite like it!
 | 
			
		||||
dvtm especially is kind of nice
 | 
			
		||||
as a tiling window manager for the terminal.</p>
 | 
			
		||||
<p>abduco isn’t in the package repository at work,
 | 
			
		||||
but i started using dtach + dvtm this week.
 | 
			
		||||
we’ll see if i stick with it.
 | 
			
		||||
pretty nice so far!</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="https://www.brain-dump.org/projects/abduco/">https://www.brain-dump.org/projects/abduco/</a></li>
 | 
			
		||||
<li><a href="https://www.brain-dump.org/projects/dvtm/">https://www.brain-dump.org/projects/dvtm/</a></li>
 | 
			
		||||
<li><a href="https://github.com/crigler/dtach">https://github.com/crigler/dtach</a></li>
 | 
			
		||||
</ul>
 | 
			
		||||
    ]]>
 | 
			
		||||
  </description>
 | 
			
		||||
</item>
 | 
			
		||||
<item>
 | 
			
		||||
  <title>jellyfin</title>
 | 
			
		||||
  <link>http://tilde.town/~dozens/piblog/index.html</link>
 | 
			
		||||
  <guid isPermaLink="false">2023-10-11 jellyfin</guid>
 | 
			
		||||
  <pubDate>Wed Oct 11 00:00:00 MDT 2023
 | 
			
		||||
</pubDate>
 | 
			
		||||
  <description>
 | 
			
		||||
    <![CDATA[
 | 
			
		||||
 | 
			
		||||
<p>just a quick note to remind myself to check out jellyfin</p>
 | 
			
		||||
<p><a href="https://jellyfin.org/">https://jellyfin.org/</a></p>
 | 
			
		||||
<p>a media server alternative to plex
 | 
			
		||||
that is supposed to be much lighter and more simple
 | 
			
		||||
than plex.</p>
 | 
			
		||||
    ]]>
 | 
			
		||||
  </description>
 | 
			
		||||
</item>
 | 
			
		||||
<item>
 | 
			
		||||
  <title>DeDRM</title>
 | 
			
		||||
  <link>http://tilde.town/~dozens/piblog/index.html</link>
 | 
			
		||||
  <guid isPermaLink="false">2023-09-29 DeDRM</guid>
 | 
			
		||||
  <pubDate>Fri Sep 29 00:00:00 MDT 2023
 | 
			
		||||
</pubDate>
 | 
			
		||||
  <description>
 | 
			
		||||
    <![CDATA[
 | 
			
		||||
 | 
			
		||||
<p>shelled into the pi and curled the latest DeDRM tools release</p>
 | 
			
		||||
<p>https://github.com/noDRM/DeDRM_tools/releases/tag/v10.0.3</p>
 | 
			
		||||
<p>but i kept getting an empty file for some reason?</p>
 | 
			
		||||
<p>no matter, downloaded it to my laptop and <code>scp</code>d it</p>
 | 
			
		||||
<p>unzipped it on the pi and</p>
 | 
			
		||||
<p><code>
 | 
			
		||||
calibre-customize --add DeDRM.zip
 | 
			
		||||
</code></p>
 | 
			
		||||
<p>it wasn’t working at that point because i didn’t have any keys defined in the <code>dedrm.json</code> so I <code>scp</code>d my config json from my laptop to <code>.config/calibre/plugins/DeDRM</code>.  at this point, i’m still unable to open the book after adding it via the web ui.  but when i <code>calibredb --add book.epub --with-library=books --duplicates</code> on the pi terminal, it adds it. (<code>--duplicates</code> is necessary only in this test instance because—oops!—turns out i already have this book in my library, but i am determined to use this opportunity to set up DeDRM. i will delete the duplicate later.)  I can’t verify in the web ui though because it’s not showing the duplicate.  must have merged it with the old one.</p>
 | 
			
		||||
<p>oh well. i’ll try it again next time i get a book from the library. shortest wait: currently 6 weeks.</p>
 | 
			
		||||
<p>actually no, let’s just go checkout an Available Now book.  Song of Achilles.  I liked Circe.  Let’s get this one.</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><p>confirmed: can add the book via web ui, but not open or read it because of drm</p></li>
 | 
			
		||||
<li><p>confirmed: can scp the book to the pi, <code>calibre add book.epub --with-library=books</code> and get an <code>Added book ids: <id></code> message</p></li>
 | 
			
		||||
<li><p>confirmed: new book does NOT show up in web ui after killing and restarting the daemon</p></li>
 | 
			
		||||
<li><p>confirmed: the book IS there:</p>
 | 
			
		||||
<pre><code>  ```
 | 
			
		||||
  $ calibredb list --search='id:3' --with-library=books
 | 
			
		||||
  id title                authors
 | 
			
		||||
  3 The Song of Achilles Madeline Miller
 | 
			
		||||
  $ #wtf
 | 
			
		||||
  ```
 | 
			
		||||
</code></pre></li>
 | 
			
		||||
</ul>
 | 
			
		||||
<p>what the hell. does <code>calibre-server</code> has a db cache or something?  i don’t see anything</p>
 | 
			
		||||
<p>https://manual.calibre-ebook.com/generated/en/calibre-server.html</p>
 | 
			
		||||
<p>i give up for now</p>
 | 
			
		||||
<p>~</p>
 | 
			
		||||
<p>to kill the process:</p>
 | 
			
		||||
<p><code>
 | 
			
		||||
ps aux | grep calibre
 | 
			
		||||
</code></p>
 | 
			
		||||
<p>and then kill the id</p>
 | 
			
		||||
<p>removing the dulplicate:</p>
 | 
			
		||||
<p>```
 | 
			
		||||
calibredb search ‘title:“world we make”’ –with-library=books</p>
 | 
			
		||||
<blockquote><p>1,2
 | 
			
		||||
calibredb list –search ‘id:2’ –with-library=books
 | 
			
		||||
(book info)
 | 
			
		||||
calibredb list –search ‘id:1’ –with-library=books
 | 
			
		||||
(book info)
 | 
			
		||||
calibredb remove 2
 | 
			
		||||
```</p></blockquote>
 | 
			
		||||
<p>tags: #calibre #drm</p>
 | 
			
		||||
    ]]>
 | 
			
		||||
  </description>
 | 
			
		||||
</item>
 | 
			
		||||
<item>
 | 
			
		||||
  <title>reboot</title>
 | 
			
		||||
  <link>http://tilde.town/~dozens/piblog/index.html</link>
 | 
			
		||||
  <guid isPermaLink="false">2023-09-29 reboot</guid>
 | 
			
		||||
  <pubDate>Fri Sep 29 00:00:00 MDT 2023
 | 
			
		||||
</pubDate>
 | 
			
		||||
  <description>
 | 
			
		||||
    <![CDATA[
 | 
			
		||||
 | 
			
		||||
<p>been uploading photos and books, and editing metadata for my rpgs.</p>
 | 
			
		||||
<p>pi became unresponsive last night / this morning to web and ssh so rebooted this morning and restarted web services. everything seems to be fine now.</p>
 | 
			
		||||
<p>found these resources recently and consider them next steps on my todo list:</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><p>Add deDRM tools for CLI so I can upload library books. I can pretty much delete local calibre after this. https://github.com/noDRM/DeDRM_tools/blob/master/CALIBRE_CLI_INSTRUCTIONS.md</p></li>
 | 
			
		||||
<li><p>Be your own CA Authority! which initially sounds to me like not that good of an idea, but then I can use <code>https</code> for my local webservices. https://jamielinux.com/docs/openssl-certificate-authority/</p></li>
 | 
			
		||||
<li><p>still want to install a reverse proxy (lapis + openresty?) so i can hit canonical urls instead of typing in address + port number. this would make it easier to share URLs with household members. NOTE: do i want a local DNS server??</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
<p>Incidentally, mDNS seemed to just magically start working on its self at some point. I can hit my pi’s url on macbook and on my phone now. weeeeeird</p>
 | 
			
		||||
<p>tags: #reboot #mdns</p>
 | 
			
		||||
    ]]>
 | 
			
		||||
  </description>
 | 
			
		||||
</item>
 | 
			
		||||
<item>
 | 
			
		||||
  <title>rpg library</title>
 | 
			
		||||
  <link>http://tilde.town/~dozens/piblog/index.html</link>
 | 
			
		||||
  <guid isPermaLink="false">2023-09-13 rpg library</guid>
 | 
			
		||||
  <pubDate>Wed Sep 13 00:00:00 MDT 2023
 | 
			
		||||
</pubDate>
 | 
			
		||||
  <description>
 | 
			
		||||
    <![CDATA[
 | 
			
		||||
 | 
			
		||||
<p>tried searching for an rpg that i know is in my collection and couldn’t find it by title or by author.
 | 
			
		||||
this is going to be really painful until i update the metadata on everything.
 | 
			
		||||
i’ve done about 60 so far. out of 1.4k. big yikes!</p>
 | 
			
		||||
<p>tags: #calibre #rpg #metadata</p>
 | 
			
		||||
    ]]>
 | 
			
		||||
  </description>
 | 
			
		||||
</item>
 | 
			
		||||
<item>
 | 
			
		||||
  <title>mDNS</title>
 | 
			
		||||
  <link>http://tilde.town/~dozens/piblog/index.html</link>
 | 
			
		||||
  <guid isPermaLink="false">2023-09-12 mDNS</guid>
 | 
			
		||||
  <pubDate>Tue Sep 12 00:00:00 MDT 2023
 | 
			
		||||
</pubDate>
 | 
			
		||||
  <description>
 | 
			
		||||
    <![CDATA[
 | 
			
		||||
 | 
			
		||||
<p>still can’t hit any multi DNS urls on any of my devices.</p>
 | 
			
		||||
<p>not a solution but a workaround (for desktop only): added a line to <code>/etc/hosts</code> on my MBP:</p>
 | 
			
		||||
<p><code>
 | 
			
		||||
192.168.0.83  pi.local
 | 
			
		||||
</code></p>
 | 
			
		||||
<p>and now i can hit e.g. calibre with http://pi.local:8080</p>
 | 
			
		||||
<p>maybe i can configure something on my actual router?</p>
 | 
			
		||||
<p>tags: #mdns</p>
 | 
			
		||||
    ]]>
 | 
			
		||||
  </description>
 | 
			
		||||
</item>
 | 
			
		||||
<item>
 | 
			
		||||
  <title>miniflux</title>
 | 
			
		||||
  <link>http://tilde.town/~dozens/piblog/index.html</link>
 | 
			
		||||
  <guid isPermaLink="false">2023-09-11 miniflux</guid>
 | 
			
		||||
  <pubDate>Mon Sep 11 00:00:00 MDT 2023
 | 
			
		||||
</pubDate>
 | 
			
		||||
  <description>
 | 
			
		||||
    <![CDATA[
 | 
			
		||||
 | 
			
		||||
<p>rss reader!</p>
 | 
			
		||||
<p>one thing i would like to be able to do
 | 
			
		||||
is to read my rss feeds on my computer
 | 
			
		||||
and on my phone
 | 
			
		||||
and on my tablet,
 | 
			
		||||
and have my un/read status sync between decives.</p>
 | 
			
		||||
<p>which i guess means hosting a feed reader!</p>
 | 
			
		||||
<p>i glanced at <code>awesome-selfhosted</code>
 | 
			
		||||
and then asked some of my friends in the basement
 | 
			
		||||
because i know that they have already undertaken
 | 
			
		||||
great adventures in rss,
 | 
			
		||||
trailblazers that they are.</p>
 | 
			
		||||
<p>and they recommended miniflux.</p>
 | 
			
		||||
<p>written in go, and it uses postgres.
 | 
			
		||||
luckily they have a docker image so i don’t have to install either.
 | 
			
		||||
the docker-compose file on their installation instructions is a little out of date,
 | 
			
		||||
but you can find a more correct ‘basic.yml’ on github at <code>miniflux/v2</code></p>
 | 
			
		||||
<p>after a few tweaks,
 | 
			
		||||
it is installed and running!</p>
 | 
			
		||||
<p>the ui is super minimal.
 | 
			
		||||
i’m sure i’ll grow to like it,
 | 
			
		||||
but at the moment
 | 
			
		||||
i am missing the classic
 | 
			
		||||
three-pane “feeds / entries / content” view.</p>
 | 
			
		||||
<p>Up next:</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>gemini/gopher server? just for fun</li>
 | 
			
		||||
<li>nginx reverse proxy: i have three services running on three ports now. i want a proxy for more easiy routing between these. i choose nginx because lua, so i can fennel</li>
 | 
			
		||||
</ul>
 | 
			
		||||
<p>tags: #rss #feeds #miniflux</p>
 | 
			
		||||
    ]]>
 | 
			
		||||
  </description>
 | 
			
		||||
</item>
 | 
			
		||||
<item>
 | 
			
		||||
  <title>calibre</title>
 | 
			
		||||
  <link>http://tilde.town/~dozens/piblog/index.html</link>
 | 
			
		||||
  <guid isPermaLink="false">2023-09-08 calibre</guid>
 | 
			
		||||
  <pubDate>Fri Sep  8 00:00:00 MDT 2023
 | 
			
		||||
</pubDate>
 | 
			
		||||
  <description>
 | 
			
		||||
    <![CDATA[
 | 
			
		||||
 | 
			
		||||
<p>had to add the upstream debian bullseye repo to install <code>calibre-server</code>. (and then remove it.) got the web server up and running pretty easy.</p>
 | 
			
		||||
<p>fussed around for a while trying to make a second calibre library out of my rpg collection. here’s what ended up working:
 | 
			
		||||
create a new dir and then <code>calibredb add path/to/file.pdf --library-path new/library/location</code>. adding a single file this way created the necessary database file. then i was able to <code>find rpgsbak -type f -name '*.pdf' -exec -I {} calibredb add {} --library-path new/library/loction</code>. (or something like that; wrote the command just now from memory.) and pull all my pdfs in!</p>
 | 
			
		||||
<p>so now i have 1.4k pdfs in a new ‘rpgs’ library alongside my ‘books’ library.</p>
 | 
			
		||||
<p>on the whole, hobby ttrpg creators can stand to get a LOT better at exporting metadata with their pdfs. now i have a whole lot of manual updating to do. but i can read books and pdfs now from my calibre library on any device on the network.</p>
 | 
			
		||||
<p>also adding new items via the web ui is pretty easy!</p>
 | 
			
		||||
<p>TODO: disable converting to epub on ‘read’ for rpg library. ‘download’ to read still works great for reading in the meantime.</p>
 | 
			
		||||
<p>tags: #calibre</p>
 | 
			
		||||
    ]]>
 | 
			
		||||
  </description>
 | 
			
		||||
</item>
 | 
			
		||||
<item>
 | 
			
		||||
  <title>photoprism</title>
 | 
			
		||||
  <link>http://tilde.town/~dozens/piblog/index.html</link>
 | 
			
		||||
  <guid isPermaLink="false">2023-09-03 photoprism</guid>
 | 
			
		||||
  <pubDate>Sun Sep  3 00:00:00 MDT 2023
 | 
			
		||||
</pubDate>
 | 
			
		||||
  <description>
 | 
			
		||||
    <![CDATA[
 | 
			
		||||
 | 
			
		||||
<p>browsed the photo hosting options on <code>awesome-selfhosted</code> on github and decided on photoprism</p>
 | 
			
		||||
<p>it has a docker image and i was able to get it working no problem, with no modifications. quick and easy. this is the future containers promised us.</p>
 | 
			
		||||
<p>the ui is slow. i have the number of workers cranked down to 1. might bump it to 2.</p>
 | 
			
		||||
<p>i had been rsyncing photos to the pi and then reindexing the collection. but i’m finding it quicker to do a bulk upload using the web ui. it’s working rather reliably. it still has to reindex on upload, but i no longer have to reindex the entire collection.</p>
 | 
			
		||||
<p>tags: #photos #photoprism</p>
 | 
			
		||||
    ]]>
 | 
			
		||||
  </description>
 | 
			
		||||
</item>
 | 
			
		||||
<item>
 | 
			
		||||
  <title>git</title>
 | 
			
		||||
  <link>http://tilde.town/~dozens/piblog/index.html</link>
 | 
			
		||||
  <guid isPermaLink="false">2023-08-30 git</guid>
 | 
			
		||||
  <pubDate>Wed Aug 30 00:00:00 MDT 2023
 | 
			
		||||
</pubDate>
 | 
			
		||||
  <description>
 | 
			
		||||
    <![CDATA[
 | 
			
		||||
 | 
			
		||||
<p>Add a “git” user. Create a home dir for it. Do <code>git init --bare repo.git</code>.</p>
 | 
			
		||||
<p>Copy my ssh key over and add an entry to <code>.ssh/config</code>:</p>
 | 
			
		||||
<p><code>
 | 
			
		||||
  21   │ Host git
 | 
			
		||||
  22   │ Hostname 192.168.0.83
 | 
			
		||||
  23   │ User git
 | 
			
		||||
  24   │ IdentityFile ~/.ssh/id_rsa
 | 
			
		||||
</code></p>
 | 
			
		||||
<p>Now I can <code>git remote add pi git:repo.git</code> in a local repo and push away!</p>
 | 
			
		||||
<p>tags: #git</p>
 | 
			
		||||
    ]]>
 | 
			
		||||
  </description>
 | 
			
		||||
</item>
 | 
			
		||||
<item>
 | 
			
		||||
  <title>Hello World</title>
 | 
			
		||||
  <link>http://tilde.town/~dozens/piblog/index.html</link>
 | 
			
		||||
  <guid isPermaLink="false">2023-08-28 Hello World</guid>
 | 
			
		||||
  <pubDate>Mon Aug 28 00:00:00 MDT 2023
 | 
			
		||||
</pubDate>
 | 
			
		||||
  <description>
 | 
			
		||||
    <![CDATA[
 | 
			
		||||
 | 
			
		||||
<p>Okay let’s get this party started!</p>
 | 
			
		||||
<p>I have a raspberry pi model 3b that has been gathering dust in a drawer for a couple years now.</p>
 | 
			
		||||
<p>I decided I wanted to dust it off and use it to backup some photos and some files.</p>
 | 
			
		||||
<p>I bought a 4TB external hard drive and a 128gb microSD card and hooked it all up.</p>
 | 
			
		||||
<p>I downloaded the NOOBS installer from raspberrypi.com/software and installed it on the SD card, which I was able to do because I have a ton of dongles thanks to the fact that my MacbookPro has no peripherals. I popped the card in to the pi, connected my usb keyboard and hdmi monitor and booted it up, and went through the setup.</p>
 | 
			
		||||
<p>Then, after testing that I can ssh into the pi, I unplugged my keyboard and monitor and never plugged them back in again.</p>
 | 
			
		||||
<p>Plugged in my hard drive and formatted it with an ext3 filesystem.</p>
 | 
			
		||||
<p>Created a backup user. (Not a spare user in case of emergencies, but a user specifically for creating backups.)</p>
 | 
			
		||||
<p>Copied my ssh keys over:</p>
 | 
			
		||||
<p><code>
 | 
			
		||||
ssh-copy-id -i ~/.ssh/id_rsa pi.local
 | 
			
		||||
</code></p>
 | 
			
		||||
<p>Mounted the drive, added it to <code>/etc/fstab</code> so it will auto-mount, and added a slight delay to the boot command so that there is time for the drive to mount before the system boots. As suggested here:</p>
 | 
			
		||||
<p><a href="https://howtoforge.com/tutorial/raspberry-pi-as-backup-server-for-linux-and-windows/">https://howtoforge.com/tutorial/raspberry-pi-as-backup-server-for-linux-and-windows/</a></p>
 | 
			
		||||
<p>Copied over my first photo export and my calibre library with an <code>rsync -zaP</code>.</p>
 | 
			
		||||
<p>Messed around with mDNS and avahi-daemon because I can’t hit http://pi.local in the browser. Still haven’t figured this out.</p>
 | 
			
		||||
<p>tags: #mdns #getting-started</p>
 | 
			
		||||
    ]]>
 | 
			
		||||
  </description>
 | 
			
		||||
</item>
 | 
			
		||||
</channel></rss>
 | 
			
		||||
							
								
								
									
										513
									
								
								www/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										513
									
								
								www/index.html
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,513 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta charset="utf-8" />
 | 
			
		||||
  <meta name="generator" content="pandoc" />
 | 
			
		||||
  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
 | 
			
		||||
  <meta name="author" content="dozens" />
 | 
			
		||||
  <title>piblog</title>
 | 
			
		||||
  <style>
 | 
			
		||||
    html {
 | 
			
		||||
      color: #1a1a1a;
 | 
			
		||||
      background-color: #fdfdfd;
 | 
			
		||||
    }
 | 
			
		||||
    body {
 | 
			
		||||
      margin: 0 auto;
 | 
			
		||||
      max-width: 36em;
 | 
			
		||||
      padding-left: 50px;
 | 
			
		||||
      padding-right: 50px;
 | 
			
		||||
      padding-top: 50px;
 | 
			
		||||
      padding-bottom: 50px;
 | 
			
		||||
      hyphens: auto;
 | 
			
		||||
      overflow-wrap: break-word;
 | 
			
		||||
      text-rendering: optimizeLegibility;
 | 
			
		||||
      font-kerning: normal;
 | 
			
		||||
    }
 | 
			
		||||
    @media (max-width: 600px) {
 | 
			
		||||
      body {
 | 
			
		||||
        font-size: 0.9em;
 | 
			
		||||
        padding: 12px;
 | 
			
		||||
      }
 | 
			
		||||
      h1 {
 | 
			
		||||
        font-size: 1.8em;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    @media print {
 | 
			
		||||
      html {
 | 
			
		||||
        background-color: white;
 | 
			
		||||
      }
 | 
			
		||||
      body {
 | 
			
		||||
        background-color: transparent;
 | 
			
		||||
        color: black;
 | 
			
		||||
        font-size: 12pt;
 | 
			
		||||
      }
 | 
			
		||||
      p, h2, h3 {
 | 
			
		||||
        orphans: 3;
 | 
			
		||||
        widows: 3;
 | 
			
		||||
      }
 | 
			
		||||
      h2, h3, h4 {
 | 
			
		||||
        page-break-after: avoid;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    p {
 | 
			
		||||
      margin: 1em 0;
 | 
			
		||||
    }
 | 
			
		||||
    a {
 | 
			
		||||
      color: #1a1a1a;
 | 
			
		||||
    }
 | 
			
		||||
    a:visited {
 | 
			
		||||
      color: #1a1a1a;
 | 
			
		||||
    }
 | 
			
		||||
    img {
 | 
			
		||||
      max-width: 100%;
 | 
			
		||||
    }
 | 
			
		||||
    svg {
 | 
			
		||||
      height; auto;
 | 
			
		||||
      max-width: 100%;
 | 
			
		||||
    }
 | 
			
		||||
    h1, h2, h3, h4, h5, h6 {
 | 
			
		||||
      margin-top: 1.4em;
 | 
			
		||||
    }
 | 
			
		||||
    h5, h6 {
 | 
			
		||||
      font-size: 1em;
 | 
			
		||||
      font-style: italic;
 | 
			
		||||
    }
 | 
			
		||||
    h6 {
 | 
			
		||||
      font-weight: normal;
 | 
			
		||||
    }
 | 
			
		||||
    ol, ul {
 | 
			
		||||
      padding-left: 1.7em;
 | 
			
		||||
      margin-top: 1em;
 | 
			
		||||
    }
 | 
			
		||||
    li > ol, li > ul {
 | 
			
		||||
      margin-top: 0;
 | 
			
		||||
    }
 | 
			
		||||
    blockquote {
 | 
			
		||||
      margin: 1em 0 1em 1.7em;
 | 
			
		||||
      padding-left: 1em;
 | 
			
		||||
      border-left: 2px solid #e6e6e6;
 | 
			
		||||
      color: #606060;
 | 
			
		||||
    }
 | 
			
		||||
    code {
 | 
			
		||||
      font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
 | 
			
		||||
      font-size: 85%;
 | 
			
		||||
      margin: 0;
 | 
			
		||||
      hyphens: manual;
 | 
			
		||||
    }
 | 
			
		||||
    pre {
 | 
			
		||||
      margin: 1em 0;
 | 
			
		||||
      overflow: auto;
 | 
			
		||||
    }
 | 
			
		||||
    pre code {
 | 
			
		||||
      padding: 0;
 | 
			
		||||
      overflow: visible;
 | 
			
		||||
      overflow-wrap: normal;
 | 
			
		||||
    }
 | 
			
		||||
    .sourceCode {
 | 
			
		||||
     background-color: transparent;
 | 
			
		||||
     overflow: visible;
 | 
			
		||||
    }
 | 
			
		||||
    hr {
 | 
			
		||||
      background-color: #1a1a1a;
 | 
			
		||||
      border: none;
 | 
			
		||||
      height: 1px;
 | 
			
		||||
      margin: 1em 0;
 | 
			
		||||
    }
 | 
			
		||||
    table {
 | 
			
		||||
      margin: 1em 0;
 | 
			
		||||
      border-collapse: collapse;
 | 
			
		||||
      width: 100%;
 | 
			
		||||
      overflow-x: auto;
 | 
			
		||||
      display: block;
 | 
			
		||||
      font-variant-numeric: lining-nums tabular-nums;
 | 
			
		||||
    }
 | 
			
		||||
    table caption {
 | 
			
		||||
      margin-bottom: 0.75em;
 | 
			
		||||
    }
 | 
			
		||||
    tbody {
 | 
			
		||||
      margin-top: 0.5em;
 | 
			
		||||
      border-top: 1px solid #1a1a1a;
 | 
			
		||||
      border-bottom: 1px solid #1a1a1a;
 | 
			
		||||
    }
 | 
			
		||||
    th {
 | 
			
		||||
      border-top: 1px solid #1a1a1a;
 | 
			
		||||
      padding: 0.25em 0.5em 0.25em 0.5em;
 | 
			
		||||
    }
 | 
			
		||||
    td {
 | 
			
		||||
      padding: 0.125em 0.5em 0.25em 0.5em;
 | 
			
		||||
    }
 | 
			
		||||
    header {
 | 
			
		||||
      margin-bottom: 4em;
 | 
			
		||||
      text-align: center;
 | 
			
		||||
    }
 | 
			
		||||
    #TOC li {
 | 
			
		||||
      list-style: none;
 | 
			
		||||
    }
 | 
			
		||||
    #TOC ul {
 | 
			
		||||
      padding-left: 1.3em;
 | 
			
		||||
    }
 | 
			
		||||
    #TOC > ul {
 | 
			
		||||
      padding-left: 0;
 | 
			
		||||
    }
 | 
			
		||||
    #TOC a:not(:hover) {
 | 
			
		||||
      text-decoration: none;
 | 
			
		||||
    }
 | 
			
		||||
    code{white-space: pre-wrap;}
 | 
			
		||||
    span.smallcaps{font-variant: small-caps;}
 | 
			
		||||
    div.columns{display: flex; gap: min(4vw, 1.5em);}
 | 
			
		||||
    div.column{flex: auto; overflow-x: auto;}
 | 
			
		||||
    div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
 | 
			
		||||
    /* The extra [class] is a hack that increases specificity enough to
 | 
			
		||||
       override a similar rule in reveal.js */
 | 
			
		||||
    ul.task-list[class]{list-style: none;}
 | 
			
		||||
    ul.task-list li input[type="checkbox"] {
 | 
			
		||||
      font-size: inherit;
 | 
			
		||||
      width: 0.8em;
 | 
			
		||||
      margin: 0 0.8em 0.2em -1.6em;
 | 
			
		||||
      vertical-align: middle;
 | 
			
		||||
    }
 | 
			
		||||
    .display.math{display: block; text-align: center; margin: 0.5rem auto;}
 | 
			
		||||
  </style>
 | 
			
		||||
    <link rel="alternate" type="application/rss+xml" href="http://tilde.town/~dozens/piblog/feed.xml" title="dozens pi blog">
 | 
			
		||||
  <!--[if lt IE 9]>
 | 
			
		||||
    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
 | 
			
		||||
  <![endif]-->
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
<header id="title-block-header">
 | 
			
		||||
<h1 class="title">piblog</h1>
 | 
			
		||||
<p class="subtitle">adventures with my raspberry pi</p>
 | 
			
		||||
<p class="author">dozens</p>
 | 
			
		||||
</header>
 | 
			
		||||
<nav id="TOC" role="doc-toc">
 | 
			
		||||
<h2 id="toc-title">entries</h2>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="#about" id="toc-about">about</a></li>
 | 
			
		||||
<li><a href="#audiobooks" id="toc-audiobooks"><time>2023-11-13</time> -
 | 
			
		||||
audiobooks</a></li>
 | 
			
		||||
<li><a href="#add-email-to-calibre-web"
 | 
			
		||||
id="toc-add-email-to-calibre-web"><time>2023-11-07</time> - add email to
 | 
			
		||||
calibre-web</a></li>
 | 
			
		||||
<li><a href="#abduco-dvtm-tmux-replacement"
 | 
			
		||||
id="toc-abduco-dvtm-tmux-replacement"><time>2023-10-28</time> - abduco +
 | 
			
		||||
dvtm = tmux replacement?</a></li>
 | 
			
		||||
<li><a href="#jellyfin" id="toc-jellyfin"><time>2023-10-11</time> -
 | 
			
		||||
jellyfin</a></li>
 | 
			
		||||
<li><a href="#dedrm" id="toc-dedrm"><time>2023-09-29</time> -
 | 
			
		||||
DeDRM</a></li>
 | 
			
		||||
<li><a href="#reboot" id="toc-reboot"><time>2023-09-29</time> -
 | 
			
		||||
reboot</a></li>
 | 
			
		||||
<li><a href="#rpg-library" id="toc-rpg-library"><time>2023-09-13</time>
 | 
			
		||||
- rpg library</a></li>
 | 
			
		||||
<li><a href="#mdns" id="toc-mdns"><time>2023-09-12</time> -
 | 
			
		||||
mDNS</a></li>
 | 
			
		||||
<li><a href="#miniflux" id="toc-miniflux"><time>2023-09-11</time> -
 | 
			
		||||
miniflux</a></li>
 | 
			
		||||
<li><a href="#calibre" id="toc-calibre"><time>2023-09-08</time> -
 | 
			
		||||
calibre</a></li>
 | 
			
		||||
<li><a href="#photoprism" id="toc-photoprism"><time>2023-09-03</time> -
 | 
			
		||||
photoprism</a></li>
 | 
			
		||||
<li><a href="#git" id="toc-git"><time>2023-08-30</time> - git</a></li>
 | 
			
		||||
<li><a href="#hello-world" id="toc-hello-world"><time>2023-08-28</time>
 | 
			
		||||
- Hello World</a></li>
 | 
			
		||||
</ul>
 | 
			
		||||
</nav>
 | 
			
		||||
<h2 id="about">about</h2>
 | 
			
		||||
<p>Hi! This is my journal about my experiences, exploits, and hijinks
 | 
			
		||||
while setting up a raspberry pi homelab. it is a Pi 3 Model B named
 | 
			
		||||
guyute</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>www: tilde.town/~dozens</li>
 | 
			
		||||
<li>email: <a href="mailto:dozens@tilde.team"
 | 
			
		||||
class="email">dozens@tilde.team</a></li>
 | 
			
		||||
<li>fedi: <span class="citation" data-cites="dozens">@dozens</span><span
 | 
			
		||||
class="citation"
 | 
			
		||||
data-cites="tiny.tilde.website">@tiny.tilde.website</span></li>
 | 
			
		||||
<li>irc: dozens on {libera,tilde}.chat</li>
 | 
			
		||||
<li>webring:
 | 
			
		||||
<a href="https://tilde.town/~dozens/webring/dozens/index.html?name=piblog&dir=prev">prev</a>
 | 
			
		||||
<a href="https://tilde.town/~dozens/webring/dozens/index.html">index</a>
 | 
			
		||||
<a href="https://tilde.town/~dozens/webring/dozens/index.html?name=piblog&dir=next">next</a></li>
 | 
			
		||||
</ul>
 | 
			
		||||
<!-- BEGIN //-->
 | 
			
		||||
<h2 id="audiobooks"><time>2023-11-13</time> - audiobooks</h2>
 | 
			
		||||
<p>okay so tomasino reminded me today that i used to love listening to
 | 
			
		||||
audiobooks.</p>
 | 
			
		||||
<p><a href="https://labs.tomasino.org/audiobooks/"
 | 
			
		||||
class="uri">https://labs.tomasino.org/audiobooks/</a></p>
 | 
			
		||||
<p>but i haven’t done it as fanatically as i used to in a long time. for
 | 
			
		||||
a while, i didn’t have a commute. and now i do, but i often carpool. but
 | 
			
		||||
sometimes i have a solo, quiet commute. ideal for some audiobooks!</p>
 | 
			
		||||
<p>further complications: i am unable to download and archive audiobooks
 | 
			
		||||
from overdrive the same way i used to be able to. because they barely
 | 
			
		||||
support their desktop apps anymore, and instead push really hard for
 | 
			
		||||
everybody to use their streaming apps.</p>
 | 
			
		||||
<p>but i learned that if i spoof my user-agent</p>
 | 
			
		||||
<p><a
 | 
			
		||||
href="https://addons.mozilla.org/en-US/firefox/addon/user-agent-string-switcher/"
 | 
			
		||||
class="uri">https://addons.mozilla.org/en-US/firefox/addon/user-agent-string-switcher/</a></p>
 | 
			
		||||
<p>then i can get a ‘Have overdrive for mac/windows?’ link upon checkout
 | 
			
		||||
that will enable me to download the odm file. which i can then use to
 | 
			
		||||
download the mp3s thanks to this special little script.</p>
 | 
			
		||||
<p><a
 | 
			
		||||
href="https://github.com/jamestomasino/dotfiles-minimal/blob/master/bin/overdrive"
 | 
			
		||||
class="uri">https://github.com/jamestomasino/dotfiles-minimal/blob/master/bin/overdrive</a></p>
 | 
			
		||||
<p>so that’s great! while i was troubleshooting all of this, i
 | 
			
		||||
downloaded a book to my linux laptop, because the download link is
 | 
			
		||||
already readily available there, and then transferred it over to the
 | 
			
		||||
pi.</p>
 | 
			
		||||
<p>so now i guess i’m going to start collecting and archiving audiobooks
 | 
			
		||||
on the pi too! i might look into jellyfin in earnest so i can serve them
 | 
			
		||||
and download them over my home network.</p>
 | 
			
		||||
<p>i might also have to start really considering a vpn so i can access
 | 
			
		||||
my files away from the house.</p>
 | 
			
		||||
<h2 id="add-email-to-calibre-web"><time>2023-11-07</time> - add email to
 | 
			
		||||
calibre-web</h2>
 | 
			
		||||
<p>just a quick note to look into configuring email for calibre-web so i
 | 
			
		||||
can send books direct to my kindle</p>
 | 
			
		||||
<p>whoa this fork looks really great compared to what i have</p>
 | 
			
		||||
<p><a href="https://github.com/janeczku/calibre-web"
 | 
			
		||||
class="uri">https://github.com/janeczku/calibre-web</a></p>
 | 
			
		||||
<p>the ui looks good and it has single click send to e-mail and also
 | 
			
		||||
“Magic Link” login for easy access on eReaders.. that’s great.</p>
 | 
			
		||||
<p>what is that i’m running?</p>
 | 
			
		||||
<p>just the base <code>calibre-server</code> that comes with the calibre
 | 
			
		||||
package in apt.</p>
 | 
			
		||||
<p>okay new goal: install and run <code>calibre-web</code>, and stop
 | 
			
		||||
using <code>calibre-server</code>?</p>
 | 
			
		||||
<h2 id="abduco-dvtm-tmux-replacement"><time>2023-10-28</time> - abduco +
 | 
			
		||||
dvtm = tmux replacement?</h2>
 | 
			
		||||
<p>i can’t remember how i fell down this rabbit hole.. i think it’s
 | 
			
		||||
because elly had been talking about dtach over on #tildetown, which is a
 | 
			
		||||
utility that just provides the attach/detach functionality of tmux.</p>
 | 
			
		||||
<p>so anyway i started using abduco + dvtm on my pi just to test it out
 | 
			
		||||
and see what it was like and i quite like it! dvtm especially is kind of
 | 
			
		||||
nice as a tiling window manager for the terminal.</p>
 | 
			
		||||
<p>abduco isn’t in the package repository at work, but i started using
 | 
			
		||||
dtach + dvtm this week. we’ll see if i stick with it. pretty nice so
 | 
			
		||||
far!</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="https://www.brain-dump.org/projects/abduco/"
 | 
			
		||||
class="uri">https://www.brain-dump.org/projects/abduco/</a></li>
 | 
			
		||||
<li><a href="https://www.brain-dump.org/projects/dvtm/"
 | 
			
		||||
class="uri">https://www.brain-dump.org/projects/dvtm/</a></li>
 | 
			
		||||
<li><a href="https://github.com/crigler/dtach"
 | 
			
		||||
class="uri">https://github.com/crigler/dtach</a></li>
 | 
			
		||||
</ul>
 | 
			
		||||
<h2 id="jellyfin"><time>2023-10-11</time> - jellyfin</h2>
 | 
			
		||||
<p>just a quick note to remind myself to check out jellyfin</p>
 | 
			
		||||
<p><a href="https://jellyfin.org/"
 | 
			
		||||
class="uri">https://jellyfin.org/</a></p>
 | 
			
		||||
<p>a media server alternative to plex that is supposed to be much
 | 
			
		||||
lighter and more simple than plex.</p>
 | 
			
		||||
<h2 id="dedrm"><time>2023-09-29</time> - DeDRM</h2>
 | 
			
		||||
<p>shelled into the pi and curled the latest DeDRM tools release</p>
 | 
			
		||||
<p><a href="https://github.com/noDRM/DeDRM_tools/releases/tag/v10.0.3"
 | 
			
		||||
class="uri">https://github.com/noDRM/DeDRM_tools/releases/tag/v10.0.3</a></p>
 | 
			
		||||
<p>but i kept getting an empty file for some reason?</p>
 | 
			
		||||
<p>no matter, downloaded it to my laptop and <code>scp</code>d it</p>
 | 
			
		||||
<p>unzipped it on the pi and</p>
 | 
			
		||||
<pre><code>calibre-customize --add DeDRM.zip</code></pre>
 | 
			
		||||
<p>it wasn’t working at that point because i didn’t have any keys
 | 
			
		||||
defined in the <code>dedrm.json</code> so I <code>scp</code>d my config
 | 
			
		||||
json from my laptop to <code>.config/calibre/plugins/DeDRM</code>. at
 | 
			
		||||
this point, i’m still unable to open the book after adding it via the
 | 
			
		||||
web ui. but when i
 | 
			
		||||
<code>calibredb --add book.epub --with-library=books --duplicates</code>
 | 
			
		||||
on the pi terminal, it adds it. (<code>--duplicates</code> is necessary
 | 
			
		||||
only in this test instance because—oops!—turns out i already have this
 | 
			
		||||
book in my library, but i am determined to use this opportunity to set
 | 
			
		||||
up DeDRM. i will delete the duplicate later.) I can’t verify in the web
 | 
			
		||||
ui though because it’s not showing the duplicate. must have merged it
 | 
			
		||||
with the old one.</p>
 | 
			
		||||
<p>oh well. i’ll try it again next time i get a book from the library.
 | 
			
		||||
shortest wait: currently 6 weeks.</p>
 | 
			
		||||
<p>actually no, let’s just go checkout an Available Now book. Song of
 | 
			
		||||
Achilles. I liked Circe. Let’s get this one.</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><p>confirmed: can add the book via web ui, but not open or read it
 | 
			
		||||
because of drm</p></li>
 | 
			
		||||
<li><p>confirmed: can scp the book to the pi,
 | 
			
		||||
<code>calibre add book.epub --with-library=books</code> and get an
 | 
			
		||||
<code>Added book ids: <id></code> message</p></li>
 | 
			
		||||
<li><p>confirmed: new book does NOT show up in web ui after killing and
 | 
			
		||||
restarting the daemon</p></li>
 | 
			
		||||
<li><p>confirmed: the book IS there:</p>
 | 
			
		||||
<pre><code>  ```
 | 
			
		||||
  $ calibredb list --search='id:3' --with-library=books
 | 
			
		||||
  id title                authors
 | 
			
		||||
  3 The Song of Achilles Madeline Miller
 | 
			
		||||
  $ #wtf
 | 
			
		||||
  ```</code></pre></li>
 | 
			
		||||
</ul>
 | 
			
		||||
<p>what the hell. does <code>calibre-server</code> has a db cache or
 | 
			
		||||
something? i don’t see anything</p>
 | 
			
		||||
<p><a
 | 
			
		||||
href="https://manual.calibre-ebook.com/generated/en/calibre-server.html"
 | 
			
		||||
class="uri">https://manual.calibre-ebook.com/generated/en/calibre-server.html</a></p>
 | 
			
		||||
<p>i give up for now</p>
 | 
			
		||||
<p>~</p>
 | 
			
		||||
<p>to kill the process:</p>
 | 
			
		||||
<pre><code>ps aux | grep calibre</code></pre>
 | 
			
		||||
<p>and then kill the id</p>
 | 
			
		||||
<p>removing the dulplicate:</p>
 | 
			
		||||
<pre><code>calibredb search 'title:"world we make"' --with-library=books
 | 
			
		||||
> 1,2
 | 
			
		||||
calibredb list --search 'id:2' --with-library=books
 | 
			
		||||
> (book info)
 | 
			
		||||
calibredb list --search 'id:1' --with-library=books
 | 
			
		||||
> (book info)
 | 
			
		||||
calibredb remove 2</code></pre>
 | 
			
		||||
<p>tags: #calibre #drm</p>
 | 
			
		||||
<h2 id="reboot"><time>2023-09-29</time> - reboot</h2>
 | 
			
		||||
<p>been uploading photos and books, and editing metadata for my
 | 
			
		||||
rpgs.</p>
 | 
			
		||||
<p>pi became unresponsive last night / this morning to web and ssh so
 | 
			
		||||
rebooted this morning and restarted web services. everything seems to be
 | 
			
		||||
fine now.</p>
 | 
			
		||||
<p>found these resources recently and consider them next steps on my
 | 
			
		||||
todo list:</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><p>Add deDRM tools for CLI so I can upload library books. I can
 | 
			
		||||
pretty much delete local calibre after this. <a
 | 
			
		||||
href="https://github.com/noDRM/DeDRM_tools/blob/master/CALIBRE_CLI_INSTRUCTIONS.md"
 | 
			
		||||
class="uri">https://github.com/noDRM/DeDRM_tools/blob/master/CALIBRE_CLI_INSTRUCTIONS.md</a></p></li>
 | 
			
		||||
<li><p>Be your own CA Authority! which initially sounds to me like not
 | 
			
		||||
that good of an idea, but then I can use <code>https</code> for my local
 | 
			
		||||
webservices. <a
 | 
			
		||||
href="https://jamielinux.com/docs/openssl-certificate-authority/"
 | 
			
		||||
class="uri">https://jamielinux.com/docs/openssl-certificate-authority/</a></p></li>
 | 
			
		||||
<li><p>still want to install a reverse proxy (lapis + openresty?) so i
 | 
			
		||||
can hit canonical urls instead of typing in address + port number. this
 | 
			
		||||
would make it easier to share URLs with household members. NOTE: do i
 | 
			
		||||
want a local DNS server??</p></li>
 | 
			
		||||
</ul>
 | 
			
		||||
<p>Incidentally, mDNS seemed to just magically start working on its self
 | 
			
		||||
at some point. I can hit my pi’s url on macbook and on my phone now.
 | 
			
		||||
weeeeeird</p>
 | 
			
		||||
<p>tags: #reboot #mdns</p>
 | 
			
		||||
<h2 id="rpg-library"><time>2023-09-13</time> - rpg library</h2>
 | 
			
		||||
<p>tried searching for an rpg that i know is in my collection and
 | 
			
		||||
couldn’t find it by title or by author. this is going to be really
 | 
			
		||||
painful until i update the metadata on everything. i’ve done about 60 so
 | 
			
		||||
far. out of 1.4k. big yikes!</p>
 | 
			
		||||
<p>tags: #calibre #rpg #metadata</p>
 | 
			
		||||
<h2 id="mdns"><time>2023-09-12</time> - mDNS</h2>
 | 
			
		||||
<p>still can’t hit any multi DNS urls on any of my devices.</p>
 | 
			
		||||
<p>not a solution but a workaround (for desktop only): added a line to
 | 
			
		||||
<code>/etc/hosts</code> on my MBP:</p>
 | 
			
		||||
<pre><code>192.168.0.83  pi.local</code></pre>
 | 
			
		||||
<p>and now i can hit e.g. calibre with <a href="http://pi.local:8080"
 | 
			
		||||
class="uri">http://pi.local:8080</a></p>
 | 
			
		||||
<p>maybe i can configure something on my actual router?</p>
 | 
			
		||||
<p>tags: #mdns</p>
 | 
			
		||||
<h2 id="miniflux"><time>2023-09-11</time> - miniflux</h2>
 | 
			
		||||
<p>rss reader!</p>
 | 
			
		||||
<p>one thing i would like to be able to do is to read my rss feeds on my
 | 
			
		||||
computer and on my phone and on my tablet, and have my un/read status
 | 
			
		||||
sync between decives.</p>
 | 
			
		||||
<p>which i guess means hosting a feed reader!</p>
 | 
			
		||||
<p>i glanced at <code>awesome-selfhosted</code> and then asked some of
 | 
			
		||||
my friends in the basement because i know that they have already
 | 
			
		||||
undertaken great adventures in rss, trailblazers that they are.</p>
 | 
			
		||||
<p>and they recommended miniflux.</p>
 | 
			
		||||
<p>written in go, and it uses postgres. luckily they have a docker image
 | 
			
		||||
so i don’t have to install either. the docker-compose file on their
 | 
			
		||||
installation instructions is a little out of date, but you can find a
 | 
			
		||||
more correct ‘basic.yml’ on github at <code>miniflux/v2</code></p>
 | 
			
		||||
<p>after a few tweaks, it is installed and running!</p>
 | 
			
		||||
<p>the ui is super minimal. i’m sure i’ll grow to like it, but at the
 | 
			
		||||
moment i am missing the classic three-pane “feeds / entries / content”
 | 
			
		||||
view.</p>
 | 
			
		||||
<p>Up next:</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>gemini/gopher server? just for fun</li>
 | 
			
		||||
<li>nginx reverse proxy: i have three services running on three ports
 | 
			
		||||
now. i want a proxy for more easiy routing between these. i choose nginx
 | 
			
		||||
because lua, so i can fennel</li>
 | 
			
		||||
</ul>
 | 
			
		||||
<p>tags: #rss #feeds #miniflux</p>
 | 
			
		||||
<h2 id="calibre"><time>2023-09-08</time> - calibre</h2>
 | 
			
		||||
<p>had to add the upstream debian bullseye repo to install
 | 
			
		||||
<code>calibre-server</code>. (and then remove it.) got the web server up
 | 
			
		||||
and running pretty easy.</p>
 | 
			
		||||
<p>fussed around for a while trying to make a second calibre library out
 | 
			
		||||
of my rpg collection. here’s what ended up working: create a new dir and
 | 
			
		||||
then
 | 
			
		||||
<code>calibredb add path/to/file.pdf --library-path new/library/location</code>.
 | 
			
		||||
adding a single file this way created the necessary database file. then
 | 
			
		||||
i was able to
 | 
			
		||||
<code>find rpgsbak -type f -name '*.pdf' -exec -I {} calibredb add {} --library-path new/library/loction</code>.
 | 
			
		||||
(or something like that; wrote the command just now from memory.) and
 | 
			
		||||
pull all my pdfs in!</p>
 | 
			
		||||
<p>so now i have 1.4k pdfs in a new ‘rpgs’ library alongside my ‘books’
 | 
			
		||||
library.</p>
 | 
			
		||||
<p>on the whole, hobby ttrpg creators can stand to get a LOT better at
 | 
			
		||||
exporting metadata with their pdfs. now i have a whole lot of manual
 | 
			
		||||
updating to do. but i can read books and pdfs now from my calibre
 | 
			
		||||
library on any device on the network.</p>
 | 
			
		||||
<p>also adding new items via the web ui is pretty easy!</p>
 | 
			
		||||
<p>TODO: disable converting to epub on ‘read’ for rpg library.
 | 
			
		||||
‘download’ to read still works great for reading in the meantime.</p>
 | 
			
		||||
<p>tags: #calibre</p>
 | 
			
		||||
<h2 id="photoprism"><time>2023-09-03</time> - photoprism</h2>
 | 
			
		||||
<p>browsed the photo hosting options on <code>awesome-selfhosted</code>
 | 
			
		||||
on github and decided on photoprism</p>
 | 
			
		||||
<p>it has a docker image and i was able to get it working no problem,
 | 
			
		||||
with no modifications. quick and easy. this is the future containers
 | 
			
		||||
promised us.</p>
 | 
			
		||||
<p>the ui is slow. i have the number of workers cranked down to 1. might
 | 
			
		||||
bump it to 2.</p>
 | 
			
		||||
<p>i had been rsyncing photos to the pi and then reindexing the
 | 
			
		||||
collection. but i’m finding it quicker to do a bulk upload using the web
 | 
			
		||||
ui. it’s working rather reliably. it still has to reindex on upload, but
 | 
			
		||||
i no longer have to reindex the entire collection.</p>
 | 
			
		||||
<p>tags: #photos #photoprism</p>
 | 
			
		||||
<h2 id="git"><time>2023-08-30</time> - git</h2>
 | 
			
		||||
<p>Add a “git” user. Create a home dir for it. Do
 | 
			
		||||
<code>git init --bare repo.git</code>.</p>
 | 
			
		||||
<p>Copy my ssh key over and add an entry to
 | 
			
		||||
<code>.ssh/config</code>:</p>
 | 
			
		||||
<pre><code>  21   │ Host git
 | 
			
		||||
  22   │ Hostname 192.168.0.83
 | 
			
		||||
  23   │ User git
 | 
			
		||||
  24   │ IdentityFile ~/.ssh/id_rsa</code></pre>
 | 
			
		||||
<p>Now I can <code>git remote add pi git:repo.git</code> in a local repo
 | 
			
		||||
and push away!</p>
 | 
			
		||||
<p>tags: #git</p>
 | 
			
		||||
<h2 id="hello-world"><time>2023-08-28</time> - Hello World</h2>
 | 
			
		||||
<p>Okay let’s get this party started!</p>
 | 
			
		||||
<p>I have a raspberry pi model 3b that has been gathering dust in a
 | 
			
		||||
drawer for a couple years now.</p>
 | 
			
		||||
<p>I decided I wanted to dust it off and use it to backup some photos
 | 
			
		||||
and some files.</p>
 | 
			
		||||
<p>I bought a 4TB external hard drive and a 128gb microSD card and
 | 
			
		||||
hooked it all up.</p>
 | 
			
		||||
<p>I downloaded the NOOBS installer from raspberrypi.com/software and
 | 
			
		||||
installed it on the SD card, which I was able to do because I have a ton
 | 
			
		||||
of dongles thanks to the fact that my MacbookPro has no peripherals. I
 | 
			
		||||
popped the card in to the pi, connected my usb keyboard and hdmi monitor
 | 
			
		||||
and booted it up, and went through the setup.</p>
 | 
			
		||||
<p>Then, after testing that I can ssh into the pi, I unplugged my
 | 
			
		||||
keyboard and monitor and never plugged them back in again.</p>
 | 
			
		||||
<p>Plugged in my hard drive and formatted it with an ext3
 | 
			
		||||
filesystem.</p>
 | 
			
		||||
<p>Created a backup user. (Not a spare user in case of emergencies, but
 | 
			
		||||
a user specifically for creating backups.)</p>
 | 
			
		||||
<p>Copied my ssh keys over:</p>
 | 
			
		||||
<pre><code>ssh-copy-id -i ~/.ssh/id_rsa pi.local</code></pre>
 | 
			
		||||
<p>Mounted the drive, added it to <code>/etc/fstab</code> so it will
 | 
			
		||||
auto-mount, and added a slight delay to the boot command so that there
 | 
			
		||||
is time for the drive to mount before the system boots. As suggested
 | 
			
		||||
here:</p>
 | 
			
		||||
<p><a
 | 
			
		||||
href="https://howtoforge.com/tutorial/raspberry-pi-as-backup-server-for-linux-and-windows/"
 | 
			
		||||
class="uri">https://howtoforge.com/tutorial/raspberry-pi-as-backup-server-for-linux-and-windows/</a></p>
 | 
			
		||||
<p>Copied over my first photo export and my calibre library with an
 | 
			
		||||
<code>rsync -zaP</code>.</p>
 | 
			
		||||
<p>Messed around with mDNS and avahi-daemon because I can’t hit <a
 | 
			
		||||
href="http://pi.local" class="uri">http://pi.local</a> in the browser.
 | 
			
		||||
Still haven’t figured this out.</p>
 | 
			
		||||
<p>tags: #mdns #getting-started <!-- END //--></p>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user