2026-02-24 20:44:16 +00:00
# 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
2026-09-17 12:24:51 +00:00
## 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.
2026-02-24 20:44:16 +00:00
## 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ı
2026-09-17 12:24:51 +00:00
-> sozsoft-platform->configs->deployment->configs->nginx.conf
-> sozsoft-platform->configs->deployment->configs->turnserver.conf
2026-02-24 20:44:16 +00:00
-> sozsoft-platform->configs->deployment->docker-compose-devops.yml
-> sozsoft-platform->configs->deployment->Dockerfile
2026-09-17 12:24:51 +00:00
-> 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
2026-02-24 20:44:16 +00:00
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
2026-09-17 12:24:51 +00:00
- 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.
2026-02-24 20:44:16 +00:00
`ipconfig /flushdns`