Docker Compose

Setup using Docker Compose

Setup using Docker

The easiest way to get started with Wraft is using Docker. The Docker setup includes all required dependencies and services.

Prerequisites

  • Docker and Docker Compose installed on your system
  • Git

Quick Start

  1. Clone the repository and navigate into it
git clone https://github.com/wraft/wraft.git
cd wraft
  1. Copy the example environment file and update it
cp .env.example .env
  1. Verify Required Environment Variables

Make sure the following variables are set in your .env file:

SECRET_KEY_BASE=<your-secret-key>
 
# Database credentials
DEV_DB_USERNAME=<username>
DEV_DB_PASSWORD=<password>
DEV_DB_NAME=<database_name>
 
# MinIO credentials
MINIO_ROOT_USER=<minio-user>
MINIO_ROOT_PASSWORD=<minio-password>
 
# API keys
TYPESENSE_API_KEY=<typesense-key>
CLOAK_KEY=<cloak-key>
GUARDIAN_KEY=<guardian-key>
  1. Load environment variables
source .env
  1. Add MinIO host entry
# macOS / Linux
echo "127.0.0.1 minio" | sudo tee -a /etc/hosts
 
# Windows
echo 127.0.0.1 minio >> C:\Windows\System32\drivers\etc\hosts
  1. Start all Docker containers
docker compose up -d
  1. Visit the application
# Frontend
open http://localhost:3200
Default Credentials
username: wraftuser@gmail.com
password: demo@1234

Environment Variables

Make sure to configure the following environment variables in your .env file:

  • SECRET_KEY_BASE
  • DEV_DB_USERNAME DEV_DB_PASSWORD DEV_DB_NAME
  • MINIO_ROOT_USER / MINIO_ROOT_PASSWORD
  • TYPESENSE_API_KEY
  • CLOAK_KEY
  • GUARDIAN_KEY
  • And other required variables (see .env.example)

What's Included

The Docker setup includes:

  • Backend: Elixir 1.18.4 with Erlang 27.0.1
  • Frontend: React application
  • Database: PostgreSQL 14
  • Object Storage: MinIO (S3-compatible)
  • Search Engine: Typesense
  • Dependencies: Pandoc 3.6.3, Typst 0.13.0, LaTeX, ImageMagick, Java 17, Rust toolchain

Services and Ports

Stopping the Services

$ docker compose down

To remove all data volumes as well:

$ docker compose down -v

On this page