Hacker News ★ 71 4 min

Doory – Open-Source Canva

🔗 https://github.com/shaongitbd/doory

📌 Doory:能自架的開源 Canva,設計檔案留在自己的伺服器

TL;DR:Doory 是一套可自行架設的開源設計編輯器,功能全免費,三個指令就能跑起整套服務。

付費解鎖模板、浮水印、帳號綁定,是許多線上設計工具的標準套路。Doory 反過來打一張牌:所有功能免費開放,而且你可以把整套系統架在自己的伺服器上,設計檔案完全不離開你的基礎設施。

🤔 解決什麼問題,為誰而做

Doory 是一個跑在瀏覽器裡的完整設計編輯器,可以做海報、社群貼文、限時動態、投影片、邀請卡、履歷、縮圖與名片,支援從範本或空白頁面開始編輯,並匯出成 PNG、JPG、SVG、PDF、MP4 或 GIF。它的定位很明確:給想要「Canva 等級的工具,但開源、免費、自己掌控」的使用者,訪客不需要註冊帳號就能直接開始設計,作品先存在瀏覽器裡,要存雲端再建帳號,一步就能把訪客作品轉移過去。

🧩 架構:前端 React 生態系 + Django 後端 + Docker Compose 一鍵部署

技術棧方面,前端用 React 19、TypeScript、Vite、Fabric.js、Yjs(即時協作用)與 Zustand;後端是 Django 5、Django REST Framework、Channels 與 PostgreSQL;部署則靠 Docker Compose,搭配 nginx、可選的 Redis,以及 S3 相容儲存服務。功能面包含圖層、群組、遮罩、濾鏡、曲線文字、對齊吸附、多頁面設計、27 種進出場動畫、12 種強調動畫、16 種頁面轉場,以及內建 24 首音樂迴圈與 88 個音效素材;協作部分支援可設密碼的分享連結(檢視/留言/編輯權限)、釘選留言、版本歷史與即時多人遊標協作。

🧩 怎麼用:三個指令自架,再用管理指令灌入素材內容

自架流程相當精簡:複製 .env.example 為 .env 並設定 DJANGO_SECRET_KEY、POSTGRES_PASSWORD,接著執行 docker compose up -d --build,再用 docker compose exec api python manage.py createsuperuser 建立管理員帳號,打開 http://localhost:8080 就能開始設計。由於是全新站點,素材(範本分類、字型、範本、圖形元素、圖示包、去背模型、音效庫)需要額外用對應的管理指令(如 seed_gallery、sync_fonts、seed_templates、seed_elements、sync_element_packs、sync_models、sync_audio)灌入。常見設定項目包括 SITE_URL、DJANGO_ALLOWED_HOSTS、SECURE_SSL_REDIRECT、SMTP 設定、WEB_PORT,以及是否啟用 Google 登入或 Unsplash/Pexels 圖庫搜尋的金鑰。

📊 與 Canva 的對照

README 提供的對照表顯示,Doory 和 Canva 都支援即時協作、留言,以及動畫、影片與 GIF 匯出,去背功能 Doory 是在瀏覽器本機端執行模型。差異主要在於:Canva 是免費方案搭配付費 Pro/Teams 方案,Doory 全功能免費;Canva 非開源、不可自架,Doory 兩者都支援;Canva 需要帳號才能設計,Doory 不需要;範本庫方面,Canva 庫更大,Doory 目前隨附 10 個起始範本,可自行在後臺新增。

⚠️ 授權條款需要留意

Doory 採用 Attribution Assurance License,允許使用、修改、再散布甚至商用,但要求保留授權與 NOTICE,並在執行中的應用程式裡明顯標示作者具名,這點在評估是否要用於商業產品前值得先確認清楚。

🎯 實務啟示

