Enterprise-grade secure media storage with AI analysis, role-based access, and comprehensive monitoring.
- Docker 20.10+ and Docker Compose
- 4GB RAM minimum (8GB recommended)
- Ports 80, 443, 8080, 3000 available
-
Clone the repository:
git clone https://github.com/wronai/docker-platform.git cd docker-platform -
Copy the example environment file and update as needed:
cp .env.example .env
-
Start the services:
make up
- Web UI: https://localhost
- Admin Panel: https://admin.localhost
- Keycloak: https://auth.localhost
- Grafana: http://localhost:3000
- API Documentation: http://localhost:8080/api/docs
You can start, stop, and manage individual services using the following commands:
make keycloak # Start Keycloak identity service (http://localhost:8080/admin)
make keycloak-db # Start Keycloak databasemake media-vault-api # Start Media Vault API
make media-vault-analyzer # Start AI Processing service
make nsfw-analyzer # Start NSFW content detectionmake flutter-web # Start Flutter Web Frontend (http://localhost:3000)
make media-vault-admin # Start Admin Panel (http://localhost:3001)make caddy # Start Caddy Reverse Proxy
make redis # Start Redis Cachemake upmake downmake logsdocker-compose up -d --build <service-name>- Secure File Storage: End-to-end encrypted media storage with AES-256 encryption
- AI-Powered Analysis: Automatic media tagging, face recognition, and content description
- Role-Based Access Control: Fine-grained permissions with support for custom roles
- Real-time Collaboration: Share and collaborate on media assets in real-time
- Version Control: Track changes and revert to previous versions of media files
- Containerized Architecture: Docker-based microservices for easy deployment
- High Availability: Built with scalability and fault tolerance in mind
- Comprehensive API: RESTful API with OpenAPI 3.0 documentation
- Event-Driven: Built on event sourcing for reliable operations
- Multi-tenant: Support for multiple organizations with data isolation
- Real-time Metrics: Monitor system health and performance
- Audit Logs: Detailed logs of all system activities
- Usage Analytics: Track storage usage and user activity
- Alerting: Configure alerts for important system events
Media Vault is built on a modern microservices architecture:
- Frontend: Flutter-based responsive web interface
- Backend: High-performance Go services
- Authentication: Keycloak for identity management
- Database: PostgreSQL for data persistence
- Monitoring: Prometheus, Grafana, and more
- Upload and manage personal media
- Generate AI descriptions
- Share media with others
- View personal analytics
- All End User capabilities
- Access to shared partner content
- Team collaboration features
- Advanced analytics
- System configuration
- User and role management
- System health monitoring
- Backup and recovery
make media-vault-adminor
docker-compose up -d --remove-orphans media-vault-admindocker-platform/
├── ansible/ # Infrastructure as Code
├── caddy/ # Reverse proxy configuration
├── data/ # Persistent data
├── deployment/ # Deployment configurations
├── docs/ # Documentation
├── keycloak/ # Authentication service
│ ├── themes/ # Custom UI themes
│ └── import/ # Initial data import
└── scripts/ # Utility scripts
Copy the example environment file and update as needed:
cp .env.example .envdocker-compose.yml- Main servicesdocker-compose.monitoring.yml- Monitoring stackdocker-compose.infrastructure.yml- Infrastructure servicesdocker-compose.automation.yml- Automation tools
- Go 1.21+
- Node.js 18+
- Flutter 3.10+
- Docker & Docker Compose
-
Start the development environment
make dev-up
-
Run tests
make test # Unit tests make test-integration # Integration tests make test-e2e # End-to-end tests
-
View logs
make logs
Comprehensive documentation is available in the docs/ directory:
- 📘 User Guide - End-user documentation
- 🔧 Deployment Guide - Setup and configuration
- 🏗️ Architecture - System design and components
- 🔐 Security - Security best practices
- 📊 Monitoring - Observability and alerting
- 📝 API Reference - API documentation
We welcome contributions! Please see our Contributing Guidelines for details on how to contribute to this project.
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.
Media Vault is built using a microservices architecture with the following components:
- Frontend: Flutter-based web interface
- API Gateway: Request routing and authentication
- Media Service: File processing and storage
- Metadata Service: Media metadata management
- AI Service: Media analysis and description
- Auth Service: User authentication and authorization
- PostgreSQL: Relational data
- Object Storage: Media files
- Redis: Caching and sessions
- Docker & Docker Compose: Containerization
- Caddy: Reverse proxy with automatic HTTPS
- Keycloak: Identity and access management
- Monitoring: Prometheus, Grafana, Loki
- Go 1.21+
- Node.js 18+
- Docker & Docker Compose
-
Start dependencies
make dev-deps
-
Run database migrations
make migrate
-
Start development servers
make dev
Run unit tests:
make testRun integration tests:
make test-integration- Architecture: System design and components
- API Reference: Detailed API documentation
- Deployment Guide: Production deployment instructions
- User Guide: End-user documentation
- Security: Security best practices
We welcome contributions! Please see our Contributing Guidelines for details.
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.
- Main Backend Service - Core API and business logic
- Dockerfile - Backend service container definition
- go.mod - Go module and dependencies
- main.go - Application entry point
-
internal/auth/ - Authentication and authorization
- roles.go - Role definitions and permissions
- middleware.go - Authentication middleware
-
internal/handlers/ - HTTP request handlers
-
internal/models/ - Data models
- media.go - Media file model
- description.go - AI-generated descriptions
- photo.go - Photo metadata
-
internal/services/ - Business logic
- vault_service.go - Media vault operations
- photo_service.go - Photo processing
- sharing_service.go - Media sharing logic
- docker-compose.yml - Main Docker Compose configuration
- .env.example - Example environment configuration
- Makefile - Common development commands
- scripts/ - Utility scripts for development and deployment
- Docker and Docker Compose
- Go 1.21+
- Node.js 18+ (for frontend development)
Starting the development environment:
make dev-upRunning tests:
make testBuilding the application:
make buildViewing logs:
make logs- scripts/dev.sh - Development environment setup
- scripts/test.sh - Test runner
- scripts/deploy.sh - Deployment script
- scripts/backup.sh - Database backup
- docs/ - Comprehensive documentation
- API.md - API reference
- ARCHITECTURE.md - System architecture
- DEPLOYMENT.md - Deployment guide
- SECURITY.md - Security best practices
Media Vault is built on a modern microservices architecture:
- Frontend: Flutter-based responsive web interface
- Backend: High-performance Go services
- Authentication: Keycloak for identity management
- Database: PostgreSQL for data persistence
- Monitoring: Prometheus, Grafana, and more
For a complete architecture deep dive, see the Architecture Documentation.
Comprehensive documentation is available in the docs/ directory:
- 📘 User Guide - End-user documentation
- 🔧 Deployment Guide - Setup and configuration
- 🏗️ Architecture - System design and components
- 🔐 Security - Security best practices
- 📊 Monitoring - Observability and alerting
- 📝 API Reference - API documentation
- docker-compose.yml - Main services configuration
- docker-compose.monitoring.yml - Monitoring stack
- docker-compose.infrastructure.yml - Infrastructure services
- docker-compose.automation.yml - Automation and CI/CD tools
- .env.example - Example environment variables
- .env - Your local environment configuration (create from .env.example)
docker-platform/
├── ansible/ # Infrastructure as Code
│ └── README.md
├── caddy/ # Reverse proxy configuration
├── data/ # Persistent data
├── deployment/ # Deployment configurations
├── docs/ # Documentation
│ ├── API.md
│ ├── ARCHITECTURE.md
│ ├── DEPLOYMENT.md
│ ├── MONITORING.md
│ ├── README.md
│ ├── SECURITY.md
│ └── USER_GUIDE.md
├── keycloak/ # Authentication service
│ ├── themes/ # Custom UI themes
│ └── import/ # Initial data import
└── scripts/ # Utility scripts
-
Clone the repository
git clone https://github.com/wronai/docker-platform.git cd docker-platform -
Set up environment
cp .env.example .env # Edit .env with your configuration -
Start services
make up
-
Access applications
- Web UI: http://localhost:3000
- API: http://localhost:8080
- Monitoring: http://localhost:9090
- Documentation: http://localhost:8080/docs
# Run all tests
make test
# Run backend tests
make test-backend
# Run frontend tests
make test-frontend
# Run linters
make lint
# Check code coverage
make coverageWe welcome contributions from the community! Here's how you can help:
- Report Bugs: File an issue on our issue tracker.
- Submit Fixes: Fork the repository and submit a pull request.
- Improve Docs: Help us enhance our documentation.
Please read our Contributing Guide for development setup and contribution guidelines.
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.
- Keycloak for authentication
- Docker for containerization
- Prometheus and Grafana for monitoring
- All our amazing contributors and users!
make lint
make format
make deps
## 🧪 Testing
### Running Tests
```bash
# Run unit tests
make test-unit
# Run integration tests
make test-integration
# Run end-to-end tests
make test-e2e
# Generate coverage report
make coverage
# View HTML coverage report
make coverage-html- Grafana: http://localhost:3000 (admin/admin)
- Prometheus: http://localhost:9090
- Alertmanager: http://localhost:9093
- API response times
- Error rates
- Resource usage
- User activity
- Storage utilization
- Access Keycloak admin console: https://auth.localhost/admin
- Log in with admin credentials
- Import realm configuration from
keycloak/import/realm-export.json - Configure identity providers and clients as needed
admin
admin123- Create users in Keycloak admin console
- Assign roles and permissions
- Set up password policies
- Configure multi-factor authentication
Access the interactive API documentation at:
- Swagger UI: https://localhost/api/docs
- OpenAPI Spec: https://localhost/api/docs.json
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
- Keycloak for authentication
- Fiber for the Go web framework
- Flutter for the frontend
- Prometheus and Grafana for monitoring
Tom Sapletta — DevOps Engineer & Systems Architect
- 💻 15+ years in DevOps, Software Development, and Systems Architecture
- 🏢 Founder & CEO at Telemonit (Portigen - edge computing power solutions)
- 🌍 Based in Germany | Open to remote collaboration
- 📚 Passionate about edge computing, hypermodularization, and automated SDLC
If you find this project useful, please consider supporting it:

