uVersion
Türkçe
İndir →

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.

Debian kurulum programının ilk sorusu, tam ekran mavi bir iletişim kutusunda: veri dizininin yolu, /var/lib/uversion ile önceden doldurulmuş.

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.

Kurulumun sonunda gösterilen özet: admin kullanıcı adı, geçici parola ve sunucu adresi.

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 /home altında, ne de /root altı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 Book gibi bir adla otomatik bağlanan bir dış disk tam da buna takılır.
  • Mutlak bir yol, yani / ile başlayan.
  • Her üst dizin, uversion ve postgres hesaplarını geçirmelidir. Bu en az belli olan tuzaktır ve root olarak kurarken görünmez: elle oluşturulmuş ve kapatılmış bir üst dizin (örneğin bir Helix deposundan miras kalan root:root 0750'lik bir /perforce) tüm kurulumu geçirir, sonra ilk erişimde servisi bloke eder. Belirti, status=200/CHDIR ile 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

Dikkat: bu komutlar depolarınızı, geçmişinizi, kullanıcı hesaplarınızı ve yapılandırmalarınızı siler. Geri dönebilmek istiyorsanız önce bir önceki bölümün yedeğini alın.

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 DATABASE yanlış 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 -rf edilmesi, 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)