Wiki
Ubuntu / Debian'a kurma
.deb paketi: üç soru, veri dizini, çevrimdışı kurulum, yedekleme ve kaldırma.
Ubuntu 24.04+, Debian 13+ (x86_64). İki komut, üç soru.
Kur
1. Paketi indir
Sunucuyu barındıracak makineden, sıradan bir oturumda:
cd /tmp && wget -N https://uversion.io/downloads/server/uversion-server_latest_amd64.deb
_latest_ URL'si her zaman en son yayımlanan sürümü gösterir.
-N bayrağı wget'e yalnızca uzak dosya daha yeniyse yeniden
indirmesini söyler: .deb.1, .deb.2 vb. kopyaları biriktirmeden
güncelleme yapmak için kullanışlıdır.
.deb ana dizininizdeyken cd /tmp, görsel bir apt uyarısını
("unsandboxed as root") önler.
2. Kurulumu başlat
Paketi az önce indirdiğiniz dizinde, tek bir komut:
sudo apt install ./uversion-server_latest_amd64.deb
Kurulum programı o zaman, aşağıdaki üç adımın sırasıyla üç soru sorar. Bunlar tam ekran mavi bir iletişim kutusunda görünür: Tab ile hareket eder, Enter ile onaylarsınız.
3. Yanıt: veri dizini
Varsayılan: /var/lib/uversion. Sürüm denetimindeki dosyalarınızın içeriği buraya iner,
yani büyüyen dizin, dolayısıyla büyük diskinizde olmasını istediğiniz dizin. Her yol kabul edilmez:
Veri dizini seçme bölümü dört kuralı verir ve
kurulum programı, çiğnenen kuralı adıyla belirterek reddeder.
4. Yanıt: veritabanını da veri dizinine koyalım mı?
Varsayılan: hayır. Bu, kurulumun sonuçları en ağır sorusudur ve bu varsayılanın, olduğu gibi bırakmadan önce bilinmesi gereken bir bedeli vardır.
Bu yanıt, tek bir diskin sunucunuzu yeniden kurmaya yetip yetmediğini belirler.
- Hayır (varsayılan): PostgreSQL veritabanı sistem dizininde
(
/var/lib/postgresql) kalır, verilerinizden ayrı. Makine ölürse, hayatta kalan veri diski dosya içeriğini barındırır, ama artık hiçbir revizyon, hesap, kilit ve izin yoktur. Bu, yeniden başlatılan bir sunucu değil, bir yığın bayttır. - Evet: kurulum programı veri dizininin içinde özel bir veritabanı oluşturur ve oraya bir kurtarma yordamı yazar. O zaman hayatta kalan tek bir disk, artı PostgreSQL ve bu paket, sunucuyu başka bir makinede yeniden kurmaya yeter.
Evet demeden önce bilinmesi gereken iki bedel var. Bu veritabanı dizini yalnızca
onu oluşturan PostgreSQL ana sürümü tarafından yeniden açılabilir, dolayısıyla birkaç
yıl sonraki bir yeniden kurulum, o sürümü açıkça yüklemeyi gerektirebilir. Ve disk o zaman lisans
anahtarını, JWT sırrını ve veritabanı parolasını da taşır: onu bir sır gibi ele alın.
Bu yanıt daha sonra sudo dpkg-reconfigure uversion-server ile değiştirilir.
5. Yanıt: etkinleştirme kodu
Zorunlu, makinede ya da 3. adımda seçilen diskte zaten bir lisans varsa hariç: bu durumda kurulum programı bunu size özel bir iletiyle bildirir ve soruyu sormaz, çünkü etkinleştirme kodu tek kullanımlıktır ve sizinki, bu diskin geldiği makine tarafından çoktan tüketilmiştir.
Alan üç biçim kabul eder, ki makinenin İnternet'i yoksa çıkış yolunuz budur: kısa kod
UV-XXXX-XXXX-XXXX, tam lisans anahtarınızı içeren bir dosyaya giden mutlak bir
yol, ya da o tam anahtarın doğrudan yapıştırılmış hâli (eyJ ile
başlayan uzun bir dize). Yalnızca ilk biçimde, kurulum programı kodu tam anahtarla değiştirmek için
licence.uversion.io ile iletişim kurar.
6. Sonda görüneni not edin
Kurulum renkli bir kutuyla biter: admin kullanıcı adı, geçici parola, sunucu adresi ve
sertifika parmak izi. Bunları not edin: bu parolayı içeren dosya, onu değiştirir
değiştirmez silinir.
Ardından İlk oturum açma adımını izleyebilirsiniz.
Kesintiye uğrayan bir kurulum risksizce yeniden başlatılır. Pencereyi
kapatırsanız, ağ düşerse veya kurulum programı bir hatada durursa, aynı apt install
komutunu yeniden çalıştırmanız yeterlidir. Etkinleştirme kodunuz yeniden kaybolmaz: bir
kez değiştirildikten sonra elde edilen anahtar diske yazılır ve sonraki denemelerde yeniden kullanılır.
Ve herhangi bir yanıta sonradan, yeniden kurmadan geri dönmek için:
sudo dpkg-reconfigure uversion-server. Bu, bu sayfanın evrensel telafi komutudur.
Kurulum programının kabul edeceği bir veri dizini seçme
Dört kural. İlk üçü etkinleştirme kodunuz tüketilmeden önce denetlenir, bu yüzden bir ret size hiçbir şeye mal olmaz: düzeltir ve yeniden başlarsınız.
- Ne
/homealtında, ne de/rootaltında. Sunucu, kişisel dizinlere her türlü erişimden kasıtlı olarak yoksun bırakılmış bir sistem hesabıyla çalışır: orada asla okuyamaz ya da yazamaz ve başlamaz. - Yolda hiç boşluk olmasın. Yol, servisin ayarlarına olduğu gibi kopyalanır ve orada
bir boşluk iki değeri ayırır.
/media/jean/My Bookgibi bir adla otomatik bağlanan bir dış disk tam da buna takılır. - Mutlak bir yol, yani
/ile başlayan. - Her üst dizin,
uversionvepostgreshesaplarını geçirmelidir. Bu en az belli olan tuzaktır verootolarak kurarken görünmez: elle oluşturulmuş ve kapatılmış bir üst dizin (örneğin bir Helix deposundan miras kalanroot:root0750'lik bir/perforce) tüm kurulumu geçirir, sonra ilk erişimde servisi bloke eder. Belirti,status=200/CHDIRile başlamayı reddeden bir servis ya da ilk yazmada bir "Permission denied"tir.
Bu son noktayı kurulumu başlatmadan önce denetlemek için, seçiminize giden tüm dizin zincirinin izinlerini gösterin:
namei -l /srv/uversion # remplacez par le chemin que vous voulez utiliser
Her satır, son izin sütununda ("diğerleri" sütununda) bir x taşımalıdır. Biri eksikse,
kurulum programı kusurlu dizini ve çalıştırılacak tam komutu, sudo chmod o+x /le/dossier
türünden, size adıyla bildirir. Kendisine ait olmayan bir dizini asla kendisi değiştirmez: ağacınızda bir
erişim açmak sizin kararınızdır, onun değil.
Dosyalar nereye gider
İki konum ve veri dizinini değiştirirseniz ikisinden yalnızca biri sizi izler.
Veri dizininde (1. sorudaki): sürüm denetimindeki dosyalarınızın içeriği
(data/chunks altında), TLS sertifikası ve parmak izi (data/tls altında),
sunucu kimliği (server-id, last-validated-at), ilk yönetici parolası
(initial-admin-password, onu değiştirir değiştirmez silinir), PostgreSQL veritabanı
(pgdata) ve 2. soruya evet dediyseniz kurtarma kiti (recovery).
/etc/uversion/ içinde, ki hiç kımıldamaz: yapılandırma dosyası
config.toml, lisans anahtarının çıplak kopyası (licence-key) ve veritabanı
parolası (db-password).
Bu sayfadaki tüm komutlar, sabit kodlanmış bir yol yerine
<data-dir> kullanır, çünkü o yol sizin seçtiğiniz yoldur. Zaten
kurulmuş bir makinede gerçek değeri okumak için:
sudo sed -n 's/^WorkingDirectory=//p' /etc/systemd/system/uversion-server.service.d/10-data-dir.conf
Kurulumu doğrula
Şu sırayla geçilecek üç bağımsız denetim: servis çalışıyor, dinliyor ve hiçbir şey bildirmedi.
1. Servis çalışıyor
systemctl status uversion-server
Beklenen: active (running). Başka herhangi bir değer
sorun giderme'ye yönlendirir.
2. Sunucu 8443'te HTTPS dinliyor
ss -tlnp | grep 8443
Bir satır görünmelidir. Servis çalışırken hiçbir şey çıkmıyorsa, bu genellikle yapılandırmada TLS'nin devre dışı bırakıldığı anlamına gelir: sunucu o zaman düz HTTP'ye geçer ve 8443 hiç dinlemez olur.
3. Günlükler hata göstermiyor
sudo journalctl -u uversion-server -n 50
journalctl sistemin günlük okuyucusudur: sunucunun ne yaptığını yazdığı yer ve bir şey
başlamadığında ilk bakılacak yer burasıdır.
Sertifika parmak izini yeniden göster
<data-dir> yerine yukarıda okunan değeri koyarak:
sudo cat <data-dir>/data/tls/fingerprint
İlk yönetici parolasını yeniden göster
Değiştirilmediği sürece hâlâ disktedir:
sudo cat <data-dir>/initial-admin-password
Buradaki "No such file or directory", parolanın çoktan değiştirildiği anlamına gelir: bu beklenen davranıştır, dosya o anda silinir.
Etkileşimsiz ve çevrimdışı kurulum
İki farklı ihtiyaç, aynı tek bir mekanizma: apt'yi çalıştırmadan önce yanıtları
önceden doldurmak, böylece hiçbir soru görünmez. Bu yanıtları saklayan sisteme
debconf denir ve komut satırından yönetilir.
1. Üç yanıtı önceden doldur
Soru başına bir satır, tam olarak etkileşimli kurulumdaki üçü:
echo 'uversion-server uversion-server/data-dir string /srv/uversion' | sudo debconf-set-selections
echo 'uversion-server uversion-server/db-on-data-dir boolean true' | sudo debconf-set-selections
echo 'uversion-server uversion-server/licence-key string UV-XXXX-XXXX-XXXX' | sudo debconf-set-selections
2. İletişim kutusu olmadan kur
Yanıtlar zaten yerinde olduğundan, kurulum artık hiçbir şey sormaz:
sudo DEBIAN_FRONTEND=noninteractive apt install -y ./uversion-server_latest_amd64.deb
Çevrimdışı çeşit: kod yerine anahtarı ver
İnternet erişimi olmayan bir ağda, etkinleştirme kodu değiştirilemez: ulaşılacak kimse yoktur. O zaman tam lisans anahtarınızı bağlı bir istasyondaki hesap alanınızdan alın, makineye bırakın ve yukarıdaki 1. adımda kod yerine dosyanın yolunu verin. Tek çıkış yolu budur ve öngörülmüştür:
echo 'uversion-server uversion-server/licence-key string /root/uversion-licence.key' | sudo debconf-set-selections
Dosya, anahtarı tek başına, bir satırda, etrafında tırnak ya da başka içerik olmadan
içermelidir. Yanlışlıkla gösterilen bütün bir config.toml açıkça reddedilir. Bir dosya
bırakmak istemiyorsanız üçüncü olası biçim: tam anahtarı, yol yerine doğrudan değere yapıştırın.
Riskli her işlemden önce yedekle
Kopyalanacak üç şey var ve aynı şekilde yedeklenmezler: veritabanı (hesaplar, revizyonlar, kilitler, izinler), veri dizini (dosyaların içeriği) ve başka yerde yaşayan, unutulan yapılandırma.
1. Veritabanı
O, postgres hesabı olarak yedeklenir, asla root olarak değil: PostgreSQL'in
root adında bir "rolü" (veritabanı hesabı için kullandığı sözcük) yoktur, dolayısıyla
doğrudan root olarak çalıştırılan komut, aslında bir kimlik meselesiyken bir arıza gibi görünen bir
iletiyle başarısız olur.
Veritabanı sorusuna hayır (varsayılan) dediyseniz, o sistem kümesinde yaşar:
sudo -u postgres pg_dump -Fc uversion > /tmp/uversion.dump
Evet dediyseniz, ayrı bir kümede yaşar ve onu açıkça adlandırmak gerekir, yoksa yanlış olanı yedeklersiniz:
pg_lsclusters # repere la ligne "uversion" et sa version
sudo -u postgres pg_dump --cluster <major>/uversion -Fc uversion > /tmp/uversion.dump
2. Veri dizini
Tutarlı bir kopya için servis durdurulmuş hâlde:
sudo systemctl stop uversion-server
sudo tar czf /tmp/uversion-data.tar.gz -C <data-dir> .
sudo systemctl start uversion-server
3. Yapılandırma
/etc/uversion/ veri dizinini izlemez ve veritabanında değildir: lisans anahtarını,
oturumları imzalayan sırrı ve veritabanı parolasını taşır. O olmadan, yeni bir makinede bir geri yükleme
yeni bir sırla baştan başlar, dolayısıyla tüm ekip bir anda bağlantısı kesilir ve yeniden bir lisans
istemek gerekir.
sudo tar czf /tmp/uversion-etc.tar.gz -C /etc uversion
Kaldır
1. Paketi purge et
Purge, ikili dosyayı, servisi, yapılandırma yanıtlarını, /etc/uversion/ ve sistem hesabı
uversion'ı kaldırır. Veritabanını ve veri dizinini kasıtlı olarak korur:
bunlar sizin dosyalarınızdır, bir paket yöneticisi onları arkanızdan silmez.
sudo systemctl stop uversion-server 2>/dev/null
sudo apt purge -y uversion-server
Bu kaldırmanın ardından sudo apt autoremove --purge
çalıştırmayın. PostgreSQL bu paketin bağımlılığı olarak geldi, dolayısıyla apt onu kaldırmayı
önerir ve kendi purge'ü, uVersion ile hiç ilgisi olmayanlar dahil makinedeki tüm
veritabanlarını siler. Paket kurulumda korkuluklar koyar, ama komut yine de kaçınılması gereken bir
komut olarak kalır.
2. Purge'ün az önce gösterdiği diziyi izle
Veritabanı ve veri dizini hâlâ oradadır ve onları kaldıracak komutlar makinenize bağlıdır: işte bu yüzden buraya yazılmak yerine hesaplanır ve ekrana yazdırılır.
Purge'ün gösterdiğini okuyun: devamı makinenize bağlıdır. Kaldırma betiği veritabanınızın gerçekte nerede olduğuna bakar, sonra yollar ve sürüm numarası dahil sizin durumunuza tam uyan komut dizisini ekrana yazdırır. Genel bir tarif yerine onu izleyin: yaklaşık bir komut ya yanlış veritabanını yok eder ya da hiçbir şey yapmaz.
Bu dizinin önlediği ve neden bir kılavuzdan kopyalanmak yerine sizin için hesaplandığını açıklayan iki tuzak:
- Kümeyi adlandırmadan yapılan bir
DROP DATABASEyanlış veritabanı sunucusunu hedefler. Veritabanı sorusuna evet dediyseniz, sizinki özel bir kümede yaşar: varsayılan komut sistem kümesine yönelir, silecek bir şey bulamaz ve size işin bittiğini sandırır. - Kümeyi önce kaldırmadan veri dizininin
rm -rfedilmesi, sisteme hâlâ bildirilmiş bir hayalet veritabanı bırakır; bu, artık var olmayan bir dizini istediği için makine her açıldığında başarısız olur. Sıra önemlidir:pg_dropcluster --stop, sonra dizinin silinmesi.
3. Kurtarma kitini kaldır
Disk denetiminizden çıkması gerekiyorsa yapılır (yeniden satış, kiralama iadesi, hurdaya ayırma): bu dizin lisans anahtarınızı, JWT sırrını ve veritabanı parolasını içerir ve yapısı gereği purge'den sağ çıkar.
sudo rm -rf <data-dir>/recovery
4. Sistem hesabının gittiğinden emin ol
Normalde purge tarafından çoktan kaldırılmıştır. Kaybolmuşsa komutun hiçbir etkisi olmaz:
sudo deluser --system uversion 2>/dev/null || true
5. Hiçbir şey kalmadığını doğrula
Dört denetim, her biri karşısında okumanız gerekenle birlikte:
systemctl status uversion-server # "not-found" ou "inactive"
ls /etc/uversion 2>&1 # "No such file"
id uversion # "no such user"
sudo -u postgres psql -tAc "SELECT 1 FROM pg_database WHERE datname='uversion';" # (vide)