Perkeep (née Camlistore) is your personal storage system for life: a way of storing, syncing, sharing, modelling and backing up content.

Perkeep is your personal storage system.

It's a way to store, sync, share, import, model, and back up content. Keep your stuff for life.

For more, see

Other useful files

  • BUILDING - how to compile it ("go run make.go")
  • CONTRIBUTING - how to do development and contribute

Perkeep Resources

Continuous Integration

Linux Test Status Windows Test Status

Code of Conduct

Please note that this project uses a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Owner
Perkeep (née Camlistore)
Your personal storage system for life.
Perkeep (née Camlistore)
Comments
  • Introduce pdfcabinet

    Introduce pdfcabinet

    There was a small amount of discussion about this here: https://groups.google.com/g/perkeep/c/B_Wq3ovph2I

    At this point, it seems to more or less work. It is pretty much a ripoff of scanning cabinet, but oriented to work with pdfs rather than images. Since a pdf often contains multiple pages and I couldn't think of a reason for a pdf document to contain multiple pdfs, the relationship is 1:1.

    I thought this is a good place to share what I have and see who it looks to folks.

    I haven't yet implemented the 'who' functionality but don't think that will be too hard. Pretty much like tags, but with an attribute named something like 'pdfcabinet:who'.

    Right now when displaying the pdf document, I'm using an tag to show the associated pdf on the page and it contains all the perkeep chrome too, which is a bit weird. If someone can point me at a way to embed it without the perkeep chrome inside the object, I would appreciate it.

    Another weirdness is that I am currently storing the filename of the pdf in the pdfcabinet:pdf permanode even though it is also in the file permanode. That is because I couldn't figure out how to efficiently grab it (I need it for each un-annotated pdf so I have something to identify the pdf to the user on the main page).

    I'll probably also want to provide some facility for bulk uploading of already tagged and dated pdfs, but have not thought hard about this yet.

  • ui: remove obsolete code

    ui: remove obsolete code

    http.ServeContent figures out the content type on its own, i also checked the headers in my browser with this patch (build with go1.19 though) .

    The comment changes comes from go fmt.

  • app: add initial webdav support

    app: add initial webdav support

    This PR adds WebDAV support for perkeep as an app.

    caveats:

    • only supports static elements (directory and file blobs) pointed at from a camliRoot with "camliPath:x" attributes
    • this also means that the content is read only
    • no integration tests yet

    I intend on addressing those issues in subsequent PRs by adding support for dynamic directories (permanode with "camliPath:*" attribute or camliContent that points to a directory) and files (permanode with camliContent that points to a file) that will be writeable too.

    I tested this with cadaver locally for now.

    @tgulacsi you suggested this in the past, so tagging you here. wdyt?

    addresses #38 #1392 #1017

  • misc: remove sha1 from tests, remove testhooks, minor cleanups

    misc: remove sha1 from tests, remove testhooks, minor cleanups

    • removed sha1 hashes from tests
    • removed internal/testhooks
    • use runtime.NumCPU as default reindex maxprocs
    • removed code that disables ooo indexing from tests ( since its not used anymore )
  • Repeated I/O errors when pushing lots of files

    Repeated I/O errors when pushing lots of files

    Whenever I try to put a large amount of files (say DCIM folder from a phone), I get I/O errors really often. It doesn't seem to matter whether or not I use pk-mount or the web UI. Using the fuse driver, this happens with both rsync and cp. With the web ui, I can watch consistent failures (usually throwing a 500) in the dev console.

    I could give pk put file a try but I wasn't sure how to target a specific root and subnode for a destination

  • TurtleDex is a decentralized cloud storage platform that radically alters the landscape of cloud storage

    TurtleDex is a decentralized cloud storage platform that radically alters the landscape of cloud storage. By leveraging smart contracts, client-side encryption, and sophisticated redundancy (via Reed-Solomon codes), TurtleDex allows users to safely store their data with hosts that they do not know or trust.

    May 29, 2021
    "rsync for cloud storage" - Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Yandex Files

    Website | Documentation | Download | Contributing | Changelog | Installation | Forum Rclone Rclone ("rsync for cloud storage") is a command-line progr

    Jan 9, 2023
    QingStor Object Storage service support for go-storage

    go-services-qingstor QingStor Object Storage service support for go-storage. Install go get github.com/minhjh/go-service-qingstor/v3 Usage import ( "

    Dec 13, 2021
    An encrypted object storage system with unlimited space backed by Telegram.

    TGStore An encrypted object storage system with unlimited space backed by Telegram. Please only upload what you really need to upload, don't abuse any

    Nov 28, 2022
    SFTPGo - Fully featured and highly configurable SFTP server with optional FTP/S and WebDAV support - S3, Google Cloud Storage, Azure Blob

    SFTPGo - Fully featured and highly configurable SFTP server with optional FTP/S and WebDAV support - S3, Google Cloud Storage, Azure Blob

    Jan 4, 2023
    This is a simple file storage server. User can upload file, delete file and list file on the server.
    This is a simple file storage server.  User can upload file,  delete file and list file on the server.

    Simple File Storage Server This is a simple file storage server. User can upload file, delete file and list file on the server. If you want to build a

    Jan 19, 2022
    Cloud-Native distributed storage built on and for Kubernetes
    Cloud-Native distributed storage built on and for Kubernetes

    Longhorn Build Status Engine: Manager: Instance Manager: Share Manager: Backing Image Manager: UI: Test: Release Status Release Version Type 1.1 1.1.2

    Jan 1, 2023
    Storj is building a decentralized cloud storage network
    Storj is building a decentralized cloud storage network

    Ongoing Storj v3 development. Decentralized cloud object storage that is affordable, easy to use, private, and secure.

    Jan 8, 2023
    tstorage is a lightweight local on-disk storage engine for time-series data
    tstorage is a lightweight local on-disk storage engine for time-series data

    tstorage is a lightweight local on-disk storage engine for time-series data with a straightforward API. Especially ingestion is massively opt

    Jan 1, 2023
    storage interface for local disk or AWS S3 (or Minio) platform

    storage interface for local disk or AWS S3 (or Minio) platform

    Apr 19, 2022
    Terraform provider for the Minio object storage.

    terraform-provider-minio A Terraform provider for Minio, a self-hosted object storage server that is compatible with S3. Check out the documenation on

    Dec 1, 2022
    Rook is an open source cloud-native storage orchestrator for Kubernetes

    Rook is an open source cloud-native storage orchestrator for Kubernetes, providing the platform, framework, and support for a diverse set of storage solutions to natively integrate with cloud-native environments.

    Oct 25, 2022
    A Redis-compatible server with PostgreSQL storage backend

    postgredis A wild idea of having Redis-compatible server with PostgreSQL backend. Getting started As a binary: ./postgredis -addr=:6380 -db=postgres:/

    Nov 8, 2021
    CSI for S3 compatible SberCloud Object Storage Service

    sbercloud-csi-obs CSI for S3 compatible SberCloud Object Storage Service This is a Container Storage Interface (CSI) for S3 (or S3 compatible) storage

    Feb 17, 2022
    High Performance, Kubernetes Native Object Storage
    High Performance, Kubernetes Native Object Storage

    MinIO Quickstart Guide MinIO is a High Performance Object Storage released under GNU Affero General Public License v3.0. It is API compatible with Ama

    Jan 2, 2023
    s3git: git for Cloud Storage. Distributed Version Control for Data.
    s3git: git for Cloud Storage. Distributed Version Control for Data.

    s3git: git for Cloud Storage. Distributed Version Control for Data. Create decentralized and versioned repos that scale infinitely to 100s of millions of files. Clone huge PB-scale repos on your local SSD to make changes, commit and push back. Oh yeah, it dedupes too and offers directory versioning.

    Dec 27, 2022
    Storage Orchestration for Kubernetes

    What is Rook? Rook is an open source cloud-native storage orchestrator for Kubernetes, providing the platform, framework, and support for a diverse se

    Dec 29, 2022
    A High Performance Object Storage released under Apache License
    A High Performance Object Storage released under Apache License

    MinIO Quickstart Guide MinIO is a High Performance Object Storage released under Apache License v2.0. It is API compatible with Amazon S3 cloud storag

    Sep 30, 2021
    Op - A small tool that will allow you to open language or framework documentation in your browser from your terminal

    op "op" is a small tool that will allow you to open language or framework docume

    Aug 25, 2022