97色伦色在线综合视频,无玛专区,18videosex性欧美黑色,日韩黄色电影免费在线观看,国产精品伦理一区二区三区,在线视频欧美日韩,亚洲欧美在线中文字幕不卡

甘肅省建設(shè)廳執(zhí)業(yè)資格注冊網(wǎng)站網(wǎng)站優(yōu)化方案基本流程

鶴壁市浩天電氣有限公司 2026/01/24 08:47:32
甘肅省建設(shè)廳執(zhí)業(yè)資格注冊網(wǎng)站,網(wǎng)站優(yōu)化方案基本流程,微信網(wǎng)站欣賞,龍崗建網(wǎng)站公司使用 Docker Compose 部署 LobeChat 數(shù)據(jù)版服務(wù)端 你有沒有遇到過這樣的情況#xff1a;想用一個開源 AI 聊天工具#xff0c;但發(fā)現(xiàn)它只能本地運行、不支持多用戶登錄、會話一關(guān)就丟#xff1f;更別提上傳文件、長期記憶這些“現(xiàn)代”功能了。直到我試了 LobeChat —— 這個…使用 Docker Compose 部署 LobeChat 數(shù)據(jù)版服務(wù)端你有沒有遇到過這樣的情況想用一個開源 AI 聊天工具但發(fā)現(xiàn)它只能本地運行、不支持多用戶登錄、會話一關(guān)就丟更別提上傳文件、長期記憶這些“現(xiàn)代”功能了。直到我試了LobeChat—— 這個基于 Next.js 的開源聊天框架不僅界面優(yōu)雅得不像話還真正做到了“開箱即用”的企業(yè)級能力。關(guān)鍵是它不只是個前端玩具。通過lobe-chat-database鏡像配合 Docker Compose你可以一鍵部署一套包含認證、數(shù)據(jù)庫持久化、對象存儲的完整后端系統(tǒng)。整個過程不需要寫一行代碼也不依賴復(fù)雜的 Kubernetes 環(huán)境普通開發(fā)者也能輕松上手。下面這套方案我已經(jīng)在生產(chǎn)環(huán)境跑了三個月穩(wěn)定得幾乎忘了它的存在。接下來我會帶你一步步從零搭建這個私有化的 AI 助手門戶重點講清楚每個組件的實際作用和容易踩坑的地方。先說結(jié)論我們最終要跑起來的服務(wù)其實是一個五人組Nginx負責 HTTPS 終止和反向代理PostgreSQL pgvector存用戶數(shù)據(jù)、會話記錄、甚至向量嵌入為未來 RAG 做準備MinIO處理圖片、文檔等文件上傳Logto提供 OAuth2 和 OIDC 認證能力LobeChat 本體承載核心交互邏輯它們之間靠 Docker Compose 編排聯(lián)動所有數(shù)據(jù)都掛載到本地目錄重啟容器也不會丟配置。聽起來復(fù)雜其實只要三個文件就能搞定docker-compose.yml、.env和nginx.conf。假設(shè)你已經(jīng)有一臺 Ubuntu 服務(wù)器并且裝好了 Docker 和 Docker Compose。如果還沒裝建議直接用官方腳本curl -fsSL https://get.docker.com | sh sudo apt install docker-compose-plugin然后創(chuàng)建項目主目錄mkdir -p ~/lobechat/{ssl,data,s3_data} cd ~/lobechat這里ssl放證書data存數(shù)據(jù)庫s3_data存上傳文件。結(jié)構(gòu)清晰后期備份也方便?,F(xiàn)在最頭疼的問題來了HTTPS 證書。瀏覽器對非 HTTPS 站點越來越不友好尤其是涉及登錄授權(quán)時自簽名證書基本會被直接攔截。所以強烈建議使用 Let’s Encrypt 免費簽發(fā)正式證書。你需要提前把這幾個子域名解析到服務(wù)器 IPchat.yourdomain.com→ 主應(yīng)用auth-ui.yourdomain.com→ 登錄后臺auth-api.yourdomain.com→ 認證接口s3-api.yourdomain.com和s3-ui.yourdomain.com→ 文件服務(wù) API 和控制臺五個域名看著多但可以用通配符證書解決。比如申請*.yourdomain.com后續(xù)擴展也省心。拿到.pem和.key文件后放進~/lobechat/ssl目錄。注意權(quán)限設(shè)為 600避免私鑰泄露。接下來是nginx.conf。很多人喜歡跳過 Nginx 直接暴露容器端口但這在真實場景中非常危險。Nginx 不僅能統(tǒng)一管理 SSL還能做請求過濾、限流、日志分析是個隱形的安全守門員。下面是精簡過的配置要點http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main $remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for; access_log /var/log/nginx/access.log main; error_log /var/log/nginx/error.log warn; sendfile on; keepalive_timeout 65; # 所有 HTTP 請求自動跳轉(zhuǎn) HTTPS server { listen 80; server_name *.yourdomain.com; return 301 https://$host$request_uri; } # LobeChat 主站 server { listen 443 ssl; server_name chat.yourdomain.com; ssl_certificate /etc/nginx/ssl/chat.yourdomain.com.pem; ssl_certificate_key /etc/nginx/ssl/chat.yourdomain.com.key; location / { proxy_pass http://lobe:3210; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; # 支持 WebSocket } } # Logto 認證服務(wù)拆成兩個入口 server { listen 443 ssl; server_name auth-ui.yourdomain.com; ssl_certificate /etc/nginx/ssl/auth-ui.yourdomain.com.pem; ssl_certificate_key /etc/nginx/ssl/auth-ui.yourdomain.com.key; location / { proxy_pass http://logto:3002; # UI 在 3002 } } server { listen 443 ssl; server_name auth-api.yourdomain.com; ssl_certificate /etc/nginx/ssl/auth-api.yourdomain.com.pem; ssl_certificate_key /etc/nginx/ssl/auth-api.yourdomain.com.key; location / { proxy_pass http://logto:3001; # API 在 3001 } } # MinIO 同樣分前后端 server { listen 443 ssl; server_name s3-api.yourdomain.com; ssl_certificate /etc/nginx/ssl/s3-api.yourdomain.com.pem; ssl_certificate_key /etc/nginx/ssl/s3-api.yourdomain.com.key; client_max_body_size 100M; # 允許大文件上傳 location / { proxy_pass http://minio:9000; proxy_set_header Host $http_host; } } server { listen 443 ssl; server_name s3-ui.yourdomain.com; ssl_certificate /etc/nginx/ssl/s3-ui.yourdomain.com.pem; ssl_certificate_key /etc/nginx/ssl/s3-ui.yourdomain.com.key; location / { proxy_pass http://minio:9001; } } }有幾個細節(jié)值得強調(diào)所有內(nèi)部服務(wù)都不暴露公網(wǎng)端口只允許通過 Nginx 訪問WebSocket 支持必須加上Upgrade頭否則聊天實時性會出問題MinIO 的client_max_body_size要調(diào)大不然傳個 PDF 就失敗數(shù)據(jù)庫選的是pgvector/pgvector:pg16鏡像名字有點長但它自帶向量擴展以后要做語義搜索或知識庫問答時不用再折騰插件。初始化密碼記得改掉默認值雖然只在內(nèi)網(wǎng)通信但安全習(xí)慣不能松。postgresql: image: pgvector/pgvector:pg16 environment: POSTGRES_DB: lobe POSTGRES_PASSWORD: SecurePostgresPass123! volumes: - ./data:/var/lib/postgresql/data healthcheck: test: [CMD-SHELL, pg_isready -U postgres] interval: 5s timeout: 5s retries: 10這里的healthcheck很關(guān)鍵。LobeChat 容器啟動前必須等數(shù)據(jù)庫 ready否則會報連接失敗。用service_healthy條件可以避免這類競態(tài)問題。MinIO 的配置也有講究。很多人不知道它有兩個端口9000 是 S3 API9001 是 Web 控制臺。Docker 中必須同時暴露這兩個端口不然無法登錄管理界面。minio: image: minio/minio environment: MINIO_ROOT_USER: admin MINIO_ROOT_PASSWORD: MinioAdminPass123! MINIO_DOMAIN: s3-api.yourdomain.com volumes: - ./s3_data:/etc/minio/data ports: - 9000:9000 - 9001:9001 command: server /etc/minio/data --address :9000 --console-address :9001MINIO_DOMAIN設(shè)定后生成的預(yù)簽名 URL 才能正確指向你的域名不然前端拿回來的是localhost:9000根本打不開。Logto 是整套系統(tǒng)的“鑰匙管理員”。它負責用戶注冊、登錄、OAuth 回調(diào)相當于一個輕量級 Auth0。它的entrypoint寫法很特別logto: image: svhd/logto:1.19.0 depends_on: postgresql: condition: service_healthy environment: DB_URL: postgresql://postgres:SecurePostgresPass123!postgresql:5432/logto ENDPOINT: https://auth-api.yourdomain.com ADMIN_ENDPOINT: https://auth-ui.yourdomain.com entrypoint: [sh, -c, npm run cli db seed -- --swe npm start]第一次運行時會自動初始化 schema 和種子數(shù)據(jù)。--swe參數(shù)表示跳過歡迎頁面適合自動化部署。等服務(wù)起來后訪問auth-ui.yourdomain.com注冊第一個管理員賬號。注冊完馬上去創(chuàng)建應(yīng)用類型選Custom Application前端框架選Next.js App Router然后填上這三個關(guān)鍵地址Redirect URI:https://chat.yourdomain.com/api/auth/callback/logtoLogout Redirect:https://chat.yourdomain.comCORS Origins:https://chat.yourdomain.com保存后拿到 Client ID 和 Secret回頭填進.env。終于到了 LobeChat 自己的配置。.env文件里最重要的幾個變量APP_URLhttps://chat.yourdomain.com KEY_VAULTS_SECRETYOUR_KEY_VAULTS_SECRET_HERE NEXT_AUTH_SECRETYOUR_NEXT_AUTH_SECRET_HERE DATABASE_URLpostgresql://postgres:SecurePostgresPass123!postgresql:5432/lobe LOGTO_CLIENT_IDxxx LOGTO_CLIENT_SECRETxxx LOGTO_ISSUERhttps://auth-api.yourdomain.com/oidc其中兩個密鑰要用openssl rand -base64 32生成別偷懶用弱密碼。KEY_VAULTS_SECRET加密數(shù)據(jù)庫里的敏感字段比如你將來接入 OpenAI 的 API Key而NEXT_AUTH_SECRET是 NextAuth 的簽名密鑰丟了會導(dǎo)致所有會話失效。至于 S3 配置默認走 MinIOS3_ACCESS_KEY_IDminioadmin S3_SECRET_ACCESS_KEYMinioAdminPass123! S3_ENDPOINThttps://s3-api.yourdomain.com S3_BUCKETlobe-files S3_PUBLIC_DOMAINhttps://s3-api.yourdomain.com S3_ENABLE_PATH_STYLE1注意S3_ENABLE_PATH_STYLE1必須開啟因為 MinIO 默認用虛擬主機模式但我們的域名不是標準 AWS 格式只能退回到路徑模式即/bucket/key而非bucket.s3.endpoint/key。全部寫好后執(zhí)行docker-compose up -d首次啟動大概需要 3~5 分鐘主要是拉鏡像和初始化數(shù)據(jù)庫。你可以盯一下日志docker-compose logs -f lobe看到輸出類似Server started at http://localhost:3210就說明起來了。然后打開https://chat.yourdomain.com點擊登錄應(yīng)該會跳轉(zhuǎn)到 Logto 的登錄頁。用之前注冊的賬號登錄就能進入主界面。這時候你還差最后兩步才能真正用起來。第一步去 MinIO 控制臺s3-ui.yourdomain.com創(chuàng)建名為lobe-files的 bucket。這個名字必須和.env里一致。然后給它加個策略允許公開讀取上傳的文件{ Version: 2012-10-17, Statement: [ { Effect: Allow, Principal: *, Action: [s3:GetObject], Resource: arn:aws:s3:::lobe-files/files/* }, { Effect: Allow, Principal: *, Action: [s3:PutObject, s3:DeleteObject], Resource: arn:aws:s3:::lobe-files/files/* } ] }第二步創(chuàng)建一個新的 AK/SK 密鑰對替換.env里的S3_ACCESS_KEY_ID和S3_SECRET_ACCESS_KEY。原始的minioadmin憑據(jù)太危險不應(yīng)該長期使用。改完重啟服務(wù)docker-compose down docker-compose up -d現(xiàn)在你可以試試上傳一張圖片看看是否能正常顯示。如果成功恭喜你已經(jīng)擁有了一個完全自主可控的 AI 聊天平臺。后續(xù)維護也很簡單更新版本執(zhí)行docker-compose pull docker-compose up -d查看日志docker-compose logs -f [service]備份數(shù)據(jù)打包./data和./s3_data目錄即可如果你想換成阿里云 OSS 或騰訊云 COS只需修改.env中的 S3 配置并移除docker-compose.yml里的minio服務(wù)。例如阿里云北京區(qū)S3_ACCESS_KEY_IDyour-access-key S3_SECRET_ACCESS_KEYyour-secret-key S3_ENDPOINThttps://oss-cn-beijing.aliyuncs.com S3_BUCKETyour-bucket-name S3_PUBLIC_DOMAINhttps://your-bucket-name.oss-cn-beijing.aliyuncs.com S3_ENABLE_PATH_STYLE0這樣既節(jié)省服務(wù)器資源又能享受 CDN 加速。這種高度集成的部署方式正讓個人開發(fā)者也能構(gòu)建媲美商業(yè)產(chǎn)品的 AI 應(yīng)用。LobeChat 的設(shè)計思路很清晰前端極致體驗后端模塊化解耦通過 Docker 把復(fù)雜性封裝起來留給用戶的只是一個.env文件。只要你掌握了這一套模式完全可以舉一反三部署任何類似的全棧應(yīng)用。畢竟未來的 AI 工具拼的不僅是模型能力更是數(shù)據(jù)閉環(huán)和用戶體驗的綜合較量。創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考
版權(quán)聲明: 本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請聯(lián)系我們進行投訴反饋,一經(jīng)查實,立即刪除!

免費商用圖片的網(wǎng)站國內(nèi)代理ip地址

免費商用圖片的網(wǎng)站,國內(nèi)代理ip地址,如何把做好的網(wǎng)站代碼變成網(wǎng)頁,網(wǎng)頁游戲網(wǎng)址你是否曾經(jīng)在點擊文件右鍵時#xff0c;看著那個旋轉(zhuǎn)的小圓圈焦急等待#xff1f;Windows右鍵菜單作為日常操作的核

2026/01/23 09:11:01

建個人網(wǎng)站賺錢嗎手機制作網(wǎng)頁app

建個人網(wǎng)站賺錢嗎,手機制作網(wǎng)頁app,海南省最新消息,dm網(wǎng)站制作軟件Proteus示波器實戰(zhàn)全解析#xff1a;從零開始掌握虛擬信號觀測你有沒有過這樣的經(jīng)歷#xff1f;花了一下午搭好一個濾波電路#

2026/01/22 23:51:01