Severin Alexander Bühler 178bae142e fix(homeserver): DDoS due to slow uploads or downloads (#132)
* switch branch

* moved files around

* validate webdav path in requests

* async and sync writer

* implemented file read and write via disk

* cleaning up

* clippy and fmt

* cleanup 1

* last cleanup

* fmt

* test concurrent read/write

* cleanup3

* cleanup3

* added log in case of a join error

* removed pub from max_chunk_size()

* fmt and clippy

* fixed test

* fmt

* fixed main merge errors
2025-05-25 10:51:25 +03:00
2024-10-25 09:03:37 +03:00
2024-11-16 11:26:12 +03:00
2024-10-01 03:11:55 +02:00
2025-05-22 09:57:06 +02:00
2025-05-13 20:29:55 +01:00
2023-12-07 18:29:41 +03:00

pubky

An open protocol for per-public-key backends for censorship resistant web applications.

GitHub Release Crates.io Version Telegram Chat Group GitHub License

The Web, long centralized, must decentralize; Long decentralized, must centralize.

Overview

Pubky-core combines a censorship resistant public-key based alternative to DNS with conventional, tried and tested web technologies, to keep users in control of their identities and data, while enabling developers to build software with as much availability as web apps, without the costs of managing a central database.

Features

  • Public key based authentication.
  • Public key based 3rd party authorization.
  • Key-value store through PUT/GET/DELETE HTTP API + pagination.

Getting started

This repository contains a Homeserver, and a Client (both Rust and JS wasm bindings). You can a run a local homeserver using cargo run with more instructions in the README. Check the Examples directory for small feature-focesed examples of how to use the Pubky client.

JavaScript

If you prefer to use JavaScript in NodeJs/Browser or any runtime with Wasm support, you can either install from npm @synonymdev/pubky or build the bindings yourself:

cd pubky-client/pkg
npm i
npm run build

Testing

There are unit tests for the JavaScript bindings in both NodeJs and headless web browser, but first you need to run a local temporary Homeserver

npm run testnet

Then in a different terminal window:

npm test

Docker

An alternative way to start tinkering with Pubky is to build an isolated container and run it locally. Here is an example command how to build an image:

docker build --build-arg TARGETARCH=x86_64 -t pubky:core .

A command for running it in an isolated environment with log output:

docker run -it pubky:core

Additional optional arguments can be used to run it in the background, but the most important is --network=host, which allows the container to access the network and provides an admin endpoint accessible from the host machine. Please refer to the Docker documentation for more detailed options.

Description
No description provided
Readme MIT 2.3 MiB
Languages
Rust 95.5%
JavaScript 4%
Dockerfile 0.5%