Docmost
Purpose: Collaborative document management and knowledge sharing platform
Category: Collaboration & Documentation
Access URL: [https://docmost.billpantzartzis.info]
Status: 🟢 Active
📋 Description
Docmost is a powerful, self-hosted collaborative document management and knowledge sharing platform designed to enhance team productivity and streamline information workflows. It provides a centralized space where teams can create, organize, and share documents efficiently with real-time collaboration features.
Key Features:
- 📝 Real-time collaborative editing with multiple users
- 📚 Version control and document history tracking
- 🔐 Granular access control and permissions management
- 🔍 Powerful search and organization capabilities
- 🔗 Integration with third-party tools and services
- 📱 Responsive web interface for all devices
- 📊 Analytics and usage tracking
- 🏷️ Tagging and categorization system
- 📄 Rich text editor with markdown support
- 🔄 Document templates and workflows
🏗️ Architecture
🚀 Deployment
- Docker Compose Current
- Docker Compose Minimal
- Docker CLI
- Portainer Stack
This is the current production configuration running on billpantzartzis.info
services:
docmost:
image: docmost/docmost:0.20.3
depends_on:
- db
- redis
environment:
APP_URL: 'https://docmost.billpantzartzis.info'
APP_SECRET: 'your-secure-secret-key'
DATABASE_URL: 'postgresql://docmost:your-password@db:5432/docmost?schema=public'
REDIS_URL: 'redis://redis:6379'
MAIL_DRIVER: smtp
SMTP_HOST: smtp.gmail.com
SMTP_PORT: 587
SMTP_USERNAME: 'your-email@gmail.com'
SMTP_PASSWORD: 'your-app-password'
MAIL_FROM_ADDRESS: contact@billpantzartzis.info
MAIL_FROM_NAME: 'IT Crowd'
TZ: Europe/Amsterdam
DISABLE_TELEMETRY: 'true'
ports:
- "3636:3000"
restart: unless-stopped
volumes:
- docmost:/app/data/storage
db:
image: postgres:16-alpine
environment:
POSTGRES_DB: docmost
POSTGRES_USER: docmost
POSTGRES_PASSWORD: 'your-secure-password'
TZ: Europe/Amsterdam
restart: unless-stopped
volumes:
- /usr/share/zoneinfo/Europe/Amsterdam:/etc/localtime:ro
- db_data:/var/lib/postgresql/data
redis:
image: redis:7.2-alpine
restart: unless-stopped
environment:
- TZ=Europe/Amsterdam
volumes:
- redis_data:/data
volumes:
docmost:
db_data:
redis_data:
version: '3.8'
services:
docmost:
image: docmost/docmost:latest
container_name: docmost
restart: unless-stopped
ports:
- "3000:3000"
environment:
APP_URL: 'http://localhost:3000'
APP_SECRET: 'your-secure-secret-key'
DATABASE_URL: 'postgresql://docmost:password@db:5432/docmost?schema=public'
REDIS_URL: 'redis://redis:6379'
DISABLE_TELEMETRY: 'true'
volumes:
- docmost-data:/app/data/storage
depends_on:
- db
- redis
db:
image: postgres:16-alpine
container_name: docmost-db
restart: unless-stopped
environment:
POSTGRES_DB: docmost
POSTGRES_USER: docmost
POSTGRES_PASSWORD: password
volumes:
- db-data:/var/lib/postgresql/data
redis:
image: redis:7.2-alpine
container_name: docmost-redis
restart: unless-stopped
volumes:
- redis-data:/data
volumes:
docmost-data:
db-data:
redis-data:
# Create network
docker network create docmost-network
# Run PostgreSQL
docker run -d \
--name docmost-db \
--network docmost-network \
--restart unless-stopped \
-e POSTGRES_DB=docmost \
-e POSTGRES_USER=docmost \
-e POSTGRES_PASSWORD=your-secure-password \
-v docmost-db-data:/var/lib/postgresql/data \
postgres:16-alpine
# Run Redis
docker run -d \
--name docmost-redis \
--network docmost-network \
--restart unless-stopped \
-v docmost-redis-data:/data \
redis:7.2-alpine
# Run Docmost
docker run -d \
--name docmost \
--network docmost-network \
--restart unless-stopped \
-p 3000:3000 \
-e APP_URL=http://localhost:3000 \
-e APP_SECRET=your-secure-secret-key \
-e DATABASE_URL=postgresql://docmost:your-secure-password@docmost-db:5432/docmost?schema=public \
-e REDIS_URL=redis://docmost-redis:6379 \
-e DISABLE_TELEMETRY=true \
-v docmost-data:/app/data/storage \
docmost/docmost:latest
Deploy via Portainer using the Docker Compose configuration above.
Stack Name: docmost-stack
Environment Variables: Configure all secrets in Portainer UI
⚙️ Configuration
Required Environment Variables
| Variable | Description | Default | Required |
|---|---|---|---|
APP_URL | Application URL | http://localhost:3000 | ✅ |
APP_SECRET | Secret key for encryption | - | ✅ |
DATABASE_URL | PostgreSQL connection string | - | ✅ |
REDIS_URL | Redis connection string | redis://redis:6379 | ✅ |
MAIL_DRIVER | Email driver (smtp/sendmail) | smtp | ❌ |
SMTP_HOST | SMTP server host | - | ❌ |
SMTP_PORT | SMTP server port | 587 | ❌ |
SMTP_USERNAME | SMTP username | - | ❌ |
SMTP_PASSWORD | SMTP password | - | ❌ |
MAIL_FROM_ADDRESS | From email address | - | ❌ |
MAIL_FROM_NAME | From name | - | ❌ |
TZ | Timezone | UTC | ❌ |
DISABLE_TELEMETRY | Disable telemetry | false | ❌ |
Volume Mappings
| Container Path | Host Path | Description |
|---|---|---|
/app/data/storage | docmost | Application data and file storage |
/var/lib/postgresql/data | db_data | PostgreSQL database files |
/data | redis_data | Redis data persistence |
Network Configuration
This setup uses a custom bridge network for optimal container communication.
- Port Mappings:
3636:3000(production) or3000:3000(development) - Network Mode: Custom bridge network
- Database: PostgreSQL 16 with Redis 7.2 for caching
📖 Usage
Initial Setup
-
First Login
Navigate to: https://docmost.billpantzartzis.info
Create your first admin account -
Configuration Steps
- Set up your organization profile
- Configure user roles and permissions
- Create initial document templates
- Set up team workspaces
- Configure integrations if needed
Common Tasks
📝 How to create and organize documents
-
Create New Document
- Click "New Document" button
- Choose template or start blank
- Add title and description
- Select workspace/folder
-
Organize Documents
- Use folders and subfolders
- Apply tags for categorization
- Set document permissions
- Create document templates
👥 How to manage team collaboration
-
Invite Users
- Go to Settings → Users
- Send email invitations
- Assign roles and permissions
-
Real-time Collaboration
- Multiple users can edit simultaneously
- See live cursors and changes
- Use comments for discussions
- Track document history
🔍 How to search and filter content
-
Global Search
- Use the search bar for full-text search
- Filter by document type, author, or date
- Search within specific workspaces
-
Advanced Filters
- Filter by tags, categories, or status
- Sort by creation date, modification date, or relevance
- Save search queries for quick access
📊 How to manage document versions
-
Version Control
- Automatic versioning on saves
- Manual version creation
- Compare versions side-by-side
- Restore previous versions
-
Document History
- View all changes and authors
- Track document lifecycle
- Export version reports
🔄 How to backup data
# Stop the containers
docker-compose down
# Backup PostgreSQL database
docker run --rm -v docmost_db_data:/data -v $(pwd):/backup postgres:16-alpine \
tar czf /backup/docmost-db-backup-$(date +%Y%m%d).tar.gz -C /data .
# Backup application data
docker run --rm -v docmost_docmost:/data -v $(pwd):/backup alpine \
tar czf /backup/docmost-app-backup-$(date +%Y%m%d).tar.gz -C /data .
# Restart containers
docker-compose up -d
🔄 How to update the container
# Pull the latest image
docker pull docmost/docmost:latest
# Update docker-compose.yml with new version
# Stop and recreate containers
docker-compose down
docker-compose up -d
🔧 Troubleshooting
Common Issues
Check logs with: docker logs docmost
Common causes:
- Database connection issues
- Redis connection problems
- Missing environment variables
- Port conflicts (3636 or 3000)
- Permission issues with volumes
- Verify PostgreSQL container is running:
docker ps - Check database credentials in environment variables
- Ensure network connectivity between containers
- Verify database exists and is accessible
If SMTP is not working:
- Verify SMTP credentials and settings
- Check firewall rules for SMTP ports
- Test SMTP connection independently
- Consider using app-specific passwords for Gmail
Always backup your data before:
- Updating the container
- Changing database configuration
- Migrating to new hardware
- Modifying volume mappings
- Changing environment variables
Performance Optimization
- Database: Use SSD storage for PostgreSQL data directory
- Memory: Allocate at least 2GB RAM for the application
- Redis: Configure Redis persistence for better performance
- Files: Use fast storage for document file storage
- Network: Ensure low latency between containers
🔗 Resources
📊 Monitoring
- Health Check Endpoint:
http://localhost:3636/health - Application Logs:
docker logs docmost - Database Logs:
docker logs docmost-db - Redis Logs:
docker logs docmost-redis - Storage Usage: Monitor volume sizes
🏷️ Labels & Metadata
labels:
- "traefik.enable=true"
- "traefik.http.routers.docmost.rule=Host(`docmost.billpantzartzis.info`)"
- "traefik.http.routers.docmost.tls=true"
- "traefik.http.routers.docmost.tls.certresolver=letsencrypt"
- "com.centurylinklabs.watchtower.enable=true"
This documentation was last updated on December 2024. For the latest information, check the official documentation.