如果團隊需要內部設計工具但不想把素材與使用者資料交給第三方 SaaS,Doory 的自架路線和技術棧(Django + React + Docker Compose)對熟悉這套組合的團隊來說上手成本不高;但要注意範本與素材庫是空的,上線前得規劃好內容灌入流程,另外商用時務必遵守具名標示的授權要求。

🔗 來源

#OpenSource #DesignTools #SelfHosted #Canva #React #Django #Docker #WebDev #GraphicDesign #FOSS

原始資料 Hacker News · 收集於 2026-10-12
來源原標題
Doory – Open-Source Canva
作者
acley
原始標籤
hackernews
來源訊號
HN points 204 HN 留言 72
原始連結
https://github.com/shaongitbd/doory

摘要原文

See it in action · Features · Templates · Doory vs Canva · Self-host · FAQ Doory is a full design editor that runs in your browser. Make posters, social posts, stories, slides, invitations, resumes, thumbnails and business cards: start from a template or a blank page, edit everything, and export to PNG, JPG, SVG, PDF, MP4 or GIF. Every feature is free, nobody needs an account to start, and you can run the whole thing on your own server. 🎬 See it in action A real, unedited recording: pick a template, rename the band, recolour the dates, add a star, export. 💜 Why people pick Doory 🆓 Free, for real No Pro plan, no locked templates, no watermarks, no ads. Every tool in the editor is there for everyone, from background removal to video export. ⚡ Start in one click Open the editor and design. Guests' work is saved in the browser; create an account only when you want your designs in the cloud, and they move over in one step. 🏠 Yours to host One docker compose up runs the app, the API, the database and live collaboration on your own server. Every design and upload stays under your control. 🛠️ A real editor Layers, groups, masks, filters, curved text, snapping, rulers, multi-page designs, animation, audio, presenting, comments and real-time co-editing. 🎨 Everything you need to design Edit anything Click any text, shape or photo to change it. Fonts, colours, sizes, alignment and effects are one click away in the toolbar above the page. Bring it to life 27 enter and exit animations, 12 emphasis effects and 16 page transitions, with music and sound effects from a built-in library. Present it, or export it as a video. Stay organised Every object is a layer you can rename, lock, hide, reorder by dragging, group, or right-click to copy, duplicate, delete and arrange. Export anywhere PNG with transparency, JPG, SVG and PDF, plus MP4, WebM and animated GIF, all made in your browser. Need print? Get a print-ready PDF with bleed and crop marks. See the full feature list Text Headings, curved text, text effects, font pairings, bulleted and numbered lists, an open-licensed font catalogue and your own uploaded fonts Elements Shapes, lines and arrows, about 25,000 icons, emoji and illustrations, stickers, QR codes Photos Upload, crop, masks and filters, one-click background removal (the model runs in your browser), stock photo search with an Unsplash or Pexels key Layout Layers with lock and hide, groups, alignment guides, snapping, rulers, multi-page designs with pages of different sizes, magic resize Motion 27 enter and exit animations, 12 emphasis animations and 16 page transitions on a timeline Sound A built-in library of 24 music loops and 88 sound effects (CC0), uploads, voiceover recording, trims and fades Present Present mode with speaker notes, timing, auto-advance, a laser pointer and a second presenter window Together Share links that can view, comment or edit (optionally password protected), pinned comments, version history and real-time co-editing with live cursors Brand Brand kits with your colours, fonts and logos, one click away in every design Export PNG, JPG, SVG and PDF, MP4, WebM and animated GIF, all made in the browser, plus print-ready PDF with bleed and crop marks 🖼️ Templates that look good from the start Ten starter templates ship with Doory, each with its own palette, set in open-licensed fonts and fully editable: a gig poster, a wedding invitation, an event story, a sale post, a café flyer, a quote card, a resume, a YouTube thumbnail, a pitch deck and a business card. Add your own in the admin, and browse them all by category, size and orientation. ⚖️ Doory vs Canva Canva is a great product. Doory is for people who want the same kind of tool, but free, open and in their own hands. Doory Canva Price Free, every feature Free plan, paid Pro and Teams plans Open source ✅ ❌ Run it on your own server ✅ ❌ Design without an account ✅ ❌ Your files stay on infrastructure you control ✅ ❌ Real-time co-editing and comments ✅ ✅ Animation, video and GIF export ✅ ✅ Background removal ✅ in your browser ✅ Template library 10 starter templates, plus any you add A very large library 🚀 Self-host it in 3 commands cp .env.example .env # set DJANGO_SECRET_KEY (openssl rand -base64 48) and POSTGRES_PASSWORD docker compose up -d --build docker compose exec api python manage.py createsuperuser Open http://localhost:8080 and start designing. The web container serves the app and forwards /api and /ws to the backend, so the browser only ever talks to one address. Add the starter content (templates, icons, fonts, audio) A new site starts empty. Add whatever you want once it is running: docker compose exec api python manage.py seed_gallery # template categories docker compose exec api python manage.py sync_fonts --popular 100 docker compose exec api python manage.py seed_templates # the starter templates (add --update to refresh them) docker compose exec api python manage.py seed_elements # shapes and graphics docker compose exec api python manage.py sync_element_packs # icons, emoji and illustrations (download) docker compose exec api python manage.py sync_models # background removal model docker compose exec api python manage.py sync_audio # music and sound effects Settings worth knowing ( .env ) Setting What it does SITE_URL The public address of the site, e.g. https://doory.example.com (no trailing slash) DJANGO_ALLOWED_HOSTS The host names the site answers to, comma separated SECURE_SSL_REDIRECT , SECURE_COOKIES true behind HTTPS, false for plain http:// EMAIL_URL , DEFAULT_FROM_EMAIL SMTP, e.g. smtp+tls://user:password@smtp.example.com:587 (without it, emails are printed to the API log) WEB_PORT , WEB_BIND Where the site is published (default 0.0.0.0:8080 ) INSTALL_CHROMIUM false skips the headless browser that server-side PDF export needs GOOGLE_CLIENT_ID Turns on "Sign in with Google" UNSPLASH_ACCESS_KEY , PEXELS_API_KEY Turn on stock photo search USE_S3 and AWS_* Store uploads in S3-compatible storage instead of a local volume Develop locally make setup # virtualenv, dependencies, local database make dev-api # API on http://localhost:8000 make dev-web # app on http://localhost:5173 (second terminal) make help lists the other targets (tests, lint, content). ❓ FAQ Is it really free? Yes. There are no plans, no paywalls and no ads in Doory. Every feature is available to everyone. Do I need an account? No. Guests design straight away and their work is saved in the browser. An account keeps designs in the cloud, lets you share them and use brand kits; signing up moves your guest designs over in one step. Can I use it for my business or host it for my users? Yes, as long as you credit the author as the licence asks: keep the licence and NOTICE with it and show the credit in the running app. See License and credit . Where are my designs stored? Guest designs and their images live in the browser on that device. Signed-in designs are stored on the server that runs Doory: yours, if you self-host. Uploads can go to a local volume or to S3-compatible storage. 🧱 Built with React 19, TypeScript, Vite, Fabric.js, Yjs and Zustand in the browser; Django 5, Django REST Framework, Channels and PostgreSQL on the server; Docker Compose with nginx, optional Redis and S3-compatible storage. 🤝 Contributing Bug reports, ideas and pull requests are welcome. Open an issue to report a bug or suggest a feature. For a security problem, please report it privately through the repository's Security tab instead. If Doory is useful to you, a ⭐ helps other people find it. 📜 License and credit Doory is released under the Attribution Assurance License . You may use, change and redistribute it, including commercially, but you must credit the author : keep the licence and NOTICE with it, and display this credit prominently in the running app: Doory by Siam, creator and maintainer of Doory — https://github. (204 points, 72 comments on Hacker News)

由 claude-code/sonnet 自動生成