sozsoft-platform/configs/deployment/Readme_Devops.md
2026-09-17 15:24:51 +03:00

203 lines
No EOL
8.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Devops Makinası kurulumu
## VS Code -> Extensions kısmında "Docker" kurulmalıdır.
## VS Code -> Extensions kısmında "Save as Root in Remote" kurulmalıdır.
## VS Code üzerinden SSH parolası sabitleme (Firewall ve SSH)
- Windows Terminal üzerinde ssh_keygen komutu çalıştırılır.
- C:\Users\sedat.ozturk\.ssh klasörün altında id_rsa ve id_rsa.pub isimli 2 dosya oluşturur.
- C:\Users\sedat.ozturk\.ssh dosyasının içerisindeki id_rsa.pub dosyasının içeriğini ~/.ssh klasöründeki authorized_keys içeriğine kopyalanır.
- Bu sayede VS Code üzerinden bağlanırken her defasında ssh paroları yazmak durumunda olmayız.
## Docker kurulumu
- sudo apt update
- sudo apt install apt-transport-https ca-certificates curl software-properties-common
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- sudo apt update
- apt-cache policy docker-ce
- sudo apt install docker-ce
- sudo systemctl status docker
- sudo usermod -aG docker ${USER}
- su - ${USER}
- sudo reboot
- sudo su
- cd /etc/docker
- touch daemon.json
daemon.json dosyasının içerisine aşağıdaki satırlar eklenecek.
{
"insecure-registries": ["devops.sozsoft.com"]
}
- sudo systemctl restart docker
- /etc/hosts dosyası açılacak ve içerisine `127.0.1.1 devops.sozsoft.com` eklenecek
- docker login devops.sozsoft.com
## Wildcard için Sertifika alma
- sudo apt-get remove certbot
- sudo snap install --classic certbot
- sudo ln -s /snap/bin/certbot /usr/bin/certbot
- sudo certbot certonly --manual --preferred-challenges=dns --email system@sozsoft.com --agree-tos -d sozsoft.com -d *.sozsoft.com
- sudo su
- cd /etc/letsencrypt/archive
- chgrp docker -R sozsoft.com
- chown ${USER} -R sozsoft.com
- cd /etc/letsencrypt/archive/sozsoft.com
- cp -R /etc/letsencrypt/archive/sozsoft.com /home/sedat/sozsoft.com
- exit
- cd sozsoft.com/
- sudo chmod 775 *
- dig TXT _acme-challenge.sozsoft.com +short komut ile test edebilir. Dns ler oturmuşmu kontrol edilebilir.
- sudo resolvectl flush-caches komutu ile cahce temizlenebilir.
## Subdomainler için Otomatik Sertifika alma
- /configs/deployment/scripts/7-setup_ssl.sh içerisinde subdomainlerin otomatik ssl sertifikası oluşturulmaktadır.
## Git Kurulumu
- cd ~
- git config --global http.sslVerify false
- git clone https://github.com/iamsedatozturk/sozsoft-platform.git
- cd sozsoft-platform/
- git config core.fileMode false
- chmod 775 *
- cd configs/deployment
- chmod 775 *
- cd configs
- chmod 775 *
- cd ..
- cd scripts
- chmod 775 *
- cd ~/sozsoft-platform/configs/deployment/scripts/
- İçerisindeki ihtiyaç olan scriptler çalıştırılır.
- n8n çalışmayınca n8n containerını çalıştırır ve hızlıca `docker run --rm -v sozsoft-devops_n8n_data:/data alpine chown -R 1000:1000 /data` kodu çalıştırılacak.
## Nginx Kurulumu
- sudo apt update
- sudo apt install nginx -y
- sudo systemctl status nginx
- sudo rm /etc/nginx/sites-enabled/default
- sudo rm /etc/nginx/sites-enabled/nginx.conf
- sudo cp ~/sozsoft-platform/configs/deployment/configs/nginx.conf /etc/nginx/sites-available/
- sudo ln -s /etc/nginx/sites-available/nginx.conf /etc/nginx/sites-enabled/
- sudo cp -r ./sozsoft.com /etc/ssl/sozsoft.com
- sudo systemctl restart nginx
- sudo nginx -t
## Basic auth kullanıcıları (/etc/nginx/.htpasswd)
nginx.conf'ta auth_basic kullanan bloklar bu dosyaya bakar; su an tek kullanan
ollama.sozsoft.com/ollama-api/ (Ollama ham API'si). Dosya her istekte okunur,
reload gerekmez.
- sudo apt install apache2-utils -y
- sudo cut -d: -f1 /etc/nginx/.htpasswd # tanımlı kullanıcılar
- sudo htpasswd /etc/nginx/.htpasswd <kullanici> # ekle / parola değiştir
Dikkat: -c parametresi mevcut dosyayı siler, yalnızca ilk kullanıcıda kullanılır.
## Forgejo kurulumu ayarları yapılacak
- home klasöründeki `cd ~/forgejo/data/gitea/conf` klasörün altındaki app.ini dosyasına aşağıdaki satırlar eklenecek.
[server]
APP_DATA_PATH = /data/gitea
DOMAIN = devops.sozsoft.com
SSH_DOMAIN = devops.sozsoft.com
DISABLE_SSH = false
SSH_PORT = 222
SSH_LISTEN_PORT = 22
LFS_START_SERVER = true
LFS_JWT_SECRET = CDy3ldC2cTbYHalO_dH68QJseoD7dGvH9x0Zx9aq2J0
OFFLINE_MODE = true
PROTOCOL=http
HTTP_PORT = 3000
ROOT_URL = https://devops.sozsoft.com/
CERT_FILE = /etc/ssl/cert1.pem
KEY_FILE = /etc/ssl/privkey1.pem
- https://devops.sozsoft.com
- sedat.ozturk isimli kullanıcı tanımlanacak.
- "sozsoft" isimli new organization tanımlanacak.
- "sozsoft-platform" isimli repository sozsoft organizasyonunun içerisine tanımlanacak.
- Fork üzerinden https://devops.sozsoft.com/user/settings/applications kısmına "sozsoft.com" ismiyle Access Token ekle. Eklenen token bilgisi Fork içerisinde kullanılacak.
- Fork üzerinden Remotes tanımlaması yapılacak.
Remote: devops.sozsoft.com
RepositoryUrl: https://sedat.ozturk:1b48921c4cc6cd5c79e8ac121ede9f78afd1d9be@devops.sozsoft.com/sozsoft/sozsoft-platform.git
- https://devops.sozsoft.com/user/settings/applications sayfasında OAuth2 kısmında "sozsoft.com" ismiyle Application Name eklenecek. Redirect URL kısmında https://devops.sozsoft.com eklenecektir.
## docker-compose-devops.yml kurulumu
Bu kurulumu yapmak için home klasörü altına 3 tane dosyaya ihtiyaç duyuyor.
- Klasör yapısı
cd ~/
mkdir sozsoft-platform
cd sozsoft-platform
mkdir configs
cd configs
mkdir deployment
cd deployment
mkdir configs
- Dosya yapısı
-> sozsoft-platform->configs->deployment->configs->nginx.conf
-> sozsoft-platform->configs->deployment->configs->turnserver.conf
-> sozsoft-platform->configs->deployment->docker-compose-devops.yml
-> sozsoft-platform->configs->deployment->Dockerfile
-> sozsoft-platform->configs->deployment->.env
Servis konfigürasyonlarının tamamı `configs/deployment/configs/` altındadır
(nginx.conf, turnserver.conf, redis.conf, redis.7.conf, elasticsearch.yml);
compose dosyaları buradan mount eder, ayrı bir kopya tutulmaz.
- .env içeriği (compose bu değişkeni okur, depoya girmez)
echo "WEBUI_SECRET_KEY=$(openssl rand -hex 32)" >> .env
cd ~/sozsoft-platform/configs/deployment
chmod 775 *
cd ~/sozsoft-platform
docker compose -f ./docker-compose-devops.yml up -d
docker compose -f ./docker-compose-devops.yml down
docker compose -f ./docker-compose-devops.yml up -d
## hosts yönlendirme
- 192.168.0.2 devops.sozsoft.com
- 192.168.0.2 chat.sozsoft.com
- 192.168.0.2 ai.sozsoft.com
- 192.168.0.2 sozsoft.com
- 192.168.0.2 demo.sozsoft.com
- 192.168.0.2 sozsoft.com
- 192.168.0.2 api.sozsoft.com
- 192.168.0.2 cdn.sozsoft.com
- 192.168.0.2 ollama.sozsoft.com
## Ollama + Open WebUI
`ollama.sozsoft.com` kökü Open WebUI'ye (3003), `/ollama-api/` öneki Ollama'nın ham
API'sine (11434) gider. Open WebUI kendi backend'ini `/api` altında sunduğu için ham
API bu öneğe taşınmıştır: https://ollama.sozsoft.com/ollama-api/tags
- Model: docker exec -it ollama ollama pull qwen2.5:3b
Makinede GPU yok ve 8 GB RAM var; compose `OLLAMA_MAX_LOADED_MODELS=1` ile ikinci bir
modelin belleğe alınmasını engeller. Yeni model çekmeden önce `free -h` bakılır.
- Basic auth yalnızca /ollama-api/ bloğundadır (Ollama'nın kendi kimlik doğrulaması yok).
Sohbet arayüzünün önüne KONMAZ: Open WebUI socket.io ile WebSocket açar, tarayıcı WS
upgrade isteğine basic auth kimliğini eklemediği için bağlantı 401 döngüsüne girer ve
parola ekranı üst üste sorulur.
- Arayüzün güvenlik sınırı uygulamanın kendi girişidir. Open WebUI ilk açılışta kaydolan
kullanıcıyı admin yapar; bu yüzden ilk hesap oluşturulur oluşturulmaz
Settings -> Admin -> General -> Enable New Sign Ups KAPATILIR. Bu adım atlanırsa ekran
internete açık kalır. Daha sıkı bir sınır gerekiyorsa vhost'a allow/deny ile IP kısıtı
eklenir; basic auth bu arayüz için seçenek değildir.
- Gömme/erişim hattı kapalıdır (BYPASS_EMBEDDING_AND_RETRIEVAL); yüklenen dosyanın metni
doğrudan bağlama girer. Modelin num_ctx değeri 8192 yapılır.
`ipconfig /flushdns`