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:
@@ -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
|
||||
|
||||
Binary file not shown.
@@ -29,11 +29,11 @@ Next.js 14+ (App Router + TypeScript)
|
||||
|
||||
### Deployment és Infrastruktúra
|
||||
```
|
||||
Dokploy Platform
|
||||
Docker Compose (natív deploy — deploy.sh)
|
||||
├── Docker container (multi-stage build)
|
||||
├── Nginx/Traefik reverse proxy
|
||||
├── Nginx/caddy reverse proxy
|
||||
├── Let’s Encrypt SSL automatikus
|
||||
└── GitHub Actions CI/CD pipeline
|
||||
└── Gitea Actions CI/CD pipeline
|
||||
```
|
||||
|
||||
### Márkázás és Design
|
||||
@@ -70,7 +70,7 @@ cd mozdit-proto
|
||||
|
||||
#### 0.3 Teljes Deployment Tesztelés
|
||||
```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
|
||||
# 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ó
|
||||
- Husky pre-commit hookok
|
||||
|
||||
#### 1.3 Dokploy Staging Környezet
|
||||
- Dokploy telepítés és konfiguráció
|
||||
#### 1.3 Staging Környezet (natív docker compose)
|
||||
- Szerver előkészítés: Docker + docker compose telepítés
|
||||
- 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ó
|
||||
|
||||
**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
|
||||
|
||||
#### 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`)
|
||||
- HTTPS automatikus (Let’s Encrypt)
|
||||
- Environment változók production értékei
|
||||
@@ -323,8 +323,8 @@ export async function GET() {
|
||||
- **Developer Experience**: TypeScript first-class support, hot reload
|
||||
- **Ecosystem**: Nagy közösség, stabil könyvtárak rengeteg
|
||||
|
||||
### Dokploy Deployment Platform
|
||||
- **Költséghatékonyság**: €4-20/hó vs managed PaaS €50+
|
||||
### Docker Compose (natív deploy)
|
||||
- **Költséghatékonyság**: Saját szerver, nincs PaaS díj
|
||||
- **Teljes kontroll**: Saját szerver, custom Docker konfiguráció
|
||||
- **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
|
||||
@@ -349,7 +349,7 @@ export async function GET() {
|
||||
- **Napi standup**: Progress jelentés és blocker azonosítás
|
||||
- **Weekly demo**: Áttekintés és visszajelzés gyűjtés
|
||||
- **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ó
|
||||
- **Heti előrehaladási jelentések**: Vizualizált mérföldkövek
|
||||
@@ -370,7 +370,7 @@ graph TB
|
||||
end
|
||||
|
||||
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]
|
||||
A3 --> A4[Environment config]
|
||||
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
|
||||
│ Prototípus ├── Setup ├── Core UI ├── QA ├── Production
|
||||
│ Pipeline │ Dokploy │ Pages │ Testing │ Deploy
|
||||
│ Pipeline │ Compose │ Pages │ Testing │ Deploy
|
||||
│ 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, mobil‑első, 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** (szerver‑monitoring/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 e‑mail, 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 + e‑mail forma; backend: spam‑védett endpoint).
|
||||
- SEO alapok (title/description per oldal, OG, sitemap, robots).
|
||||
- Analytics: Plausible (cookieless) vagy GA4 (cookie‑consenttel).
|
||||
|
||||
---
|
||||
|
||||
## 2) Nem‑funkcionális követelmények
|
||||
- **Reszponzivitás:** mobile‑first; töréspontok: 360 / 640 / 768 / 1024 / 1280+ px.
|
||||
- **Teljesítmény:** Lighthouse (mobil/desktop) ≥ 90; képek WebP/AVIF; lazy‑load; 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ő flow‑kra).
|
||||
- **CMS (opcionális később):** Strapi/Sanity; MVP‑ben statikus tartalom JSON/MDX.
|
||||
|
||||
Projekt‑struktú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 email‑szolgá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 bullet‑ek:** 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 (1–2 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 / IP‑korlá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 multi‑stage 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 tag‑alapú deploy.
|
||||
- **Build & deploy**: Dockerfile alapján; port 3000; domain mapping staging/prod; env‑ek UI‑ból/secret store‑ból.
|
||||
- **Zero‑downtime**: rolling frissítés (legalább 2 replika prod‑on, 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 Dokploy‑oldali 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 **auto‑deploy** 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 (Let’s Encrypt / Dokploy integráció), HSTS.
|
||||
- **CSP** baseline (script‑src 'self' + szükséges 3rd party); **Referrer‑Policy**, **X‑Frame‑Options** (SAMEORIGIN), **X‑Content‑Type‑Options**.
|
||||
- **GDPR**: cookie banner ha GA4; Plausible esetén banner elhagyható.
|
||||
- Kapcsolat űrlap: captcha/light rate‑limit, backend input validáció, e‑mail küldés queue‑val (ha szükséges).
|
||||
|
||||
---
|
||||
|
||||
## 10) Rollback, backup, verziózás
|
||||
- **Release tag** (semver) + image tag; Dokploy‑ban korábbi image visszagörgetés.
|
||||
- **Konfig backup**: env‑ek és Dokploy app export; infra‑as‑code (Dockerfile, workflow‑k) GIT‑ben.
|
||||
|
||||
---
|
||||
|
||||
## 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 a11y‑konformak.
|
||||
- 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*: heading‑hierarchia helyes; szövegek MDX‑bő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ű spam‑vé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*: PR‑re 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, auto‑deploy, 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.
|
||||
|
||||
Reference in New Issue
Block a user