Cài đặt

Cài đặt Toutadmin

Hai bản của cùng một sản phẩm: một bản chạy như dịch vụ trên máy chủ của bạn, bản kia chỉ cần đặt lên hosting dùng chung. Không bắt buộc cơ sở dữ liệu, không cần dịch vụ bên thứ ba — nhưng vẫn dùng được máy chủ MySQL nếu bạn có. Hãy dành một giờ.

Đặt tại châu Âu, không phải cài gì: miễn phí đến năm nhân viên, và trọn sản phẩm ngay từ ngày đầu.

Ai cũng tải về được

Gói miễn phí không dừng ở SaaS: đến năm nhân viên, bạn hoàn toàn có thể cài sản phẩm ngay tại chỗ mình — tệp của bạn, cơ sở dữ liệu của bạn, bản sao lưu của bạn — mà không phải trả gì. Quyết định gói là số nhân sự, chứ không phải nơi bản chạy đặt ở đâu. Quá năm nhân viên thì cần một thuê bao, dù bản chạy đặt ở chỗ chúng tôi hay ở chỗ bạn.

Xem các gói

Nên cài bản nào

Lựa chọn tuỳ theo nơi đặt máy chủ, không tuỳ theo nhu cầu nghiệp vụ: hai bản làm đúng những việc như nhau.

Bản Node

Dành cho máy chủ bạn tự quản trị: một máy, một dịch vụ chạy thường trực, phía trước là một proxy ngược.

Node 22, một trình biên dịch C, một ổ đĩa cục bộ. Một máy một nhân đủ cho vài chục người. Máy chủ MySQL được hỗ trợ nếu bạn có; nếu không, SQLite chẳng đòi hỏi gì.

Bản PHP

Dành cho hosting dùng chung: một thư mục để tải lên, một tệp để điền, một tác vụ định kỳ. Không cần dòng lệnh.

PHP 8.1 và phần mở rộng SQLite. Không phải cài phụ thuộc nào: không Composer, không trình quản lý gói. Thêm phần mở rộng PDO MySQL nếu bạn muốn một máy chủ cơ sở dữ liệu.

Lựa chọn vẫn có thể đảo lại

Hai bản dùng chung một lược đồ cơ sở dữ liệu và một định dạng mật khẩu. Chuyển từ bản này sang bản kia là chép một tệp cơ sở dữ liệu và năm thư mục: không có bước chuyển đổi, và không ai phải đổi mật khẩu.

SQLite hay MySQL

Và cơ sở dữ liệu nào

Lựa chọn thứ hai, và là lựa chọn duy nhất khó đổi. Nó không phụ thuộc vào bản: cả hai đều chấp nhận cả hai bộ máy, và bốn tổ hợp đều qua cùng những bài kiểm thử.

SQLite

Một tệp trên đĩa của máy chủ. Không có gì để cài, để quản, để canh — và thể hiện dời đi chỉ bằng cách chép một thư mục.

Đó là mặc định, và là câu trả lời đúng trong phần lớn trường hợp: một máy chủ ứng dụng, và một đĩa cục bộ còn lại qua các lần triển khai.

MySQL hoặc MariaDB

Một máy chủ cơ sở dữ liệu, trên cùng máy hoặc ở nơi khác trong mạng. Dữ liệu sống ở chỗ mà bộ phận tin học của bạn vốn đã sao lưu, nhân bản và giám sát.

Chọn nó vì ba lẽ: nhiều máy chủ ứng dụng trên cùng một cơ sở, một quy định nội bộ buộc như vậy, hoặc một đĩa ứng dụng phù du — vùng chứa được dựng lại sau mỗi lần triển khai.

MySQL không phải lựa chọn vì tốc độ

Đó là niềm tin phổ biến nhất, và nó sai: SQLite sống bên trong tiến trình, MySQL sống sau một socket. Đo tại chỗ trên hai nghìn thao tác, SQLite nhanh hơn từ hai lần rưỡi đến một trăm năm mươi lần tuỳ thao tác — và vẫn đứng vững khi có tám tiến trình ghi cùng lúc. Người ta chọn MySQL vì nơi dữ liệu sống và vì ai quản nó, chứ không vì thời gian đáp.

Chi tiết, kèm con số

Trong năm phút

Cài đặt nhanh

Vừa đủ để mở trình trợ giúp. Chi tiết đến ngay sau đó, từng bước một, kèm việc mỗi lệnh làm gì và vì sao.

Bản Node

Ba lệnh trên máy chủ do bạn quản trị. Lệnh cuối sinh ra một thẻ cài đặt và khởi động bản chạy.

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

Bản PHP

Không cần dòng lệnh nào: một thư mục để tải lên, một tệp để chép, một quyền ghi để mở.

# 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

Rồi trình trợ giúp làm phần còn lại

Bản chạy khởi động rỗng và khép lại quanh chính nó: khi chưa cài xong, mọi địa chỉ đều dẫn tới trình trợ giúp; cài xong rồi thì nó biến mất hẳn.

  1. 1 Ngôn ngữNgôn ngữ của bản chạy, trong mười sáu thứ tiếng. Đổi được về sau, và ai cũng giữ tiếng của mình.
  2. 2 Điều kiện cầnTrình trợ giúp xem nó đang đứng trên cái gì: phiên bản, quyền ghi, cơ sở dữ liệu, thư mục. Thiếu gì thì gọi tên ra, không đoán.
  3. 3 Cơ sở dữ liệuSQLite trong một tệp, chẳng đòi hỏi gì, hoặc MySQL / MariaDB nếu bạn có sẵn. Trình hướng dẫn thử kết nối trước khi gắn mình vào đó.
  4. 4 Tổ chứcTên doanh nghiệp và số ngày phép mỗi năm. Hai câu trả lời, sửa được về sau.
  5. 5 Quản trị viênTài khoản đầu tiên. Tối thiểu mười hai ký tự: đó là tài khoản duy nhất tạo được tài khoản khác.
  6. 6 Cài đặtBản tóm tắt, rồi việc dựng đặt qua bốn chặng được báo trên màn hình. Trình hướng dẫn đóng lại vĩnh viễn.
