Trong bối cảnh nội dung số ngày càng đóng vai trò then chốt, nhu cầu về một công cụ thiết kế mạnh mẽ, linh hoạt và kiểm soát được dữ liệu là điều không thể thiếu. HyCanvasxuất hiện như một giải pháp thay thế đầy hứa hẹn cho các nền tảng thiết kế đám mây như Canva, nhưng với triết lý hoàn toàn khác:self-hosted,AI-nativevàkhông có watermark.Canva mã nguồn mở, tự host trên máy chủ của bạn với chỉ một file Go.
Một số điểm nổi bật:
* Thiết kế poster, slide, tài liệu, bảng tính và whiteboard trên cùng một nền tảng.
* Xuất file PNG và PDF chất lượng cao.
* Định dạng tài liệu mở, dễ tích hợp với hệ thống khác.
* Brand Kit để quản lý màu sắc, font và tài nguyên thương hiệu.
* Lớp AI “Bring Your Own Key” – sử dụng API key của chính bạn, dữ liệu không rời khỏi máy chủ.
* Có thể tự triển khai (self-host) để kiểm soát hoàn toàn dữ liệu. (Reddit)
Về công nghệ, HyCanvas sử dụng frontend TypeScript chạy trên Canvas2D, kết hợp với backend Go được đóng gói thành một binary tự chứa. Dữ liệu được lưu bằng PostgreSQL, giúp việc triển khai và mở rộng khá đơn giản.
HyCanvas là gì?
HyCanvas là một nền tảng thiết kế được xây dựng trên HTML Canvas với rendering engine tùy chỉnh, mang đến trải nghiệm thiết kế mượt mà và phản hồi nhanh. Nó hỗ trợ nhiều loại tài liệu: từ đồ họa mạng xã hội, bài thuyết trình, video, whiteboard, tài liệu văn bản cho đến bảng tính.
Điểm nhấn lớn nhất:mọi thiết kế đều thuộc sở hữu của bạn. Không có watermark, không có paywall, không bị giới hạn tính năng. Bạn có thể xuất tác phẩm sang các định dạng phổ biến như PNG, PDF mà không bị đóng dấu hay ràng buộc nào.

