diff --git a/README.md b/README.md
index 68958dc..80aa9e0 100644
--- a/README.md
+++ b/README.md
@@ -1,43 +1,122 @@
# ðŸ OPHION
-**Open Source Observability Platform**
+**Open Source Observability Platform — AI-Powered Monitoring**
-*Metrics, Logs, Traces & Alerts - Made in Brazil*
-
-## Features
-
-- 📊 **Infrastructure Monitoring** - CPU, RAM, Disk, Network
-- 📠**Log Management** - Centralized logs with search
-- 🔠**Distributed Tracing** - Track requests across services
-- 📈 **Custom Dashboards** - Drag-and-drop widgets
-- 🚨 **Smart Alerts** - Telegram, Slack, Email, Webhooks
-- 🔠**Enterprise Security** - SSO, RBAC, Audit logs
-
-## Stack
-
-- **Backend:** Go (Fiber)
-- **Frontend:** Next.js 14 + TypeScript
-- **Database:** ClickHouse + PostgreSQL + Redis
-- **Protocol:** OpenTelemetry
-
-## Quick Start
-
-```bash
-# Docker (recommended)
-curl -fsSL https://get.ophion.io | bash
-
-# Or manually
-docker compose up -d
-```
-
-## Documentation
-
-See [docs/](./docs/) for full documentation.
-
-## License
-
-AGPL-3.0 (Community) / Commercial (Enterprise)
+[](LICENSE)
+[](https://ophion.com.br)
---
-Made with 🖤 in Brazil
+## O que é o OPHION?
+
+OPHION é uma plataforma de observabilidade que combina **métricas, logs e traces** com **inteligência artificial** para monitoramento proativo de infraestrutura.
+
+### ✨ Diferenciais
+
+| Feature | OPHION | Datadog | Grafana |
+|---------|--------|---------|---------|
+| Métricas, Logs, Traces | ✅ | ✅ | ✅ |
+| **Copilot com IA** | ✅ | ⌠| ⌠|
+| **Auto-Healing** | ✅ | ⌠| ⌠|
+| **Correlação de Alertas com IA** | ✅ | 💰 | ⌠|
+| **Previsões de Capacidade** | ✅ | 💰 | ⌠|
+| Open Source | ✅ | ⌠| ✅ |
+
+---
+
+## 🚀 Instalação Rápida
+
+```bash
+curl -fsSL https://get.ophion.io | bash
+```
+
+O instalador interativo irá:
+- ✅ Verificar requisitos (Docker, Docker Compose)
+- ✅ Coletar informações da sua empresa
+- ✅ Gerar credenciais seguras
+- ✅ Iniciar a plataforma
+
+**Pronto em menos de 5 minutos!**
+
+---
+
+## 📋 Requisitos
+
+| Recurso | MÃnimo | Recomendado |
+|---------|--------|-------------|
+| CPU | 2 cores | 4+ cores |
+| RAM | 4 GB | 8+ GB |
+| Disco | 20 GB SSD | 100+ GB SSD |
+| OS | Ubuntu 20.04+ | Ubuntu 22.04 LTS |
+
+---
+
+## 🔧 Instalação Manual
+
+```bash
+# Clonar
+git clone https://git.ophion.com.br/bigtux/ophion.git
+cd ophion
+
+# Configurar
+cp .env.example .env
+nano .env
+
+# Iniciar
+docker compose -f deploy/docker/docker-compose.yml up -d
+```
+
+---
+
+## 📦 Estrutura
+
+```
+ophion/
+├── install.sh # Instalador interativo
+├── .env.example # Exemplo de configuração
+├── cmd/
+│ ├── server/ # API Server (Go)
+│ └── agent/ # Agent de coleta
+├── dashboard/ # Frontend (Next.js)
+├── deploy/docker/ # Docker configs
+├── internal/ # Código interno
+└── docs/ # Documentação
+```
+
+---
+
+## 🔠Segurança
+
+- **JWT + API Keys** (SHA256)
+- **Bcrypt** para senhas
+- **Rate Limiting**
+- **RBAC** por roles
+
+📖 [Guia de Segurança](docs/SECURITY.md)
+
+---
+
+## 📖 Documentação
+
+- [Instalação](docs/INSTALL.md)
+- [Segurança](docs/SECURITY.md)
+- [Manual PDF](docs/OPHION_Manual_Instalacao.pdf)
+
+---
+
+## 🆘 Suporte
+
+- **Website:** [ophion.com.br](https://ophion.com.br)
+- **Email:** suporte@ophion.com.br
+
+---
+
+## 📄 Licença
+
+AGPL-3.0 (Community Edition)
+
+---
+
+
+ Made with 🖤 in Brazil
+
diff --git a/docs/OPHION_Manual_Instalacao.pdf b/docs/OPHION_Manual_Instalacao.pdf
new file mode 100644
index 0000000..db303ee
--- /dev/null
+++ b/docs/OPHION_Manual_Instalacao.pdf
@@ -0,0 +1,251 @@
+%PDF-1.4
+%“Œ‹ž ReportLab Generated PDF document (opensource)
+1 0 obj
+<<
+/F1 2 0 R /F2 3 0 R /F3 6 0 R
+>>
+endobj
+2 0 obj
+<<
+/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
+>>
+endobj
+3 0 obj
+<<
+/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
+>>
+endobj
+4 0 obj
+<<
+/Contents 18 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
+/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
+>> /Rotate 0 /Trans <<
+
+>>
+ /Type /Page
+>>
+endobj
+5 0 obj
+<<
+/Contents 19 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
+/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
+>> /Rotate 0 /Trans <<
+
+>>
+ /Type /Page
+>>
+endobj
+6 0 obj
+<<
+/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
+>>
+endobj
+7 0 obj
+<<
+/Contents 20 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
+/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
+>> /Rotate 0 /Trans <<
+
+>>
+ /Type /Page
+>>
+endobj
+8 0 obj
+<<
+/Contents 21 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
+/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
+>> /Rotate 0 /Trans <<
+
+>>
+ /Type /Page
+>>
+endobj
+9 0 obj
+<<
+/Contents 22 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
+/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
+>> /Rotate 0 /Trans <<
+
+>>
+ /Type /Page
+>>
+endobj
+10 0 obj
+<<
+/Contents 23 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
+/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
+>> /Rotate 0 /Trans <<
+
+>>
+ /Type /Page
+>>
+endobj
+11 0 obj
+<<
+/Contents 24 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
+/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
+>> /Rotate 0 /Trans <<
+
+>>
+ /Type /Page
+>>
+endobj
+12 0 obj
+<<
+/Contents 25 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
+/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
+>> /Rotate 0 /Trans <<
+
+>>
+ /Type /Page
+>>
+endobj
+13 0 obj
+<<
+/Contents 26 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
+/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
+>> /Rotate 0 /Trans <<
+
+>>
+ /Type /Page
+>>
+endobj
+14 0 obj
+<<
+/Contents 27 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
+/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
+>> /Rotate 0 /Trans <<
+
+>>
+ /Type /Page
+>>
+endobj
+15 0 obj
+<<
+/PageMode /UseNone /Pages 17 0 R /Type /Catalog
+>>
+endobj
+16 0 obj
+<<
+/Author (\(anonymous\)) /CreationDate (D:20260206074725-03'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260206074725-03'00') /Producer (ReportLab PDF Library - \(opensource\))
+ /Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
+>>
+endobj
+17 0 obj
+<<
+/Count 10 /Kids [ 4 0 R 5 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R ] /Type /Pages
+>>
+endobj
+18 0 obj
+<<
+/Filter [ /ASCII85Decode /FlateDecode ] /Length 406
+>>
+stream
+Gat%\d;$NP'Sc)R'^*mRN&bTUc0dKW9UJa]fR9hu45*0Ql58mHGM:;/-#Qf2Ae%@Bs)EBjgGEAcYer$ig+[eq`j.jqoY0WsY,e81(2VF%71Tbl(D9HQ`fV^p,tTWdV+acno#k?T:.N\2^30.Jl]Aoh:bH#rn@J/__.ZeP;o_IQtV^Gka@9<39(Au8`mT/SO5:$6]LS[pcGm/k;181WlP@WcYg7?38"DD!jc$#B^ui8Adi7p@%"gm6P0Rpp"c=BHCTAS!W\)#(M$jN.1k#VQO=rI,^\B:gj.Qc9%]%NdC3HYP)(%KmUScY_74.p1eO2YTGK+nu0Gendstream
+endobj
+19 0 obj
+<<
+/Filter [ /ASCII85Decode /FlateDecode ] /Length 829
+>>
+stream
+GatU19iKe#&A@7.lk*E?/Rp/JDBUTn)*S+AHfCd@S$6:)7ZoQEIskC9?msJISn'tDOY(k9gUD+Q!^aUhHWMN/Ba.qi"Gd>h-&=O:+hNDG=mrmK2CJB!cqgE9^`XKt,42<+*H)0[)@J:\,=)s>__;;$l>\ZN$G`?-%NYYCio!\p6Q_*aIZTg5cI'_m&@+gI5'b(N^A`m+S\.5tg[4`+@KXSpKP_c[Tl+HYe!k,Ym_soZoBq@!,rn_K1@&FLe&:6Aa!LP4f.g]s8X#)6)!Zr>4`(<&lLCKpU#S'.@@R5>&2U=4=h$iL(oqKYe3UT5mE"0ke.uuP5)-+t=C,B.efegWIk[:=5D$N;eId0TX#."7a8a#*S>UI$I-b3WjOp,"\SD"T*/d*,SI`oBf+E=bM#u6j&=YpW[ei6X22Qe06[!*Xl:*cRmmNa\r0[V`mg&Xk<+ItGF9ZM[l7W2+k+8%2+fkNd54n=4Dk/j%gIR=td^)aF;Z!=,(JA!C'9Oagk='=#TeOB*:#-h9+[Rp6&QP$;sY9]!39U*N*A-R4-SfNr8gO%d&cVKAE5uit:)95BT)Bo3$5V^Oq0q+%Cr!.K~>endstream
+endobj
+20 0 obj
+<<
+/Filter [ /ASCII85Decode /FlateDecode ] /Length 596
+>>
+stream
+Gatn#?#Q2d'Sc)J/)JIX;-_j`Y]JDQ>rO34BcqW5+[A,--!'iORJ,Zb+T#iaBsNoEP(CO:o:,od/\l(VE@u!6Ol?4jJ<7hn+@6hf>N%'$4AWmkAL(DhU_/D_b_1f]XeXKARSX8a&uN1d4@Jd#Tkr^IJ5Xp^>_5q>>fn5_M.B^icb414k?=)[WGT8Ic;0RN6$>/jmqDWW0>eTRic64%8:en_TYn#f4ec;&DsYd#Y4[>9f?ds=VTE6bEV(-fLtd,7_e$-A6_\Nojai9t59.)F\=$:Mf*`*a*$*=-g9ttl6#jS'RP$aBFE]G,2P"?am<;i3.`T@TcEXIZ2W'X;l2d76h)r$H$uc(<;b?\U1KdhA%_oe:p+F-H8X:o1L)2tYeE^cHq2!J&6\/_kH2psP!UW,,_Zl_G)o@_hQ82C?D5qR3,#'Z:3^?QIU%.dc!i1&1j0qK&e~>endstream
+endobj
+21 0 obj
+<<
+/Filter [ /ASCII85Decode /FlateDecode ] /Length 674
+>>
+stream
+GatUp?Z4CI'ZJu,.F-dX;VfuBd^X3!NDVF]1*U$9%pn8&7SV[k.0>>:cZRrZ7W?Nl7H9F/$<9rB!Eqq.Ka=AZ$lNZbDq%tPb2Q059VGc:qhj_qE'M_B-h]5X@RohS;kDY385.Njg$tpfXfE-cANWSMRl(N^ZV/-N@_R(KS)6t%j<-E$53\D*1epP#I8X*gaFNp'P,5-OOg5ZrUV(F';Se)cn9Fl#"PVCefNuQ/18kJ*K8b3Df'&J"isf$`Zgj6q@&Y)W2_/BRAh8Dj?MW,s'oA/F.fQ9-o0_%8lX67J:pM@+cbMrY*GGA,f#K0*9PO':8=o,@YVk8ooNG@Aiu;9HkaQ,,T:`o7]@IGM:#36SDDf6Fr)Q*b)lJ+N"NWFG:>f;;_WOZ1]$=#`@'>o$V``J;Z'B(&3gHieh'%j,n:(dBQR75')I(Q#fT:seAod3!TZ+I%q[7^N)cH*sYZ\"r[0P([)')eLP<%YWY/&JA]I.kLD*=?S4\EL;MmA`J8\5L&AJ'?f8OoD#^A*<5qo/IcS).aY'3oI@UQM<*?-Me5s+()dmV1s;k$Mh;[15oB*bXKOM*1EZ!Mi\"EW~>endstream
+endobj
+22 0 obj
+<<
+/Filter [ /ASCII85Decode /FlateDecode ] /Length 847
+>>
+stream
+Gauap_X=:,]Q_^&5mJ:Rn1rH?=6ubLt>*qlGIg^B^DB=Z)FZ0$*\V9s313J!sK-@[!_U8J27_IQP:hMD['/g3dB97HEF(\h+!ilQk"0c=GB8C@ljB)*Y[]"PhHs@%*c%7*R]3@ZdECd9GM#W"rN'9)(SUoFTTHOAUMUJ*lEe(3F]Ko=U`0%0Jo:"pgleZiV!QEA'm-Pd6o/KWFOLY0%F"#CO".U[Et-EbmSERZ1DNA`4YlX';#.4W<>H4H^)L#:<=ZrJ0c^lo2t,iG)@_m84o+ZpjfZCrRdIXn&g)iR3UmG\I61Guk#7@#7b[+h.0N!*_L`/d:\$#3>VQPjijdP)0(_lmG]#mXh7m\Bk2_lRk3b8ge">cuJDna4BUpniUSO4L56\Mo?%I+9/TcPfnAQPoSA3"cs4R4\!M!c@[/cEhoSNK]'T,D$.X?NSm8I_S+bZ2]",HZ1#r1HEc[hI+tFM\5!!!VI*K,$GS`k$bP0j[FkTi_`t:HFjPPX*(,$a1K":L0%Mb_/$BEgd'k[N%8$#<:Z<9lEl*^eZb0!T_48\aB,%nqI!$rN@.d<2hR7I5FU^Sgb;4Bfg:,>bdI(JnjVXF8up%epfm5P]?;G0Q+K_o4%f$Iq$a7&':/ZXVAYG'NeND!V:R:tF+p7(8tHf`LFl8r$h1pS."X[cUAg=m'oTT`Iagu6Td)O/II(ZW+4+9T?8<6h;s#SGAN?N5!E!)]J6l@meBlJ2Y!~>endstream
+endobj
+23 0 obj
+<<
+/Filter [ /ASCII85Decode /FlateDecode ] /Length 807
+>>
+stream
+GatUq;,>q#'SYHA/$?5q`Y?I:&gupJffBG!M2dfmH^[Xfd]au$gY"jGO5E[[d89%_5`o6L\\@8%42*/0lAi:LLo,ge?@t;K*gXShc+sR'9Pc\.2jZSq`1M=@+4#-8YjH3PfV"?3"20fUN%E@<9`Kecue_N$C6ILnlL41;@fLQ3pg8B.e6mX[mRdpoSTQ["=P[E@2)]VA29KZQ2+G@g;$FXi0V_'jN=JQ$'hY$ViFLJ!bn[_k_?5!&A>[Y,!R'q7Nk$+qe\o8Hk*;&9bh96JV]/nL,\TOsZ9P"H7r_@Fl;)#:X:_r.lc(ngN0f%3TL>[qf3o=^t(nrgZ[>:b%c5!`/8hX-jJ0mrAI_QG3Z#1k0o>9"C:?E/b*aH[K0iS]Mc/Y8E2HLY!t=3t!:U.H0%rrVdpVXG;cQ"J0mMXkih2!P,@`G77n)!8;8(T*Q&nXmIg2KAm0IPPmSrjQiTY@9WPr)`\AtFM,V]$%i9'8l~>endstream
+endobj
+24 0 obj
+<<
+/Filter [ /ASCII85Decode /FlateDecode ] /Length 417
+>>
+stream
+Gas2E?YdM4'ZJu,.5'u+$-"=#:%ILYJkUn6t.7($'Pst!YH'#;M5Xl4?te#COf;E'PDq1MDOCk#75sLh5PF3CR?[ipQ0hj3qS^k3,[@q#q,:Q/!H'Q#d/A.07iuN.$d7,.=b(.^hMF045iEWOQ.K"0qTT*`u<8O+FQk0c9sE+F$-uQ#.F@^[Y24hY(8Z:PU83/6*8u"A@Cpcqtq8Wdo/GQ6i;=]I)C>'Sg2sjA,*`L_h9_`,$hH"FBBI'HLWs\HH_rb69gX\ld3WH>D[7@4=N4/S5fX'BaR'%4oU^ql)f4?`n-,qMDYBg%[^tG!UIN*k\aF(0e~>endstream
+endobj
+25 0 obj
+<<
+/Filter [ /ASCII85Decode /FlateDecode ] /Length 679
+>>
+stream
+GatUq;/ao;&BE]*.IM2F[*3\5-_A7DMjP=q1tG41m)=+\bg=;1iuh(U_fO,CecOPl.SGe2qsO3no3F\6i1U%MCOfOoB,;71KCTd+:H4S[GZRYK'DcrOYXD#/.HFX':am[DiHE'`VmO5a8Od5V3;@6?hWPUQ?.J//!M2X@N()>gGle@PF^?q/*CKW3b*0pDK&^33`cmfk,*_46K7ppgj*`IIO.1=/1r3q'PoG5uqm\WZ3@mog#a7`)cpM'9nDS-hV>G/!(,j;ckh8dWlWUeY>,h45l',Q2*5=*m82=Mio]d&QReoS]Wl!\hJ3+GFMt^/9M*Vbp0j_^jqtj*4&C?jMd3q8l2W0]`E1S+okLV1#R+p=!gJe9"9I/kD>t[KSK#=3V6oRB+.F2O&'XE65.DQn44mDp>cr;chjaZA!X\K2&n$T#8UXWrr[E`&hRrcZtdIsZM%K)/dG`F[mBBc_$9H05^f:Os-%kX"0:1tkMH0&)M.O.;\ibuuXP[CTQmE(b+"'qD`8K&r.99ZG6q6dCV[jNh+K]\M#e$cFX>>6~>endstream
+endobj
+26 0 obj
+<<
+/Filter [ /ASCII85Decode /FlateDecode ] /Length 647
+>>
+stream
+Gatn"?#S1G'Sc)R.unf%Fs:gojhi..`*euu63>jTDCS@el?nQ/c=.UB^ZWQ#[SdQ8!K*+$naUn^pT[*%a,@NUh?(@8@!5+m#*9Qb6P;`Z*n"kH4/1KP3$9pd3/&VM#j!e]FZ<(s*`C.bKLA":IL(?^_J]!3!*ck`492J"k!:].ShL4KY;b'm1mQY#m@a)m-3?Q0\r.TqPM0?AnN&iL"VJ4@\JBL84`7\%*DjU(Fm/-\2p!K@^3od*;_3r^[VaE?6O,GEM]EL$jUpQOab=P:R&fU42(Wt*2d`B2cP!pY%[Q$#31X^l=g!LbBXpBVeb'9U8KjiMK0!1`k^DkODE4.XV3l-`e3o?ZkX50Qfjchpol7:WAgMDok1/(*Fd!H/(OX(nb!i?EWfo1:1Prp@ePV3+g:#"qr&&F6c*#H/sMM>dV7?dV#rqgn@)qu1T#5@b6`Z=PZuFQO?)0"2t>bMd.1n_uZ(@:P&LEfjt\$"L^8IXP3&;o..8ge$A[F`oV[/,`1eNlUnui(dMpgbSeV?&Vk6eJ,a1:$3tHFmiJ~>endstream
+endobj
+27 0 obj
+<<
+/Filter [ /ASCII85Decode /FlateDecode ] /Length 380
+>>
+stream
+Gat=f?VeNm'ZJu(.F'0*d.MR3TKF)9MMV[p4n?J0KGqjLFDCaGh@0O"8/-*.Rl!8k^XLpM,T"uoaad\#pQe&Od0n#35,&;S,Nm=FSMF.ge4LD.6!KE\24roGTsRVF@>P8cmRSG=ggN.q"5#)5Es5UL\Pe]86OSjrF^E_-MZ`]3&1IhK3$^?S>*e&kS[O\G-;3dH0GY4P:^q1L>oZnZmR'rm'.^)'8q(NEqcg`HG`I\)ldj(k9R3[U$)$^nnRf2JPpj2l"guI+&*eFRl$:"PEW$Y_pRCkpk0D(Vm@'Z4=DcPpCq4n?8;C6b?mQoHijWc_endstream
+endobj
+xref
+0 28
+0000000000 65535 f
+0000000061 00000 n
+0000000112 00000 n
+0000000219 00000 n
+0000000331 00000 n
+0000000536 00000 n
+0000000741 00000 n
+0000000846 00000 n
+0000001051 00000 n
+0000001256 00000 n
+0000001461 00000 n
+0000001667 00000 n
+0000001873 00000 n
+0000002079 00000 n
+0000002285 00000 n
+0000002491 00000 n
+0000002561 00000 n
+0000002842 00000 n
+0000002962 00000 n
+0000003459 00000 n
+0000004379 00000 n
+0000005066 00000 n
+0000005831 00000 n
+0000006769 00000 n
+0000007667 00000 n
+0000008175 00000 n
+0000008945 00000 n
+0000009683 00000 n
+trailer
+<<
+/ID
+[]
+% ReportLab generated PDF document -- digest (opensource)
+
+/Info 16 0 R
+/Root 15 0 R
+/Size 28
+>>
+startxref
+10154
+%%EOF
diff --git a/docs/gerar_manual_pdf.py b/docs/gerar_manual_pdf.py
new file mode 100644
index 0000000..60524ae
--- /dev/null
+++ b/docs/gerar_manual_pdf.py
@@ -0,0 +1,422 @@
+#!/usr/bin/env python3
+"""
+ðŸ OPHION - Gerador de Manual PDF
+"""
+
+from fpdf import FPDF
+from datetime import datetime
+import os
+
+class OphionManualPDF(FPDF):
+ def __init__(self):
+ super().__init__()
+ self.set_auto_page_break(auto=True, margin=15)
+ # Adicionar fonte Unicode
+ self.add_font('DejaVu', '', '/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', uni=True)
+ self.add_font('DejaVu', 'B', '/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf', uni=True)
+ self.add_font('DejaVuMono', '', '/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf', uni=True)
+
+ def header(self):
+ self.set_font('DejaVu', 'B', 10)
+ self.set_text_color(100, 100, 100)
+ self.cell(0, 10, 'OPHION - Manual de Instalação', new_x='RIGHT', new_y='TOP')
+ self.cell(0, 10, f'v1.0 | {datetime.now().strftime("%d/%m/%Y")}', new_x='LMARGIN', new_y='NEXT', align='R')
+ self.line(10, 18, 200, 18)
+ self.ln(5)
+
+ def footer(self):
+ self.set_y(-15)
+ self.set_font('DejaVu', '', 8)
+ self.set_text_color(128, 128, 128)
+ self.cell(0, 10, f'Página {self.page_no()}/{{nb}}', new_x='RIGHT', new_y='TOP', align='C')
+
+ def titulo(self, texto):
+ self.set_font('DejaVu', 'B', 18)
+ self.set_text_color(75, 0, 130)
+ self.cell(0, 15, texto, new_x='LMARGIN', new_y='NEXT')
+ self.ln(2)
+
+ def subtitulo(self, texto):
+ self.set_font('DejaVu', 'B', 14)
+ self.set_text_color(50, 50, 50)
+ self.cell(0, 10, texto, new_x='LMARGIN', new_y='NEXT')
+ self.ln(1)
+
+ def subtitulo2(self, texto):
+ self.set_font('DejaVu', 'B', 12)
+ self.set_text_color(70, 70, 70)
+ self.cell(0, 8, texto, new_x='LMARGIN', new_y='NEXT')
+
+ def paragrafo(self, texto):
+ self.set_font('DejaVu', '', 11)
+ self.set_text_color(0, 0, 0)
+ self.multi_cell(0, 6, texto)
+ self.ln(2)
+
+ def codigo(self, texto):
+ self.set_font('DejaVuMono', '', 9)
+ self.set_fill_color(245, 245, 245)
+ self.set_text_color(0, 100, 0)
+ self.multi_cell(0, 5, texto, fill=True)
+ self.ln(3)
+
+ def item(self, texto, bullet="-"):
+ self.set_font('DejaVu', '', 11)
+ self.set_text_color(0, 0, 0)
+ self.cell(8, 6, bullet, new_x='RIGHT', new_y='TOP')
+ self.multi_cell(0, 6, texto)
+
+ def alerta(self, texto):
+ self.set_fill_color(255, 243, 205)
+ self.set_font('DejaVu', 'B', 10)
+ self.set_text_color(133, 100, 4)
+ self.cell(0, 8, f'[!] {texto}', new_x='LMARGIN', new_y='NEXT', fill=True)
+ self.ln(2)
+
+ def sucesso(self, texto):
+ self.set_fill_color(212, 237, 218)
+ self.set_font('DejaVu', 'B', 10)
+ self.set_text_color(21, 87, 36)
+ self.cell(0, 8, f'[OK] {texto}', new_x='LMARGIN', new_y='NEXT', fill=True)
+ self.ln(2)
+
+def gerar_manual():
+ pdf = OphionManualPDF()
+ pdf.alias_nb_pages()
+
+ # ========== CAPA ==========
+ pdf.add_page()
+ pdf.ln(40)
+ pdf.set_font('DejaVu', 'B', 36)
+ pdf.set_text_color(75, 0, 130)
+ pdf.cell(0, 20, 'OPHION', new_x='LMARGIN', new_y='NEXT', align='C')
+
+ pdf.set_font('DejaVu', '', 16)
+ pdf.set_text_color(100, 100, 100)
+ pdf.cell(0, 10, 'Open Source Observability Platform', new_x='LMARGIN', new_y='NEXT', align='C')
+ pdf.cell(0, 10, 'AI-Powered Monitoring', new_x='LMARGIN', new_y='NEXT', align='C')
+
+ pdf.ln(20)
+ pdf.set_font('DejaVu', 'B', 20)
+ pdf.set_text_color(50, 50, 50)
+ pdf.cell(0, 15, 'Manual de Instalação', new_x='LMARGIN', new_y='NEXT', align='C')
+
+ pdf.ln(40)
+ pdf.set_font('DejaVu', '', 12)
+ pdf.set_text_color(128, 128, 128)
+ pdf.cell(0, 8, f'Versão 1.0 | Fevereiro 2026', new_x='LMARGIN', new_y='NEXT', align='C')
+ pdf.cell(0, 8, 'https://ophion.com.br', new_x='LMARGIN', new_y='NEXT', align='C')
+
+ # ========== ÃNDICE ==========
+ pdf.add_page()
+ pdf.titulo('Ãndice')
+
+ indice = [
+ ('1. Visão Geral', 3),
+ ('2. Requisitos do Sistema', 3),
+ ('3. Instalação Rápida', 4),
+ ('4. Instalação Manual', 5),
+ ('5. Configuração', 7),
+ ('6. Instalação do Agent', 9),
+ ('7. Primeiros Passos', 11),
+ ('8. Comandos CLI', 12),
+ ('9. Segurança', 13),
+ ('10. Troubleshooting', 14),
+ ('11. Suporte', 15),
+ ]
+
+ for item, pag in indice:
+ pdf.set_font('DejaVu', '', 12)
+ pdf.cell(160, 8, item, new_x='RIGHT', new_y='TOP')
+ pdf.cell(0, 8, str(pag), new_x='LMARGIN', new_y='NEXT', align='R')
+
+ # ========== 1. VISÃO GERAL ==========
+ pdf.add_page()
+ pdf.titulo('1. Visão Geral')
+
+ pdf.paragrafo('OPHION é uma plataforma de observabilidade open source que combina métricas, logs e traces com inteligência artificial para monitoramento proativo de infraestrutura.')
+
+ pdf.subtitulo('Principais Recursos')
+ pdf.item('Métricas de sistema (CPU, RAM, Disco, Rede)')
+ pdf.item('Coleta e análise de logs centralizados')
+ pdf.item('Distributed tracing para microserviços')
+ pdf.item('OPHION Copilot - Chat com IA especialista')
+ pdf.item('Auto-Healing - Correção automática de problemas')
+ pdf.item('Smart Alerts - Alertas inteligentes sem ruÃdo')
+ pdf.item('Predictions - Previsões de capacidade')
+
+ pdf.ln(5)
+ pdf.subtitulo('Stack Tecnológico')
+ pdf.item('Backend: Go (Fiber)')
+ pdf.item('Frontend: Next.js 14 + TypeScript')
+ pdf.item('Banco de dados: PostgreSQL + ClickHouse')
+ pdf.item('Cache: Redis')
+ pdf.item('IA: OpenAI GPT-4')
+
+ # ========== 2. REQUISITOS ==========
+ pdf.add_page()
+ pdf.titulo('2. Requisitos do Sistema')
+
+ pdf.subtitulo('Requisitos MÃnimos')
+ pdf.item('CPU: 2 cores')
+ pdf.item('RAM: 4 GB')
+ pdf.item('Disco: 20 GB SSD')
+ pdf.item('OS: Ubuntu 20.04+ / Debian 11+ / CentOS 8+')
+
+ pdf.ln(3)
+ pdf.subtitulo('Requisitos Recomendados (Produção)')
+ pdf.item('CPU: 4+ cores')
+ pdf.item('RAM: 8+ GB')
+ pdf.item('Disco: 100+ GB SSD')
+ pdf.item('OS: Ubuntu 22.04 LTS')
+
+ pdf.ln(3)
+ pdf.subtitulo('Software Necessário')
+ pdf.item('Docker 24.0+')
+ pdf.item('Docker Compose 2.0+')
+ pdf.item('curl, git (para instalação)')
+
+ pdf.ln(3)
+ pdf.subtitulo('Portas Utilizadas')
+ pdf.codigo('8080 - API REST\n3000 - Dashboard Web\n5432 - PostgreSQL (interno)\n9000 - ClickHouse (interno)\n6379 - Redis (interno)')
+
+ # ========== 3. INSTALAÇÃO RÃPIDA ==========
+ pdf.add_page()
+ pdf.titulo('3. Instalação Rápida')
+
+ pdf.paragrafo('A forma mais fácil de instalar o OPHION é usando nosso instalador interativo:')
+
+ pdf.codigo('curl -fsSL https://get.ophion.io | bash')
+
+ pdf.paragrafo('O instalador irá:')
+ pdf.item('Verificar os requisitos do sistema')
+ pdf.item('Coletar informações da sua empresa')
+ pdf.item('Gerar credenciais seguras automaticamente')
+ pdf.item('Configurar todos os serviços')
+ pdf.item('Iniciar a plataforma')
+
+ pdf.ln(3)
+ pdf.subtitulo('Informações Solicitadas')
+ pdf.item('Nome da empresa/organização')
+ pdf.item('Email do administrador')
+ pdf.item('Senha do administrador (mÃn. 8 caracteres)')
+ pdf.item('DomÃnio (opcional, padrão: localhost)')
+ pdf.item('Portas do servidor e dashboard')
+ pdf.item('Configuração do Telegram para alertas (opcional)')
+
+ pdf.ln(3)
+ pdf.alerta('IMPORTANTE: Guarde a API Key exibida ao final da instalação!')
+
+ # ========== 4. INSTALAÇÃO MANUAL ==========
+ pdf.add_page()
+ pdf.titulo('4. Instalação Manual')
+
+ pdf.subtitulo('4.1 Instalar Docker')
+ pdf.codigo('# Ubuntu/Debian\nsudo apt update\nsudo apt install -y curl\ncurl -fsSL https://get.docker.com | sh\nsudo usermod -aG docker $USER')
+
+ pdf.alerta('Faça logout e login novamente após adicionar o usuário ao grupo docker.')
+
+ pdf.subtitulo('4.2 Baixar OPHION')
+ pdf.codigo('git clone https://github.com/bigtux/ophion.git\ncd ophion')
+
+ pdf.subtitulo('4.3 Configurar Variáveis de Ambiente')
+ pdf.codigo('cp .env.example .env\nnano .env')
+
+ pdf.paragrafo('Edite as seguintes variáveis:')
+ pdf.codigo('ORG_NAME="Sua Empresa"\nADMIN_EMAIL=admin@empresa.com\nADMIN_PASSWORD=senha-forte-aqui\nDOMAIN=ophion.empresa.com\nJWT_SECRET=$(openssl rand -hex 32)')
+
+ pdf.add_page()
+ pdf.subtitulo('4.4 Iniciar os Serviços')
+ pdf.codigo('docker compose up -d')
+
+ pdf.subtitulo('4.5 Verificar Status')
+ pdf.codigo('docker compose ps')
+
+ pdf.paragrafo('Todos os serviços devem estar com status "running":')
+ pdf.codigo('ophion-server running 0.0.0.0:8080->8080/tcp\nophion-web running 0.0.0.0:3000->3000/tcp\nophion-postgres running 5432/tcp\nophion-clickhouse running 9000/tcp\nophion-redis running 6379/tcp')
+
+ pdf.sucesso('Acesse o dashboard em http://localhost:3000')
+
+ # ========== 5. CONFIGURAÇÃO ==========
+ pdf.add_page()
+ pdf.titulo('5. Configuração')
+
+ pdf.subtitulo('5.1 Arquivo .env')
+ pdf.paragrafo('Todas as configurações são feitas via variáveis de ambiente no arquivo .env:')
+
+ pdf.subtitulo2('Organização')
+ pdf.codigo('ORG_NAME="Minha Empresa"\nADMIN_EMAIL=admin@empresa.com\nADMIN_PASSWORD=senha-segura')
+
+ pdf.subtitulo2('Rede')
+ pdf.codigo('DOMAIN=localhost\nSERVER_PORT=8080\nDASHBOARD_PORT=3000')
+
+ pdf.subtitulo2('Segurança')
+ pdf.codigo('JWT_SECRET=<64-caracteres-aleatorios>\nAPI_KEY=ophion_<64-caracteres-hex>')
+
+ pdf.alerta('Nunca compartilhe o JWT_SECRET ou API_KEY!')
+
+ pdf.add_page()
+ pdf.subtitulo2('Banco de Dados')
+ pdf.codigo('POSTGRES_USER=ophion\nPOSTGRES_PASSWORD=senha-segura\nDATABASE_URL=postgres://ophion:senha@postgres:5432/ophion')
+
+ pdf.subtitulo2('Alertas - Telegram')
+ pdf.codigo('TELEGRAM_ENABLED=true\nTELEGRAM_BOT_TOKEN=123456:ABC...\nTELEGRAM_CHAT_ID=-100123456789')
+
+ pdf.subtitulo2('IA (OpenAI)')
+ pdf.codigo('OPENAI_API_KEY=sk-...')
+
+ pdf.subtitulo('5.2 Gerar Credenciais Seguras')
+ pdf.codigo('# JWT Secret\nopenssl rand -hex 32\n\n# API Key\necho "ophion_$(openssl rand -hex 32)"')
+
+ # ========== 6. AGENT ==========
+ pdf.add_page()
+ pdf.titulo('6. Instalação do Agent')
+
+ pdf.paragrafo('O Agent é instalado em cada servidor que você deseja monitorar.')
+
+ pdf.subtitulo('6.1 Instalação Automática')
+ pdf.codigo('curl -fsSL http://SEU-SERVIDOR:8080/install-agent.sh | sudo bash')
+
+ pdf.subtitulo('6.2 Instalação Manual')
+
+ pdf.subtitulo2('Baixar o binário')
+ pdf.codigo('curl -o /usr/local/bin/ophion-agent \\\n http://SEU-SERVIDOR:8080/downloads/agent/linux/amd64/ophion-agent\nchmod +x /usr/local/bin/ophion-agent')
+
+ pdf.subtitulo2('Criar configuração')
+ pdf.codigo('mkdir -p /etc/ophion\ncat > /etc/ophion/agent.yaml << EOF\nserver:\n url: http://SEU-SERVIDOR:8080\n api_key: SUA-API-KEY\n\ncollection:\n interval: 30s\n\nmetrics:\n enabled: true\n include:\n - cpu\n - memory\n - disk\n - network\n\nlogs:\n enabled: true\n paths:\n - /var/log/syslog\n - /var/log/auth.log\nEOF')
+
+ pdf.add_page()
+ pdf.subtitulo2('Criar serviço systemd')
+ pdf.codigo('cat > /etc/systemd/system/ophion-agent.service << EOF\n[Unit]\nDescription=OPHION Monitoring Agent\nAfter=network.target\n\n[Service]\nType=simple\nExecStart=/usr/local/bin/ophion-agent -config /etc/ophion/agent.yaml\nRestart=always\nRestartSec=10\n\n[Install]\nWantedBy=multi-user.target\nEOF')
+
+ pdf.subtitulo2('Iniciar o serviço')
+ pdf.codigo('sudo systemctl daemon-reload\nsudo systemctl enable ophion-agent\nsudo systemctl start ophion-agent')
+
+ pdf.subtitulo2('Verificar status')
+ pdf.codigo('sudo systemctl status ophion-agent\nsudo journalctl -u ophion-agent -f')
+
+ # ========== 7. PRIMEIROS PASSOS ==========
+ pdf.add_page()
+ pdf.titulo('7. Primeiros Passos')
+
+ pdf.subtitulo('7.1 Acessar o Dashboard')
+ pdf.item('Abra o navegador em http://localhost:3000')
+ pdf.item('Faça login com o email e senha do administrador')
+
+ pdf.subtitulo('7.2 Adicionar Hosts')
+ pdf.item('Instale o Agent em cada servidor')
+ pdf.item('Os hosts aparecerão automaticamente no dashboard')
+
+ pdf.subtitulo('7.3 Configurar Alertas')
+ pdf.item('Acesse Settings > Alerts')
+ pdf.item('Crie regras de alerta (ex: CPU > 90%)')
+ pdf.item('Configure canais de notificação (Telegram, Slack, Email)')
+
+ pdf.subtitulo('7.4 Usar o Copilot')
+ pdf.item('Clique no Ãcone do chat no canto inferior')
+ pdf.item('Faça perguntas sobre sua infraestrutura')
+ pdf.item('Exemplo: "Por que o servidor X está lento?"')
+
+ pdf.subtitulo('7.5 Configurar Auto-Healing')
+ pdf.item('Acesse Settings > Auto-Healing')
+ pdf.item('Comece no modo dry-run (apenas sugestões)')
+ pdf.item('Revise e aprove ações antes de habilitar automação total')
+
+ # ========== 8. CLI ==========
+ pdf.add_page()
+ pdf.titulo('8. Comandos CLI')
+
+ pdf.paragrafo('O OPHION inclui uma CLI para gerenciamento:')
+
+ pdf.codigo('ophion start # Iniciar todos os serviços\nophion stop # Parar todos os serviços\nophion restart # Reiniciar serviços\nophion status # Ver status dos containers\nophion logs # Ver logs do servidor\nophion logs ophion-web # Ver logs do dashboard\nophion update # Atualizar para última versão\nophion backup # Criar backup dos dados\nophion api-key # Gerar nova API Key\nophion agent-install # Ver comando de instalação do agent')
+
+ pdf.subtitulo('Exemplos')
+
+ pdf.subtitulo2('Ver logs em tempo real')
+ pdf.codigo('ophion logs -f')
+
+ pdf.subtitulo2('Criar backup')
+ pdf.codigo('ophion backup\n# Backup criado em /opt/ophion/backups/20260206_120000/')
+
+ pdf.subtitulo2('Atualizar')
+ pdf.codigo('ophion update\n# Baixa novas imagens e reinicia os serviços')
+
+ # ========== 9. SEGURANÇA ==========
+ pdf.add_page()
+ pdf.titulo('9. Segurança')
+
+ pdf.subtitulo('9.1 Autenticação')
+ pdf.item('JWT Tokens para usuários (acesso ao dashboard)')
+ pdf.item('API Keys para agents e integrações')
+ pdf.item('Bcrypt para hash de senhas (cost 12)')
+
+ pdf.subtitulo('9.2 Rate Limiting')
+ pdf.codigo('Login: 5 requisições/minuto\nAPI: 100 requisições/minuto\nIngestão: 1000 requisições/minuto')
+
+ pdf.subtitulo('9.3 Proteção contra Brute Force')
+ pdf.item('5 tentativas de login = bloqueio de 15 minutos')
+ pdf.item('Tracking por IP + email')
+
+ pdf.subtitulo('9.4 PolÃtica de Senha')
+ pdf.item('MÃnimo 12 caracteres')
+ pdf.item('Letra maiúscula obrigatória')
+ pdf.item('Letra minúscula obrigatória')
+ pdf.item('Número obrigatório')
+ pdf.item('Caractere especial obrigatório')
+
+ pdf.subtitulo('9.5 HTTPS')
+ pdf.paragrafo('Em produção, sempre use HTTPS. Recomendamos Cloudflare ou Let\'s Encrypt.')
+
+ # ========== 10. TROUBLESHOOTING ==========
+ pdf.add_page()
+ pdf.titulo('10. Troubleshooting')
+
+ pdf.subtitulo('Containers não iniciam')
+ pdf.codigo('# Ver logs de erro\ndocker compose logs\n\n# Verificar recursos\ndocker system df\ndf -h')
+
+ pdf.subtitulo('Agent não conecta')
+ pdf.codigo('# Testar conectividade\ncurl http://SEU-SERVIDOR:8080/health\n\n# Ver logs do agent\njournalctl -u ophion-agent -f')
+
+ pdf.subtitulo('Erro de SSL (Cloudflare)')
+ pdf.item('Verifique se o modo SSL está em "Flexible" ou "Full"')
+ pdf.item('Se "Full (Strict)", precisa de certificado válido no servidor')
+
+ pdf.subtitulo('Resetar senha do admin')
+ pdf.codigo("docker compose exec postgres psql -U ophion -c \\\n \"UPDATE users SET password_hash = \\\n crypt('nova-senha', gen_salt('bf')) \\\n WHERE email = 'admin@email.com';\"")
+
+ pdf.subtitulo('Limpar dados e recomeçar')
+ pdf.codigo('ophion stop\nrm -rf /opt/ophion/data/*\nophion start')
+ pdf.alerta('Isso apaga todos os dados! Use apenas em último caso.')
+
+ # ========== 11. SUPORTE ==========
+ pdf.add_page()
+ pdf.titulo('11. Suporte')
+
+ pdf.subtitulo('Documentação')
+ pdf.item('Site: https://docs.ophion.com.br')
+ pdf.item('GitHub: https://github.com/bigtux/ophion')
+
+ pdf.subtitulo('Comunidade')
+ pdf.item('Discord: https://discord.gg/ophion')
+ pdf.item('Email: suporte@ophion.com.br')
+
+ pdf.subtitulo('Reportar Bugs')
+ pdf.item('GitHub Issues: https://github.com/bigtux/ophion/issues')
+
+ pdf.subtitulo('Segurança')
+ pdf.item('Vulnerabilidades: security@ophion.com.br')
+ pdf.alerta('NAO abra issues publicas para vulnerabilidades de segurança!')
+
+ pdf.ln(10)
+ pdf.set_font('DejaVu', '', 10)
+ pdf.set_text_color(128, 128, 128)
+ pdf.cell(0, 10, '(c) 2026 OPHION - Made with love in Brazil', new_x='LMARGIN', new_y='NEXT', align='C')
+
+ # Salvar
+ output_path = '/home/kernelpanic/projetos_jarvis/ophion/docs/OPHION_Manual_Instalacao.pdf'
+ pdf.output(output_path)
+ print(f'PDF gerado: {output_path}')
+ return output_path
+
+if __name__ == '__main__':
+ gerar_manual()