CryptPad is an open-source alternative to Google Workspace that provides end-to-end encrypted documents, spreadsheets, and forms directly in your browser.
Google Workspace anchors collaboration to verified user accounts and inspects documents stored on central servers. CryptPad moves the entire editing workflow into client-side encrypted browser tabs where the host server never reads keystrokes or file contents. Participants collaborate on spreadsheets, presentations, and forms through shareable links without creating accounts or surrendering contact details.
Everyday work in Google Workspace assumes all participants hold registered accounts and route changes through central servers. CryptPad replaces the creation core—Docs, Sheets, Slides, and Forms—with browser tools powered by local encryption. Browsers synchronize edits directly using cryptographic keys embedded in the document address. For community groups, advocates, and clients who avoid proprietary accounts, this eliminates onboarding friction: anyone with the URL can edit a pad or submit a form immediately.
However, CryptPad is strictly a document workshop rather than a full communication suite. It provides no email server to replace Gmail, no video calls to displace Google Meet, and no administrative directory to reset lost passwords. Access relies entirely on link permissions and user credentials. If a collaborator loses their password without saving a recovery phrase, no administrator can restore access. Teams gain privacy for confidential drafts, but must manage communication and link security independently.
Can CryptPad replace Google Docs and Google Workspace? CryptPad replaces Google Docs, Sheets, Slides, and Forms for real-time document editing, but it does not provide email hosting or video conferencing.
Is CryptPad free to use? Yes, public instances such as cryptpad.fr offer free tiers with standard storage quotas, and the platform can be self-hosted without licensing fees.
What happens if a user forgets their CryptPad password? Because CryptPad uses zero-knowledge encryption, forgotten passwords cannot be reset by administrators unless the user saved an account recovery phrase beforehand.
CryptPad is well suited for teams prioritizing document confidentiality and simple link sharing, though organizations needing integrated email or centralized account recovery should look elsewhere. Ongoing development through September 2026 and an AGPL-3.0 copyleft license that keeps modifications open make it a reliable self-hosted choice for private document collaboration.
We started this exact setup from scratch in a clean Linux machine on Nov 2, 2026 and checked it through CryptPad's own API: every check passed. Recipes are re-checked regularly and removed if they stop working.
mkdir -p cryptpad && cd cryptpad
curl -fsSL https://open-source.store/tools/cryptpad/compose.yml -o compose.ymlcat > .env <<EOF
CPAD_MAIN_DOMAIN=http://localhost:3000
CPAD_SANDBOX_DOMAIN=http://localhost:3000
EOFCPAD_MAIN_DOMAIN — Main public URL where visitors access CryptPad; set to your public domain in production.CPAD_SANDBOX_DOMAIN — Sandbox URL for serving isolated iframe content; set to your separate public sandbox domain in production.docker compose up -dservices:
cryptpad:
image: cryptpad/cryptpad:version-2026.10.0
user: root
environment:
CPAD_MAIN_DOMAIN: ${CPAD_MAIN_DOMAIN}
CPAD_SANDBOX_DOMAIN: ${CPAD_SANDBOX_DOMAIN}
volumes:
- cryptpad-blob:/cryptpad/blob
- cryptpad-block:/cryptpad/block
- cryptpad-customize:/cryptpad/customize
- cryptpad-data:/cryptpad/data
- cryptpad-datastore:/cryptpad/datastore
- cryptpad-config:/cryptpad/config
- type: tmpfs
target: /tmp
ports:
- "3000:3000"
restart: always
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:3000/ || exit 1"]
interval: 5s
timeout: 5s
retries: 20
start_period: 15s
volumes:
cryptpad-blob:
cryptpad-block:
cryptpad-customize:
cryptpad-data:
cryptpad-datastore:
cryptpad-config:
Free IDE for Java, Kotlin, Go, TypeScript and Python. Built on IntelliJ Community, fully open source, 300+ plugins.
Show that CryptPad is listed as an open-source alternative. Paste into your README:
Ubuntu 24.04 · Apple container, Docker 29.1.3, Compose 2.40.3+ds1-0ubuntu1~24.04.1. Images pulled in 35 s: cryptpad/cryptpad:version-2026.10.0.
Based on the upstream setup. Official compose. Pinned image to version-2026.10.0; host paths replaced with named volumes, domains moved to .env, user set to root to resolve volume permissions on /cryptpad/config, healthcheck interval optimized, and optional EuroOffice/OnlyOffice integration (Sheet, Document, and Presentation apps) is not enabled by default.
cryptpad-1 | 2026-11-02T20:39:58.271809802Z <anonymous_script>:1 cryptpad-1 | 2026-11-02T20:39:58.271813844Z id cryptpad-1 | 2026-11-02T20:39:58.271814386Z ^ cryptpad-1 | 2026-11-02T20:39:58.271814927Z cryptpad-1 | 2026-11-02T20:39:58.271815427Z SyntaxError: Unexpected token 'i', "id cryptpad-1 | 2026-11-02T20:39:58.271815927Z " is not valid JSON cryptpad-1 | 2026-11-02T20:39:58.271816469Z at JSON.parse (<anonymous>) cryptpad-1 | 2026-11-02T20:39:58.271817011Z at WebSocket.<anonymous> (/cryptpad/node_modules/cryptpad-server/build/front.js:5392:53) cryptpad-1 | 2026-11-02T20:39:58.271817594Z at WebSocket.emit (node:events:514:28) cryptpad-1 | 2026-11-02T20:39:58.271818136Z at Receiver.receiverOnMessage (/cryptpad/node_modules/ws/lib/websocket.js:1253:20) cryptpad-1 | 2026-11-02T20:39:58.271818636Z at Receiver.emit (node:events:514:28) cryptpad-1 | 2026-11-02T20:39:58.271819094Z at Receiver.dataMessage (/cryptpad/node_modules/ws/lib/receiver.js:633:14) cryptpad-1 | 2026-11-02T20:39:58.271819636Z at Receiver.getData (/cryptpad/node_modules/ws/lib/receiver.js:532:10) cryptpad-1 | 2026-11-02T20:39:58.271820094Z at Receiver.startLoop (/cryptpad/node_modules/ws/lib/receiver.js:190:16) cryptpad-1 | 2026-11-02T20:39:58.271820594Z at Receiver._write (/cryptpad/node_modules/ws/lib/receiver.js:117:10) cryptpad-1 | 2026-11-02T20:39:58.271821094Z at writeOrBuffer (node:internal/streams/writable:574:12) cryptpad-1 | 2026-11-02T20:39:58.271821594Z cryptpad-1 | 2026-11-02T20:39:58.271822011Z Node.js v24.22.1 cryptpad-1 | 2026-11-02T20:39:58.275281011Z WebSocket Disconnected core:0 front:0 cryptpad-1 | 2026-11-02T20:39:58.275875219Z Child process stopped due to error. cryptpad-1 | 2026-11-02T20:39:58.275967094Z 1 cryptpad-1 | 2026-11-02T20:39:58.276248219Z WebSocket Disconnected core:1 front:0 cryptpad-1 | 2026-11-02T20:39:58.672701552Z cryptpad-1 | 2026-11-02T20:39:58.672712802Z > [email protected] build cryptpad-1 | 2026-11-02T20:39:58.672715177Z > node scripts/build.js cryptpad-1 | 2026-11-02T20:39:58.672715969Z cryptpad-1 | 2026-11-02T20:39:58.708764594Z Creating target directories cryptpad-1 | 2026-11-02T20:39:58.708962261Z Parsing /cryptpad/www/sheet/index.html cryptpad-1 | 2026-11-02T20:39:58.709199427Z Creating ./www/sheet/index.html cryptpad-1 | 2026-11-02T20:39:58.709304427Z cryptpad-1 | 2026-11-02T20:39:58.709305802Z Parsing /cryptpad/www/doc/index.html cryptpad-1 | 2026-11-02T20:39:58.709427802Z Creating ./www/doc/index.html cryptpad-1 | 2026-11-02T20:39:58.709436219Z cryptpad-1 | 2026-11-02T20:39:58.709436969Z Parsing /cryptpad/www/presentation/index.html cryptpad-1 | 2026-11-02T20:39:58.709446427Z Creating ./www/presentation/index.html cryptpad-1 | 2026-11-02T20:39:58.709483386Z cryptpad-1 | 2026-11-02T20:39:58.709499469Z Parsing /cryptpad/www/pad/index.html cryptpad-1 | 2026-11-02T20:39:58.709544844Z Creating ./www/pad/index.html cryptpad-1 | 2026-11-02T20:39:58.709566844Z cryptpad-1 | 2026-11-02T20:39:58.709571386Z Parsing /cryptpad/www/kanban/index.html cryptpad-1 | 2026-11-02T20:39:58.709609261Z Creating ./www/kanban/index.html cryptpad-1 | 2026-11-02T20:39:58.709636177Z cryptpad-1 | 2026-11-02T20:39:58.709636886Z Parsing /cryptpad/www/code/index.html cryptpad-1 | 2026-11-02T20:39:58.709661011Z Creating ./www/code/index.html cryptpad-1 | 2026-11-02T20:39:58.709685386Z cryptpad-1 | 2026-11-02T20:39:58.709691594Z Parsing /cryptpad/www/form/index.html cryptpad-1 | 2026-11-02T20:39:58.709770969Z Creating ./www/form/index.html cryptpad-1 | 2026-11-02T20:39:58.709771719Z cryptpad-1 | 2026-11-02T20:39:58.709772177Z Parsing /cryptpad/www/poll/index.html cryptpad-1 | 2026-11-02T20:39:58.709772677Z Creating ./www/poll/index.html cryptpad-1 | 2026-11-02T20:39:58.709837594Z cryptpad-1 | 2026-11-02T20:39:58.709842052Z Parsing /cryptpad/www/whiteboard/index.html cryptpad-1 | 2026-11-02T20:39:58.709875511Z Creating ./www/whiteboard/index.html cryptpad-1 | 2026-11-02T20:39:58.709904427Z cryptpad-1 | 2026-11-02T20:39:58.709905136Z Parsing /cryptpad/www/diagram/index.html cryptpad-1 | 2026-11-02T20:39:58.709938219Z Creating ./www/diagram/index.html cryptpad-1 | 2026-11-02T20:39:58.709954802Z cryptpad-1 | 2026-11-02T20:39:58.709958052Z Parsing /cryptpad/www/slide/index.html cryptpad-1 | 2026-11-02T20:39:58.709990219Z Creating ./www/slide/index.html cryptpad-1 | 2026-11-02T20:39:58.710004802Z cryptpad-1 | 2026-11-02T20:39:58.710005469Z Parsing /cryptpad/www/file/index.html cryptpad-1 | 2026-11-02T20:39:58.710108261Z Creating ./www/file/index.html cryptpad-1 | 2026-11-02T20:39:58.710109052Z cryptpad-1 | 2026-11-02T20:39:58.710109511Z Parsing /cryptpad/www/calendar/index.html cryptpad-1 | 2026-11-02T20:39:58.710110011Z Creating ./www/calendar/index.html cryptpad-1 | 2026-11-02T20:39:58.710110469Z cryptpad-1 | 2026-11-02T20:39:58.710110927Z Parsing /cryptpad/www/drive/index.html cryptpad-1 | 2026-11-02T20:39:58.710111427Z Creating ./www/drive/index.html cryptpad-1 | 2026-11-02T20:39:58.710111886Z cryptpad-1 | 2026-11-02T20:39:58.710121761Z Parsing /cryptpad/www/teams/index.html cryptpad-1 | 2026-11-02T20:39:58.710134677Z Creating ./www/teams/index.html cryptpad-1 | 2026-11-02T20:39:58.710154927Z cryptpad-1 | 2026-11-02T20:39:58.710158552Z Parsing /cryptpad/www/contacts/index.html cryptpad-1 | 2026-11-02T20:39:58.710185011Z Creating ./www/contacts/index.html cryptpad-1 | 2026-11-02T20:39:58.710195427Z cryptpad-1 | 2026-11-02T20:39:58.710196177Z Parsing /cryptpad/www/notifications/index.html cryptpad-1 | 2026-11-02T20:39:58.710216177Z Creating ./www/notifications/index.html cryptpad-1 | 2026-11-02T20:39:58.710229677Z cryptpad-1 | 2026-11-02T20:39:58.710233011Z Parsing /cryptpad/www/checkup/index.html cryptpad-1 | 2026-11-02T20:39:58.710262219Z Creating ./www/checkup/index.html cryptpad-1 | 2026-11-02T20:39:58.710277177Z cryptpad-1 | 2026-11-02T20:39:58.710277969Z Parsing /cryptpad/www/file/index.html cryptpad-1 | 2026-11-02T20:39:58.710296677Z Creating ./www/file/index.html cryptpad-1 | 2026-11-02T20:39:58.710340052Z cryptpad-1 | 2026-11-02T20:39:58.710348094Z Parsing /cryptpad/www/profile/index.html cryptpad-1 | 2026-11-02T20:39:58.710359886Z Creating ./www/profile/index.html cryptpad-1 | 2026-11-02T20:39:58.710434344Z cryptpad-1 | 2026-11-02T20:39:58.710435386Z Parsing /cryptpad/www/settings/index.html cryptpad-1 | 2026-11-02T20:39:58.710452344Z Creating ./www/settings/index.html cryptpad-1 | 2026-11-02T20:39:58.710468427Z cryptpad-1 | 2026-11-02T20:39:58.710469136Z Parsing /cryptpad/www/support/index.html cryptpad-1 | 2026-11-02T20:39:58.710503552Z Creating ./www/support/index.html cryptpad-1 | 2026-11-02T20:39:58.710504302Z cryptpad-1 | 2026-11-02T20:39:58.710704511Z Parsing ./www/register/index.html cryptpad-1 | 2026-11-02T20:39:58.710706302Z Creating ./www/register/index.html cryptpad-1 | 2026-11-02T20:39:58.710706844Z cryptpad-1 | 2026-11-02T20:39:58.710707302Z Parsing ./www/login/index.html cryptpad-1 | 2026-11-02T20:39:58.710708219Z Creating ./www/login/index.html cryptpad-1 | 2026-11-02T20:39:58.710708677Z cryptpad-1 | 2026-11-02T20:39:58.710709136Z Parsing ./customize.dist/contact.html cryptpad-1 | 2026-11-02T20:39:58.710709594Z Creating ./www/contact.html cryptpad-1 | 2026-11-02T20:39:58.710710052Z cryptpad-1 | 2026-11-02T20:39:58.710710469Z Parsing ./customize.dist/features.html cryptpad-1 | 2026-11-02T20:39:58.710735511Z Creating ./www/features.html cryptpad-1 | 2026-11-02T20:39:58.710754136Z cryptpad-1 | 2026-11-02T20:39:58.710755177Z Parsing ./customize.dist/index.html cryptpad-1 | 2026-11-02T20:39:58.710781094Z Creating ./www/index.html cryptpad-1 | 2026-11-02T20:39:58.710796969Z cryptpad-1 | 2026-11-02T20:39:58.710797886Z Copying built files to target directory (/cryptpad/customize) cryptpad-1 | 2026-11-02T20:39:58.713362677Z Removing temporary build directory (/tmp/CRYPTPAD_TEMP_BUILD/) cryptpad-1 | 2026-11-02T20:39:58.713493094Z Successfully removed /tmp/CRYPTPAD_TEMP_BUILD/ cryptpad-1 | 2026-11-02T20:39:58.758967261Z cryptpad-1 | 2026-11-02T20:39:58.758978511Z > [email protected] start cryptpad-1 | 2026-11-02T20:39:58.758979636Z > node server.js cryptpad-1 | 2026-11-02T20:39:58.758980219Z cryptpad-1 | 2026-11-02T20:40:00.305919887Z ============================= cryptpad-1 | 2026-11-02T20:40:00.305930053Z Create your first admin account and customize your instance by visiting cryptpad-1 | 2026-11-02T20:40:00.305933928Z http://localhost:3000/install/#49caa2547fa02daa425cc2bc12e85189f6127afe033545b24a48117855f41f0b cryptpad-1 | 2026-11-02T20:40:00.305937762Z ============================= cryptpad-1 | 2026-11-02T20:40:00.306090970Z CryptPad server ready