Try describing what you need:

HyCanvas logo

HyCanvas

★ 253

A self-hosted alternative to Canva, Miro, Figma

GNU Affero General Public License v3.0Open Core — Some Features Paid2 Containers — 2 containers — light hosting footprintDocker · Binary · SourceNeeds Postgres2+ active committers (12mo)

About

HyCanvas is an open-source, self-hostable design and content-creation platform aimed at people or teams that want a Canva-like editor they can run on their own infrastructure. It runs in the browser...

Community Ratings

No ratings yet
Editing a template in the HyCanvas editorThe editor with a podcast cover open and the text properties beside itA nine-slide pitch deck open in the editor with the slide strip belowThe template gallery with flyers, social cards, posters and decksA whiteboard with a three-column retrospective template

Features

  • Template gallery
  • Editing tools
  • Presentations
  • Whiteboards
  • Video timeline
  • Docs and sheets
  • Realtime co-editing
  • Brand kits
  • AI generation
  • Exports

Details

Last Updated
Oct 26, 2026
Created
Jun 21, 2026
Install Methods
dockerbinarysource
Requirements
DockerPostgreSQLTLS reverse proxyS3 storage
Authentication
oidc-ssolocal2fa
API
RESTWEBSOCKET
Backup & Export
native-exportfile-backup
Privacy & Independence
Cloud: Optional
User Model
Multi-User
Deployment

Deployment: Docker Compose ✓2 Containers — light hosting footprintRuns as 2 containers

Run HyCanvas with Docker Compose

Compose file from the HyCanvas project repository.

2 services · database: postgres · infra: postgres

no resource limits declared

needs persistent storage (2 volumes)

docker-compose.prod.yml · @ ddaeda8 · scanned Oct 26, 2026

