All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 15s
- Rewrite mcp-server/README.md: clean structure, auth section, 22 tools - Rewrite N8N-CONFIG.md: remove hardcoded IPs, add x-api-key auth flow - Rewrite N8N-WORKFLOWS.md: simplified, removed AI proxy tool references - Update README.md/README.fr.md: 37→22 tools, add auth mention - Update GUIDE.md/GUIDE.en.md: remove AI/API key tool tables, add auth - Update DEPLOY.md: SSE → Streamable HTTP in architecture diagram Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
7.2 KiB
7.2 KiB
Memento - Guide de deploiement complet
Table des matieres
- Architecture
- Setup du serveur 192.168.1.190
- Installation de Gitea Runner
- CI/CD automatique
- Nginx reverse proxy
- Checklist
Architecture
Internet/LAN
|
[Nginx] ── port 80/443 ── notes.parsanet.org
|
├── / ──► [memento-web] ── port 3000 ── Next.js App
|
└── /mcp ──► [memento-mcp] ── port 3001 ── MCP Server (Streamable HTTP)
|
[postgres] ── port 5432 (127.0.0.1 seulement)
=== Machine 192.168.1.190 ===
- Docker + Docker Compose (les 3 conteneurs)
- act_runner (Gitea Runner) --> build + deploy en local
- Nginx reverse proxy
=== Serveur Gitea (gitea.parsanet.org) ===
- Gitea seulement (pas de runner)
- Envoie les events push au runner via API
Le Runner est installe sur 192.168.1.190 directement. Pas besoin de SSH.
Setup serveur
1. Creer l'utilisateur de deploiement
# Sur 192.168.1.190, en root :
useradd -m -s /bin/bash memento-deploy
usermod -aG docker memento-deploy
mkdir -p /opt/memento
chown memento-deploy:memento-deploy /opt/memento
2. Cloner le repo
su - memento-deploy
cd /opt/memento
git clone https://gitea.parsanet.org/sepehr/Momento.git .
git config credential.helper store
# Le premier pull demandera les identifiants Gitea
3. Generer le .env.docker
cd /opt/memento
bash scripts/deploy.sh --full
Le script demande interactivement :
- URL (mettre
http://192.168.1.190ouhttp://notes.parsanet.org) - Provider AI + cle API
- Email (optionnel)
Il genere automatiquement NEXTAUTH_SECRET et POSTGRES_PASSWORD.
4. Premier deploiement
cd /opt/memento
bash scripts/deploy.sh --build
docker compose ps
# Les 3 conteneurs doivent etre "healthy"
5. Creer le premier admin
# S'inscrire sur http://192.168.1.190/register
# Puis promouvoir en admin :
docker compose exec -T postgres psql -U memento -d memento \
-c "UPDATE \"User\" SET role='ADMIN' WHERE email='VOTRE_EMAIL';"
Gitea Runner
1. Activer Actions dans Gitea
Dans app.ini du serveur Gitea :
[actions]
ENABLED = true
Redemarrer Gitea.
2. Recuperer le token d'enregistrement
Aller sur : gitea.parsanet.org > Momento > Settings > Actions > Runners > "New Runner" Copier le token affiche.
3. Installer act_runner sur 192.168.1.190
# Sur 192.168.1.190, en root :
# Telecharger
wget https://gitea.com/gitea/act_runner/releases/latest/download/act_runner-linux-amd64
chmod +x act_runner-linux-amd64
mv act_runner-linux-amd64 /usr/local/bin/act_runner
# Verifier
act_runner --version
# Generer la config
mkdir -p /etc/act_runner
act_runner generate-config > /etc/act_runner/config.yaml
4. Enregistrer le runner
act_runner register \
--no-interactive \
--instance https://gitea.parsanet.org \
--token VOTRE_TOKEN_ICI \
--name memento-deploy \
--labels "ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest,docker-host:host"
Les labels sont importants :
ubuntu-latest: pour les jobs dans un conteneur Docker (checkout, etc.)docker-host: pour les jobs directement sur la machine (acces Docker)
5. Creer le service systemd
cat > /etc/systemd/system/gitea-runner.service << 'EOF'
[Unit]
Description=Gitea Actions Runner
After=network.target docker.service
Requires=docker.service
[Service]
Type=simple
User=memento-deploy
WorkingDirectory=/home/memento-deploy
ExecStart=/usr/local/bin/act_runner daemon --config /etc/act_runner/config.yaml
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable gitea-runner
systemctl start gitea-runner
systemctl status gitea-runner
6. Verifier
systemctl status gitea-runner
# Doit etre "active (running)"
# Sur gitea.parsanet.org > Momento > Settings > Actions > Runners
# Le runner "memento-deploy" doit apparaitre avec le label "docker-host"
CI/CD
Le workflow est dans .gitea/workflows/deploy.yaml.
Ce qui se passe a chaque push sur main :
- Gitea notifie le Runner sur 192.168.1.190
- Le Runner checkout le code
rsyncvers/opt/memento/(exclut node_modules, .git, .next)docker compose build --paralleldocker compose up -d --remove-orphans- Attend que les 3 conteneurs soient healthy
- Nettoie les vieilles images
Pas de secrets a configurer
Le .env.docker est deja sur le serveur. Le workflow n'a pas besoin de secrets SSH
puisque tout se passe en local sur 192.168.1.190.
Tester le CI/CD
# Faire un push test depuis votre machine :
echo "# test" >> README.md
git add README.md
git commit -m "test: CI/CD deploy"
git push origin main
# Verifier sur gitea.parsanet.org > Momento > Actions
# Le job doit apparaitre et se terminer en succes
Nginx
Installation
apt install -y nginx
Configuration
cat > /etc/nginx/sites-available/memento << 'EOF'
server {
listen 80;
server_name notes.parsanet.org 192.168.1.190;
# Next.js app
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
# MCP Server (Streamable HTTP)
location /mcp {
proxy_pass http://127.0.0.1:3001/mcp;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
proxy_buffering off;
proxy_cache off;
}
}
EOF
ln -sf /etc/nginx/sites-available/memento /etc/nginx/sites-enabled/memento
rm -f /etc/nginx/sites-enabled/default
nginx -t && systemctl reload nginx
HTTPS (plus tard)
apt install -y certbot python3-certbot-nginx
certbot --nginx -d notes.parsanet.org
# Puis mettre a jour NEXTAUTH_URL :
cd /opt/memento
nano .env.docker
# Changer : NEXTAUTH_URL="https://notes.parsanet.org"
docker compose restart memento-note
Checklist
Premier deploiement
- Creer
memento-deploysur 192.168.1.190 - Cloner le repo dans
/opt/memento bash scripts/deploy.sh --full- 3 conteneurs healthy
- S'inscrire, puis promouvoir en ADMIN via SQL
- Configurer Nginx
CI/CD (une seule fois)
- Activer Actions dans Gitea (
app.ini) - Installer
act_runnersur 192.168.1.190 - Enregistrer avec le token Gitea
- Creer le service systemd
- Verifier le runner apparait dans Gitea
- Push test > verifier dans Actions
Apres chaque push sur main (automatique)
- Le Runner detecte le push
- rsync vers /opt/memento
- docker compose build + up
- Conteneurs healthy