[PL] Polska wersja opisu znajduje się w dolnej części tego dokumentu.
This repo contains IaC config for a decentralized educational stack in CAR, using Moodle, Kolibri, and Umami, optimized for low-bandwidth environments.
The system can be installed on:
- NVMe SSD
- SATA SSD connected via USB-UASP enclosure
SD cards are not recommended for production deployments.
Using Raspberry Pi Imager:
- Select:
Raspberry Pi OS Lite (64-bit)
-
Select target storage:
- NVMe SSD
- or SATA SSD
-
Configure:
- hostname
- username
- password
- SSH enabled
-
Write the image.
Connect through SSH:
ssh USER@raspberrypi.localVerify storage:
lsblksudo apt update
sudo apt full-upgrade -y
sudo rebootVerify operating system:
cat /etc/os-releaseInstall Git:
sudo apt install -y gitInstall Docker:
curl -fsSL https://get.docker.com | shAdd current user to Docker group:
sudo usermod -aG docker $USERReboot:
sudo rebootVerify installation:
docker --version
docker compose versionSSD 1
+
SSD 2
↓
Btrfs RAID1
↓
compress=zstd:3
↓
Docker
↓
Educational Services
Target deployment uses:
- Btrfs filesystem
- RAID1 redundancy
- SSD storage
- Zstandard compression
Recommended mount option:
compress=zstd:3
- RAID1 redundancy
- Btrfs snapshots
- External backups
Important:
RAID1 is NOT a backup.
Snapshots are NOT backups.
UPS functionality provides:
- battery monitoring
- graceful shutdown
- filesystem protection
Components:
- Nginx
- Moodle
- MariaDB
- Kolibri
- Rachel
- Kiwix
- Umami
- PostgreSQL
Goals:
- Offline education
- Knowledge distribution
- Low-bandwidth operation
- Educational analytics
Clone repository:
git clone <repository-url>
cd <repository-directory>Create configuration:
cp .env.example .envEdit configuration and fill required credentials.
Start stack:
docker compose up -dVerify services:
docker psCheck logs:
docker compose logs -fStop stack:
docker compose downRestart stack:
docker compose restartA complete deployment should be recoverable using only:
- Raspberry Pi OS Lite
- Docker
- This repository
- Backup files
Long-term goal:
git clone ...
./install.sh
./restore.shwithout any manual configuration.
- docs/storage.md
Repozytorium zawiera konfigurację Infrastructure as Code (IaC) dla zdecentralizowanej platformy edukacyjnej wdrożonej w Republice Środkowoafrykańskiej (RCA). System został zaprojektowany do pracy offline i przy bardzo ograniczonym dostępie do Internetu.
System może zostać zainstalowany na:
- dysku NVMe
- dysku SSD SATA podłączonym przez obudowę USB-UASP
Karty SD nie są zalecane do produkcyjnych wdrożeń.
Za pomocą Raspberry Pi Imager:
- Wybierz:
Raspberry Pi OS Lite (64-bit)
-
Wybierz nośnik:
- NVMe SSD
- lub SSD SATA
-
Skonfiguruj:
- hostname
- użytkownika
- hasło
- SSH
-
Wgraj system.
Połącz się przez SSH:
ssh UZYTKOWNIK@raspberrypi.localSprawdź wykryte dyski:
lsblksudo apt update
sudo apt full-upgrade -y
sudo rebootSprawdź wersję systemu:
cat /etc/os-releaseZainstaluj Git:
sudo apt install -y gitZainstaluj Docker:
curl -fsSL https://get.docker.com | shDodaj użytkownika do grupy Docker:
sudo usermod -aG docker $USERUruchom system ponownie:
sudo rebootZweryfikuj instalację:
docker --version
docker compose versionSSD 1
+
SSD 2
↓
Btrfs RAID1
↓
compress=zstd:3
↓
Docker
↓
Usługi Edukacyjne
Docelowa konfiguracja wykorzystuje:
- Btrfs
- RAID1
- dyski SSD
- kompresję Zstandard
Zalecane ustawienie:
compress=zstd:3
- RAID1
- Snapshoty Btrfs
- Kopie zapasowe
Ważne:
RAID1 NIE jest kopią zapasową.
Snapshot NIE jest kopią zapasową.
UPS zapewnia:
- monitorowanie baterii
- bezpieczne wyłączanie systemu
- ochronę systemu plików podczas zaniku zasilania
Komponenty:
- Nginx
- Moodle
- MariaDB
- Kolibri
- Rachel
- Kiwix
- Umami
- PostgreSQL
Cele:
- edukacja offline
- lokalna dystrybucja wiedzy
- praca przy ograniczonym dostępie do Internetu
- statystyki wykorzystania treści edukacyjnych
Sklonuj repozytorium:
git clone <repository-url>
cd <repository-directory>Utwórz konfigurację:
cp .env.example .envUzupełnij wymagane hasła i ustawienia.
Uruchom usługi:
docker compose up -dSprawdź uruchomione kontenery:
docker psSprawdź logi:
docker compose logs -fZatrzymaj usługi:
docker compose downUruchom ponownie:
docker compose restartKompletne środowisko powinno dać się odtworzyć przy użyciu wyłącznie:
- Raspberry Pi OS Lite
- Docker
- repozytorium Git
- backupu
Docelowo proces powinien sprowadzać się do:
git clone ...
./install.sh
./restore.shbez potrzeby wykonywania dodatkowej ręcznej konfiguracji.
- docs/storage.md