Wiki
Docker ile dağıtım
uVersion sunucusu ve PostgreSQL konteyner olarak, anahtar teslim: imajı indirin, yükleyin, .env dosyasını yapılandırın, başlatın. Verilerin ve veritabanının konumu yapılandırılabilir.
.deb paketine bir alternatif: uVersion sunucusu ve onun PostgreSQL
veritabanı konteyner olarak çalışır, tek bir docker compose up ile ayağa
kaldırılır. Konteynerleştirilmiş bir dağıtımı tercih ediyorsanız veya hızlıca denemek
istiyorsanız idealdir.
Önkoşullar: Compose v2 eklentisiyle Docker Engine 20.10+
(docker compose version) ve bir uVersion lisans anahtarı. Sunucu, geçerli ve
imzalı bir anahtar olmadan başlamayı reddeder: onu hesabınızdan
alın (veya kayıt sayfasından bir tane edinin).
docker yerine podman koyun:
podman compose pull, podman load -i,
podman compose up -d. Sağlanan docker-compose.yml, bağlama
noktalarını SELinux (Red Hat, Rocky, Alma ve Fedora'da varsayılan olarak etkin erişim
denetimi) için zaten :z son ekiyle etiketler. Bu etiket olmadan konteynerin
bağlanan dizinlere erişimi reddedilir ve mesaj, bir izin sorunundan çok bozuk bir veritabanı
gibi görünür.
Kurulum
1. compose dosyasını ve ortam şablonunu alın
İki dosya, yığının dizini olacak yeni bir klasöre: docker-compose.yml ve
.env şablonu.
mkdir uversion && cd uversion
wget -N -O docker-compose.yml https://uversion.io/downloads/server/docker/docker-compose.yml
wget -N -O .env https://uversion.io/downloads/server/docker/env.example
2. İmajı alın
Çevrimiçiyken registry yeterlidir:
docker compose pull
İnternet erişimi olmadan (yalıtılmış ağ), bunun yerine arşivi indirip yükleyin: compose ile aynı imaj adını taşır, bu yüzden başlatma onu hiçbir şey indirmeden bulur.
wget -N https://uversion.io/downloads/server/docker/uversion-server_latest_docker.tar.gz
docker load -i uversion-server_latest_docker.tar.gz
3. .env dosyasını doldurun
İki değer zorunludur: UVERSION_LICENCE__KEY (lisans anahtarınız, e-posta ile
alınan uzun imzalı dizge) ve POSTGRES_PASSWORD (birlikte gelen veritabanı için
güçlü bir parola).
nano .env
Oturumları imzalayan gizli anahtar ilk başlatmada üretilir ve veri
dizininde saklanır. Girmeniz gereken bir şey yoktur. Yedeğin bir parçasıdır: kaybolursa herkes
bir kez yeniden oturum açar, hiçbir şey kaybolmaz. Kendinizinkini belirlemeyi tercih ederseniz
(en az 32 karakter), .env içinde UVERSION_SECURITY__JWT_SECRET
alanını doldurun: bu gerçekten konteynere iletilir ve konteyner bir tane üretmek yerine onu
kullanır.
POSTGRES_PASSWORD yalnızca veritabanı oluşturulurken, dizini boşken uygulanır.
Daha sonra .env içinde değiştirmek PostgreSQL tarafında hiçbir şeyi değiştirmez,
o eskisini tutar; bu sırada sunucu yenisini sunar: bağlantı kopar ama mesaj nedenini
açıklamaz. Gerçekten değiştirmek için, iki tarafta da değiştirin:
# Changer reellement le mot de passe de la base
docker compose exec db psql -U uversion -c "ALTER USER uversion PASSWORD 'nouveau-mot-de-passe'"
# Puis reporter la MEME valeur dans POSTGRES_PASSWORD (.env) et relancer
docker compose up -d
.env dosyasını verilerinizle birlikte yedekleyin
İçinde lisans anahtarı ve veritabanı parolası bulunur; birimlerde değil,
docker-compose.yml dosyasının yanında yaşar. Veri disklerini korurken makineyi
kaybetmek, kimsenin adresleyemeyeceği bir veritabanı ve yeniden istenmesi gereken bir lisans
bırakır: kayıt sırasında alınan etkinleştirme kodu tek kullanımlıktır ve zaten
tüketilmiştir; yalnızca onun ürettiği lisans anahtarı yeniden kullanılabilir ve
burada olan odur. Bu dosyayı bir sır gibi ele alın: chmod 600 ve veritabanı ile
chunk'larla (dosya parçaları, yer kaplayan şey) aynı yedekte.
4. Yığını başlatın
docker compose up -d
Sunucuya artık https://YOUR-HOST:8443 üzerinden erişilebilir. Hiçbir alan adı
veya Let’s Encrypt sertifikası gerekmez: bununla TOFU modeli ilgilenir, yani ilk temasta güven,
tıpkı SSH’nin ilk seferinde bir makinenin parmak izini onaylatması gibi.
5. Sunucu parmak izini okuyun
Her başlatmada günlüklere yeniden yazılır:
# L'empreinte du serveur, reecrite dans les journaux a chaque demarrage
docker compose logs server | grep -i "TLS fingerprint"
Bu, sunucu parmak izidir (sertifikasının SHA-256'sı): sunucu 8443 portunda kendinden imzalı HTTPS sunar ve her istemci ilk bağlantıda onu doğrular. Ekibinizle paylaşın (bkz. TLS parmak izi). Onu, indirilen bir dosyayı doğrulamaya yarayan bir sağlama toplamıyla karıştırmayın: bu, sizin sunucunuzu tanımlar.
6. İlk yönetici parolasını okuyun
Bu parolayla admin olarak oturum açın, sonra onu değiştirin. Değiştirir
değiştirmez dosya silinir.
# Le mot de passe admin initial (le fichier disparait des que vous le changez)
docker compose exec server cat /data/initial-admin-password
Başlatmayı canlı izlemek için docker compose logs -f server uygundur, ama onu
bir komut dizisinin ortasına koymayın: -f günlükleri süresiz izler ve denetimi
asla geri vermez (çıkmak için Ctrl + C).
Veriler ve veritabanı
Sunucunun tüm durumu (chunk deposu, TLS sertifikası ve dolayısıyla parmak izi, sunucu
kimliği) bir ana makine dizininde, PostgreSQL veritabanı ise bir başkasında yaşar. İkisi de
.env içinde ayarlanır:
# Dans .env : placer les donnees et la base sur un disque large et sauvegarde
UVERSION_DATA_DIR=/srv/uversion/data # chunks, cert TLS, identite serveur
UVERSION_DB_DIR=/srv/uversion/db # PostgreSQL fourni
Gerçek bir dağıtım için UVERSION_DATA_DIR'ı geniş ve yedeklenen bir diske
yönlendirin: bir Unreal projesinin ikili chunk'ları hacimli olabilir. Konteyner, bağlanan
dizinin izinlerini kendisi ayarlar (yalnızca sahipliği düzeltecek kadar root olarak başlar,
sonra ayrıcalıksız bir kullanıcıya iner), bu yüzden önceden hiçbir şeyi chown
etmeniz gerekmez.
Halihazırda var olan harici bir PostgreSQL kullanmak için
.env içinde UVERSION_DATABASE__URL alanını doldurun, sonra
docker-compose.yml içindeki db hizmetini ve depends_on
bloğunu kaldırın.
# Dans .env : brancher un PostgreSQL existant
UVERSION_DATABASE__URL=postgres://user:motdepasse@db.interne:5432/uversion
Verileri ve veritabanını taşıma
En basit durum, iki değişkeni ilk up'tan önce ayarlamaktır:
henüz hiçbir şey yoktur, kopyalanacak bir şey yoktur. Yığın zaten çalışıyorsa, onu durdurup
dizinleri sahipleri koruyarak elle kopyalamak gerekir.
1. Yığını durdurun
Kopyalama sırasında hiçbir şey yazmamalı:
docker compose down
2. İki dizini kopyalayın
Sahipleri ve izinleri koruyan, -a'dır:
sudo rsync -a ./data/server/ /srv/uversion/data/
sudo rsync -a ./data/db/ /srv/uversion/db/
3. .env'i yeni konuma yönlendirin
# Dans .env, LES DEUX lignes, pas une seule
UVERSION_DATA_DIR=/srv/uversion/data
UVERSION_DB_DIR=/srv/uversion/db
4. Yeniden başlatın
docker compose up -d
UVERSION_DB_DIR, bomboş bir veritabanı verir: PostgreSQL onu gözünü kırpmadan
ilklendirir ve elinizde dolu bir chunk deposuyla eşleşmiş, hiçbir meta verisi olmayan bir
veritabanı kalır.
Üç yol tuzağı, hepsi yaşanmış:
- Göreli bir yol, compose dosyasına göre çözülür, komutu çalıştırdığınız
dizine göre değil.
./data/serverher zamandocker-compose.yml'nin komşusunu gösterir. - Bir ağ paylaşımı (NFS, CIFS, bir Windows paylaşımı) genellikle konteynerin
başlatmada yaptığı
chown'u reddeder. O zaman konteyner hemen çıkar, ne uVersion'dan ne de depolamadan söz eden bir izin hatasıyla. Yerel bir disk veya bir blok birim kullanın. - Sahipleri ve izinleri koruyan
rsync -a'dır. Seçeneksizcpile ya da bir dosya gezgininden yapılan bir kopya, her şeyi geçerli hesaba sıfırlar ve PostgreSQL o zaman kendi dizini üzerinde başlamayı reddeder.
İşletim
Yedekleme: veritabanı
Meta verileri taşır: dosyalar, sürümler, kullanıcılar, kilitler.
docker compose exec db pg_dump -U uversion uversion > uversion-db.sql
Yedekleme: sunucu verileri
Bu, UVERSION_DATA_DIR'ın gösterdiği ana makine dizinidir. İki yedek de
önemlidir: biri olmadan öteki hiçbir şeyi geri getirmez.
# .env n'est pas charge dans votre shell, chargez-le pour reutiliser la variable
set -a; . ./.env; set +a
DATA_DIR="$UVERSION_DATA_DIR"
[ -n "$DATA_DIR" ] || DATA_DIR=./data/server # valeur par defaut
tar czf uversion-data.tar.gz -C "$DATA_DIR" .
Güncelleme
Veriler ve veritabanı dokunulmadan kalır, geçişler başlatmada uygulanır.
docker compose pull
docker compose up -d # les migrations s'appliquent au demarrage
Yalıtılmış bir ağda, bunun yerine daha yeni bir arşiv yükleyin:
wget -N https://uversion.io/downloads/server/docker/uversion-server_latest_docker.tar.gz
docker load -i uversion-server_latest_docker.tar.gz
docker compose up -d
Durdurma
docker compose stop konteynerleri durdurur, docker compose down
onları kaldırır. Her iki durumda da verileriniz yerinde kalır.
down -v burada hiçbir şeyi silmez
Yayımlanan compose hiçbir adlandırılmış birim kullanmaz: verileriniz ve veritabanınız
.env'in gösterdiği iki ana makine dizinindedir. Ne down ne de
down -v onlara dokunur. Gerçekten sıfırdan başlamak için bu dizinleri kendiniz
silmeniz gerekir. Bunu bilmek önemlidir: bir kimlik doğrulama hatasından sonraki refleks,
down -v ve ardından up çalıştırmaktır ve bu, aynı veritabanı ve aynı
parolayla tam olarak aynı hataya geri döner.