2.8 KiB
magnetar
A social networking server anyone can self-host
This project is in early development.
Quick start
- Create a Postgres database
- Create a Redis instance
- Configure the required options in
config/default.toml
- Build Magnetar:
cargo build --release --workspace --bins
- Build the Magnetar Calckey frontend:
cd fe_calckey/frontend && pnpm install && pnpm run build
- Run Magnetar:
./target/release/magnetar
- Build and run a modified version of Calckey, pointed to the same database and Redis
- Start up the Magnetar frontend:
./target/release/magnetar_calckey_fe
- 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-based web frontend.
Additional dependencies
Magnetar depends on a Postgres database, Redis instance, as well as a modified 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
- Build both the frontend and the backend binaries:
cargo build --release --workspace --bins
- Switch to the frontend directory:
cd fe_calckey/frontend
- Install the frontend dependencies:
pnpm install
- Build the frontend
pnpm run build
Container build
Magnetar can be built to a single monolithic OCI image using the provided Dockerfile, containing the Magnetar binaries.
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.