Instalacja

Instalacja Toutadmin

Dwie edycje tego samego produktu: jedna działa jako usługa na Twoim serwerze, druga wgrywa się na hosting współdzielony. Bez wymaganej bazy danych, bez usług obcych — ale serwer MySQL jest obsługiwany, jeśli go masz. Licz na godzinę.

Hostowane w Europie, nic do instalowania: za darmo do pięciu pracowników i cały produkt od pierwszego dnia.

Pobranie jest otwarte dla wszystkich

Formuła darmowa nie kończy się na SaaS: do pięciu pracowników możesz równie dobrze postawić produkt u siebie — własne pliki, własna baza, własne kopie — nic nie płacąc. O formule rozstrzyga liczba pracowników, a nie miejsce, w którym działa instancja. Powyżej pięciu pracowników potrzebny jest abonament — czy instancja działa u nas, czy u ciebie.

Zobaczyć formuły

Którą zainstalować

Wybór zależy od hostingu, nie od potrzeb funkcjonalnych: obie edycje robią dokładnie to samo.

Edycja Node

Dla serwera, którym sam zarządzasz: jedna maszyna, stale działająca usługa, serwer pośredniczący z przodu.

Node 22, kompilator C, dysk lokalny. Maszyna z jednym rdzeniem wystarczy kilkudziesięciu osobom. Serwer MySQL jest obsługiwany, jeśli go masz; w przeciwnym razie SQLite niczego nie wymaga.

Edycja PHP

Dla hostingu współdzielonego: katalog do wgrania, plik do wypełnienia, zadanie cykliczne. Wiersz poleceń nie jest potrzebny.

PHP 8.1 i rozszerzenie SQLite. Żadnej zależności do zainstalowania: ani Composera, ani menedżera pakietów. Do tego rozszerzenie PDO MySQL, jeśli wolisz serwer bazy danych.

Wybór pozostaje odwracalny

Obie edycje mają ten sam schemat bazy i ten sam format haseł. Przejście z jednej na drugą to skopiowanie pliku bazy i pięciu katalogów: nie ma żadnej konwersji, a nikt nie musi zmieniać hasła.

SQLite czy MySQL

I jaka baza danych

Drugi wybór — i jedyny, który trudno zmienić. Nie zależy od edycji: obie przyjmują oba silniki, a wszystkie cztery kombinacje przechodzą te same testy.

SQLite

Jeden plik na dysku serwera. Nic do instalowania, nic do administrowania, nic do pilnowania — a instancję przenosi się, kopiując katalog.

To wartość domyślna i w większości przypadków właściwa odpowiedź: jeden serwer aplikacji i dysk lokalny, który trwa od wdrożenia do wdrożenia.

MySQL albo MariaDB

Serwer bazy danych, na tej maszynie albo gdzie indziej w sieci. Dane mieszkają tam, gdzie twój dział informatyczny już je archiwizuje, replikuje i nadzoruje.

Do wzięcia z trzech powodów: kilka serwerów aplikacji na jednej bazie, wewnętrzna polityka, która tego wymaga, albo ulotny dysk aplikacyjny — kontener odtwarzany przy każdym wdrożeniu.

MySQL nie jest wyborem na szybkość

To najbardziej rozpowszechnione przekonanie i jest fałszywe: SQLite żyje w procesie, MySQL za gniazdem. Zmierzone u nas na dwóch tysiącach operacji, SQLite jest od dwóch i pół do stu pięćdziesięciu razy szybszy zależnie od operacji — i wytrzymuje porównanie nawet przy ośmiu jednoczesnych piszących. MySQL wybiera się ze względu na to, gdzie mieszkają dane i kto nimi zarządza, a nie na czas odpowiedzi.

Szczegóły, z liczbami

W pięć minut

Szybka instalacja

Tyle, by otworzyć kreatora. Szczegóły przychodzą zaraz potem, krok po kroku, z tym, co robi każde polecenie i dlaczego.

Edycja Node

Trzy polecenia na serwerze, którym zarządzasz. Ostatnie tworzy żeton instalacyjny i uruchamia instancję.

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

Edycja PHP

Żadnej linii poleceń: katalog do wgrania, plik do skopiowania, prawo zapisu do otwarcia.

# 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

Resztę robi kreator

Instancja startuje pusta i zamyka się wokół siebie: dopóki nie jest zainstalowana, każdy adres prowadzi do kreatora, a po instalacji kreator znika na dobre.

  1. 1 JęzykJęzyk instancji, spośród szesnastu. Zmienia się później, a każdy zachowuje swój.
  2. 2 WymaganiaKreator sprawdza, na czym stoi: wersja, prawa zapisu, baza, katalogi. To, czego brakuje, jest nazwane, a nie zgadywane.
  3. 3 Baza danychSQLite w pliku, który niczego nie wymaga, albo MySQL / MariaDB, jeśli go masz. Kreator próbuje połączenia, zanim się na nie zdecyduje.
  4. 4 OrganizacjaNazwa firmy i roczny wymiar urlopu. Dwie odpowiedzi, później do zmiany.
  5. 5 AdministratorPierwsze konto. Co najmniej dwanaście znaków: to jedyne konto, które może tworzyć kolejne.
  6. 6 InstalacjaPodsumowanie, a potem zakładanie w czterech etapach zapowiadanych na ekranie. Kreator zamyka się na dobre.
