Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Educational Docker Stack for CAR Mission (Bouar) / Autonomiczny Stack dla Misji w RCA

[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.


💾 Installing Raspberry Pi OS

Supported Storage

The system can be installed on:

  • NVMe SSD
  • SATA SSD connected via USB-UASP enclosure

SD cards are not recommended for production deployments.

Step 1 - Install Raspberry Pi OS

Using Raspberry Pi Imager:

  1. Select:
Raspberry Pi OS Lite (64-bit)
  1. Select target storage:

    • NVMe SSD
    • or SATA SSD
  2. Configure:

    • hostname
    • username
    • password
    • SSH enabled
  3. Write the image.

Step 2 - First Boot

Connect through SSH:

ssh USER@raspberrypi.local

Verify storage:

lsblk

Step 3 - Update System

sudo apt update
sudo apt full-upgrade -y
sudo reboot

Verify operating system:

cat /etc/os-release

✅ Prerequisites

Install Git:

sudo apt install -y git

Install Docker:

curl -fsSL https://get.docker.com | sh

Add current user to Docker group:

sudo usermod -aG docker $USER

Reboot:

sudo reboot

Verify installation:

docker --version
docker compose version

🏗 Storage and Reliability Design

Target Architecture

SSD 1
+
SSD 2
↓
Btrfs RAID1
↓
compress=zstd:3
↓
Docker
↓
Educational Services

Storage Design

Target deployment uses:

  • Btrfs filesystem
  • RAID1 redundancy
  • SSD storage
  • Zstandard compression

Recommended mount option:

compress=zstd:3

Data Protection Layers

  1. RAID1 redundancy
  2. Btrfs snapshots
  3. External backups

Important:

RAID1 is NOT a backup.
Snapshots are NOT backups.

UPS

UPS functionality provides:

  • battery monitoring
  • graceful shutdown
  • filesystem protection

🚀 Architecture Overview

Components:

  • Nginx
  • Moodle
  • MariaDB
  • Kolibri
  • Rachel
  • Kiwix
  • Umami
  • PostgreSQL

Goals:

  • Offline education
  • Knowledge distribution
  • Low-bandwidth operation
  • Educational analytics

🛠 Deployment Strategy

Clone repository:

git clone <repository-url>
cd <repository-directory>

Create configuration:

cp .env.example .env

Edit configuration and fill required credentials.

Start stack:

docker compose up -d

Verify services:

docker ps

Check logs:

docker compose logs -f

Stop stack:

docker compose down

Restart stack:

docker compose restart

🔄 Recovery Philosophy

A complete deployment should be recoverable using only:

  • Raspberry Pi OS Lite
  • Docker
  • This repository
  • Backup files

Long-term goal:

git clone ...
./install.sh
./restore.sh

without any manual configuration.


📚 Additional Documentation

  • docs/storage.md

🇵🇱 Polska Wersja

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.


💾 Instalacja Raspberry Pi OS

Obsługiwane Nośniki

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ń.

Krok 1 - Instalacja Raspberry Pi OS

Za pomocą Raspberry Pi Imager:

  1. Wybierz:
Raspberry Pi OS Lite (64-bit)
  1. Wybierz nośnik:

    • NVMe SSD
    • lub SSD SATA
  2. Skonfiguruj:

    • hostname
    • użytkownika
    • hasło
    • SSH
  3. Wgraj system.

Krok 2 - Pierwsze Uruchomienie

Połącz się przez SSH:

ssh UZYTKOWNIK@raspberrypi.local

Sprawdź wykryte dyski:

lsblk

Krok 3 - Aktualizacja Systemu

sudo apt update
sudo apt full-upgrade -y
sudo reboot

Sprawdź wersję systemu:

cat /etc/os-release

✅ Wymagania Wstępne

Zainstaluj Git:

sudo apt install -y git

Zainstaluj Docker:

curl -fsSL https://get.docker.com | sh

Dodaj użytkownika do grupy Docker:

sudo usermod -aG docker $USER

Uruchom system ponownie:

sudo reboot

Zweryfikuj instalację:

docker --version
docker compose version

🏗 Architektura Pamięci i Niezawodności

Architektura Docelowa

SSD 1
+
SSD 2
↓
Btrfs RAID1
↓
compress=zstd:3
↓
Docker
↓
Usługi Edukacyjne

Pamięć Masowa

Docelowa konfiguracja wykorzystuje:

  • Btrfs
  • RAID1
  • dyski SSD
  • kompresję Zstandard

Zalecane ustawienie:

compress=zstd:3

Warstwy Ochrony Danych

  1. RAID1
  2. Snapshoty Btrfs
  3. Kopie zapasowe

Ważne:

RAID1 NIE jest kopią zapasową.
Snapshot NIE jest kopią zapasową.

UPS

UPS zapewnia:

  • monitorowanie baterii
  • bezpieczne wyłączanie systemu
  • ochronę systemu plików podczas zaniku zasilania

🚀 Przegląd Architektury

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

🛠 Strategia Wdrożenia

Sklonuj repozytorium:

git clone <repository-url>
cd <repository-directory>

Utwórz konfigurację:

cp .env.example .env

Uzupełnij wymagane hasła i ustawienia.

Uruchom usługi:

docker compose up -d

Sprawdź uruchomione kontenery:

docker ps

Sprawdź logi:

docker compose logs -f

Zatrzymaj usługi:

docker compose down

Uruchom ponownie:

docker compose restart

🔄 Filozofia Odtwarzania

Kompletne ś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.sh

bez potrzeby wykonywania dodatkowej ręcznej konfiguracji.


📚 Dodatkowa Dokumentacja

  • docs/storage.md

About

Offline-first educational hub for low-bandwidth edge servers. Features digital library (RACHEL/Kiwix), e-learning platform (Moodle), multimedia academy (Kolibri), and server analytics (Umami).

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages