Modern, gΓΌvenli, ΓΆlΓ§eklenebilir ev sunucu yΓΆnetim platformu. USB'den baΕlatΔ±labilir, production-ready.
- β Prisma ORM - PostgreSQL/SQLite veritabanΔ± desteΔi
- β Repository Pattern - Clean architecture
- β Dependency Injection - TSyringe IoC container
- β Winston Logging - Professional logging system
- β HttpOnly Cookies - Secure authentication
- β Swagger API Docs - OpenAPI 3.0 documentation
- β Docker Compose - Production deployment ready
- β Audit Logging - Complete action tracking
- β Multi-User Support - Database-backed user management
DetaylΔ± deΔiΕiklikler iΓ§in CHANGELOG.md dosyasΔ±na bakΔ±n.
- π Real-time Dashboard - CPU, RAM, Disk, Network (WebSocket)
- π³ Docker Management - Full container lifecycle
- π File Manager - Secure web-based file browser
- πͺ App Store - 8+ ready-to-use application templates
- βοΈ Settings Panel - User, security, system configuration
- π Modern UI - Glassmorphism design, fully Turkish
- ποΈ Prisma ORM - Type-safe database access
- π¦ Repository Pattern - Separation of concerns
- π Dependency Injection - Testable, maintainable code
- π Structured Logging - Winston with rotation
- π Refresh Tokens - Extended sessions (30 days)
- π API Documentation - Swagger UI included
- π― Custom Error Handling - Typed error responses
- π JWT + Cookies - HttpOnly, Secure, SameSite
- π‘οΈ RBAC - Role-based access control
- π Audit Trail - All critical actions logged
- β±οΈ Rate Limiting - DDoS protection
- π Account Lockout - Brute-force prevention
- π bcrypt 12 - Strong password hashing
- π« Input Validation - XSS & injection prevention
- Node.js 18+
- pnpm package manager
- Docker (optional, for container management)
- Docker & Docker Compose
- PostgreSQL 15+ (or SQLite for small deployments)
- SSL/TLS certificate (recommended)
# 1. Clone repository
git clone <repository-url>
cd HomeOS
# 2. Install dependencies
cd backend && pnpm install
cd ../frontend && pnpm install
# 3. Setup database
cd ../backend
cp .env.example .env
# Edit .env and change JWT_SECRET, SESSION_SECRET!
pnpm prisma db push
pnpm db:seed
# 4. Start development servers
# Terminal 1 - Backend
pnpm dev
# Terminal 2 - Frontend
cd ../frontend
pnpm dev
# 5. Open browser
# Frontend: http://localhost:5173
# API: http://localhost:3001
# API Docs: http://localhost:3001/api-docsDefault Login:
- Username:
admin - Password:
admin123
# 1. Clone and configure
git clone <repository-url>
cd HomeOS
# 2. Setup environment
cp backend/.env.example backend/.env
# Edit backend/.env:
# - Change JWT_SECRET to a random 32+ char string
# - Change SESSION_SECRET to a random 32+ char string
# - Change POSTGRES_PASSWORD in docker-compose.yml
# 3. Start services
docker-compose up -d
# 4. Check logs
docker-compose logs -f
# 5. Access
# http://your-server-ip (or configure DNS + SSL)Included Services:
postgres- PostgreSQL 15 databaseredis- Cache & session storebackend- Node.js API serverfrontend- React SPA (nginx)nginx- Reverse proxy with SSL support
# Backend
cd backend
pnpm install --prod
pnpm prisma migrate deploy
pnpm db:seed
pnpm build
NODE_ENV=production pnpm start
# Frontend
cd frontend
pnpm install
pnpm build
# Serve dist/ folder with nginx/apachehomeos/
βββ backend/
β βββ src/
β β βββ config/ # Configuration (DI, Swagger)
β β βββ middleware/ # Auth, error handling
β β βββ repositories/ # Data access layer
β β βββ rotalar/ # API routes
β β βββ servisler/ # Business logic
β β βββ types/ # TypeScript definitions
β β βββ utils/ # Helpers, logger, errors
β β βββ index.ts # Entry point
β βββ prisma/
β β βββ schema.prisma # Database schema
β β βββ seed.ts # Seed data
β βββ Dockerfile # Production image
β βββ package.json
β
βββ frontend/
β βββ src/
β β βββ sayfalar/ # Pages
β β βββ bilesenler/ # Components
β β βββ depolar/ # Zustand stores
β β βββ App.tsx
β βββ Dockerfile
β βββ nginx.conf
β βββ package.json
β
βββ nginx/
β βββ nginx.conf # Reverse proxy config
β
βββ docker-compose.yml # Multi-container orchestration
βββ CHANGELOG.md # Version history
βββ README.md # This file
Access Swagger UI at: http://localhost:3001/api-docs
Authentication
POST /api/kimlik/giris Login
POST /api/kimlik/cikis Logout
POST /api/kimlik/sifre-degistir Change password
POST /api/kimlik/yenile Refresh token
GET /api/kimlik/dogrula Validate token
System
GET /api/sistem/bilgi Full system info
GET /api/sistem/istatistikler Real-time stats
GET /api/sistem/surecler Running processes
Docker
GET /api/docker/konteynerler List containers
POST /api/docker/konteynerler/:id/baslat Start
POST /api/docker/konteynerler/:id/durdur Stop
DELETE /api/docker/konteynerler/:id Remove
GET /api/docker/konteynerler/:id/loglar Logs
Files
GET /api/dosyalar/listele List directory
POST /api/dosyalar/klasor-olustur Create folder
DELETE /api/dosyalar/sil Delete file/folder
POST /api/dosyalar/yukle Upload file
- Change
JWT_SECRETto strong random value (32+ chars) - Change
SESSION_SECRETto strong random value (32+ chars) - Change default admin password
- Change PostgreSQL password
- Setup SSL/TLS (Let's Encrypt recommended)
- Configure firewall (only 80, 443 open)
- Set
NODE_ENV=production - Enable
COOKIE_SECURE=true - Setup log rotation
- Configure backup strategy
- Review rate limiting settings
Authentication & Authorization
- JWT with access (7d) & refresh (30d) tokens
- HttpOnly, Secure, SameSite cookies
- Role-based access control (yonetici, kullanici)
- Database-backed session management
- Account lockout: 5 failures β 15min lock
Network Security
- Helmet.js security headers
- CORS with origin validation
- Rate limiting: 100 req/15min (general), 5 req/1h (login)
- CSRF protection ready
Data Security
- bcrypt password hashing (12 rounds)
- Input validation (express-validator)
- XSS protection (sanitize-html, DOMPurify)
- Path traversal prevention
- SQL injection prevention (Prisma ORM)
Monitoring
- Audit logging for all critical actions
- Winston structured logging
- Performance tracking
- Error tracking with stack traces
Create backend/.env from backend/.env.example:
# Server
PORT=3001
NODE_ENV=production
# Security (CHANGE THESE!)
JWT_SECRET=your-super-secret-key-32-chars-minimum
JWT_EXPIRES_IN=7d
JWT_REFRESH_EXPIRES_IN=30d
SESSION_SECRET=another-secret-key-32-chars-minimum
BCRYPT_ROUNDS=12
# Database
# Development (SQLite)
DATABASE_URL="file:./dev.db"
# Production (PostgreSQL)
# DATABASE_URL="postgresql://homeos:password@localhost:5432/homeos?schema=public"
# CORS
IZIN_VERILEN_ORIGIN=https://yourdomain.com
# Cookies
COOKIE_SECURE=true
COOKIE_SAME_SITE=strict
# Logging
LOG_LEVEL=info
LOG_DIR=./logs
# File Upload
MAX_FILE_SIZE=104857600
MAX_FILES=10# Create migration
pnpm prisma migrate dev --name migration_name
# Apply migrations (production)
pnpm prisma migrate deploy
# Reset database (dev only!)
pnpm prisma migrate reset
# Open Prisma Studio
pnpm prisma studio# Seed database
pnpm db:seedDefault seed includes:
- Admin user (admin/admin123)
- Default settings
- 6 application templates (Nextcloud, Portainer, etc.)
# Run tests (coming soon)
pnpm test
# Coverage
pnpm test:coverage
# E2E tests
pnpm test:e2e- Production Build: Always use
pnpm buildfor production - Database Indexing: Schema includes optimized indexes
- Caching: Redis ready for session & API caching
- Static Assets: Nginx serves frontend with caching
- Connection Pooling: Prisma handles DB connection pool
- Code Splitting: Frontend uses dynamic imports (coming)
Contributions welcome! Please:
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'feat: add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open Pull Request
Commit Convention:
feat:- New featurefix:- Bug fixdocs:- Documentationrefactor:- Code refactoringsecurity:- Security updateperf:- Performance improvement
MIT License - see LICENSE file for details.
- Inspired by CasaOS
- Built with React, Express, Prisma, and TypeScript
- Icons by Lucide React
- Issues: GitHub Issues
- Documentation: GitHub Wiki
- Community: Discord (coming soon)
Version: 2.0.0 Last Updated: 2026-01-22 Minimum Node.js: 18.0.0