# magnetar ![Magnetar logo, an 8-pointed star with two symmetrical cones](./fe_calckey/frontend/assets/favicon.png) A social networking server anyone can self-host **WARNING: Currently the project cannot be bootstrapped from scratch as it requires a Calckey 14.0RC3 database model.** **This project is in early development.** ## Quick start 1. Create a Postgres database 2. Create a Redis instance 3. Configure the required options in `config/default.toml` 4. Build Magnetar: `cargo build --release --workspace --bins` 5. Build the Magnetar Calckey frontend: `cd fe_calckey/frontend && pnpm install && pnpm run build` 6. Run Magnetar: `./target/release/magnetar` 7. Build and run [a modified version of Calckey](https://git.astolfo.cool/natty/calckey), pointed to the same database and Redis 8. Start up the Magnetar frontend: `./target/release/magnetar_calckey_fe` 9. Set up a reverse proxy based on `.dev/Caddyfile` Read further for additional information. ## What's inside Magnetar builds to two primary binaries: - magnetar -- The backend - magnetar_calckey_fe -- A web server hosting a self-contained frontend The `fe_calckey/frontend` directory contains the [Calckey](https://codeberg.org/firefish/firefish)-based web frontend. ## Additional dependencies Magnetar depends on a Postgres database, Redis instance, as well as a modified [Calckey](https://git.astolfo.cool/natty/calckey) backend running in tandem. ## Building Magnetar can be built both as standalone binaries or OCI containers (Podman, Docker, ...). ### Native Building the Magnetar backend requires: - latest stable Rust toolchain Building the included Magnetar/Calckey frontend requires: - latest stable Rust toolchain - Node.js and npm #### Steps 1. Build both the frontend and the backend binaries: ```shell cargo build --release --workspace --bins ``` 2. Switch to the frontend directory: ```shell cd fe_calckey/frontend ``` 3. Install the frontend dependencies: ```shell pnpm install ``` 4. Build the frontend ```shell pnpm run build ``` ### Container build Magnetar can be built to a single monolithic OCI image using the provided Dockerfile, containing the Magnetar binaries. ```shell podman build -t magnetar . # or docker build -t magnetar . ``` ## Running Follow the steps from the "building" chapter. ### Native setup Debug builds can be run using `cargo run --package magnetar --bin magnetar` and `run --package magnetar_calckey_fe --bin magnetar_calckey_fe`. ### Monolithic container image Choose between the backend and frontend using the `--entrypoint /magnetar/magnetar` and `--entrypoint /magnetar/magnetar_calckey_fe` respectively. Mount the directory in `/magnetar/config` to pass in configuration from the host machine. Alternatively, see the `config/default.toml` file and pass in corresponding environment variables. ## Connecting all components In order to connect all components of magnetar, a router/reverse proxy is necessary. See `.dev/Caddyfile` for a template configuration.