A PLC Mirror written in Rust

readme

Changed files
+40
+40
README.md
··· 1 + # Parakeet PLC Mirror 2 + 3 + A little Rust mirror of Bluesky Social PBC's [plc.directory](https://web.plc.directory/) 4 + for use with the [Parakeet AppView](https://gitlab.com/parakeet-social/parakeet) project. 5 + 6 + All endpoints bar `/export` and `/{did}/data` are implemented and should be functionally identical. 7 + 8 + ## Running 9 + 10 + ### Prerequisites 11 + 12 + - Either Docker, or a binary from [Compiling](#compiling) 13 + - Postgres (tested with 16, but any recent version should work) 14 + 15 + ### Running PLC Mirror 16 + 17 + A docker image is provided as `registry.gitlab.com/parakeet-social/plc-mirror`, or you can [compile](#compiling) a binary. 18 + 19 + Complete the below environment variables: 20 + 21 + | Variable | Description | Default | 22 + |-------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------| 23 + | `PLC_DB_URI` | (required) Postgres DB URI in format `postgres://{user}:{pass}@{addr}/{db}` | | 24 + | `PLC_UPSTREAM` | (optional) Upstream PLC directory to import from | `https://plc.directory` | 25 + | `PLC_BIND_ADDR` | (optional) The address and port to bind to, in format `{IP}:{port}` | `127.0.0.1:8080` | 26 + | `PLC_USER_AGENT` | (recommended) The User-Agent header to set on export requests from upstream. Setting this is highly advised | `parakeet-plc` | 27 + | `PLC_START_AFTER` | (optional) Where in time to start importing from PLC. Leaving blank will trigger an import from the beginning of the directory or from the last seen TS if applicable. In format `2018-01-26T18:30:09.453Z`. | | 28 + 29 + Then, run the binary. Imports from the upstream directory will begin immediately alongside the API server. 30 + 31 + ## Compiling 32 + 33 + You'll need [Rust](https://www.rust-lang.org/), Cargo, and openssl-dev (aka libssl-dev) to build. 34 + Builds are tested on Rust 1.85. 35 + 36 + A simple `cargo b` or `cargo r` should work just fine, likewise for release options. 37 + 38 + ## License & Contributing 39 + 40 + This project is licensed under Apache-2. Contributions are welcome, but please discuss first.