mirror of
https://github.com/Dvorinka/excalidraw-full.git
synced 2026-06-03 22:02:57 +00:00
257e46d2c8
To troubleshoot reported issues, we add more debugging outputs in the logging. This includes detailed, structured logs in the Create and FindID methods to provide better traceability and debuggability. These changes help diagnose issues by providing detailed context in the logs, which should improve the ability to identify and resolve problems. See also: #9
91 lines
3.6 KiB
Markdown
91 lines
3.6 KiB
Markdown
# Excalidraw Complete: A Self-Hosted Solution
|
|
|
|
Excalidraw Complete simplifies the deployment of Excalidraw, bringing an
|
|
all-in-one solution to self-hosting this versatile virtual whiteboard. Designed
|
|
for ease of setup and use, Excalidraw Complete integrates essential features
|
|
into a single Go binary. This solution encompasses:
|
|
|
|
- The intuitive Excalidraw frontend UI for seamless user experience.
|
|
- An integrated data layer ensuring fast and efficient data handling based on different data providers.
|
|
- A socket.io implementation to enable real-time collaboration among users.
|
|
|
|
The project goal is to alleviate the setup complexities traditionally associated with self-hosting Excalidraw, especially in scenarios requiring data persistence and collaborative functionalities.
|
|
|
|
## Installation
|
|
|
|
To get started, download the latest release binary:
|
|
|
|
```bash
|
|
# Visit https://github.com/PatWie/excalidraw-complete/releases/ for the download URL
|
|
wget <binary-download-url>
|
|
chmod +x excalidraw-complete
|
|
./excalidraw-complete
|
|
```
|
|
|
|
Once launched, Excalidraw Complete is accessible at `localhost:3002`, ready for
|
|
drawing and collaboration.
|
|
|
|
### Configuration
|
|
|
|
Excalidraw Complete adapts to your preferences with customizable storage solutions, adjustable via the `STORAGE_TYPE` environment variable:
|
|
|
|
- **Filesystem:** Opt for `STORAGE_TYPE=filesystem` and define `LOCAL_STORAGE_PATH` to use a local directory.
|
|
- **SQLite:** Select `STORAGE_TYPE=sqlite` with `DATA_SOURCE_NAME` for local SQLite storage, including the option for `:memory:` for ephemeral data.
|
|
- **AWS S3:** Choose `STORAGE_TYPE=s3` and specify `S3_BUCKET_NAME` to leverage S3 bucket storage, ideal for cloud-based solutions.
|
|
|
|
These flexible configurations ensure Excalidraw Complete fits seamlessly into your existing setup, whether on-premise or in the cloud.
|
|
|
|
## Building from Source
|
|
|
|
Interested in contributing or customizing? Build Excalidraw Complete from source with these steps:
|
|
|
|
```bash
|
|
# Clone and prepare the Excalidraw frontend
|
|
git clone https://github.com/PatWie/excalidraw-complete.git --recursive
|
|
cd ./excalidraw-complete/excalidraw
|
|
|
|
# git checkout tags/v0.17.3
|
|
# Fix docker build (fix already implemented upstream)
|
|
# git remote add jcobol https://github.com/jcobol/excalidraw
|
|
# git fetch jcobol
|
|
# git checkout 7582_fix_docker_build
|
|
|
|
# Adjust URLs inside of frontend.patch if you want to use a reverse proxy
|
|
git apply ../frontend.patch
|
|
cd ../
|
|
git checkout dev
|
|
docker build -t exalidraw-ui-build excalidraw -f ui-build.Dockerfile
|
|
docker run -v ${PWD}/:/pwd/ -it exalidraw-ui-build cp -r /frontend /pwd
|
|
```
|
|
|
|
(Optional) Replace `localhost:3002` inside of `main.go` with your domain name if you want to use a reverse proxy
|
|
(Optional) Replace `"ssl=!0", "ssl=0"` with `"ssl=!0", "ssl=1"` if you want to use HTTPS
|
|
(Optional) Replace `"ssl:!0", "ssl:0"` with `"ssl:!0", "ssl:1"` if you want to use HTTPS
|
|
(Optional) Change ip:port of Go webserver at the end of `main.go` if you want to customize it
|
|
|
|
Compile the Go application:
|
|
|
|
```bash
|
|
go build -o excalidraw-complete main.go
|
|
```
|
|
|
|
Declare environment variables if you want any (see section above)
|
|
Example: `STORAGE_TYPE=sqlite DATA_SOURCE_NAME=/tmp/excalidb.sqlite`
|
|
|
|
Start the server:
|
|
|
|
```bash
|
|
go run main.go
|
|
|
|
STORAGE_TYPE=sqlite DATA_SOURCE_NAME=test.db go run main.go --loglevel debug
|
|
STORAGE_TYPE=filesystem LOCAL_STORAGE_PATH=/tmp/excalidraw/ go run main.go --loglevel debug
|
|
```
|
|
|
|
Excalidraw Complete is now running on your machine, ready to bring your collaborative whiteboard ideas to life.
|
|
|
|
---
|
|
|
|
Excalidraw is a fantastic tool, but self-hosting it can be tricky. I welcome
|
|
your contributions to improve Excalidraw Complete — be it through adding new
|
|
features, improving existing ones, or bug reports.
|