Kurulum ve Dağıtım
Bu kılavuz, kendi sunucunuzda barındırılan Onetime Secret örnekleri için dağıtım seçeneklerini kapsar.
Dağıtım Seçenekleri
Section titled “Dağıtım Seçenekleri”Docker Dağıtımı
Section titled “Docker Dağıtımı”Docker, en güvenilir ve taşınabilir dağıtım yöntemini sağlar.
Docker Compose Kullanımı
Section titled “Docker Compose Kullanımı”Eksiksiz altyapı yönetimi için özel Docker Compose deposunu kullanın:
Depo: https://github.com/onetimesecret/docker-compose/
Hızlı kurulum:
git clone https://github.com/onetimesecret/docker-compose.gitcd docker-composedocker-compose up -dManuel Docker Compose kurulumu:
version: '3.8'
services: onetime: image: onetimesecret/onetimesecret:latest ports: - "3000:3000" environment: - REDIS_URL=redis://redis:6379/0 - SECRET=${SECRET} - HOST=${HOST:-localhost:3000} - SSL=${SSL:-false} - RACK_ENV=production depends_on: - redis volumes: - ./etc:/app/etc - ./logs:/app/logs
redis: image: redis:bookworm volumes: - redis_data:/data command: redis-server --requirepass ${REDIS_PASSWORD}
volumes: redis_data:Ortam dosyası (.env):
SECRET=your-secure-32-character-hex-keyREDIS_PASSWORD=your-redis-passwordHOST=your-domain.comSSL=trueManuel Kurulum
Section titled “Manuel Kurulum”Özel yapılandırmalar veya mevcut altyapı gerektiren ortamlar için.
Bağımlılıkları Yükleme
Section titled “Bağımlılıkları Yükleme”Ubuntu 22.04 LTS:
# Sistemi güncellesudo apt update && sudo apt upgrade -y
# Ruby ve derleme araçlarını yüklesudo apt install -y ruby ruby-dev build-essential gitsudo gem install bundler
# Redis'i yüklesudo apt install -y redis-serversudo systemctl enable redis-serversudo systemctl start redis-server
# Node.js'i yükle (geliştirme ve ön uç varlıklarını oluşturmak için)curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -sudo apt install -y nodejssudo npm install -g pnpm@latestCentOS/RHEL 8:
# PowerTools/CodeReady deposunu etkinleştirsudo dnf install -y dnf-plugins-coresudo dnf config-manager --set-enabled powertools
# Ruby ve geliştirme araçlarını yüklesudo dnf groupinstall -y "Development Tools"sudo dnf install -y ruby ruby-devel gitsudo gem install bundler
# Redis'i yüklesudo dnf install -y redissudo systemctl enable redissudo systemctl start redisUygulama Kurulumu
Section titled “Uygulama Kurulumu”# Uygulama kullanıcısı oluştursudo useradd -r -m -s /bin/bash onetime
# Uygulama kullanıcısına geçsudo su - onetime
# Depoyu klonlagit clone https://github.com/onetimesecret/onetimesecret.gitcd onetimesecret
# Bağımlılıkları yüklebundle install --deployment --without development test
# Ortamı kopyala ve yapılandırcp .env.example .envcp ./etc/config.example.yaml ./etc/config.yaml
# Sürüm takibi için commit hash oluşturgit rev-parse --short HEAD > .commit_hash.txtTers Proxy Yapılandırması
Section titled “Ters Proxy Yapılandırması”Bu yapılandırma örnekleri başlamanıza yardımcı olabilir, ancak bunları özel ihtiyaçlarınıza uyacak şekilde ayarlamalısınız.
Temel Yapılandırma:
server { listen 80; server_name your-domain.com; return 301 https://$server_name$request_uri;}
server { listen 443 ssl http2; server_name your-domain.com;
# SSL Yapılandırması ssl_certificate /path/to/your/cert.pem; ssl_certificate_key /path/to/your/key.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;
# Güvenlik başlıkları add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; add_header X-Frame-Options DENY always; add_header X-Content-Type-Options nosniff always;
# Oluşturulmuş ön uçtan statik dosyalar location /dist/ { root /app/public; expires 1y; add_header Cache-Control "public, immutable"; try_files $uri $uri/ =404; }
# Arka uca API istekleri location /api/ { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
# Diğer tüm istekler arka uca location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket desteği proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; }}Siteyi etkinleştir:
sudo ln -s /etc/nginx/sites-available/onetime /etc/nginx/sites-enabled/sudo nginx -tsudo systemctl reload nginxCaddy otomatik HTTPS ve daha basit yapılandırma sağlar:
your-domain.com { # Oluşturulmuş ön uçtan statik dosyaları işle handle /dist/* { root * /app/public file_server }
# Arka uca API istekleri handle /api/* { reverse_proxy 127.0.0.1:3000 }
# Diğer tüm istekler arka uca (sunucu tarafından oluşturulan sayfalar için) handle { reverse_proxy 127.0.0.1:3000 }}Apache
Section titled “Apache”<VirtualHost *:80> ServerName your-domain.com Redirect permanent / https://your-domain.com/</VirtualHost>
<VirtualHost *:443> ServerName your-domain.com
# SSL Yapılandırması SSLEngine on SSLCertificateFile /path/to/your/cert.pem SSLCertificateKeyFile /path/to/your/key.pem
# Güvenlik başlıkları Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" Header always set X-Frame-Options DENY Header always set X-Content-Type-Options nosniff
# Oluşturulmuş ön uçtan statik dosyalar Alias /dist /app/public/dist <Directory /app/public/dist> Require all granted ExpiresActive On ExpiresDefault "access plus 1 year" </Directory>
# API ve uygulama istekleri arka uca ProxyPreserveHost On ProxyPass /dist ! ProxyPass / http://127.0.0.1:3000/ ProxyPassReverse / http://127.0.0.1:3000/</VirtualHost>SSL/TLS Yapılandırması
Section titled “SSL/TLS Yapılandırması”Let’s Encrypt (Certbot)
Section titled “Let’s Encrypt (Certbot)”Certbot’u Yükle:
# Ubuntu/Debiansudo apt install certbot python3-certbot-nginx
# CentOS/RHELsudo dnf install certbot python3-certbot-nginxSertifika Oluştur:
# Nginx içinsudo certbot --nginx -d your-domain.com
# Apache içinsudo certbot --apache -d your-domain.com
# Manuel sertifika (özel proxy yapılandırması kullanıyorsanız)sudo certbot certonly --webroot -w /var/www/html -d your-domain.comOtomatik yenileme:
# Crontab'a ekleecho "0 12 * * * /usr/bin/certbot renew --quiet" | sudo tee -a /etc/crontabÖzel SSL Sertifikaları
Section titled “Özel SSL Sertifikaları”Sertifikalarınızı yerleştirin ve proxy yapılandırmasındaki yolları güncelleyin:
# Sertifika dosyaları/etc/ssl/certs/your-domain.com.crt/etc/ssl/private/your-domain.com.key
# Uygun izinleri ayarlasudo chmod 600 /etc/ssl/private/your-domain.com.keysudo chmod 644 /etc/ssl/certs/your-domain.com.crtRedis Yapılandırması
Section titled “Redis Yapılandırması”Seçenek 1: Yalnızca bellek (maksimum güvenlik için asla diske kaydetme):
# Bellek optimizasyonumaxmemory 1gbmaxmemory-policy allkeys-lru
# Güvenlik - gizli mesajlar asla diske yazılmazsave "" # Tüm otomatik kayıtları devre dışı bırakappendonly no # AOF günlüğünü devre dışı bırak
# Güvenlikrequirepass your_redis_passwordbind 127.0.0.1
# Performanstcp-keepalive 60timeout 300Seçenek 2: Disk kalıcılığı (yedeklemeleri etkinleştirir ancak gizli mesajları diske yazar):
# Bellek optimizasyonumaxmemory 1gbmaxmemory-policy allkeys-lru
# RDB anlık görüntüleri - dump.rdb dosyaları oluşturursave 900 1 # 900 saniyede en az 1 anahtar değiştiyse kaydetsave 300 10 # 300 saniyede en az 10 anahtar değiştiyse kaydetsave 60 10000 # 60 saniyede en az 10000 anahtar değiştiyse kaydet
# AOF günlüğü - zaman içinde kurtarma için appendonly.aof dosyaları oluştururappendonly yesappendfsync everysec # Her saniye diske senkronize et
# Güvenlikrequirepass your_redis_passwordbind 127.0.0.1
# Performanstcp-keepalive 60timeout 300Önemli: Disk kalıcılığı etkinleştirildiğinde, gizli mesajlar şunlara yazılacaktır:
dump.rdbdosyaları (aralıklarla anlık görüntüler)appendonly.aofdosyaları (sürekli ekleme günlüğü)
Güvenlik ve yedekleme gereksinimlerinize göre seçim yapın.
Redis’i Yeniden Başlat:
sudo systemctl restart redisRedis Yedeklemeleri
Section titled “Redis Yedeklemeleri”Redis:
#!/bin/bash# Redis yedekleme betiğiBACKUP_DIR="/var/backups/onetime"DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
# Yedek oluşturredis-cli -a "$REDIS_PASSWORD" --rdb $BACKUP_DIR/redis_$DATE.rdb
# Eski yedekleri temizlefind $BACKUP_DIR -name "redis_*.rdb" -mtime +7 -deleteSonraki Adımlar
Section titled “Sonraki Adımlar”Başarılı dağıtımdan sonra:
- Örneğinizi yapılandırın özel ayarlarla
- İzleme ve uyarı kurun üretim operasyonları için
- Güvenlik ayarlarını inceleyin ve ek korumalar etkinleştirin
- Yedekleme otomasyonunu yapılandırın ve kurtarma prosedürlerini test edin
- Özel alan adları kurun kuruluşunuz için
Onetime Secret örneğiniz artık üretim kullanımına hazır!