Deploy Teedy | Open-Source Document Management
Self-host Teedy document management with OCR, AES-256 encryption & more
Teedy
Just deployed
/data
Just deployed
/var/lib/postgresql/data
![]()
Deploy and Host Teedy on Railway
Deploy Teedy on Railway to get a production-ready, self-hosted document management system with built-in OCR, full-text search, and encrypted file storage. Self-host Teedy with zero infrastructure headaches — this template pre-configures a Teedy application server backed by a PostgreSQL database, with a persistent volume for document storage and Lucene search indexes.
Getting Started with Teedy on Railway
Once your Teedy deployment is live, open the public URL in your browser. Log in with the admin credentials configured during deployment (email and bcrypt-hashed password set via DOCS_ADMIN_EMAIL_INIT and DOCS_ADMIN_PASSWORD_INIT). If no custom credentials were set, the default login is admin / admin — change this immediately from Settings → User Account.
Your first action should be creating tags to organize documents. Navigate to Settings → Tags and set up a hierarchy (e.g., Invoices → 2026, Contracts → Clients). Then upload your first document — Teedy automatically runs OCR on images and PDFs, making them full-text searchable within seconds. Set up user accounts and groups under Settings → Users to control who can view, edit, or manage specific documents.
About Hosting Teedy
Teedy (formerly Sismics Docs) is an open-source, lightweight document management system built with Java and Jetty. It solves the problem of organizing, searching, and securing digital documents for individuals and small teams without requiring expensive enterprise software.
Key features of self-hosted Teedy include:
- Built-in OCR with Tesseract 4 — full-text search across scanned images, PDFs, DOCX, ODT, and TXT
- 256-bit AES encryption for all stored files at rest
- Document workflows with multi-step verification and approval chains
- LDAP authentication and two-factor authentication (2FA)
- Hierarchical tag system with Dublin Core and custom metadata
- File versioning with full change history
- User/group permissions with storage quotas and audit logging
- RESTful API and webhooks for programmatic access and automation
The Railway template deploys two services: the Teedy application container (sismics/docs:v1.11) and a PostgreSQL database for persistent metadata storage. Document files and Lucene search indexes are stored on an attached volume at /data.
Why Deploy Teedy on Railway
- One-click deploy with PostgreSQL and persistent storage pre-configured
- No Docker, Kubernetes, or server management required
- Automatic TLS/HTTPS on your public domain
- Scale resources up or down from the Railway dashboard
- Built-in logging and deployment rollbacks
Common Use Cases for Self-Hosted Teedy
- Small business document archiving — digitize invoices, contracts, and receipts with OCR-powered full-text search across scanned documents
- Expense management workflows — employees upload receipts, managers review and approve via built-in document workflows
- Compliance and audit trails — AES-256 encryption, versioning, and granular permissions for regulated industries requiring document traceability
- Personal knowledge base — organize research papers, manuals, and reference materials with hierarchical tags and metadata
Dependencies for Teedy on Railway
- Teedy —
sismics/docs:v1.11(Java 11, Jetty 11, Tesseract OCR, FFmpeg, MediaInfo) - PostgreSQL Railway-managed PostgreSQL 18 for metadata and user data
Environment Variables Reference for Teedy
| Variable | Description | Example |
|---|---|---|
DATABASE_URL | JDBC PostgreSQL connection string | jdbc:postgresql://host:5432/db |
DATABASE_USER | PostgreSQL username | ${{Postgres.PGUSER}} |
DATABASE_PASSWORD | PostgreSQL password | ${{Postgres.PGPASSWORD}} |
DOCS_BASE_URL | Public-facing URL | https://${{RAILWAY_PUBLIC_DOMAIN}} |
DOCS_DEFAULT_LANGUAGE | Default OCR language | eng |
DOCS_ADMIN_EMAIL_INIT | Admin email (first boot only) | [email protected] |
DOCS_ADMIN_PASSWORD_INIT | Admin password bcrypt hash (first boot only) | $2b$10$... |
PORT | HTTP listening port | 8080 |
Deployment Dependencies
- Runtime: Java 11 (OpenJDK), Jetty 11.0.20
- OCR engine: Tesseract 4 with 30+ language packs
- Media processing: FFmpeg, MediaInfo
- GitHub: sismics/docs
- Docker Hub: sismics/docs
- API docs: Available at
/apidoc/on your running instance
Hardware Requirements for Self-Hosting Teedy
| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 1 vCPU | 2 vCPUs |
| RAM | 1 GB | 2 GB |
| Storage | 1 GB (app + indexes) | 10 GB+ (depends on document volume) |
| Runtime | Java 11, PostgreSQL 14+ | Java 11, PostgreSQL 16+ |
OCR processing with Tesseract is CPU-intensive during document ingestion. Allocate additional CPU if processing large batches of scanned documents.
Self-Hosting Teedy with Docker
Pull the official Docker image and connect it to a PostgreSQL database:
docker run -d \
--name teedy \
-p 8080:8080 \
-v teedy_data:/data \
-e DATABASE_URL="jdbc:postgresql://localhost:5432/teedy" \
-e DATABASE_USER="postgres" \
-e DATABASE_PASSWORD="your_password" \
-e DOCS_BASE_URL="https://docs.example.com" \
sismics/docs:v1.11
Or use Docker Compose for a complete self-hosted Teedy stack:
version: "3"
services:
teedy:
image: sismics/docs:v1.11
ports:
- "8080:8080"
environment:
DATABASE_URL: jdbc:postgresql://db:5432/teedy
DATABASE_USER: teedy
DATABASE_PASSWORD: changeme
DOCS_BASE_URL: https://docs.example.com
volumes:
- teedy_data:/data
depends_on:
- db
db:
image: postgres:16
environment:
POSTGRES_DB: teedy
POSTGRES_USER: teedy
POSTGRES_PASSWORD: changeme
volumes:
- pg_data:/var/lib/postgresql/data
volumes:
teedy_data:
pg_data:
How Much Does Teedy Cost to Self-Host?
Teedy is completely free and open-source under the GPL v2 license. There are no paid tiers, feature gates, or enterprise editions for the self-hosted version. All features — OCR, encryption, workflows, LDAP, 2FA, API — are included at no cost. On Railway, you only pay for infrastructure (compute, storage, database) based on actual usage. Teedy also offers a commercial SaaS version at teedy.io starting at EUR 19/user/month, but the self-hosted version deployed here includes the full feature set.
Teedy vs Paperless-ngx for Self-Hosted Document Management
| Feature | Teedy | Paperless-ngx |
|---|---|---|
| OCR engine | Tesseract 4 (30+ languages) | Tesseract + OCRmyPDF |
| Encryption | AES-256 at rest | No built-in encryption |
| Workflows | Multi-step approval chains | Automated rule-based tagging |
| Auth | LDAP + 2FA | Basic user accounts |
| API | Full REST API + webhooks | REST API |
| Mobile | Official Android app | Community mobile apps |
| Community size | ~1.9k GitHub stars | ~24k GitHub stars |
| Best for | Teams needing workflows and security | Personal/home archiving |
Teedy is better suited for small teams needing document workflows, LDAP integration, and file encryption. Paperless-ngx excels at automated personal document archiving with a larger community and more consumption-focused features.
FAQ
What is Teedy and why should I self-host it? Teedy is an open-source document management system that lets you store, organize, search, and secure digital documents. Self-hosting gives you full control over your data, AES-256 encryption at rest, and no per-user SaaS fees.
What does this Railway template deploy for Teedy?
This template deploys two services: the Teedy application server (sismics/docs:v1.11) with a persistent volume for document storage, and a Railway-managed PostgreSQL database for metadata. Both are pre-configured and connected automatically.
Why does self-hosted Teedy need a PostgreSQL database? While Teedy includes an embedded H2 database, it is only suitable for testing. PostgreSQL is required for production use — it provides reliable concurrent access, proper ACID transactions, and data durability for your document metadata, user accounts, and workflow state.
How do I enable LDAP authentication in self-hosted Teedy on Railway? Navigate to Settings → LDAP Configuration in the Teedy web UI after deployment. Enter your LDAP server URL, base DN, admin DN, and search filter. Teedy supports both LDAP and LDAPS connections for enterprise directory integration.
Can I import existing documents into Teedy deployed on Railway?
Yes. Use the REST API at /apidoc/ to programmatically upload documents in bulk. Teedy also supports importing from email accounts (IMAP), file system directories, and SMB shares. Each uploaded document is automatically processed by the OCR engine and indexed for full-text search.
How do I set a custom admin password for Teedy on Railway?
Set the DOCS_ADMIN_PASSWORD_INIT environment variable to a bcrypt hash of your desired password before the first boot. Generate the hash with npx bcryptjs 'yourpassword'. This variable is only read during initial database setup — after that, change passwords through the web UI.
Template Content
Teedy
sismics/docs:v1.11DOCS_ADMIN_EMAIL_INIT
Admin email (first boot only)
DOCS_ADMIN_PASSWORD_INIT
Admin password bcrypt hash (first boot)
