{"repo":"ozencb/excalidraw-persist","free":true,"listed":false,"github":"https://github.com/ozencb/excalidraw-persist","clone":"git clone https://github.com/ozencb/excalidraw-persist.git","description":"Self-hosted Excalidraw with persistence and multiple boards","language":"TypeScript","stars":102,"topics":[],"license":null,"category":"self-hosted-apps","readme_excerpt":"Excalidraw Persist A self-hostable app with server-side persistence and multiple boards based on Excalidraw. docker run -p 80:80 -p 4000:4000 ghcr.io/ozencb/excalidraw-persist:latest Features - 💾 Server-side persistence of drawings, images, library objects - 📑 Multiple boards/tabs support - 🗑️ Trash functionality for deleted boards - 🗃️ SQLite database for simple deployment TODO - [ ] Collaboration support Development This project uses pnpm workspaces as a monorepo. Make sure to create a .env file with necessary values. You can take a look at packages/server/.env.example as a starting point. Prerequisites - Node.js (v22 or newer) - pnpm (v10 or newer) - Git Deployment Options Option 1: Docker (Recommended) The easiest way to deploy Excalidraw Persist is using Docker and Docker Compose. Prerequisites - Docker - Docker Compose Deployment Steps 1. Clone the repository: 2. Start the containers: 3. Access the application at http://localhost (or your server's IP/domain) or run 1. docker run -p 80:80 -p 4000:4000 ghcr.io/ozencb/excalidraw-persist:latest 2. Access the application at http://localhost (or your server's IP/domain) Using npm Scripts There are some convenience scripts included in the root package.json : - pnpm docker:build - Build the Docker images - pnpm docker:up - Start the containers in detached mode - pnpm docker:down - Stop and remove the containers - pnpm docker:logs - View the container logs in follow mode Configuration The Docker setup uses the following defa","default_branch":null,"files":null,"tree":[],"storefront":"/r/ozencb","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/ozencb/excalidraw-persist/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}