chore(deploy): remove Dokploy, switch to native docker compose + Gitea Actions

- Remove Dokploy deploy jobs from GitHub CI workflow (test + build only)
- Add .gitea/workflows/ci.yml (Gitea Actions: lint, tests, docker build verify)
- Rewrite deploy.sh: set -euo pipefail, mandatory .env.<env>, --env-file,
  healthcheck on /api/health with log dump on failure
- Delete Dokploy-specific docs (3 files), update references in README,
  TODO.md, architecture.md, guides, dev plan
- Remove DOKPLOY_* env vars from proto/.env.local
This commit is contained in:
Do Siki
2026-08-17 12:19:02 +02:00
parent f918e300a6
commit c37787251b
13 changed files with 246 additions and 1166 deletions
+2 -2
View File
@@ -14,7 +14,7 @@ A projekt egy **Next.js 15 alapú marketing weboldal** a mozdIT Bt. számára, A
- **Backend**: Next.js API Routes (`/api/*`) - **Backend**: Next.js API Routes (`/api/*`)
- **Adatbázis**: MongoDB (Mongoose ODM) — site config és contact form logok - **Adatbázis**: MongoDB (Mongoose ODM) — site config és contact form logok
- **Logging**: Winston + Loki (strukturált naplózás) - **Logging**: Winston + Loki (strukturált naplózás)
- **Infrastructure**: Docker + Docker Compose, Dokploy deployment - **Infrastructure**: Docker + Docker Compose, natív deploy (`deploy.sh`)
## Rétegek és Felelősségek ## Rétegek és Felelősségek
@@ -38,7 +38,7 @@ A projekt egy **Next.js 15 alapú marketing weboldal** a mozdIT Bt. számára, A
## Adatfolyam (Request Lifecycle) ## Adatfolyam (Request Lifecycle)
1. **Dokploy / Nginx**: SSL, rate limit (infra szint) 1. **Nginx / reverse proxy**: SSL, rate limit (infra szint)
2. **Next.js middleware**: Auth ellenőrzés (ha szükséges) 2. **Next.js middleware**: Auth ellenőrzés (ha szükséges)
3. **API Route**: Input validáció 3. **API Route**: Input validáció
4. **Lib/Service**: Üzleti logika végrehajtása 4. **Lib/Service**: Üzleti logika végrehajtása
+73
View File
@@ -0,0 +1,73 @@
# CI workflow for Gitea (git.mozdit.hu)
# Runs on every push to main/develop and on PRs to main.
# Deploy is NOT handled here — use deploy.sh on the server (native docker compose).
name: CI — Test & Build
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
env:
NODE_VERSION: '20'
REGISTRY: git.mozdit.hu
IMAGE_NAME: si/websitedev
jobs:
test:
name: 🧪 Run Tests & Generate Reports
runs-on: ubuntu-latest
steps:
- name: 📥 Checkout code
uses: actions/checkout@v4
- name: 📦 Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
cache-dependency-path: proto/package-lock.json
- name: 📥 Install dependencies
working-directory: ./proto
run: npm ci
- name: 🔍 Lint code
working-directory: ./proto
run: npm run lint
- name: 🧪 Run unit tests
working-directory: ./proto
run: npm run test:unit -- --json --outputFile=unit-results.json --silent
- name: 🌐 Run browser integration tests
working-directory: ./proto
run: npm run test:browser -- --json --outputFile=browser-results.json --silent
- name: 📋 Upload test results
uses: actions/upload-artifact@v4
with:
name: test-results
path: |
proto/unit-results.json
proto/browser-results.json
retention-days: 30
build:
name: 🏗️ Build Docker Image
runs-on: ubuntu-latest
needs: test
steps:
- name: 📥 Checkout code
uses: actions/checkout@v4
- name: 🏗️ Build Docker image
run: docker build -t mozdit-app:ci ./proto
- name: 🔍 Verify image health
run: |
docker create --name mozdit-app-ci -e NODE_ENV=production mozdit-app:ci
docker cp mozdit-app-ci:/app/.next/BUILD_ID ./build-id 2>/dev/null || \
echo "BUILD_ID nem elérhető — build verification skip"
docker rm mozdit-app-ci
+5 -90
View File
@@ -1,4 +1,4 @@
name: CI/CD Pipeline with Test Management name: CI Pipeline with Test Management
on: on:
push: push:
@@ -8,8 +8,6 @@ on:
env: env:
NODE_VERSION: '20' NODE_VERSION: '20'
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs: jobs:
# 🧪 Test Phase # 🧪 Test Phase
@@ -131,48 +129,19 @@ jobs:
proto/e2e-report.txt proto/e2e-report.txt
retention-days: 30 retention-days: 30
# 🏗️ Build Phase # 🏗️ Build Phase (verify the production image builds; no registry push — deploy via deploy.sh)
build: build:
name: 🏗️ Build Docker Image name: 🏗️ Build Docker Image
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: [test, docker-tests] needs: [test, docker-tests]
outputs:
image-digest: ${{ steps.build.outputs.digest }}
image-tag: ${{ steps.meta.outputs.tags }}
steps: steps:
- name: 📥 Checkout code - name: 📥 Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: 🔐 Log in to Container Registry - name: 🏗️ Build Docker image
uses: docker/login-action@v3 run: docker build -t mozdit-app:ci ./proto
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: 📋 Extract metadata # 📊 Test Results Summary
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=ref,event=branch
type=ref,event=pr
type=sha,prefix={{branch}}-
type=raw,value=latest,enable={{is_default_branch}}
- name: 🏗️ Build and push Docker image
id: build
uses: docker/build-push-action@v5
with:
context: ./proto
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
# 📊 Test Results Summary (GitHub Only)
test-summary: test-summary:
name: 📊 Generate Test Summary name: 📊 Generate Test Summary
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -219,11 +188,6 @@ jobs:
summary += '### 📊 Build Status\n'; summary += '### 📊 Build Status\n';
summary += '- Tests: ✅ All passing\n'; summary += '- Tests: ✅ All passing\n';
summary += '- Docker build: ✅ Ready\n'; summary += '- Docker build: ✅ Ready\n';
summary += '- Deployment: ✅ Ready\n\n';
summary += '### 🔗 Links\n';
summary += '- [Test Management](https://linear.app/zeener) (Linear)\n';
summary += '- [Build Logs](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})\n';
github.rest.issues.createComment({ github.rest.issues.createComment({
issue_number: context.issue.number, issue_number: context.issue.number,
@@ -231,52 +195,3 @@ jobs:
repo: context.repo.repo, repo: context.repo.repo,
body: summary body: summary
}); });
# 🚀 Deploy to Staging
deploy-staging:
name: 🚀 Deploy to Staging
runs-on: ubuntu-latest
needs: build
if: github.ref == 'refs/heads/develop'
environment:
name: staging
url: https://staging.mozdit.hu
steps:
- name: 🚀 Deploy to Dokploy Staging
run: |
echo "🚀 Deploying to staging environment..."
curl -X POST "${{ secrets.DOKPLOY_STAGING_WEBHOOK }}" \
-H "Authorization: Bearer ${{ secrets.DOKPLOY_TOKEN }}" \
-H "Content-Type: application/json" \
-d '{
"image": "${{ needs.build.outputs.image-tag }}",
"environment": "staging"
}'
# 🌟 Deploy to Production
deploy-production:
name: 🌟 Deploy to Production
runs-on: ubuntu-latest
needs: [build, test-summary]
if: github.ref == 'refs/heads/main'
environment:
name: production
url: https://mozdit.hu
steps:
- name: 🌟 Deploy to Dokploy Production
run: |
echo "🌟 Deploying to production environment..."
curl -X POST "${{ secrets.DOKPLOY_PROD_WEBHOOK }}" \
-H "Authorization: Bearer ${{ secrets.DOKPLOY_TOKEN }}" \
-H "Content-Type: application/json" \
-d '{
"image": "${{ needs.build.outputs.image-tag }}",
"environment": "production"
}'
- name: 🎉 Notify deployment success
if: success()
run: |
echo "🎉 Production deployment successful!"
echo "📊 All tests passed and synced with Linear"
echo "🔗 Site available at: https://mozdit.hu"
+85 -313
View File
@@ -1,43 +1,36 @@
# GitHub CI/CD Guide - Code & Deployment # CI/CD Guide - Code & Deployment
## 🎯 **Cél: GitHub-specifikus CI/CD Pipeline** ## 🎯 **Cél**
Ez a dokumentum a **GitHub Actions** rendszerét írja le, amely **csak** a CI/CD és deployment-re fókuszál. A projekt CI/CD rendszere **Gitea Actions**-en fut (`git.mozdit.hu`), a deploy pedig **natív Docker Compose** (`deploy.sh`). Dokploy nem használt.
--- ---
## 🚀 **GitHub CI/CD Architektúra** ## 🔄 **Architektúra**
### **Pipeline Folyamat:** ### Pipeline Folyamat:
```mermaid ```mermaid
graph TD graph TD
A[Code Push] --> B[GitHub Actions] A[Code Push] --> B[Gitea Actions]
B --> C[Run Tests] B --> C[Run Tests]
B --> D[Build Docker Image] B --> D[Build Docker Image]
B --> E[Push to Registry] E[main push] --> F[Manuális deploy a szerveren]
B --> F[Deploy to Dokploy] F --> G[deploy.sh — docker compose up --build]
G[PR Creation] --> H[Test Validation] H[Manual Trigger] --> B
H --> I[Staging Deploy]
J[Manual Trigger] --> B
``` ```
### **Mit kezel a GitHub CI/CD:** ### Mit kezel a CI/CD:
-**Source Code** versioning és tracking -**Test Execution** (unit, browser, docker integration)
-**Test Execution** (unit, integration, e2e) -**Docker Image** build ellenőrzés (nincs registry push)
-**Docker Image** build és registry push -**Deployment** natív docker compose-szal (`deploy.sh`)
-**Deployment** staging és production környezetekre
-**PR Validation** és code review support
-**Build Artifacts** és reporting -**Build Artifacts** és reporting
--- ---
## 🔄 **GitHub Actions Workflows** ## 🐙 **Gitea Actions Workflow (`.gitea/workflows/ci.yml`)**
### **1. Main CI/CD Pipeline (`.github/workflows/ci.yml`)** ### Trigger Events:
#### **Trigger Events:**
```yaml ```yaml
on: on:
push: push:
@@ -46,332 +39,111 @@ on:
branches: [main] branches: [main]
``` ```
#### **Job Sequence:** ### Job Sequence:
```mermaid - **🧪 Test Phase** — lint + unit + browser tesztek
graph LR - **🏗️ Build Phase** — production Docker image build (verifikáció, nem push)
A[Test Phase] --> B[Docker Tests]
B --> C[Build Phase]
C --> D[Test Summary]
D --> E[Deploy Staging]
D --> F[Deploy Production]
```
#### **Jobs Detail:** A `.github/workflows/ci.yml` (GitHub) hasonló teszteket futtat, de **nincs deploy** lépése — a deploy mindig a szerveren történik.
##### **🧪 Test Phase**
- **Unit Tests**: Component és API tesztek
- **Browser Integration**: jsdom + mocked APIs
- **Test Artifacts**: JSON results export
##### **🐳 Docker Integration Tests**
- **Docker Services**: Next.js + MongoDB + monitoring
- **Integration Tests**: Real HTTP calls
- **E2E Tests**: Complete user workflows
##### **🏗️ Build Phase**
- **Docker Image**: Multi-stage production build
- **Registry Push**: GitHub Container Registry
- **Image Tagging**: Branch és commit alapján
##### **📊 Test Summary**
- **PR Comments**: Test results summary
- **Build Status**: Success/failure reporting
- **Artifact Upload**: Test results és reports
##### **🚀 Deployment**
- **Staging**: `develop` branch → Dokploy staging
- **Production**: `main` branch → Dokploy production
--- ---
## 🐳 **Docker Integration** ## 🚀 **Deployment (natív docker compose)**
### **Docker Image Build:** ### Deploy a szerveren:
```dockerfile
# Multi-stage build
FROM node:20-alpine AS builder
# ... build steps
FROM node:20-alpine AS runner
# ... production setup
```
### **Container Registry:**
```yaml
# GitHub Container Registry
registry: ghcr.io
image: ghcr.io/your-username/websitedev
tags: |
type=ref,event=branch
type=sha,prefix={{branch}}-
type=raw,value=latest,enable={{is_default_branch}}
```
### **Docker Services (Testing):**
```yaml
# docker-compose.dev.yml
services:
app: # Next.js application
mongodb: # Database
mongo-express: # Database UI
loki: # Logging
grafana: # Monitoring
```
---
## 🚀 **Deployment Integration**
### **Dokploy Integration:**
```yaml
# Staging Deployment
deploy-staging:
if: github.ref == 'refs/heads/develop'
environment: staging
steps:
- name: Deploy to Dokploy Staging
run: |
curl -X POST "${{ secrets.DOKPLOY_STAGING_WEBHOOK }}" \
-H "Authorization: Bearer ${{ secrets.DOKPLOY_TOKEN }}" \
-d '{"image": "${{ needs.build.outputs.image-tag }}"}'
# Production Deployment
deploy-production:
if: github.ref == 'refs/heads/main'
environment: production
steps:
- name: Deploy to Dokploy Production
run: |
curl -X POST "${{ secrets.DOKPLOY_PROD_WEBHOOK }}" \
-H "Authorization: Bearer ${{ secrets.DOKPLOY_TOKEN }}" \
-d '{"image": "${{ needs.build.outputs.image-tag }}"}'
```
### **Environment Configuration:**
```yaml
# Staging Environment
environment:
name: staging
url: https://staging.mozdit.hu
# Production Environment
environment:
name: production
url: https://mozdit.hu
```
---
## 🔧 **GitHub Configuration**
### **Required Secrets:**
```bash ```bash
# GitHub Repository Secrets # Staging
DOKPLOY_STAGING_WEBHOOK=https://staging.webhook.url ./deploy.sh staging
DOKPLOY_PROD_WEBHOOK=https://prod.webhook.url
DOKPLOY_TOKEN=your_dokploy_token
# Optional (for advanced features) # Production
GITHUB_TOKEN=auto_provided ./deploy.sh production
``` ```
### **Environment Variables:** ### Mit csinál a `deploy.sh`:
1. `git pull origin main`
2. `.env.<env>` fájl betöltése (kötelező)
3. `docker compose --env-file .env.<env> -f docker-compose.prod.yml up --build -d`
4. Healthcheck a `/api/health` endpointon (60s timeout, hiba esetén log dump)
### Szükséges fájlok a szerveren:
```bash
# .env.production — production környezeti változók
MONGODB_URI=mongodb://admin:XXX@mongodb:27017/mozdit?authSource=admin
MONGODB_DB=mozdit
NEXT_PUBLIC_SITE_URL=https://mozdit.hu
NEXT_PUBLIC_CONTACT_EMAIL=info@mozdit.hu
LOKI_HOST=http://loki:3100
APP_PORT=8080
# .env.staging — staging változók (hasonlóan)
```
> ⚠️ A `.env.*` fájlok sosem kerülnek git-be — a szerveren kell létrehozni őket.
### Reverse proxy / SSL:
A `docker-compose.prod.yml` csak az app + MongoDB-t futtatja. A TLS/SSL és rate limit az infra szintű Nginx/caddy reverse proxy feladata (nem része a repónak).
---
## 📊 **Monitoring**
- **Logok**: `docker compose -f docker-compose.prod.yml logs -f app`
- **Health**: `GET /api/health``{ success: true, data: {...} }`
- **Winston + Loki**: alkalmazás logok (ha Loki elérhető a stackben)
---
## 🔧 **Konfiguráció**
### Környezeti változók (CI):
```yaml ```yaml
env: env:
NODE_VERSION: '20' NODE_VERSION: '20'
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
``` ```
### **Branch Protection Rules:** ### Branch stratégia:
```yaml - `main` → production (deploy: `./deploy.sh production`)
# Recommended branch protection for main - `develop` → staging (deploy: `./deploy.sh staging`)
required_status_checks: - `feature/*` → fejlesztői branch-ek
- test
- docker-tests
- build
required_reviews: 1
enforce_admins: true
```
--- ---
## 📊 **Monitoring & Reporting** ## 🛠️ **Local Development**
### **GitHub Actions Status:**
```markdown
[![CI/CD Pipeline](https://github.com/user/repo/actions/workflows/ci.yml/badge.svg)]
[![Docker](https://img.shields.io/badge/Docker-Ready-blue)]
[![Deployment](https://img.shields.io/badge/Deployment-Active-success)]
```
### **PR Comments:**
```markdown
## 🧪 Test Results Summary
### ✅ Unit Tests
- All unit tests passed
- Component tests: ✅
- API tests: ✅
### 🐳 Integration Tests
- Docker services tested
- API endpoints: ✅
- Database connectivity: ✅
### 📊 Build Status
- Tests: ✅ All passing
- Docker build: ✅ Ready
- Deployment: ✅ Ready
```
### **Build Artifacts:**
- **Test Results**: `unit-results.json`, `integration-results.json`
- **Docker Images**: `ghcr.io/user/repo:tag`
- **Build Logs**: GitHub Actions logs
- **Deployment Status**: Dokploy integration
---
## 🛠️ **Local Development Integration**
### **Pre-commit Hooks:**
```bash ```bash
# Install pre-commit hooks # Tesztek futtatása (ugyanaz, mint CI-ben)
npm install --save-dev husky lint-staged cd proto && npm run test:all
# package.json # Docker build tesztelése lokálisan
{ cd proto && npm run docker:build
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"*.{js,ts,tsx}": ["eslint --fix", "git add"]
}
}
```
### **Local Testing:**
```bash
# Run same tests as CI
npm run test:all
# Test Docker build locally
npm run docker:build
# Test deployment locally
npm run docker:run
```
### **Git Workflow:**
```bash
# Feature development
git checkout -b feature/new-feature
# ... development
git add .
git commit -m "feat: add new feature"
git push origin feature/new-feature
# Create PR
gh pr create --title "Add new feature" --body "Description"
# After review and merge
git checkout main
git pull origin main
# Automatic deployment triggers
``` ```
--- ---
## 🔍 **Troubleshooting** ## 🔍 **Troubleshooting**
### **Gyakori Problémák:** #### 1. Deploy hiba — healthcheck nem OK
#### **1. Docker Build Fails**
```bash ```bash
Error: Docker build failed ./deploy.sh production # hibaüzenet + app logok dump
docker compose -f docker-compose.prod.yml logs -f app
``` ```
**Megoldás:** - Ellenőrizd a `.env.production` tartalmát
- Ellenőrizd a `Dockerfile` syntax-át - Ellenőrizd, hogy a MongoDB konténer elérhető-e
- Ellenőrizd a `package.json` dependencies-ét - Ellenőrizd a lokális teszteket: `cd proto && npm run test:all`
- Ellenőrizd a build context-et
#### **2. Test Failures** #### 2. CI hiba
```bash - Nézd meg a futást a Gitea Actions fülön: `https://git.mozdit.hu/si/websitedev/actions`
Error: Tests failed in CI - Helyi reprodukció: `cd proto && npm run lint && npm run test:all`
```
**Megoldás:**
- Futtasd a teszteket helyileg: `npm run test:all`
- Ellenőrizd a test environment változókat
- Ellenőrizd a Docker services állapotát
#### **3. Deployment Fails**
```bash
Error: Dokploy deployment failed
```
**Megoldás:**
- Ellenőrizd a `DOKPLOY_*` secrets-eket
- Ellenőrizd a webhook URL-eket
- Ellenőrizd a Dokploy service állapotát
### **Debug Commands:**
```bash
# Local Docker testing
docker-compose -f docker-compose.dev.yml up -d
docker-compose -f docker-compose.dev.yml logs -f
# GitHub Actions debugging
gh run list --workflow=ci.yml
gh run view <run-id> --log
# Docker image testing
docker run -p 3000:3000 ghcr.io/user/repo:latest
```
---
## 📋 **Best Practices**
### **1. Branch Strategy:**
- `main` → Production deployment
- `develop` → Staging deployment
- `feature/*` → Development branches
- `hotfix/*` → Critical fixes
### **2. Commit Messages:**
```bash
feat: add new feature
fix: resolve bug
docs: update documentation
test: add tests
refactor: code refactoring
```
### **3. PR Guidelines:**
- Minden PR-nek kell test coverage
- Minden PR-nek kell review
- Breaking changes dokumentálása
- Changelog frissítése
### **4. Deployment Strategy:**
- Staging deployment minden `develop` push után
- Production deployment csak `main` merge után
- Rollback strategy kész
- Health checks minden deployment után
--- ---
## 🔗 **Kapcsolódó Dokumentumok** ## 🔗 **Kapcsolódó Dokumentumok**
- [Linear Sync Guide](./LINEAR-SYNC-GUIDE.md) - [Plane Sync Guide](./PLANE-SYNC-GUIDE.md)
- [Docker Setup](./DOCKER.md) - [Docker Setup](./DOCKER.md)
- [Testing Guide](./proto/TESTING.md) - [Test Management](./TEST-MANAGEMENT.md)
- [Sync Status Analysis](./SYNC-STATUS-ANALYSIS.md)
--- ---
**Utolsó frissítés:** 2025-09-05 **Utolsó frissítés:** 2026-08-17
**Státusz:** GitHub CI/CD szétválasztva Linear sync-től **Státusz:** Dokploy eltávolítva, natív docker compose + Gitea Actions
**Következő lépés:** Dokploy konfiguráció és secrets beállítása
+1 -3
View File
@@ -159,10 +159,8 @@ Daily at 9 AM UTC
### **Required GitHub Secrets:** ### **Required GitHub Secrets:**
```bash ```bash
LINEAR_API_KEY=your_linear_api_key LINEAR_API_KEY=your_linear_api_key
DOKPLOY_STAGING_WEBHOOK=https://staging.webhook.url
DOKPLOY_PROD_WEBHOOK=https://prod.webhook.url
DOKPLOY_TOKEN=your_dokploy_token
``` ```
> ⚠️ Deploy nem történik CI-ből — natív docker compose (`deploy.sh`) a szerveren.
### **Environment Variables:** ### **Environment Variables:**
```bash ```bash
+12 -12
View File
@@ -2,7 +2,7 @@
[![CI/CD Pipeline](https://github.com/your-username/websitedev/actions/workflows/ci.yml/badge.svg)](https://github.com/your-username/websitedev/actions/workflows/ci.yml) [![CI/CD Pipeline](https://github.com/your-username/websitedev/actions/workflows/ci.yml/badge.svg)](https://github.com/your-username/websitedev/actions/workflows/ci.yml)
[![Docker](https://img.shields.io/badge/Docker-Ready-blue)](./docker-compose.dev.yml) [![Docker](https://img.shields.io/badge/Docker-Ready-blue)](./docker-compose.dev.yml)
[![Linear Sync](https://img.shields.io/badge/Linear-Synced-success)](https://linear.app/zeener) [![Plane Sync](https://img.shields.io/badge/Plane-Synced-success)](https://pm.llmdev.mozdit.hu)
[![Deployment](https://img.shields.io/badge/Deployment-Active-success)](https://mozdit.hu) [![Deployment](https://img.shields.io/badge/Deployment-Active-success)](https://mozdit.hu)
Modern Next.js 14 website for mozdIT Bt. - Hungarian IT services company specializing in web hosting, email services, and DNS administration. Modern Next.js 14 website for mozdIT Bt. - Hungarian IT services company specializing in web hosting, email services, and DNS administration.
@@ -24,17 +24,17 @@ cd proto && npm run test:all
This project uses **separated sync systems** for optimal management: This project uses **separated sync systems** for optimal management:
### 🧪 **Linear Sync (Test Management)** ### 📊 **Plane Sync (Task Management)**
- **Requirements**: [ZEE-47: Contact Form Validation](https://linear.app/zeener/issue/ZEE-47) - **Project**: [MITHOME — mozdIT website dev](https://pm.llmdev.mozdit.hu) (workspace: `developments`)
- **Test Cases**: [ZEE-48: Email Validation](https://linear.app/zeener/issue/ZEE-48), [ZEE-49: Rate Limiting](https://linear.app/zeener/issue/ZEE-49) - **TODO.md**: Local mirror, Plane is the authoritative source
- **Test Execution**: Automatic sync with Linear issues - **Sync**: `node plane-sync.js` (one-way Plane → TODO.md)
- **Traceability**: Requirements → Test Cases → Automated Tests - **Status Mapping**: `completed` → ✅, `started` → 🔄, `unstarted` → ⏳, `backlog` → 📋
### 🐙 **GitHub Sync (CI/CD)** ### 🐙 **GitHub Sync (CI/CD)**
- **Code Versioning**: Git-based source control - **Code Versioning**: Git-based source control
- **CI/CD Pipeline**: Automated testing and deployment - **CI/CD Pipeline**: Automated testing and deployment
- **Docker Integration**: Container build and registry - **Docker Integration**: Container build and registry
- **Deployment**: Staging and production via Dokploy - **Deployment**: Docker Compose (deploy.sh)
### 🧪 Test Types ### 🧪 Test Types
- **Unit Tests**: Component and logic testing - **Unit Tests**: Component and logic testing
@@ -49,9 +49,9 @@ This project uses **separated sync systems** for optimal management:
- **Content Management**: JSON-based structured content - **Content Management**: JSON-based structured content
- **Backend**: Next.js API Routes, MongoDB - **Backend**: Next.js API Routes, MongoDB
- **Testing**: Jest, React Testing Library, Docker - **Testing**: Jest, React Testing Library, Docker
- **Deployment**: Dokploy, Docker - **Deployment**: Docker Compose (deploy.sh), native
- **Monitoring**: Winston, Loki, Grafana - **Monitoring**: Winston, Loki, Grafana
- **Project Management**: Linear, GitHub Issues - **Project Management**: Plane, GitHub Issues
## 📈 Current Status ## 📈 Current Status
@@ -68,7 +68,7 @@ This project uses **separated sync systems** for optimal management:
- [x] Rate limiting and security features - [x] Rate limiting and security features
- [x] Docker development environment - [x] Docker development environment
- [x] Comprehensive test suite - [x] Comprehensive test suite
- [x] CI/CD pipeline with Linear integration - [x] CI/CD pipeline with Plane sync integration
- [x] Requirements traceability system - [x] Requirements traceability system
### 🚧 In Progress ### 🚧 In Progress
@@ -80,13 +80,13 @@ This project uses **separated sync systems** for optimal management:
- **Production**: https://mozdit.hu - **Production**: https://mozdit.hu
- **Staging**: https://staging.mozdit.hu - **Staging**: https://staging.mozdit.hu
- **Linear Project**: https://linear.app/zeener - **Plane Project**: https://pm.llmdev.mozdit.hu (workspace: `developments`, project: `MITHOME`)
- **Docker Registry**: ghcr.io/your-username/websitedev - **Docker Registry**: ghcr.io/your-username/websitedev
## 📚 Documentation ## 📚 Documentation
### **Sync Systems:** ### **Sync Systems:**
- [Linear Sync Guide](./LINEAR-SYNC-GUIDE.md) - Test management with Linear - [Plane Sync Guide](./PLANE-SYNC-GUIDE.md) - Task management with Plane
- [GitHub CI/CD Guide](./GITHUB-CICD-GUIDE.md) - Code & deployment pipeline - [GitHub CI/CD Guide](./GITHUB-CICD-GUIDE.md) - Code & deployment pipeline
- [Sync Status Analysis](./SYNC-STATUS-ANALYSIS.md) - Current state overview - [Sync Status Analysis](./SYNC-STATUS-ANALYSIS.md) - Current state overview
+2 -3
View File
@@ -553,14 +553,13 @@
**Részletek**: **Részletek**:
- Automated testing - Automated testing
- Docker image build - Docker image build
- Registry push - Natív deploy docker compose-szal (`deploy.sh`)
- Dokploy deployment
**Acceptance Criteria**: **Acceptance Criteria**:
- [x] GitHub Actions működik - [x] GitHub Actions működik
- [x] Automated testing aktív - [x] Automated testing aktív
- [x] Docker build működik - [x] Docker build működik
- [x] Deployment pipeline működik - [x] Deployment pipeline működik (natív docker compose)
--- ---
+23 -25
View File
@@ -51,7 +51,7 @@ POST /issues/{id}/comments (test results)
-**Source Code** (proto/ directory) -**Source Code** (proto/ directory)
-**CI/CD Pipeline** (.github/workflows/) -**CI/CD Pipeline** (.github/workflows/)
-**Docker Images** (ghcr.io registry) -**Docker Images** (ghcr.io registry)
-**Deployment** (Dokploy staging/production) -**Deployment** (natív docker compose — `deploy.sh`)
-**Test Artifacts** (test results, reports) -**Test Artifacts** (test results, reports)
#### **GitHub API Endpoints:** #### **GitHub API Endpoints:**
@@ -96,7 +96,7 @@ POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches
| **Docker Integration** | ✅ | - | Teljesen működik | | **Docker Integration** | ✅ | - | Teljesen működik |
| **Test Execution** | ✅ | - | Teljesen működik | | **Test Execution** | ✅ | - | Teljesen működik |
| **Linear Sync in GitHub** | ❌ | **ROSSZ PROJEKT** | **Szétválasztás szükséges** | | **Linear Sync in GitHub** | ❌ | **ROSSZ PROJEKT** | **Szétválasztás szükséges** |
| **Deployment Integration** | ⚠️ | Dokploy config hiányzik | Konfigurálni kell | | **Deployment Integration** | | Natív docker compose (`deploy.sh`) | Nincs külső PaaS függőség |
--- ---
@@ -121,7 +121,7 @@ graph TD
A[Code Push] --> B[GitHub Actions] A[Code Push] --> B[GitHub Actions]
B --> C[Run Tests] B --> C[Run Tests]
B --> D[Build Docker] B --> D[Build Docker]
B --> E[Deploy to Dokploy] B --> E[deploy.sh — docker compose up --build]
F[PR Creation] --> G[Test Validation] F[PR Creation] --> G[Test Validation]
G --> H[Deploy to Staging] G --> H[Deploy to Staging]
@@ -139,10 +139,10 @@ graph TD
- [x] Test results → Linear comments - [x] Test results → Linear comments
- [x] Traceability matrix maintenance - [x] Traceability matrix maintenance
### **FÁZIS 2: GitHub Sync Újradefiniálás** 🔄 ### **FÁZIS 2: GitHub Sync Újradefiniálás**
- [ ] **Linear sync eltávolítása** GitHub Actions-ból - [x] **Linear sync eltávolítása** GitHub Actions-ból
- [ ] **GitHub-specifikus** workflow-ok létrehozása - [x] **GitHub-specifikus** workflow-ok létrehozása
- [ ] **Dokploy integráció** konfigurálása - [x] **Deploy natív docker compose-szal** (`deploy.sh`)
- [ ] **Docker registry** beállítása - [ ] **Docker registry** beállítása
### **FÁZIS 3: Szinkronizáció Szétválasztása** 📋 ### **FÁZIS 3: Szinkronizáció Szétválasztása** 📋
@@ -189,8 +189,7 @@ graph TB
B --> K[GitHub Actions] B --> K[GitHub Actions]
K --> L[Run Tests] K --> L[Run Tests]
K --> M[Build Docker Image] K --> M[Build Docker Image]
K --> N[Push to Registry] K --> O[deploy.sh — docker compose up --build]
K --> O[Deploy to Dokploy]
P[PR Creation] --> Q[Test Validation] P[PR Creation] --> Q[Test Validation]
Q --> R[Staging Deploy] Q --> R[Staging Deploy]
@@ -204,7 +203,7 @@ graph TB
subgraph "MONITORING" subgraph "MONITORING"
U[Linear Dashboard] --> V[Test Status] U[Linear Dashboard] --> V[Test Status]
W[GitHub Actions] --> X[Build Status] W[GitHub Actions] --> X[Build Status]
Y[Dokploy] --> Z[Deployment Status] Y[Healthcheck /api/health] --> Z[Deployment Status]
end end
``` ```
@@ -215,18 +214,17 @@ sequenceDiagram
participant Git as GitHub participant Git as GitHub
participant Linear as Linear participant Linear as Linear
participant Docker as Docker Registry participant Docker as Docker Registry
participant Dokploy as Dokploy participant Server as Szerver (docker compose)
Note over Dev,Dokploy: LINEAR SYNC (Test Management) Note over Dev,Server: LINEAR SYNC (Test Management)
Dev->>Linear: Run Tests Dev->>Linear: Run Tests
Linear->>Linear: Update ZEE-47, ZEE-48, ZEE-49 Linear->>Linear: Update ZEE-47, ZEE-48, ZEE-49
Linear->>Linear: Add Test Comments Linear->>Linear: Add Test Comments
Note over Dev,Dokploy: GITHUB SYNC (CI/CD) Note over Dev,Server: GITHUB SYNC (CI/CD)
Dev->>Git: git push Dev->>Git: git push
Git->>Git: GitHub Actions Trigger Git->>Git: GitHub Actions Trigger
Git->>Docker: Build & Push Image Git->>Server: deploy.sh — git pull + docker compose up --build
Git->>Dokploy: Deploy to Staging/Production
``` ```
--- ---
@@ -235,8 +233,8 @@ sequenceDiagram
### 🚨 **KRITIKUS** ### 🚨 **KRITIKUS**
1. **Linear sync GitHub Actions-ban** → Rossz projekt frissül 1. **Linear sync GitHub Actions-ban** → Rossz projekt frissül
2. **Dokploy konfiguráció hiányzik** → Deployment nem működik 2. **Docker registry beállítása** → Deploy natív compose-szal, nincs registry push
3. **GitHub secrets hiányoznak** → Linear API key, Dokploy tokens 3. **GitHub secrets hiányoznak** → Linear API key
### ⚠️ **FONTOS** ### ⚠️ **FONTOS**
1. **Workflow duplikáció** → CI és test-management overlap 1. **Workflow duplikáció** → CI és test-management overlap
@@ -253,9 +251,9 @@ sequenceDiagram
## 🎯 **Következő Lépések Prioritás Szerint** ## 🎯 **Következő Lépések Prioritás Szerint**
### **1. AZONNALI (Kritikus)** ### **1. AZONNALI (Kritikus)**
- [ ] **Linear sync eltávolítása** GitHub Actions-ból - [x] **Linear sync eltávolítása** GitHub Actions-ból
- [ ] **GitHub-specifikus workflow** létrehozása - [x] **GitHub-specifikus workflow** létrehozása
- [ ] **Dokploy konfiguráció** hozzáadása - [x] **Deploy natív docker compose-szal** (`deploy.sh`)
### **2. RÖVID TÁVÚ (1-2 nap)** ### **2. RÖVID TÁVÚ (1-2 nap)**
- [ ] **GitHub secrets** beállítása - [ ] **GitHub secrets** beállítása
@@ -280,11 +278,11 @@ sequenceDiagram
### **Új Dokumentumok:** ### **Új Dokumentumok:**
- [ ] `LINEAR-SYNC-GUIDE.md` → Linear-specifikus útmutató - [ ] `LINEAR-SYNC-GUIDE.md` → Linear-specifikus útmutató
- [ ] `GITHUB-CICD-GUIDE.md` GitHub CI/CD útmutató - [ ] `GITHUB-CICD-GUIDE.md` → CI/CD útmutató (Gitea Actions + natív compose)
- [ ] `DEPLOYMENT-GUIDE.md`Dokploy deployment útmutató - [x] `DEPLOYMENT-GUIDE.md`Natív docker compose deploy (`deploy.sh`)
--- ---
**Utolsó frissítés:** 2025-09-05 **Utolsó frissítés:** 2026-08-17
**Státusz:** Elemzés kész, szétválasztási terv kész **Státusz:** Dokploy eltávolítva, natív docker compose deploy + Gitea Actions
**Következő lépés:** Linear sync eltávolítása GitHub Actions-ból **Következő lépés:** Docker registry opcionális beállítása
+30 -14
View File
@@ -1,8 +1,11 @@
#!/bin/bash #!/bin/bash
# mozdIT Deploy Script # mozdIT Deploy Script — natív docker compose, Dokploy nélkül
# Használat: ./deploy.sh [staging|production] # Használat: ./deploy.sh [staging|production]
# A szerveren fut (git pull + rebuild + indítás).
ENV=$1 set -euo pipefail
ENV="$1"
if [ "$ENV" != "staging" ] && [ "$ENV" != "production" ]; then if [ "$ENV" != "staging" ] && [ "$ENV" != "production" ]; then
echo "Hiba: Hiányzó vagy érvénytelen környezet paraméter." echo "Hiba: Hiányzó vagy érvénytelen környezet paraméter."
@@ -13,21 +16,34 @@ fi
echo "🚀 Deploy indítása: [$ENV] környezet" echo "🚀 Deploy indítása: [$ENV] környezet"
# 1. Kód frissítése # 1. Kód frissítése
echo "📦 Kód frissítése a ágról (main)..." echo "📦 Kód frissítése a main ágról..."
git pull origin main git pull origin main
# 2. .env fájl betöltése / ellenőrzése # 2. Környezeti változók (.env.<env>)
if [ -f ".env.$ENV" ]; then ENV_FILE=".env.${ENV}"
echo "🔑 Környezeti változók betöltése (.env.$ENV)..." if [ ! -f "$ENV_FILE" ]; then
export $(grep -v '^#' .env.$ENV | xargs) echo "❌ Hiba: $ENV_FILE fájl nem található."
else echo " Másold le a .env.example fájlt $ENV_FILE néven, és töltsd ki."
echo "⚠️ Figyelmeztetés: .env.$ENV fájl nem található, alapértelmezett értékek használata." exit 1
fi fi
echo "🔑 Környezeti változók betöltése ($ENV_FILE)..."
# 3. Docker konténerek újraépítése és indítása # 3. Docker konténerek újraépítése és indítása
echo "🐳 Docker konténerek buildelése és indítása Zero-Downtime megközelítéssel..." echo "🐳 Build és indítás..."
docker compose -f docker-compose.prod.yml up --build -d docker compose --env-file "$ENV_FILE" -f docker-compose.prod.yml up --build -d
# 4. Ellenőrzés # 4. Healthcheck
echo "✅ Deploy sikeresen befejeződött!" echo "⏳ Healthcheck (max 60s)..."
echo "📄 Logok megtekintése: docker compose -f docker-compose.prod.yml logs -f app" HEALTH_URL="http://localhost:${APP_PORT:-8080}/api/health"
for i in $(seq 1 30); do
if curl -sf "$HEALTH_URL" > /dev/null 2>&1; then
echo "✅ Healthcheck OK: $HEALTH_URL"
echo "✅ Deploy sikeres: [$ENV]"
exit 0
fi
sleep 2
done
echo "❌ Healthcheck sikertelen: $HEALTH_URL"
docker compose -f docker-compose.prod.yml logs app --tail 50
exit 1
@@ -1,455 +0,0 @@
<img src="https://r2cdn.perplexity.ai/pplx-full-logo-primary-dark%402x.png" style="height:64px;margin-right:32px"/>
# Dokploy Teljes Útmutató - Webfejlesztési Projekttér
A **Dokploy** egy kiváló, nyílt forráskódú alternatíva a Heroku, Vercel és Netlify platformokhoz, amely lehetővé teszi teljes kontrollt a deployment folyamat felett, miközben jelentős költségmegtakarítást biztosít.[^1][^2][^3]
## Mi a Dokploy és Miért Válaszd?
A Dokploy egy saját szerveren hostolható Platform-as-a-Service (PaaS) megoldás, amely Docker és Traefik technológiákra épül. Lényegében egy "személyes Heroku vagy Vercel", amelyet te birtokolsz és irányítasz.[^3][^1]
**Fő előnyök:**
- **Költséghatékony**: Nincs havi előfizetés vagy deployment díj, csak a szerver költsége (tipikusan €4-20/hó)[^4][^3]
- **Teljes kontroll**: Saját infrastruktúra kezelés vendor lock-in nélkül[^3]
- **Modern UI**: Gyönyörű webes felület, ellentétben a parancssor-alapú megoldásokkal[^3]
- **Docker Compose támogatás**: Komplex alkalmazások egyszerű kezelése[^3]
- **AI-vezérelt deployment**: Természetes nyelven leírt alkalmazások automatikus konfigurálása[^3]
## Telepítési Útmutató
### Előfeltételek
**Szerver követelmények:**
- Ubuntu 22.04/24.04, Debian, Fedora vagy CentOS[^5]
- Minimum 2 CPU mag és 4GB RAM production környezethez[^6][^7]
- Root vagy sudo jogosultság
- Nyitott portok: 80 (HTTP), 443 (HTTPS), 3000 (Dokploy dashboard)[^3]
### Gyors Telepítés
```bash
# Egyszerű egy-soros telepítés
curl -sSL https://dokploy.com/install.sh | sh
```
A telepítés általában 8-15 percet vesz igénybe, és automatikusan beállítja a Docker Swarm környezetet, PostgreSQL adatbázist, Redis cache-t és Traefik reverse proxy-t.[^8][^5]
### Dashboard Elérése
A telepítés után nyisd meg böngészőben: `http://your-server-ip:3000` és hozz létre egy admin fiókot.[^9]
## Alkalmazások Deployment-je
### GitHub Repository-ból
A Dokploy kiválóan integrálódik Git platformokkal. Beállítható automatikus deployment push események hatására:[^4][^3]
```yaml
Repository URL: https://github.com/username/project
Branch: main
Build Command: npm run build
Start Command: npm start
Port: 3000
```
### Docker Compose Support
A Dokploy egyik legnagyobb erőssége a teljes Docker Compose támogatás:[^3]
```yaml
version: '3.8'
services:
app:
build: .
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- DATABASE_URL=${DATABASE_URL}
depends_on:
- db
db:
image: postgres:15
environment:
- POSTGRES_DB=myapp
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
```
### Nixpacks Támogatás
A Dokploy támogatja a Nixpacks-et, amely automatikus build konfigurációt biztosít.[^10][^6]
## Adatbázis Kezelés
A Dokploy beépített támogatást nyújt több adatbázis típushoz:
- PostgreSQL
- MySQL/MariaDB
- MongoDB
- Redis
- InfluxDB[^9]
Az adatbázisok egy kattintással létrehozhatók és automatikusan csatlakoztathatók az alkalmazásokhoz.[^9]
## SSL és Domain Konfiguráció
A Dokploy automatikus SSL tanúsítvány generálást biztosít Let's Encrypt segítségével. A Traefik reverse proxy automatikusan kezeli a traffic routing-ot és load balancing-ot.[^11][^12][^3]
## DevOps Legjobb Gyakorlatok
### 1. Biztonsági Beállítások
**Szerver Biztonság:**
```bash
# UFW tűzfal beállítása
sudo ufw enable
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow 3000/tcp # Dokploy dashboard
# SSH kulcs használata jelszó helyett
ssh-keygen -t ed25519 -C "your_email@example.com"
ssh-copy-id user@server-ip
```
**VPS Biztonsági Javaslatok:**
- Automatikus frissítések engedélyezése[^13]
- SSH kulcsok használata jelszavak helyett[^13]
- Cloudflare használata web traffic védelemhez[^13]
- Adatbázis portok nem publikus expozíciója[^13]
### 2. CI/CD Pipeline
A Dokploy támogatja a GitHub Actions integrációt automatikus deployment-hez:[^6][^10]
```yaml
name: Deploy to Dokploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Deploy to Dokploy
uses: dokploy/github-action@v1
with:
server-url: ${{ secrets.DOKPLOY_SERVER_URL }}
api-key: ${{ secrets.DOKPLOY_API_KEY }}
application-id: ${{ secrets.APPLICATION_ID }}
```
### 3. Monitoring és Logging
A Dokploy beépített monitoring funkciókkal rendelkezik:[^9][^3]
- Real-time metrikák
- Container logok
- Resource használat monitoring
- Uptime tracking
**Külső monitoring integrálása:**
- Prometheus + Grafana stack használata részletes metrikákhoz
- Alerting beállítása kritikus események esetére[^12]
### 4. Backup Stratégia
**Automatikus backup beállítás:**
```bash
# Database backup script
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/home/backups"
# PostgreSQL backup
docker exec dokploy-postgres pg_dump -U postgres myapp > $BACKUP_DIR/db_backup_$DATE.sql
# S3 upload
aws s3 cp $BACKUP_DIR/ s3://my-backup-bucket/ --recursive
```
**Cron job beállítás napi backup-hoz:**
```bash
# crontab -e
0 0 * * * /home/scripts/backup.sh
```
### 5. Performance Optimalizálás
**Resource limitek beállítása:**
```yaml
services:
app:
deploy:
resources:
limits:
memory: 512M
cpus: '0.5'
reservations:
memory: 256M
cpus: '0.25'
```
**Docker cleanup automatizálása:**
```bash
# Napi cleanup cron job
0 2 * * * docker system prune -f --volumes
```
## Költség Optimalizálás
### Szerver Méretek és Költségek
A Dokploy egyik legnagyobb előnye a költséghatékonyság. Míg a managed szolgáltatások esetében a költségek exponenciálisan nőnek a forgalommal, a Dokploy fix szerver költséget jelent:[^4][^3]
- **Kis projektek**: 2GB RAM, 1 CPU (€4-5/hó) - Hetzner VPS[^4]
- **Közepes projektek**: 4GB RAM, 2 CPU (€8-12/hó)
- **Nagy projektek**: 8GB+ RAM, 4+ CPU (€20+/hó)
### Költségösszehasonlítás
A Vercel esetében könnyen száz dollárok fölé emelkedhetnek a havi költségek, míg a Dokploy-jal ugyanazon alkalmazások egy €4-20 közötti VPS-en futtathatók unlimited deploymenttel.[^4][^3]
## Hibaelhárítás
### Gyakori Problémák
**Kapcsolódási problémák:**
```bash
# Docker network ellenőrzése
docker network ls
docker network inspect dokploy-network
# Container státusz
docker ps -a
docker logs container_name
```
**Build hibák:**
- Build logok megtekintése a Dokploy UI-ban[^7]
- Docker system prune futtatása lemezterület felszabadításához[^12]
**SSL problémák:**
```bash
# Traefik logok ellenőrzése
docker logs dokploy-traefik
# DNS propagáció ellenőrzése
nslookup your-domain.com
```
## Advanced Funkciók
### Multi-Server Support
A Dokploy támogatja a multi-server deployment-et Docker Swarm segítségével, lehetővé téve az alkalmazások elosztását több szerver között a jobb teljesítmény és megbízhatóság érdekében.[^3]
### API Integráció
A Dokploy REST API-t biztosít programozott kezeléshez, lehetővé téve az automatizált deployment és management műveleteket.[^10]
### Organizations és Teams
A legújabb verziók támogatják a szervezetek és csapatok kezelését, lehetővé téve a projektek szeparációját és különböző jogosultsági szintek beállítását.[^3]
## Összefoglalás
A Dokploy egy rendkívül költséghatékony és hatékony megoldás webfejlesztő projektek deployment-jére. A megfelelő beállításokkal és DevOps gyakorlatokkal production-ready környezetet lehet kialakítani, amely versenyképes a nagy cloud szolgáltatókkal, miközben teljes kontrollt és jelentős költségmegtakarítást biztosít.
**Kulcs sikertényezők:**
1. **Alapos tervezés**: Környezetek és workflow-k megfelelő megtervezése
2. **Biztonság**: Proper authentication, SSL, tűzfal beállítása
3. **Monitoring**: Folyamatos figyelés és alerting
4. **Backup**: Rendszeres és tesztelt backup stratégia
5. **Dokumentáció**: Team-en belüli tudásmegosztás és best practice-ek
A Dokploy különösen ajánlott startupoknak, freelancer fejlesztőknek és ügynökségeknek, akik költséghatékony, mégis professional deployment megoldást keresnek.[^4][^3]
<span style="display:none">[^14][^15][^16][^17][^18][^19][^20][^21][^22][^23][^24][^25][^26][^27][^28][^29][^30][^31][^32][^33][^34][^35][^36][^37][^38][^39][^40][^41][^42][^43][^44][^45][^46][^47][^48][^49][^50][^51][^52][^53][^54][^55][^56][^57][^58][^59][^60][^61][^62][^63][^64][^65][^66][^67][^68][^69][^70][^71][^72][^73][^74][^75][^76]</span>
<div style="text-align: center">⁂</div>
[^1]: https://docs.dokploy.com
[^2]: https://arxiv.org/pdf/2303.07876.pdf
[^3]: https://f1000research.com/articles/5-1442/v1/pdf
[^4]: http://arxiv.org/pdf/2408.09869.pdf
[^5]: https://arxiv.org/pdf/2206.00699.pdf
[^6]: https://f1000research.com/articles/4-1443/v1/pdf
[^7]: https://joss.theoj.org/papers/10.21105/joss.01603.pdf
[^8]: http://arxiv.org/pdf/2309.06611.pdf
[^9]: https://f1000research.com/articles/6-52/v1/pdf
[^10]: https://peerj.com/articles/3948
[^11]: https://gsconlinepress.com/journals/gscaet/sites/default/files/GSCAET-2021-0023.pdf
[^12]: https://pmc.ncbi.nlm.nih.gov/articles/PMC6042832/
[^13]: https://edit.elte.hu/xmlui/bitstream/10831/75682/1/DH_2020_Evf3_Sz1_horvath.pdf
[^14]: https://arxiv.org/pdf/2002.03064.pdf
[^15]: https://ojs.mtak.hu/index.php/fogorv-szemle/article/download/11959/9738
[^16]: https://arxiv.org/pdf/2208.09097.pdf
[^17]: https://dx.plos.org/10.1371/journal.pone.0306100
[^18]: https://arxiv.org/pdf/2504.02431.pdf
[^19]: http://www.mdpi.com/1420-3049/20/6/9977/pdf
[^20]: https://lobehub.com/mcp/your-username-dokploy-mcp
[^21]: https://github.com/Dokploy/dokploy/issues/2413
[^22]: https://www.youtube.com/watch?v=pL_rNDEFxD8
[^23]: https://news.ycombinator.com/item?id=44884077
[^24]: https://www.youtube.com/watch?v=fCZqnKxl33w
[^25]: https://www.reddit.com/r/nextjs/comments/1mxwaaf/is_dockploy_an_option/
[^26]: https://www.youtube.com/watch?v=zIl_1oyOF0Y
[^27]: https://github.com/Dokploy/dokploy/releases
[^28]: https://talentasipil.unbari.ac.id/index.php/talenta/article/view/667
[^29]: https://www.sciltp.com/journals/ijamm/2025/2/1011
[^30]: https://ijaem.net/issue_dcp/Design%20and%20Development%20of%20an%20Online%20Recruitment%20Systems%20for%20Small%20And%20Medium%20Sized%20Enterprises%20In%20Zambia.pdf
[^31]: https://esajournals.onlinelibrary.wiley.com/doi/10.1002/fee.1472
[^32]: https://www.semanticscholar.org/paper/a67dc2084d045555f037cb307de1936e4674bf27
[^33]: https://www.spiedigitallibrary.org/conference-proceedings-of-spie/13097/3019127/Adaptive-optics-at-Gemini-observatories-past-present-and-future/10.1117/12.3019127.full
[^34]: https://iopscience.iop.org/article/10.1149/MA2023-01141350mtgabs
[^35]: https://ieeexplore.ieee.org/document/9721706/
[^36]: https://www.semanticscholar.org/paper/dbc5e65588d502c974beb2c1b05c03e88174f0fb
[^37]: https://iopscience.iop.org/article/10.1088/1755-1315/506/1/012010
[^38]: https://arxiv.org/pdf/2210.01073.pdf
[^39]: http://thesai.org/Downloads/Volume13No4/Paper_60-Framework_to_Deploy_Containers_using_Kubernetes_and_CICD_Pipeline.pdf
[^40]: https://arxiv.org/pdf/2312.03250.pdf
[^41]: https://arxiv.org/pdf/2309.00166.pdf
[^42]: http://arxiv.org/pdf/2407.19928.pdf
[^43]: https://hamidullah.me/blog
[^44]: https://www.reddit.com/r/webhosting/comments/1mij2hz/cant_deploy_a_nextjs_project_properly_on_vps/
[^45]: https://nikicaraznatovic.me/blog/using-vps
[^46]: https://www.youtube.com/watch?v=_tiuMTaPtCo
[^47]: https://forum.ghost.org/t/dokploy-ghost-6-0/59641
[^48]: https://www.youtube.com/watch?v=jYRdSfeGUus
[^49]: https://github.com/Dokploy/dokploy/issues/2331
[^50]: http://link.springer.com/10.1007/3-540-45150-1_3
[^51]: https://www.epj-conferences.org/10.1051/epjconf/202429504011
[^52]: https://onepetro.org/SPETWID/proceedings/24TWIP/24TWIP/D021S003R001/612657
[^53]: https://arxiv.org/abs/2207.12779
[^54]: https://ieeexplore.ieee.org/document/10004463/
[^55]: https://ieeexplore.ieee.org/document/10407325/
[^56]: https://wseas.com/journals/dcm/2023/a46dcm-015(2023).pdf
[^57]: https://www.frontiersin.org/articles/10.3389/fenvs.2024.1375193/full
[^58]: https://ac.inf.elte.hu/Vol_055_2023/doi/019_55.html
[^59]: https://dl.acm.org/doi/10.1145/3605098.3635981
[^60]: http://arxiv.org/pdf/2104.07899.pdf
[^61]: http://arxiv.org/pdf/2405.11316.pdf
[^62]: https://arxiv.org/pdf/1804.05039.pdf
[^63]: https://arxiv.org/pdf/2409.03405.pdf
[^64]: https://www.mdpi.com/1424-8220/25/3/914
[^65]: http://arxiv.org/pdf/2201.12879.pdf
[^66]: https://arxiv.org/html/2504.07707v1
[^67]: https://arxiv.org/pdf/1501.02967.pdf
[^68]: https://arxiv.org/pdf/2112.12595.pdf
[^69]: https://arxiv.org/pdf/2205.14498.pdf
[^70]: https://github.com/Dokploy/dokploy/issues/2341
[^71]: https://github.com/Dokploy/dokploy/actions
[^72]: https://www.reddit.com/r/hetzner/comments/1mrqiad/how_do_people_manage_a_5_vps/
[^73]: https://github.com/Dokploy/dokploy/activity
[^74]: https://tom-doerr.github.io/repo_posts/
[^75]: https://www.hostinger.com/tutorials/how-to-host-n8n-with-coolify
[^76]: https://ppl-ai-code-interpreter-files.s3.amazonaws.com/web/direct-files/d38b8c1e31ab15bfa3adaa9713847e61/db3553a8-1145-461e-8dbe-3e1ecaa61bc7/cd6eb76c.md
+13 -13
View File
@@ -29,11 +29,11 @@ Next.js 14+ (App Router + TypeScript)
### Deployment és Infrastruktúra ### Deployment és Infrastruktúra
``` ```
Dokploy Platform Docker Compose (natív deploy — deploy.sh)
├── Docker container (multi-stage build) ├── Docker container (multi-stage build)
├── Nginx/Traefik reverse proxy ├── Nginx/caddy reverse proxy
├── Lets Encrypt SSL automatikus ├── Lets Encrypt SSL automatikus
└── GitHub Actions CI/CD pipeline └── Gitea Actions CI/CD pipeline
``` ```
### Márkázás és Design ### Márkázás és Design
@@ -70,7 +70,7 @@ cd mozdit-proto
#### 0.3 Teljes Deployment Tesztelés #### 0.3 Teljes Deployment Tesztelés
```bash ```bash
# Dokploy telepítés és alap konfiguráció # Natív docker compose deploy beállítás
# Staging környezeten teljes CI/CD pipeline kipróbálása # Staging környezeten teljes CI/CD pipeline kipróbálása
# Automatikus deployment build → test → deploy → monitoring # Automatikus deployment build → test → deploy → monitoring
``` ```
@@ -104,10 +104,10 @@ npm install -D @playwright/test @testing-library/react @testing-library/jest-dom
- Prettier és ESLint konfiguráció - Prettier és ESLint konfiguráció
- Husky pre-commit hookok - Husky pre-commit hookok
#### 1.3 Dokploy Staging Környezet #### 1.3 Staging Környezet (natív docker compose)
- Dokploy telepítés és konfiguráció - Szerver előkészítés: Docker + docker compose telepítés
- Staging alkalmazás létrehozása (`staging.mozdit.hu`) - Staging alkalmazás létrehozása (`staging.mozdit.hu`)
- Environment változók beállítása - Environment változók beállítása (.env.staging)
- Docker multi-stage build konfiguráció - Docker multi-stage build konfiguráció
**Mérföldkő**: Futtatható dev környezet staging deploy képességgel **Mérföldkő**: Futtatható dev környezet staging deploy képességgel
@@ -245,7 +245,7 @@ Történik: form küldés után visszaigazolás jelenik meg
**Cél**: Production deployment, monitoring és visszajelzés gyűjtés **Cél**: Production deployment, monitoring és visszajelzés gyűjtés
#### 4.1 Production Deploy #### 4.1 Production Deploy
- Dokploy production alkalmazás konfiguráció - Natív docker compose production konfiguráció (`deploy.sh production`)
- Domain routing (`www.mozdit.hu``mozdit.hu`) - Domain routing (`www.mozdit.hu``mozdit.hu`)
- HTTPS automatikus (Lets Encrypt) - HTTPS automatikus (Lets Encrypt)
- Environment változók production értékei - Environment változók production értékei
@@ -323,8 +323,8 @@ export async function GET() {
- **Developer Experience**: TypeScript first-class support, hot reload - **Developer Experience**: TypeScript first-class support, hot reload
- **Ecosystem**: Nagy közösség, stabil könyvtárak rengeteg - **Ecosystem**: Nagy közösség, stabil könyvtárak rengeteg
### Dokploy Deployment Platform ### Docker Compose (natív deploy)
- **Költséghatékonyság**: €4-20/hó vs managed PaaS €50+ - **Költséghatékonyság**: Saját szerver, nincs PaaS díj
- **Teljes kontroll**: Saját szerver, custom Docker konfiguráció - **Teljes kontroll**: Saját szerver, custom Docker konfiguráció
- **Biztonság**: Magán infrastruktúra, adatvédelmet könnyebb teljesíteni - **Biztonság**: Magán infrastruktúra, adatvédelmet könnyebb teljesíteni
- **Skálázhatóság**: Multi-server support későbbi növekedéshez - **Skálázhatóság**: Multi-server support későbbi növekedéshez
@@ -349,7 +349,7 @@ export async function GET() {
- **Napi standup**: Progress jelentés és blocker azonosítás - **Napi standup**: Progress jelentés és blocker azonosítás
- **Weekly demo**: Áttekintés és visszajelzés gyűjtés - **Weekly demo**: Áttekintés és visszajelzés gyűjtés
- **GitHub Issues**: Feladatkövetés és dokumentáció - **GitHub Issues**: Feladatkövetés és dokumentáció
- **Dokploy Dashboard**: Deploy status és monitoring - **Deploy dashboard**: Deploy status és monitoring (healthcheck + logs)
### Stakeholder Kommunikáció ### Stakeholder Kommunikáció
- **Heti előrehaladási jelentések**: Vizualizált mérföldkövek - **Heti előrehaladási jelentések**: Vizualizált mérföldkövek
@@ -370,7 +370,7 @@ graph TB
end end
subgraph "Fázis 1: Inicializálás (1 hét)" subgraph "Fázis 1: Inicializálás (1 hét)"
A1[Repository setup] --> A2[Dokploy staging] A1[Repository setup] --> A2[Staging deploy]
A2 --> A3[CI/CD pipeline] A2 --> A3[CI/CD pipeline]
A3 --> A4[Environment config] A3 --> A4[Environment config]
end end
@@ -412,7 +412,7 @@ Nap 1-4 Hét 1 Hét 2-3 Hét 4 Hét 5
│ │ │ │ │ │ │ │ │ │
├── Fázis 0 ├── Fázis 1 ├── Fázis 2 ├── Fázis 3 ├── Fázis 4 ├── Fázis 0 ├── Fázis 1 ├── Fázis 2 ├── Fázis 3 ├── Fázis 4
│ Prototípus ├── Setup ├── Core UI ├── QA ├── Production │ Prototípus ├── Setup ├── Core UI ├── QA ├── Production
│ Pipeline │ Dokploy │ Pages │ Testing │ Deploy │ Pipeline │ Compose │ Pages │ Testing │ Deploy
│ tesztelés │ Pipeline │ Forms │ Security │ Monitoring │ tesztelés │ Pipeline │ Forms │ Security │ Monitoring
``` ```
@@ -1,236 +0,0 @@
# mozdIT Bt. — Weboldal követelmény + Dokploy deploy specifikáció (MVP)
## 0) Rövid összefoglaló
Cél: minimális, de komplett, mobilelső, gyors és biztonságos **bemutatkozó weboldal** a mozdIT Bt.-nek, kiemelt **Webmail** linkkel és rövid, egyedi bemutatkozással. A később készülő **admin aloldal** (szervermonitoring/menedzsment) helye előkészítve. Deployment és tesztelés: **Dokploy** környezetben.
---
## 1) MVP oldalak és funkciók
**Oldalak**
- **Kezdőlap**: rövid, egyedi bemutatkozó szöveg; CTA: **Webmail** link (külső URL); szolgáltatások rövid dobozai.
- **Rólunk**: rövid történet, működés óta, személyes ügyfélkezelés, megbízhatóság.
- **Szolgáltatások**: web hosting, email szolgáltatás, DNS adminisztráció (rövid leírás + kapcsolat CTA).
- **Kapcsolat**: űrlap (név, email, üzenet, GDPR checkbox); cég email, telefonszám (ha lesz), cégnév, székhely.
- **Admin** (előre jelzett aloldal): `/<admin>` route fenntartva; tartalom később.
**Funkciók (MVP)**
- Reszponzív navigáció (hamburger mobilon, sticky header desktopon).
- Űrlapvalidáció (frontend: required + email forma; backend: spamvédett endpoint).
- SEO alapok (title/description per oldal, OG, sitemap, robots).
- Analytics: Plausible (cookieless) vagy GA4 (cookieconsenttel).
---
## 2) Nemfunkcionális követelmények
- **Reszponzivitás:** mobilefirst; töréspontok: 360 / 640 / 768 / 1024 / 1280+ px.
- **Teljesítmény:** Lighthouse (mobil/desktop) ≥ 90; képek WebP/AVIF; lazyload; kritikus CSS minimalizálás.
- **A11y:** WCAG 2.1 AA (fókusz, ARIA, kontraszt ≥ 4.5:1, logikus heading).
- **Biztonság:** HTTPS, alap CSP, XSS/CSRF védelem, input szűrés a backend felé.
- **Megfigyelhetőség:** Sentry (client) + alap logok; uptime healthcheck.
---
## 3) Technológiai stack
- **Frontend:** Next.js (React + TypeScript) — SSG/SSR vegyes; App Router.
- **UI:** Tailwind CSS + egyszerű saját komponensek (később: shadcn/ui opcionális).
- **Űrlapok:** React Hook Form + Zod.
- **State:** minimális local state + SWR (ha kell fetch).
- **Teszt:** Jest + Testing Library (unit), Playwright (E2E — smoke a fő flowkra).
- **CMS (opcionális később):** Strapi/Sanity; MVPben statikus tartalom JSON/MDX.
Projektstruktúra (rövid):
```
/src
/app (Next.js routes)
/components
/styles
/lib
/tests (unit + e2e cfg)
/public
```
---
## 4) Tartalom (MVP) — copy irány
- **Hero cím** (Kezdőlap): „Megbízható web és emailszolgáltatás **személyre szabott támogatással**.”
- **Alcím:** „Kis ügyfélkör, nagy figyelem: stabil tárhely, üzembiztos levelezés és DNS adminisztráció — gyors reakcióval.”
- **USP bulletek:** személyes ügyfélkezelés; gyors reagálás; stabil háttér; rugalmas támogatás.
- **Webmail gomb:** „Ugrás a Webmailre”.
- **Rólunk rövid:** mióta működtök; miért a kicsi ügyfélkör; megbízhatóság/folyamatos támogatás.
- **Szolgáltatás dobozok:** Web Hosting / Email / DNS Admin (12 mondat/elem, Kapcsolat CTA).
*(Megjegyzés: a végleges szöveg a review során finomhangolható.)*
---
## 5) Dokploy környezet — architektúra és folyamat
### 5.1 Környezetek
- **Staging**: `staging.mozdit.hu` (pl. alap auth / IPkorlátozás, ha kell)
- **Production**: `mozdit.hu` (www → apex redirect vagy fordítva)
### 5.2 Alap komponensek
- **Reverse proxy/ingress**: Dokploy beépített (Traefik/Nginx környezet — a dokploy stack szerint).
- **App konténer**: Next.js app (Node 20) — SSG build + Node futtatás (vagy statikus export + Nginx).
- **Opció**: CDN (Cloudflare) a statikus assetekhez.
### 5.3 Environment változók (példa)
- `NEXT_PUBLIC_WEBMAIL_URL=https://webmail.mozdit.hu`
- `COMPANY_NAME=mozdIT Bt.`
- `SITE_URL=https://mozdit.hu`
- `ANALYTICS_PROVIDER=plausible|ga4`
- `PLAUSIBLE_DOMAIN=mozdit.hu` (ha Plausible)
- `GA4_ID=G-XXXXXXX` (ha GA4)
- `CONTACT_API_URL=https://api.mozdit.hu/contact` (ha külön backend)
### 5.4 Healthcheck & readiness
- HTTP GET `/api/health``{status:"ok"}`
- Staging/prod deploy csak zöld health esetén; rollback automatikus szabály (utolsó zöld image).
---
## 6) Docker & build
### 6.1 Next.js multistage Dockerfile (Node 20)
```dockerfile
# 1) Build stage
FROM node:20-alpine AS builder
WORKDIR /app
COPY package.json package-lock.json* pnpm-lock.yaml* yarn.lock* ./
RUN npm ci --prefer-offline --no-audit --legacy-peer-deps || npm ci
COPY . .
RUN npm run build
# 2) Run stage (Node server)
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/public ./public
COPY --from=builder /app/package.json ./package.json
RUN npm ci --omit=dev --prefer-offline --no-audit || true
EXPOSE 3000
HEALTHCHECK --interval=30s --timeout=5s --retries=5 CMD wget -qO- http://localhost:3000/api/health || exit 1
CMD ["npm","start"]
```
*Megjegyzés:* Ha **statikus export** (SSG only) elegendő, választható Nginx runtime is.
### 6.2 Dokploy app (magas szint)
- **Repository link** + **branch per environment** (`main` → prod, `develop` → staging) vagy tagalapú deploy.
- **Build & deploy**: Dockerfile alapján; port 3000; domain mapping staging/prod; envek UIból/secret storeból.
- **Zerodowntime**: rolling frissítés (legalább 2 replika prodon, ha erőforrás engedi).
---
## 7) CI/CD (példa: GitHub Actions)
Workflow: **lint → unit → build → e2e (smoke, staging) → Dokploy deploy → Lighthouse check (staging) → prod release**
`.github/workflows/ci.yml` (részlet):
```yaml
name: CI
on:
push:
branches: ["main", "develop"]
jobs:
build-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: 20 }
- run: npm ci
- run: npm run lint && npm run test -- --ci
- run: npm run build
docker:
needs: build-test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build & push image
uses: docker/build-push-action@v5
with:
push: true
context: .
tags: registry.example.com/mozdit/site:${{ github.sha }}
deploy-staging:
needs: docker
runs-on: ubuntu-latest
steps:
- name: Trigger Dokploy staging deploy
run: |
curl -X POST "$DOKPLOY_STAGING_HOOK" -H "Authorization: Bearer $DOKPLOY_TOKEN" \
-d '{"image":"registry.example.com/mozdit/site:${{ github.sha }}"}'
environment: staging
lighthouse:
needs: deploy-staging
runs-on: ubuntu-latest
steps:
- name: Lighthouse CI
run: npx @lhci/cli autorun --collect.url=https://staging.mozdit.hu
deploy-prod:
if: github.ref == 'refs/heads/main'
needs: lighthouse
runs-on: ubuntu-latest
steps:
- name: Trigger Dokploy prod deploy
run: |
curl -X POST "$DOKPLOY_PROD_HOOK" -H "Authorization: Bearer $DOKPLOY_TOKEN" \
-d '{"image":"registry.example.com/mozdit/site:${{ github.sha }}"}'
environment: production
```
*Megjegyzés:* a Dokployoldali webhook/API URL és token a platform beállításától függ; ha Git integrációt használtok, a "Trigger" lépés helyett **autodeploy** szabály is beállítható.
---
## 8) Tesztelés a Dokploy stagingen
- **Smoke E2E** (Playwright): 3 alap flow → kezdőlap betölt, Webmail link működik, Kapcsolat űrlap hibakezelés OK.
- **Vizsgálatok**: Lighthouse (mobil & desktop), A11y ellenőrző (axe), 404/500 oldal viselkedés.
- **Megfigyelés**: Sentry DSN kapcsolva; health endpoint figyelése.
---
## 9) Biztonság & adatvédelem
- HTTPS (Lets Encrypt / Dokploy integráció), HSTS.
- **CSP** baseline (scriptsrc 'self' + szükséges 3rd party); **ReferrerPolicy**, **XFrameOptions** (SAMEORIGIN), **XContentTypeOptions**.
- **GDPR**: cookie banner ha GA4; Plausible esetén banner elhagyható.
- Kapcsolat űrlap: captcha/light ratelimit, backend input validáció, email küldés queueval (ha szükséges).
---
## 10) Rollback, backup, verziózás
- **Release tag** (semver) + image tag; Dokployban korábbi image visszagörgetés.
- **Konfig backup**: envek és Dokploy app export; infraascode (Dockerfile, workflowk) GITben.
---
## 11) Elfogadási kritériumok (MVP)
- Kezdőlap, Rólunk, Szolgáltatások, Kapcsolat elérhető és reszponzív.
- Webmail link jól működik (új lapon, nofollow opcionális).
- Lighthouse ≥ 90 minden fő mérőszámon stagingen.
- Űrlap hibák/fókuszállapotok a11ykonformak.
- CI pipeline zöld, staging deploy automatikus; prod deploy csak zöld staging után.
---
## 12) Kezdő feladatlista (ticket sablonok)
1. **Repo & Next.js bootstrap***Acceptance*: app indul dev módban; TS, ESLint, Prettier beállítva.
2. **Tailwind + alap layout***Acceptance*: reszponzív header/footer; tipográfia, színek.
3. **Kezdőlap (Hero + USP + Webmail CTA)***Acceptance*: 1s alatt festődik mobilon; link működik.
4. **Rólunk oldal***Acceptance*: headinghierarchia helyes; szövegek MDXből tölthetők.
5. **Szolgáltatások oldal***Acceptance*: 3 doboz + CTA → Kapcsolat.
6. **Kapcsolat űrlap + API stub***Acceptance*: validáció, hibák; egyszerű spamvédelem.
7. **/api/health endpoint** — *Acceptance*: `{status:"ok"}` JSON.
8. **Dockerfile + Dokploy staging app***Acceptance*: buildel, deployol, domain él.
9. **CI (lint, unit) + Staging deploy trigger***Acceptance*: PRre fut; stagingre pushol.
10. **Playwright smoke E2E + Lighthouse CI***Acceptance*: fut stagingen, riport mentve.
11. **Prod app + domain + HTTPS***Acceptance*: élő site; automatikus HTTPS; monitoring bekapcsolva.
---
## 13) Későbbi bővítések
- Blog/Újdonságok; többnyelvűség; admin aloldal funkciói; CDN cache; képgenerálás; CMS integráció.
---
*Megjegyzés:* A végleges Dokploy beállítások (webhook/API, autodeploy, replika szám, storage) a rendelkezésre álló szerver erőforrásoktól és a Dokploy verziójától függően finomhangolandók.