Tính năng nổi bật
AI tích hợp sâu
HyCanvas được xây dựng theo hướngAI-native, với cơ chếbring-your-own-key– bạn tự mang khóa API của mình, hỗ trợ OpenAI, Anthropic, DeepSeek hoặc endpoint tùy chỉnh. Không cần khóa API, bạn vẫn có thể sử dụng các công cụ nhưCritica(phê bình thiết kế),Armonizzazione(hài hòa màu sắc),Auto-layoutvàAuto-animate.
Các tính năng AI bao gồm:
- Trợ lý đàm thoại có thể lên kế hoạch và áp dụng chỉnh sửa
- Magic Design– tạo trang hoàn chỉnh từ văn bản
- Tạo ảnh, thay đổi phong cách (restyling) và phê bình thiết kế
Editor chuyên nghiệp
Giao diện editor được tổ chức khoa học với các bảng điều khiển:
- Elements: hình khối, đường kẻ, khung ảnh, grid, bảng, biểu đồ, mã QR
- Text: font pairing được tuyển chọn, kho font tìm kiếm được, hỗ trợ tải font tùy chỉnh (TTF, OTF, WOFF, WOFF2)
- Brand Kit: quản lý màu sắc, font, logo, giọng nói thương hiệu, với cơ chế khóa cho admin
Cộng tác thời gian thực
HyCanvas hỗ trợ làm việc nhóm mạnh mẽ:
- Chỉnh sửa thời gian thực với avatar, con trỏ chia sẻ, chế độ follow
- Khóa tự động trên các thành phần, chỉnh sửa ngoại tuyến và đồng bộ khi có kết nối lại
- Comment dạng thread, ghim trên canvas, mention, emoji, chuyển thành task với người phụ trách, trạng thái và hạn chót
- Yêu cầu phê duyệt với cơ chế lock server-side sau khi được approve
Bảo mật và quyền kiểm soát
- Chia sẻ qua email với các cấp độ quyền tùy chỉnh: view, comment, edit
- Link công khai có thể đặt mật khẩu, thời hạn, yêu cầu đăng nhập
- Vai trò tùy chỉnh: view, comment, edit, share, approve, manage roles, delete
- Xác thực hai yếu tố (TOTP), quản lý phiên hoạt động, hỗ trợ Single Sign-On
Yêu cầu hệ thống
Thành phần | Yêu cầu |
Hệ điều hành | Linux (x86_64, ARM64) hoặc macOS (Apple Silicon) |
Cơ sở dữ liệu | PostgreSQL |
Port | 8005 (mặc định, có thể tùy chỉnh) |
Dung lượng | Tối thiểu 2GB RAM, khuyến nghị 4GB+ |
Hướng dẫn cài đặt
Cách 1: Cài đặt bằng Binary (Khuyến nghị)
HyCanvas cung cấp binary pre-compiled, cách cài đặt đơn giản và nhanh nhất.
Trên Linux
wget //github.com/hyscaler/HyCanvas/releases/download/vX.X.X/hycanvas_X.X.X_linux_amd64.tar.gz
# Giải nén
tar -xzf hycanvas_X.X.X_linux_amd64.tar.gz
# Cấp quyền thực thi
chmod +x hycanvas
# Khởi chạy và cấu hình lần đầu
./hycanvas service start
Ví dụ: Với Orange Pi 3B (ARM64), tải filelinux_arm64thay vìlinux_amd64.
Trên macOS (Apple Silicon)
# Tải binary cho macOS ARM64: hycanvas_X.X.X_darwin_arm64.tar.gz
wget //github.com/hyscaler/HyCanvas/releases/download/vX.X.X/hycanvas_X.X.X_darwin_arm64.tar.gz
# Giải nén
tar -xzf hycanvas_X.X.X_darwin_arm64.tar.gz
# Cấp quyền thực thi
chmod +x hycanvas
# Khởi chạy
./hycanvas service start
Dấu ./ có nghĩa là “tìm file hycanvas trong thư mục hiện tại”. Nếu bạn đang ở đúng thư mục chứa file binary, lệnh này sẽ hoạt động.
hycanvas service start
Lỗi zsh: command not found: hycanvas xảy ra là do shell không tìm thấy lệnh hycanvas trong các thư mục đã được khai báo trong biến môi trường PATH.
Nếu bạn muốn gõ hycanvas từ bất kỳ đâu, hãy thêm đường dẫn thư mục chứa binary vào biến PATH.
Bước 1: Tìm đường dẫn tuyệt đối đến thư mục chứa file hycanvas. Ví dụ: /Users/your-username/Downloads hoặc nơi bạn đã giải nén.
Bước 2: Mở file cấu hình shell ~/.zshrc (vì bạn đang dùng zsh):
nano ~/.zshrc
Bước 3: Thêm dòng sau vào cuối file (thay /path/to/directory bằng đường dẫn thực tế):
export PATH=”$PATH:/path/to/directory”
Bước 4: Lưu file và tải lại cấu hình:
source ~/.zshrc
Sau đó thử chạy lại hycanvas service start
Tự build từ mã nguồn
Nếu cả hai cách trên đều không khả thi, bạn có thể tự build HyCanvas từ mã nguồn.
Clone repository:
git clone //github.com/hyscaler/HyCanvas.git
cd HyCanvas
Cài đặt môi trường: Dự án sử dụng Node.js. Bạn cần cài đặt Node.js và pnpm.
Build và chạy: Thực hiện theo hướng dẫn trong file README.md của dự án (thường là các lệnh pnpm install, pnpm run build, và pnpm run start). Nếu bạn đã thử cách trên mà vẫn không được, có thể binary bạn tải về không tương thích với macOS hoặc chưa được cấp quyền thực thi.
- Cấp quyền thực thi: Chạy lệnh chmod +x hycanvas trong thư mục chứa file.
- Kiểm tra kiến trúc: Chạy file hycanvas để xem binary được build cho nền tảng nào. Nếu hiển thị Mach-O là dành cho macOS, nếu ELF là dành cho Linux.
- Nếu binary là Linux (ELF): Bạn không thể chạy trực tiếp trên macOS. Hãy sử dụng Docker như đã hướng dẫn ở phần trước.
Tóm lại:
- Ưu tiên dùng binary: Kiểm tra trang Releases cho file darwin_arm64.
- Dùng Docker: Nếu không có binary, Docker là cách nhanh và sạch sẽ nhất.
- Tự build: Khi hai cách trên không khả thi.
Lần chạy đầu tiên, HyCanvas sẽ hiển thị wizard cấu hình qua trình duyệt hoặc terminal:
- Wizard yêu cầu nhậpmã bí mật(wizard access secret) hiển thị trên terminal
- Nhập thông tin kết nối PostgreSQL
- Cấu hình storage (mặc định là ổ cứng cục bộ)
- Thiết lập email (tùy chọn)
Sau khi hoàn tất, file.envsẽ được tạo tự động, migration database được chạy và ứng dụng khởi động.
Quản lý dịch vụ:
./hycanvas service start # Khởi động
./hycanvas service stop # Dừng
./hycanvas service restart # Khởi động lại
./hycanvas service status # Kiểm tra trạng thái
./hycanvas service log # Xem log
Lưu ý quan trọng: Dịch vụ sẽkhông tự động khởi động cùng hệ thống. Để làm điều này, bạn có thể thêm crontab:@reboot /path/to/hycanvas service start.
Cách 2: Cài đặt bằng Docker Compose
Nếu bạn ưa thích container hoặc không tìm thấy binary cho nền tảng của mình, Docker là lựa chọn tuyệt vời.
# Clone repository
git clone //github.com/hyscaler/HyCanvas.git
cd HyCanvas
# Tạo file .env từ mẫu
cp .env.example .env
# Sửa .env với thông tin của bạn
nano .env
Nội dung tối thiểu trong.env:
env
JWT_SECRET=”<chuoi-hex-32-byte-ngau-nhien>”
APP_PORT=8005
DATABASE_URL=”postgresql://user:pass@host:5432/hycanvas?schema=public”
TạoJWT_SECRET:
bash
openssl rand -hex 32
Sau đó chạy:
bash
docker compose up -d
Ứng dụng sẽ chạy tại//localhost:8005.
Chạy với PostgreSQL
Nếu bạn muốn có sẵn cả database trong Docker:
# Tạo .env với các biến cho bundled Postgres
echo “JWT_SECRET=$(openssl rand -hex 32)“ > .env
echo “POSTGRES_USER=hycanvas” >> .env
echo “POSTGRES_PASSWORD=<mat-khau-manh>” >> .env
echo “POSTGRES_DB=hycanvas” >> .env
echo “COMPOSE_PROFILES=bundled” >> .env
echo “APP_PORT=8005” >> .env
# Chạy với compose file production
docker compose -f docker-compose.prod.yml up –build -d
Cấu hình PostgreSQL
Nếu bạn đã có PostgreSQL riêng, hãy tạo database và user cho HyCanvas:
Chuyển sang user postgres (user mặc định của PostgreSQL) và mở giao diện psql:
sudo -u postgres psql
Nếu bạn đã có user khác có quyền tạo database, bạn có thể dùng:
psql -U your_admin_user -d postgres
Bước 3: Tạo user (role) mới
Trong cửa sổ psql, chạy lệnh sau để tạo user hycanvas với mật khẩu:
— Đăng nhập với user postgres
CREATE ROLE hycanvas WITH LOGIN PASSWORD ‘mat_khau_manh’;
ALTER ROLE hycanvas CREATEDB;
CREATE DATABASE hycanvas OWNER hycanvas;
Nếu gặp lỗi quyền trên schemapublic khi chạy migration trong sql:
\c hycanvas
GRANT ALL ON SCHEMA public TO hycanvas;
GRANT CREATE, USAGE ON SCHEMA public TO hycanvas;
Hoặc đơn giản hơn:
sql
ALTER DATABASE hycanvas OWNER TO hycanvas;
Cập nhậtDATABASE_URLtrong.env:
text
DATABASE_URL=”postgresql://hycanvas:mat_khau_manh@192.168.1.20:5432/hycanvas?schema=public”
Chỉnh cấu hình .env
Với phiên bản binary, file cấu hình mặc định là .env nằm trong cùng thư mục với file hycanvas. Nếu bạn chưa có file này, HyCanvas sẽ tự động tạo sau lần chạy đầu tiên.
Dưới đây là hướng dẫn chi tiết để sửa cấu hình cho phép truy cập từ IP khác.
1. Kiểm tra file cấu hình .env
ls -la | grep .env
Nếu chưa có, hãy tạo file .env:
nano .env
2. Nội dung cần thêm/sửa
# Quan trọng: Bind vào tất cả địa chỉ IP
HOST=0.0.0.0
# Cổng (giữ nguyên hoặc đổi)
PORT=8005
# (Tùy chọn) Public URL để sinh link chính xác
PUBLIC_URL=”//192.168.1.20:8005″ # thay IP thực tế của bạn
# Các biến khác giữ nguyên
DATABASE_URL=”postgresql://…”
JWT_SECRET=”…”
Lưu ý: Nếu đã có file .env, chỉ cần thêm hoặc sửa 3 dòng đầu.
3. Khởi động lại dịch vụ để áp dụng
./hycanvas service restart
Sau khi restart, kiểm tra log để xem HyCanvas đã bind đúng chưa:
./hycanvas service log
Tìm dòng tương tự:
Server is running on //0.0.0.0:8005
hoặc
Listening on 0.0.0.0:8005
Đây là danh sách các biến môi trường chính trong file .env của HyCanvas, được tổng hợp từ tài liệu chính thức của dự án.
1. Cấu hình Cơ bản (Bắt buộc)
Biến môi trường Mô tả
DATABASE_URL Bắt buộc. Chuỗi kết nối PostgreSQL (ví dụ: postgresql://user:pass@host:5432/db).
JWT_SECRET Bắt buộc. Dùng để ký token phiên và mã hóa khóa AI. Nên đặt giá trị mạnh trong môi trường production.
PORT Cổng chạy backend, mặc định là 8005.
NODE_ENV Môi trường chạy, có thể là development hoặc production.
2. Cấu hình Lưu trữ (Storage)
Biến môi trường Mô tả
STORAGE_DRIVER Loại driver lưu trữ, mặc định là local (ổ cứng). Có thể đặt là s3 để dùng S3.
LOCAL_STORAGE_PATH Đường dẫn tuyệt đối đến thư mục lưu trữ file khi dùng driver local.
S3_* Các biến cấu hình cho S3 (endpoint, bucket, keys) khi dùng driver s3.
3. Cấu hình Nâng cao
Biến môi trường Mô tả
ASSET_QUOTA_BYTES Giới hạn dung lượng (bytes) mỗi Workspace, mặc định là 2 GiB. Đây là biến bạn cần thay đổi.
USER_STORAGE_QUOTA_BYTES Giới hạn dung lượng (bytes) toàn cục cho mỗi người dùng trên tất cả Workspace. Mặc định là 0 (không giới hạn).
DB_AUTO_MIGRATE Tự động chạy migration database khi khởi động server (true/false).
FRONTEND_URL Origin được CORS cho phép. Trong môi trường dev thường là //localhost:3000.
APP_URL URL công khai để tạo link (xác thực email, link chia sẻ).
AI_SECRET Dùng để mã hóa khóa AI của workspace. Nếu không có, sẽ dùng JWT_SECRET làm fallback.
OIDC_* Cấu hình cho Single Sign-On (SSO) qua OIDC.
CAPTCHA_* Cấu hình Captcha cho form đăng nhập (Turnstile/reCAPTCHA).
Lưu ý quan trọng
Quy tắc đặt tên: Các biến không phân biệt chữ hoa chữ thường. Bạn nên dùng chữ in hoa và dấu gạch dưới _ để phân tách (ví dụ: DATABASE_URL).
Kết nối AI vào HyCanvas
Bạn có thể thực hiện theo 2 cách: cấu hình qua file.envhoặccấu hình trong giao diện.
Phương pháp cấu hình AI cho toàn bộ server. Mở file .env trong thư mục chứa binary hycanvas:
nano .env
Thêm các biến môi trường tương ứng với nhà cung cấp bạn muốn sử dụng:
OPENAI_API_KEY=”sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”
OPENAI_BASE_URL=”//api.openai.com/v1″ # Tùy chọn, nếu dùng proxy/endpoint khác
OPENAI_MODELS=”gpt-4o,gpt-4o-mini,gpt-4-turbo” # Các model được phép sử dụng
ANTHROPIC_API_KEY=”sk-ant-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”
ANTHROPIC_BASE_URL=”//api.anthropic.com” # Tùy chọn
ANTHROPIC_MODELS=”claude-3-5-sonnet-20241022,claude-3-opus-20240229″
DEEPSEEK_API_KEY=”sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”
DEEPSEEK_BASE_URL=”//api.deepseek.com/v1″ # Tùy chọn
DEEPSEEK_MODELS=”deepseek-chat,deepseek-coder”
Endpoint tùy chỉnh (ví dụ: local LLM qua Ollama, vLLM)
CUSTOM_AI_API_KEY=”your-api-key” # Nếu endpoint yêu cầu
CUSTOM_AI_BASE_URL=”//localhost:11434/v1″ # URL của endpoint OpenAI-compatible
CUSTOM_AI_MODELS=”llama3.2,phi3″
Lưu file và khởi động lại dịch vụ để áp dụng thay đổi:
./hycanvas service restart
HyCanvas cho phép bạn cấu hình AI trực tiếp trong giao diện quản trị của từng Workspace, giúp linh hoạt hơn và không cần restart server.
Mở một design bất kỳ.
Sử dụng các công cụ AI như Magic Design (tạo trang từ văn bản), Generate Image, Restyle, hoặc trợ lý chat. Trong phần “AI” hoặc “Integrations”, bạn sẽ thấy các trường để nhập:
API Key của nhà cung cấp (OpenAI, Anthropic, DeepSeek…)
Base URL (nếu dùng endpoint tùy chỉnh)
Model list (các model được phép sử dụng)
Nhập thông tin và lưu lại.
Lưu ý: Các khóa API được mã hóa và lưu trữ trên server, không bao giờ bị lộ ra phía trình duyệt
Một số công cụ AI cơ bản như Critica (phê bình thiết kế), Armonizzazione (hài hòa màu sắc), Auto-layout và Auto-animate hoạt động mà không cần API key.
AI_SECRET: Nếu bạn muốn mã hóa khóa AI của workspace, có thể đặt biến AI_SECRET trong .env. Nếu không, HyCanvas sẽ dùng JWT_SECRET làm fallback.
Model list: Nếu không chỉ định danh sách model, HyCanvas sẽ sử dụng danh sách mặc định của nhà cung cấp.
Kết luận
HyCanvas là một nền tảng thiết kế mạnh mẽ, AI-native và self-hosted, cho phép bạn kiểm soát hoàn toàn dữ liệu và sáng tạo không giới hạn. Với cách cài đặt đơn giản qua binary hoặc Docker, bạn có thể triển khai trên cả Linux và macOS chỉ trong vài phút.
Tài nguyên hữu ích:
Nâng cấp
Các bản phát hành //github.com/hyscaler/HyCanvas/releases
./hycanvas service stop
cp hycanvas hycanvas.bak # rollback insurance
tar -xzf hycanvas_vX.Y.Z_linux_amd64.tar.gz # replaces ./hycanvas
./hycanvas service start # migrations run automatically on boot
Cơ sở dữ liệu sẽ tự động được cập nhật khi khởi động và việc mở các tệp thiết kế cũ luôn thành công (định dạng tệp được mở sẽ giữ nguyên các bản cập nhật). Để khôi phục lại, hãy dừng chương trình, khôi phục bản sao lưu nhị phân và khởi động lại.

Bài viết liên quan: