Reorganizare documentație și adăugare scripturi
- README.md nou cu documentație completă: concept, workflow-uri, configurare SSH prin Proxmox, Tailscale, troubleshooting - CLAUDE.md simplificat - doar reguli pentru mod non-interactiv - Șters SETUP-COMPLETE.md (conținut mutat în README) - claudep.sh - script pentru task-uri în background cu logging - work.sh - actualizat - .gitignore - adăugat node_modules, Python, IDE, build outputs 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
367
README.md
Normal file
367
README.md
Normal file
@@ -0,0 +1,367 @@
|
||||
# Claude Agent - Cloud Development Environment
|
||||
|
||||
Container LXC configurat pentru **rularea Claude Code în cloud cu sesiuni permanente tmux**.
|
||||
|
||||
## Concept
|
||||
|
||||
Acest sistem permite:
|
||||
1. **Lansezi o sarcină pentru Claude** (interactiv sau cu `claudep.sh`)
|
||||
2. **Claude lucrează în tmux** - sesiunea persistă chiar dacă te deconectezi
|
||||
3. **Te reconectezi oricând** - de pe laptop, telefon, alt calculator
|
||||
4. **Vezi ce a făcut Claude** - revizuiești codul, testezi, dai feedback
|
||||
5. **Push în Gitea** - când ești mulțumit cu rezultatul
|
||||
|
||||
Poți lansa un task dimineața, Claude lucrează toată ziua, iar seara te conectezi de pe alt calculator să vezi progresul.
|
||||
|
||||
## Informații Sistem
|
||||
|
||||
| Parametru | Valoare |
|
||||
|-----------|---------|
|
||||
| VMID | 171 |
|
||||
| Hostname | claude-agent |
|
||||
| IP LAN | 10.0.20.171 |
|
||||
| IP Tailscale | claude-agent (sau 100.95.55.51) |
|
||||
| Gateway | 10.0.20.1 |
|
||||
| Host Proxmox | pveelite (10.0.20.202) |
|
||||
| User | claude |
|
||||
| Storage | local-zfs (32GB) |
|
||||
| RAM | 4GB |
|
||||
| CPU | 2 cores |
|
||||
|
||||
**Data setup:** 2025-12-31
|
||||
|
||||
## Componente Instalate
|
||||
|
||||
| Component | Versiune |
|
||||
|-----------|----------|
|
||||
| Ubuntu | 24.04 LTS |
|
||||
| Node.js | v20.19.6 (via nvm) |
|
||||
| Claude Code | 2.0.76 |
|
||||
| tmux | 3.4 |
|
||||
| Git | 2.43.0 |
|
||||
|
||||
---
|
||||
|
||||
## Conectare SSH
|
||||
|
||||
Poți te conecta în două moduri:
|
||||
|
||||
```bash
|
||||
# Din rețeaua locală
|
||||
ssh claude@10.0.20.171
|
||||
|
||||
# Prin Tailscale (de oriunde)
|
||||
ssh claude@claude-agent
|
||||
```
|
||||
|
||||
**Notă:** Nu există parolă setată pentru userul `claude`. Accesul se face doar cu SSH key.
|
||||
Vezi secțiunea "Configurare Acces SSH" pentru instalarea cheii.
|
||||
|
||||
---
|
||||
|
||||
## Workflow Principal
|
||||
|
||||
### Varianta 1: Sesiune Interactivă
|
||||
|
||||
```bash
|
||||
# 1. Conectare SSH (LAN sau Tailscale)
|
||||
ssh claude@10.0.20.171 # sau
|
||||
ssh claude@claude-agent # prin Tailscale
|
||||
|
||||
# 2. Pornire/reatașare sesiune tmux (automat)
|
||||
~/start-agent.sh
|
||||
|
||||
# 3. Navighează în proiect și pornește Claude
|
||||
cd /workspace/<project>
|
||||
claude
|
||||
|
||||
# 4. Lucrezi cu Claude interactiv...
|
||||
|
||||
# 5. Când vrei să pleci - detașare din tmux (sesiunea rămâne activă)
|
||||
Ctrl+A, d
|
||||
|
||||
# 6. Mai târziu - reconectare la sesiune (start-agent.sh reatașează automat)
|
||||
ssh claude@claude-agent
|
||||
~/start-agent.sh
|
||||
```
|
||||
|
||||
### Varianta 2: Task în Background
|
||||
|
||||
Două scripturi disponibile:
|
||||
|
||||
**`work.sh`** - Te întreabă interactiv ce proiect și ce task:
|
||||
```bash
|
||||
ssh claude@claude-agent
|
||||
/workspace/work.sh
|
||||
# Răspunzi la întrebări despre proiect și task
|
||||
```
|
||||
|
||||
**`claudep.sh`** - Rulează în directorul curent, creează fișiere independent:
|
||||
```bash
|
||||
ssh claude@claude-agent
|
||||
cd /workspace/<project> # Navighează în proiect
|
||||
/workspace/claudep.sh "Implementează autentificare JWT"
|
||||
|
||||
# SAU din /workspace (fișierele se creează în .claude-work/)
|
||||
cd /workspace
|
||||
/workspace/claudep.sh "Cercetează cele mai bune practici pentru API design"
|
||||
```
|
||||
|
||||
**Monitorizare și rezultate:**
|
||||
```bash
|
||||
# Urmărește progresul în timp real
|
||||
tail -f /workspace/.claude-logs/claude_*_progress.log
|
||||
|
||||
# Vezi rezultatele finale
|
||||
cat /workspace/.claude-logs/claude_*_progress.log
|
||||
```
|
||||
|
||||
### Varianta 3: VS Code Remote
|
||||
|
||||
Cea mai convenabilă metodă pentru lucru prelungit - editezi cod, vezi terminal, totul într-un singur loc.
|
||||
|
||||
1. **Configurează accesul SSH** (vezi secțiunea de mai jos)
|
||||
2. **Instalează extensia** "Remote - SSH" în VS Code
|
||||
3. **Conectare:** `Ctrl+Shift+P` → `Remote-SSH: Connect to Host...` → `claude-agent`
|
||||
4. **Deschide terminal** în VS Code (`Ctrl+``)
|
||||
5. **Atașează la sesiunea Claude:** `~/start-agent.sh`
|
||||
6. **Lucrezi** - editezi fișiere în VS Code, interacționezi cu Claude în terminal
|
||||
|
||||
---
|
||||
|
||||
## Configurare Acces SSH (Prima dată)
|
||||
|
||||
**Problema:** Nu există parolă setată pentru userul `claude` în LXC. Accesul se face prin SSH key.
|
||||
|
||||
### Pas 1: Generează SSH key pe calculatorul tău (dacă nu ai)
|
||||
|
||||
```bash
|
||||
# Pe calculatorul tău (Windows PowerShell, Mac/Linux Terminal)
|
||||
ssh-keygen -t ed25519 -C "your-email@example.com"
|
||||
|
||||
# Afișează cheia publică
|
||||
cat ~/.ssh/id_ed25519.pub
|
||||
# SAU pe Windows:
|
||||
type %USERPROFILE%\.ssh\id_ed25519.pub
|
||||
```
|
||||
|
||||
Copiază cheia publică (linia care începe cu `ssh-ed25519 ...`).
|
||||
|
||||
### Pas 2: Adaugă cheia în LXC prin Proxmox
|
||||
|
||||
Conectează-te la host-ul Proxmox și adaugă cheia în container:
|
||||
|
||||
```bash
|
||||
# 1. SSH pe Proxmox host
|
||||
ssh root@10.0.20.202 # pveelite
|
||||
|
||||
# 2. Intră în containerul LXC (VMID 171)
|
||||
pct enter 171
|
||||
|
||||
# 3. Adaugă cheia publică SSH
|
||||
echo "ssh-ed25519 AAAA...cheia_ta_aici... your-email@example.com" >> /home/claude/.ssh/authorized_keys
|
||||
|
||||
# 4. Verifică permisiunile (ar trebui să fie deja corecte)
|
||||
chown claude:claude /home/claude/.ssh/authorized_keys
|
||||
chmod 600 /home/claude/.ssh/authorized_keys
|
||||
|
||||
# 5. Ieși din container
|
||||
exit
|
||||
|
||||
# 6. Ieși din Proxmox
|
||||
exit
|
||||
```
|
||||
|
||||
**Alternativ** (fără a intra în container):
|
||||
```bash
|
||||
# De pe Proxmox host, într-o singură comandă:
|
||||
ssh root@10.0.20.202
|
||||
|
||||
pct exec 171 -- bash -c 'echo "ssh-ed25519 AAAA...cheia_ta... email" >> /home/claude/.ssh/authorized_keys'
|
||||
```
|
||||
|
||||
### Pas 3: Configurează SSH pe calculatorul tău
|
||||
|
||||
Adaugă în `~/.ssh/config` (sau `%USERPROFILE%\.ssh\config` pe Windows):
|
||||
|
||||
```
|
||||
# Acces prin Tailscale (recomandat - funcționează de oriunde)
|
||||
Host claude-agent
|
||||
HostName claude-agent
|
||||
User claude
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
ForwardAgent yes
|
||||
|
||||
# Acces prin LAN (doar din rețeaua locală)
|
||||
Host claude-agent-lan
|
||||
HostName 10.0.20.171
|
||||
User claude
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
ForwardAgent yes
|
||||
```
|
||||
|
||||
### Pas 4: Testează conexiunea
|
||||
|
||||
```bash
|
||||
ssh claude@claude-agent
|
||||
# Ar trebui să te conectezi fără parolă
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Comenzi Utile
|
||||
|
||||
### tmux (Sesiuni Permanente)
|
||||
```bash
|
||||
~/start-agent.sh # Pornește SAU reatașează sesiune "agent" (automat)
|
||||
tmux ls # Lista sesiuni active
|
||||
tmux new -s <nume> # Sesiune nouă cu alt nume
|
||||
Ctrl+A, d # Detașare (sesiunea continuă în background)
|
||||
Ctrl+A, c # Fereastră nouă în sesiune
|
||||
Ctrl+A, n # Fereastră următoare
|
||||
Ctrl+A, p # Fereastră anterioară
|
||||
Ctrl+A, [ # Mod scroll (q pentru ieșire)
|
||||
```
|
||||
|
||||
**Notă:** Prefix-ul tmux este `Ctrl+A` (nu `Ctrl+B` ca default).
|
||||
|
||||
### Claude Code
|
||||
```bash
|
||||
claude # Pornire interactivă
|
||||
claude -p "prompt" # Mod non-interactiv (pipe mode)
|
||||
```
|
||||
|
||||
### Git - Gitea
|
||||
```bash
|
||||
git clone git@gitea.romfast.ro:romfast/<repo>.git
|
||||
git push origin main
|
||||
ssh -T git@gitea.romfast.ro # Test conexiune SSH
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## SSH Key pentru Gitea
|
||||
|
||||
Această cheie este deja generată pe server. Trebuie adăugată în Gitea:
|
||||
|
||||
1. Mergi la https://gitea.romfast.ro
|
||||
2. Settings → SSH/GPG Keys → Add Key
|
||||
3. Paste:
|
||||
```
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKrxEqh5L1SRrZ4f6j04mLaNdr6LJf+xb9EKBvwegeXS claude-agent@romfast.ro
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Structura Directoare
|
||||
|
||||
```
|
||||
/home/claude/
|
||||
├── .ssh/
|
||||
│ ├── authorized_keys # Chei SSH pentru acces (adaugă cheia ta aici)
|
||||
│ ├── gitea_ed25519 # Key privat pentru Gitea
|
||||
│ ├── gitea_ed25519.pub # Key public pentru Gitea
|
||||
│ └── config # SSH config pentru Gitea
|
||||
├── .nvm/ # Node Version Manager
|
||||
├── .claude/
|
||||
│ └── settings.json # Claude Code permissions
|
||||
├── .tmux.conf # Configurare tmux (prefix Ctrl+A)
|
||||
└── start-agent.sh # Script helper - pornește/reatașează tmux
|
||||
|
||||
/workspace/ # Director pentru proiecte
|
||||
├── CLAUDE.md # Instrucțiuni pentru Claude Code
|
||||
├── README.md # Acest fișier
|
||||
├── claudep.sh # Task în background (directorul curent)
|
||||
├── work.sh # Task interactiv (întreabă proiectul)
|
||||
├── .claude-work/ # Fișiere temporare create de claude -p
|
||||
├── .claude-logs/ # Log-uri pentru task-uri în background
|
||||
└── <project>/ # Proiectele tale (clone din Gitea)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Scripturi Disponibile
|
||||
|
||||
| Script | Descriere |
|
||||
|--------|-----------|
|
||||
| `~/start-agent.sh` | Pornește sesiune tmux "agent" sau reatașează dacă există |
|
||||
| `/workspace/work.sh` | Lansează task - te întreabă interactiv proiectul și descrierea |
|
||||
| `/workspace/claudep.sh` | Lansează task în directorul curent, cu logging |
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Nu mă pot conecta SSH (Permission denied)
|
||||
```bash
|
||||
# Verifică dacă ai cheia SSH instalată
|
||||
ssh -v claude@claude-agent
|
||||
|
||||
# Dacă nu ai acces, trebuie să adaugi cheia prin Proxmox:
|
||||
ssh root@10.0.20.202
|
||||
pct enter 171
|
||||
# ... vezi secțiunea "Configurare Acces SSH"
|
||||
```
|
||||
|
||||
### Claude Code nu pornește
|
||||
```bash
|
||||
source ~/.nvm/nvm.sh # Încarcă Node.js
|
||||
which claude # Verifică dacă e în PATH
|
||||
claude --version # Test
|
||||
```
|
||||
|
||||
### tmux - sesiunea nu există
|
||||
```bash
|
||||
tmux ls # Vezi ce sesiuni există
|
||||
~/start-agent.sh # Creează/reatașează sesiune "agent"
|
||||
```
|
||||
|
||||
### Git clone eșuează
|
||||
```bash
|
||||
ssh -T git@gitea.romfast.ro # Test conexiune
|
||||
# Dacă eșuează: verifică că ai adăugat SSH key în Gitea (vezi secțiunea dedicată)
|
||||
```
|
||||
|
||||
### Claude pare blocat / nu răspunde
|
||||
```bash
|
||||
# În tmux, verifică dacă Claude așteaptă input
|
||||
# Dacă da, răspunde sau Ctrl+C pentru a opri
|
||||
|
||||
# Pentru task-uri în background, verifică log-ul:
|
||||
tail -f /workspace/.claude-logs/claude_*_progress.log
|
||||
```
|
||||
|
||||
### Tailscale nu rezolvă hostname-ul
|
||||
```bash
|
||||
# Folosește IP-ul Tailscale direct
|
||||
tailscale ip claude-agent # Pe alt device din Tailscale
|
||||
ssh claude@<ip-rezultat>
|
||||
|
||||
# Sau folosește IP-ul LAN dacă ești în rețeaua locală
|
||||
ssh claude@10.0.20.171
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
```bash
|
||||
# Conectare și pornire sesiune (Tailscale)
|
||||
ssh claude@claude-agent && ~/start-agent.sh
|
||||
|
||||
# Conectare și pornire sesiune (LAN)
|
||||
ssh claude@10.0.20.171 && ~/start-agent.sh
|
||||
|
||||
# Lansare task interactiv (te întreabă proiectul)
|
||||
ssh claude@claude-agent -t "/workspace/work.sh"
|
||||
|
||||
# Lansare task în background pentru un proiect
|
||||
ssh claude@claude-agent -t "cd /workspace/<project> && /workspace/claudep.sh 'descriere task'"
|
||||
|
||||
# Verificare log-uri
|
||||
ssh claude@claude-agent "tail -50 /workspace/.claude-logs/claude_*_progress.log"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
*Setup realizat cu Claude Code*
|
||||
Reference in New Issue
Block a user