Skip to content

PerKeep

Important URLs

TODO

Install the Thing


go version
# 1.21 MINIMUM
git clone https://github.com/perkeep/perkeep.git perkeep.org
cd perkeep.org
go run make.go

cd ~/go/bin
ls

Getting Started

  • Install Perkeep
  • Add Go path in .bashrc or .zshrc
  • perkeepd
    • We need a service file to start this don't we
  • pk-put init

Reminders


cd ~/.config/perkeep

CLI Tools

perkeepd
pk
pk-deploy
pk-get
pk-mount
pk-put

Actually using the thing

Checkout the UI at localhost:3179/ui/

How do I actually store and retrieve a file in perkeep?

echo "I Like Pie" >> test.md
filenode=`pk-put file ./test.md`
echo $filenode
pk-get $filenode
pk-get -contents $filenode > test2.md
cat test2.md

How do I actually name a file rather than just referencing a hash?

Perkeep thinks in terms of the permanode, that hash, rather than the file name. Files can have titles and tags. For example.

echo "Your Life Matters" >> life.md
filenode=`pk-put blob --permanode --title='life.md' --tag=inspiration ./life.md`
pk-get 

**Installing pk-mount **


which pk-mount

pk-mount --help

go install perkeep.org/cmd/pk-mount@latest

Mounting pk-mount file system

# Plz don't run as root, pk-mount okay, but perkeepd NOPE NOPE NOPE
sudo mkdir /mnt/pk
sudo chown $USER:$USER /mnt/pk

# Init Perkeep
pk-put init
pk-put init --newkey


# For local perkeep instance
pk-mount /mnt/pk &
# If you get an error install fuse, AND REBOOT

# Mounting a remote perkeep instance
pk-mount -server http://192.168.133.168:3179 /mnt/pk
pk-mount /home/paul/test/pk2

# Accessing your files
cd /mnt/pk
ls

# test
echo "I Like Pie" >> test.md
filenode=`pk-put file ./test.md`
echo $filenode
pk-get $filenode
pk-get -contents $filenode > test2.md
cat test2.md


# To kill, you can also use `killall`
pkill perkeepd
pkill pk-mount

Now how do we choose what root node to actually mount? Can't do this, turns out this is not actually possible. If you want to do that use virtual links.

cd your_desired_path
ln -s /mnt/pk/roots/SUB_ROOT SUB_ROOT

https://perkeep.org/cmd/pk-mount/

Version Control, Accessing Content form a specific point in time

cd /mnt/pk/at
ls
cat README.txt  

Copy Perkeep ID


cd ~/.config/perkeep

remote_user=root
remote_host=10.10.10.10
scp -r ~/.config/perkeep/ $remote_user@$remote_host:~/.config/


ssh $remote_user@$remote_host
~/.config/perkeep/
sed -i 's/original/new/g' file.txt

User Stories

So what do I want to use perkeep for?

My number one use case for Perkeep is to use it in replacement of dentropydaemon-wiki/Software/List/Obsidian sync. pk-mount can track every file and how it changes within my obsidian vault. I can even still have git stored in there and backed up. Perkeep would work nicely with

Perkeep could be the solution to my cloud storage account. I would like to track all my photos, personal videos, personal documents, data exports, voice recordings, and quantified self information.

I don't need many of my files as raw files. My school notes can be archived, most sources of quantified self data can be archived.

The ebooks and audiobooks would have to be mounted on some sort of file system to work with calibre. It would be nice to do backup and restores to perkeep.

Movies and Music are not stored on the cloud storage drive.

Docker and Perkeep

Notable Conversations

Sources