# HyCanvas - PRODUCTION stack (build from source).
#
#   docker compose -f docker-compose.prod.yml up --build -d
#
# Builds the single self-contained image (Dockerfile: Go binary with the frontend
# embedded), runs Postgres, applies migrations on boot, and serves the whole
# product at http://localhost:8005 with a container healthcheck and restart
# policy. Use this when you want to run YOUR source rather than the published
# image; `docker-compose.yml` is the default and pulls the published image
# instead. JWT_SECRET is REQUIRED - set it in .env (e.g. `openssl rand -hex 32`).
#
# Database: bundled by default; for a managed Postgres set EXTERNAL_DATABASE_URL
# and COMPOSE_PROFILES="" (empty) so the bundled `db` container does not start.
services:
  db:
    image: postgres:16-alpine
    restart: unless-stopped
    profiles: ["bundled"]
    environment:
      POSTGRES_USER: ${POSTGRES_USER:-postgres}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}
      POSTGRES_DB: ${POSTGRES_DB:-hycanvas}
    volumes:
      - pgdata:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_DB:-hycanvas}"]
      interval: 5s
      timeout: 5s
      retries: 12

  app:
    build:
      context: .
      dockerfile: Dockerfile
    restart: unless-stopped
    # required:false so the app still starts in EXTERNAL mode (bundled db off).
    depends_on:
      db:
        condition: service_healthy
        required: false
    ports:
      - "${APP_PORT:-8005}:8005"
    # Secrets/config (JWT_SECRET, AI_SECRET, OIDC_*, VAPID_*, SMTP_*, S3_*, ...)
    # come from .env; the explicit values below win over it for the Docker wiring.
    env_file:
      - path: .env
        required: false
    environment:
      NODE_ENV: production
      PORT: "8005"
      DB_AUTO_MIGRATE: "true"
      # Plain http://localhost by default, so cookies must not be Secure or login
      # fails. Set "true" once you serve over https / a TLS reverse proxy.
      COOKIE_SECURE: "false"
      # External managed Postgres when EXTERNAL_DATABASE_URL is set; otherwise the
      # in-network bundled-container URL from the POSTGRES_* credentials.
      DATABASE_URL: "${EXTERNAL_DATABASE_URL:-postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@db:5432/${POSTGRES_DB:-hycanvas}?schema=public}"
      # Single-instance self-host: no Redis. A REDIS_URL in your .env is for native
      # dev (host Redis); in the container localhost is not the host and this compose
      # ships no redis service, so a set-but-unreachable REDIS_URL crash-loops the app
      # on boot. Force it empty here. For multi-instance, add a redis service and set
      # REDIS_URL to redis://<service>:6379/0.
      REDIS_URL: ""
      # Local-file storage on the container volume; set S3_* in .env to use object
      # storage instead.
      STORAGE_DRIVER: ${STORAGE_DRIVER:-local}
      LOCAL_STORAGE_PATH: /app/.data/storage
    volumes:
      - storage:/app/.data/storage
    healthcheck:
      test: ["CMD-SHELL", "curl -fsS http://localhost:8005/healthz || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

volumes:
  pgdata:
  storage:

This file may be out of date. Check the HyCanvas documentation for current setup steps.

Track your self-hosted stack

Bookmark software to try, rate tools you've used, and keep your collection in one place.

Metadata extracted from README on Oct 26, 2026

Related Software

Cap logo

Cap

23.8k
Cap is an open source screen recording platform for creating, editing, and sharing polished videos with team collaboration features.
Video EditingCopyleft LicenseMedia Management+1
5 ContainersTelemetry: Opt-Out
Details
Recordly logo

Recordly

35.2k
Recordly is an open-source desktop screen recorder and editor for creating polished demo videos, walkthroughs, and product clips with zooms, cursor effects, webcam overlays, and export tools.
Media ManagementVideo EditingFully FOSS
Fully FOSS
Details
OpenCut logo

OpenCut

96.2k
OpenCut is a free and open source video editor for web, desktop, and mobile.
Video EditingMedia ManagementAutomation Tools+1
Details
OmniTools logo

OmniTools

10.4k
OmniTools is a self-hosted web app that provides a collection of everyday online tools for working with images, videos, PDFs, text, dates, math, and data.
Miscellaneous ToolsPermissive LicenseDocument Management+3
Details
filmcraft logo

filmcraft

16.3k
FilmCraft is a non-linear video editor that recreates Adobe Premiere Pro’s workflow in pure Rust, with editing, color grading, effects, audio, titles, and browser support via WebAssembly.
Video EditingMedia ManagementFully FOSS
Fully FOSS
Details
OpenReel Video logo

OpenReel Video

5.5k
A browser-based, client-side video editor for professional editing without uploads or installs.
Video EditingMedia ManagementSelf Hosting Solutions
Single Container
Details
Omniclip logo

Omniclip

1.5k
Omniclip is a free and open source browser-based video editor that runs locally, stores projects on the user's device, and avoids cloud uploads.
Video EditingMedia Management
Details
Lottie Tools logo

Lottie Tools

53
An open-source web-based editor for creating, editing, importing, and exporting Lottie animations, with a companion CLI tool to convert Lottie JSON to GIF.
Media ManagementPermissive LicenseVideo Editing
2 Containers
Details
Digitranscode logo

Digitranscode

2
Convert audio files and videos directly in the browser (documentation in French).
Miscellaneous ToolsMedia ManagementVideo Editing+2
Fully FOSS
Details
Digimerge logo

Digimerge

2
Assemble audio and video files directly in your browser (documentation in French).
Miscellaneous ToolsVideo EditingMedia Management+3
Fully FOSS
Details
Digicut logo

Digicut

1
Cut audio and video files using FFMPEG.wasm (documentation in French).
Miscellaneous ToolsCopyleft LicenseMedia Management+1
Details
openscreen logo

openscreen

39.9k
OpenScreen is a free, open-source screen recording app for creating simple product demos and walkthroughs.
Media ManagementVideo EditingCopyleft License+1
Details