magnetar/README.md

104 lines
2.9 KiB
Markdown

# 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
**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.