Kurulum

Toutadmin'i kurmak

Aynı ürünün iki sürümü: biri sunucunuzda bir servis olarak çalışır, diğeri paylaşımlı barındırmaya bırakılır. Zorunlu veritabanı yok, üçüncü taraf servis yok — ama varsa bir MySQL sunucusu da sürülür. Bir saat ayırın.

Avrupa'da barındırılır, kurulacak bir şey yoktur: beş çalışana kadar ücretsiz, ve ilk günden itibaren ürünün tamamı.

İndirme herkese açıktır

Ücretsiz formül SaaS ile bitmez: beş çalışana kadar ürünü pekâlâ kendi yerinize de kurabilirsiniz — kendi dosyalarınız, kendi veritabanınız, kendi yedekleriniz — hiçbir şey ödemeden. Formülü belirleyen çalışan sayısıdır, örneğin nerede çalıştığı değil. Beş çalışanın ötesinde bir abonelik gerekir; örnek ister bizde çalışsın, ister sizde.

Formülleri görmek

Hangisini kurmalı

Seçim, işlevsel ihtiyaçlarınıza değil barındırmanıza bağlıdır: iki sürüm tam olarak aynı işi yapar.

Node sürümü

Kendi yönettiğiniz bir sunucu için: bir makine, sürekli çalışan bir servis, önünde ters vekil sunucu.

Node 22, bir C derleyicisi, yerel bir disk. Birkaç düzine kişi için tek çekirdekli bir makine yeter. Varsa bir MySQL sunucusu yürütülür; yoksa SQLite hiçbir şey istemez.

PHP sürümü

Paylaşımlı barındırma için: yüklenecek bir klasör, doldurulacak bir dosya, zamanlanmış bir görev. Komut satırı gerekmez.

PHP 8.1 ve SQLite eklentisi. Kurulacak hiçbir bağımlılık yok: ne Composer, ne paket yöneticisi. Bir veritabanı sunucusu yeğliyorsanız ayrıca PDO MySQL eklentisi.

Seçim geri alınabilir kalır

İki sürüm aynı veritabanı şemasını ve aynı parola biçimini paylaşır. Birinden diğerine geçmek, bir veritabanı dosyasını ve beş klasörü kopyalamaktır: dönüştürme yoktur ve kimsenin parolasını değiştirmesi gerekmez.

SQLite mi MySQL mi

Peki hangi veritabanı

İkinci seçim, ve zor değiştirilen tek seçim. Sürümden bağımsızdır: ikisi de iki motoru kabul eder ve dört bileşim de aynı testlerden geçer.

SQLite

Sunucunun diskinde bir dosya. Kurulacak, yönetilecek, gözetilecek bir şey yok — ve örnek bir klasör kopyalanarak taşınır.

Varsayılan budur ve çoğu durumda doğru yanıttır: tek bir uygulama sunucusu ve yayımdan yayıma kalan yerel bir disk.

MySQL ya da MariaDB

Bir veritabanı sunucusu, aynı makinede ya da ağda başka bir yerde. Veri, bilgi işleminizin onu zaten yedeklediği, çoğalttığı ve izlediği yerde yaşar.

Üç nedenle alınır: aynı veritabanı üzerinde birden çok uygulama sunucusu, bunu şart koşan bir iç kural, ya da geçici bir uygulama diski — her yayımda yeniden kurulan bir kapsayıcı.

MySQL hız için yapılan bir seçim değildir

En yaygın inanış budur ve yanlıştır: SQLite sürecin içinde, MySQL bir yuvanın ardında yaşar. Burada iki bin işlem üzerinde ölçüldüğünde SQLite, işleme göre iki buçuk ila yüz elli kat daha hızlıdır — ve sekiz eşzamanlı yazanla bile karşılaştırmayı kaldırır. MySQL, verinin nerede yaşadığı ve kimin yönettiği için seçilir, yanıt süresi için değil.

Ayrıntısı, sayılarla

Beş dakikada

Hızlı kurulum

Sihirbazı açmaya yetecek kadarı. Ayrıntı hemen ardından gelir: adım adım, her komutun ne yaptığı ve neden yaptığıyla.

Node sürümü

Yönettiğiniz bir sunucuda üç komut. Sonuncusu bir kurulum jetonu üretir ve örneği başlatır.

git clone <votre-dépôt> toutadmin
cd toutadmin && npm ci --omit=dev
INSTALL_TOKEN=$(openssl rand -hex 16) \
NODE_ENV=production node src/server.js

PHP sürümü

Hiç komut satırı yok: bırakılacak bir klasör, kopyalanacak bir dosya, açılacak bir yazma hakkı.

# 1. déposer le dossier (racine web → public/)
# 2. cp config.sample.php config.php
# 3. chmod 770 data/
# 4. ouvrir https://votre-domaine/install

Gerisini sihirbaz yapar

Örnek boş başlar ve kendi üzerine kapanır: kurulmadığı sürece her adres sihirbaza çıkar, kurulduktan sonra sihirbaz temelli gider.

  1. 1 DilÖrneğin dili, on altı dil arasından. Sonra değişir, ve herkes kendi dilini korur.
  2. 2 ÖnkoşullarSihirbaz ayağının altındakine bakar: sürüm, yazma hakları, veritabanı, klasörler. Eksik olan adıyla söylenir, tahmin edilmez.
  3. 3 VeritabanıHiçbir şey istemeyen bir dosyada SQLite, ya da varsa MySQL / MariaDB. Sihirbaz kendini bağlamadan önce bağlantıyı dener.
  4. 4 KuruluşŞirketin adı ve yıllık izin hakkı. İki yanıt, sonradan değiştirilebilir.
  5. 5 Yöneticiİlk hesap. En az on iki karakter: başkalarını oluşturabilen tek hesap odur.
  6. 6 KurulumÖzet, ardından ekranda duyurulan dört aşamada kurulum. Sihirbaz kendini bir daha açılmamak üzere kapatır.
https://votre-domaine/install

Bağlantı noktasını açmadan önce kurulum jetonunu koyun

İlk başlatma ile sizin sihirbazdan geçişiniz arasında, yönetim hesabını ilk gelen oluştururdu. INSTALL_TOKEN bu pencereyi kapatır: o olmadan sihirbaz açılmayı reddeder.

Kurulum sihirbazı
Kurulum sihirbazı Kurulum sihirbazı
Node sürümü

Kendi sunucunuzda, dört adımda

  1. Almak ve kurmak

    npm install yerine npm ci: kilit dosyasının anlattığını birebir kurar. Bir sunucuda kayan bir sürüm, kimsenin anlayamadığı bir arızadır.

    git clone <votre-dépôt> /var/www/toutadmin
    cd /var/www/toutadmin
    npm ci --omit=dev
  2. Yapılandırmak

    Her şey ortam değişkenleriyle ayarlanır ve hiçbiri zorunlu değildir. Portu açmadan önce INSTALL_TOKEN koyun: ilk açılışla sihirbaza uğramanız arasında, yönetici hesabını ilk gelen oluştururdu.

    cp .env.example .env
    # PORT, NODE_ENV=production, INSTALL_TOKEN…
  3. Sisteme devretmek

    Elle başlatıldığında ürün, terminali kapattığınızda durur. Servis kendiliğinden yeniden başlar ve yalnızca kendi veri klasörüne yazabilir.

    sudo systemctl enable --now toutadmin
    journalctl -u toutadmin -f
  4. Bağlantıyı şifrelemek

    Uygulama portunu asla doğrudan internete açmayın. Vekil sunucunun ardında, örnek güvenlik başlıklarını kendi koyar — HSTS dahil, ve yalnızca hâlihazırda şifreli bir bağlantı üzerinde.

    sudo certbot --nginx -d intranet.exemple.fr
PHP sürümü

Paylaşımlı barındırmada, dört adımda

  1. Dosyaları yüklemek

    Yanlış yapılan adım budur. Sunucu klasörün tamamını sunarsa, veritabanı herkesçe indirilebilir hale gelir: hesaplar, parola özetleri ve kasa dahil.

    # déposer le dossier ; la racine web pointe sur public/, pas sur le dossier
  2. Yapılandırmayı yazmak

    Yapılandırmayı sihirbaz yazar ve bunu en sona bırakır: dosya var olmadığı sürece, yarıda kalmış bir kurulum ardında hiçbir şey bırakmamıştır. İçine örneğe özgü bir anahtar koyar; bu anahtar imzaları mühürler ve veritabanındaki sırları şifreler — onu da geri kalanla birlikte yedekleyin.

    cp config.sample.php config.php
    php -r "echo bin2hex(random_bytes(32));"   # session_secret
  3. Yazma izinlerini açmak

    SQLite veritabanının yanına komşu dosyalar yazar: yazılabilir olması gereken klasördür, yalnızca dosya değil. Ürünün geri kalanı salt okunur kalabilir.

    chmod 770 data/     # le dossier, pas seulement la base
  4. Süpürmeyi zamanlamak

    PHP sitesi yalnızca bir istek sırasında yaşar. Zamanlanmış görev süresi dolan sözleşmeleri kapatır, yinelenen faturaları keser, web kancalarını gönderir ve yedekleri oluşturur.

    * * * * * /usr/bin/php /var/www/toutadmin/tools/cron.php

Meslektaşlarınıza açmadan önce

Binadan çıkan bir yedek

Veritabanı küçükken hemen bir tane alın ve uzak hedefi ayarlayın. Koruduğu sunucuda kalan bir arşiv hiçbir şeyi korumaz.

Yetkisiz bir deneme hesabı

Onunla girip dolaşın. Aracı meslektaşlarınızın göreceği gibi görmenin tek yolu budur — ve en sık atlanan denetim de budur.

Bir değil, iki yönetici

İki adımlı doğrulamayı açar da hem telefonu hem kurtarma kodlarını yitirirseniz, kapıyı yalnızca başka bir yönetici açabilir. Arka kapı yoktur.

Eksiksiz kılavuz belgelerdedir

Bu sayfa ana hatları verir. Belgeler geri kalan her şeyi verir: ön uç sunucu yapılandırması, tam izinler, sertifikalar, geri yükleme, güncelleme, belirtiye göre sorun giderme — ve her sürüm için birer tane olmak üzere iki kılavuzun tamamı.

Ücretsiz başlayın, büyüdükçe plan değiştirin

İlk beş çalışan her zaman ücretsiz. Üstü için çalışan başına aylık 5 €. Denemek için kart gerekmez.