https://votre-domaine/install

Đặt thẻ cài đặt trước khi mở cổng

Giữa lần khởi động đầu tiên và lúc bạn vào trình trợ giúp, ai đến trước sẽ tạo được tài khoản quản trị. INSTALL_TOKEN đóng cửa sổ ấy lại: không có nó, trình trợ giúp không chịu mở.

Trình trợ giúp cài đặt
Trình trợ giúp cài đặt Trình trợ giúp cài đặt
Bản Node

Trên máy chủ của bạn, bốn bước

  1. Lấy về và cài

    Dùng npm ci thay cho npm install: nó cài đúng những gì tệp khoá mô tả. Trên máy chủ, một phiên bản trượt đi là sự cố không ai hiểu nổi.

    git clone <votre-dépôt> /var/www/toutadmin
    cd /var/www/toutadmin
    npm ci --omit=dev
  2. Cấu hình

    Mọi thứ đặt bằng biến môi trường, và không biến nào bắt buộc. Hãy đặt INSTALL_TOKEN trước khi mở cổng: giữa lần khởi động đầu tiên và lúc bạn vào trình cài đặt, ai đến trước sẽ tạo được tài khoản quản trị.

    cp .env.example .env
    # PORT, NODE_ENV=production, INSTALL_TOKEN…
  3. Giao cho hệ thống

    Chạy bằng tay thì sản phẩm dừng ngay khi bạn đóng cửa sổ lệnh. Dịch vụ tự khởi động lại, và chỉ được ghi vào thư mục dữ liệu của nó.

    sudo systemctl enable --now toutadmin
    journalctl -u toutadmin -f
  4. Mã hoá đường truyền

    Đừng bao giờ đưa cổng ứng dụng thẳng ra internet. Sau proxy, bản cài tự đặt các tiêu đề bảo mật — kể cả HSTS, và chỉ trên kết nối đã mã hoá.

    sudo certbot --nginx -d intranet.exemple.fr
Bản PHP

Trên hosting dùng chung, bốn bước

  1. Tải tệp lên

    Đây là bước hay sai. Nếu máy chủ phục vụ cả thư mục, cơ sở dữ liệu trở thành thứ ai cũng tải được: tài khoản, bản băm mật khẩu và két sắt, tất cả.

    # déposer le dossier ; la racine web pointe sur public/, pas sur le dossier
  2. Viết cấu hình

    Chính trình hướng dẫn ghi cấu hình, và ghi sau cùng: chừng nào tệp chưa tồn tại, một lần cài dở dang chưa để lại gì. Nó đặt vào đó một khoá riêng của phiên bản, khoá này niêm phong chữ ký và mã hoá các bí mật trong cơ sở dữ liệu — hãy sao lưu nó cùng phần còn lại.

    cp config.sample.php config.php
    php -r "echo bin2hex(random_bytes(32));"   # session_secret
  3. Mở quyền ghi

    SQLite ghi thêm tệp bên cạnh cơ sở dữ liệu: thứ phải ghi được là thư mục, không chỉ riêng tệp. Phần còn lại của sản phẩm có thể để chỉ đọc.

    chmod 770 data/     # le dossier, pas seulement la base
  4. Đặt lịch chạy quét

    Một trang PHP chỉ sống trong lúc có yêu cầu. Tác vụ định kỳ đóng các hợp đồng hết hạn, phát hành hoá đơn định kỳ, gửi webhook và tạo bản sao lưu.

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

Trước khi mở cho đồng nghiệp

Một bản sao lưu rời khỏi toà nhà

Hãy tạo ngay một bản khi cơ sở dữ liệu còn nhỏ, và cấu hình nơi lưu từ xa. Một kho lưu nằm lại trên chính máy chủ mà nó bảo vệ thì chẳng bảo vệ được gì.

Một tài khoản thử không có quyền gì

Đăng nhập bằng nó và đi một vòng. Đó là cách duy nhất để nhìn sản phẩm như đồng nghiệp sẽ nhìn — và cũng là bước kiểm tra hay bị bỏ qua nhất.

Hai quản trị viên, không phải một

Nếu bạn bật xác thực hai bước rồi mất cả điện thoại lẫn mã dự phòng, chỉ một quản trị viên khác mới mở lại cửa cho bạn được. Không có cửa sau.

Hướng dẫn đầy đủ nằm trong tài liệu

Trang này cho bạn khung sườn. Tài liệu cho tất cả phần còn lại: cấu hình máy chủ phía trước, quyền chính xác, chứng chỉ, khôi phục, nâng cấp, khắc phục sự cố theo triệu chứng — và trọn vẹn hai hướng dẫn, mỗi bản một.

Bắt đầu miễn phí, đổi gói khi bạn lớn lên

Năm nhân viên đầu tiên luôn miễn phí. Trên mức đó, 5 € mỗi nhân viên mỗi tháng. Không cần thẻ để dùng thử.