https://votre-domaine/install

Ustaw żeton instalacyjny, zanim otworzysz port

Między pierwszym uruchomieniem a twoim wejściem do kreatora konto administracyjne założyłby ten, kto przyjdzie pierwszy. INSTALL_TOKEN zamyka to okno: bez niego kreator odmawia otwarcia.

Kreator instalacji
Kreator instalacji Kreator instalacji
Edycja Node

Na własnym serwerze, w czterech krokach

  1. Pobrać i zainstalować

    npm ci zamiast npm install: instaluje dokładnie to, co opisuje plik blokady. Na serwerze wersja, która się przesunie, to awaria, której nikt nie rozumie.

    git clone <votre-dépôt> /var/www/toutadmin
    cd /var/www/toutadmin
    npm ci --omit=dev
  2. Skonfigurować

    Wszystko ustawia się zmiennymi środowiskowymi i żadna nie jest obowiązkowa. Ustaw INSTALL_TOKEN przed otwarciem portu: między pierwszym uruchomieniem a Twoim wejściem do kreatora konto administratora założyłby ten, kto trafi pierwszy.

    cp .env.example .env
    # PORT, NODE_ENV=production, INSTALL_TOKEN…
  3. Oddać systemowi

    Uruchomiony ręcznie produkt kończy pracę, gdy zamkniesz terminal. Usługa wstaje sama i ma prawo zapisu wyłącznie w swoim katalogu danych.

    sudo systemctl enable --now toutadmin
    journalctl -u toutadmin -f
  4. Zaszyfrować połączenie

    Nigdy nie wystawiaj portu aplikacji wprost do internetu. Za serwerem pośredniczącym instancja sama ustawia nagłówki bezpieczeństwa — w tym HSTS, i tylko na połączeniu już zaszyfrowanym.

    sudo certbot --nginx -d intranet.exemple.fr
Edycja PHP

Na hostingu współdzielonym, w czterech krokach

  1. Wgrać pliki

    To krok, na którym się myli. Jeśli serwer udostępnia cały katalog, bazę danych może pobrać każdy: konta, skróty haseł i sejf włącznie.

    # déposer le dossier ; la racine web pointe sur public/, pas sur le dossier
  2. Zapisać konfigurację

    To kreator zapisuje konfigurację, i robi to na końcu: dopóki plik nie istnieje, przerwana instalacja nie zostawiła po sobie niczego. Umieszcza w nim klucz właściwy instancji, który pieczętuje podpisy i szyfruje sekrety w bazie — zachowaj go razem z resztą.

    cp config.sample.php config.php
    php -r "echo bin2hex(random_bytes(32));"   # session_secret
  3. Otworzyć prawa zapisu

    SQLite zapisuje pliki sąsiadujące z bazą: zapisywalny musi być katalog, nie tylko plik. Reszta produktu może zostać tylko do odczytu.

    chmod 770 data/     # le dossier, pas seulement la base
  4. Zaplanować przebieg

    Witryna PHP żyje tylko w trakcie żądania. Zadanie cykliczne zamyka wygasłe umowy, wystawia faktury cykliczne, wysyła webhooki i tworzy kopie zapasowe.

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

Zanim otworzysz dla współpracowników

Kopia, która wychodzi poza budynek

Zrób ją od razu, póki baza jest mała, i skonfiguruj cel zdalny. Archiwum, które zostaje na serwerze, który chroni, nie chroni niczego.

Konto próbne bez uprawnień

Zaloguj się na nie i rozejrzyj. Tylko tak zobaczysz narzędzie tak, jak zobaczą je współpracownicy — i to właśnie tę kontrolę najczęściej się pomija.

Dwóch administratorów, nie jeden

Jeśli włączysz uwierzytelnianie dwuskładnikowe i zgubisz zarówno telefon, jak i kody zapasowe, otworzyć Ci drzwi może tylko drugi administrator. Tylnych drzwi nie ma.

Pełny przewodnik jest w dokumentacji

Ta strona daje zarys. Dokumentacja daje całą resztę: konfigurację serwera frontowego, dokładne uprawnienia, certyfikaty, odtwarzanie, aktualizację, rozwiązywanie problemów według objawu — oraz oba przewodniki w całości, po jednym na edycję.

Zacznij za darmo, zmień plan, gdy urośniesz

Pierwszych pięciu pracowników jest zawsze za darmo. Powyżej — 5 € za pracownika miesięcznie. Żadnej karty, żeby spróbować.