Konfiguracja wdrożeniowa systemu BPP (Bibliografia Publikacji Pracowników) — orkiestracja Docker Compose z monitoringiem, backupami i automatyczną konfiguracją.
Otwórz Terminal (zazwyczaj skrót Ctrl+Alt+T lub znajdziesz go w menu aplikacji).
Wybierz swoją dystrybucję i wpisz podane polecenia jedno po drugim:
Debian / Ubuntu
sudo apt update
sudo apt install -y git make openssl gettextZainstaluj Docker Engine — oficjalna instrukcja dla Debian lub Ubuntu (zawiera Docker Compose).
Fedora
sudo dnf install -y git make openssl gettextZainstaluj Docker Engine — oficjalna instrukcja dla Fedory (zawiera Docker Compose).
Arch Linux
sudo pacman -Sy --noconfirm git make openssl gettextZainstaluj Docker Engine:
sudo pacman -Sy --noconfirm docker docker-compose
sudo systemctl enable --now docker
sudo usermod -aG docker $USERWyloguj się i zaloguj ponownie, aby uprawnienia do Dockera zaczęły działać.
openSUSE
sudo zypper install -y git make openssl gettext-runtimeZainstaluj Docker Engine — oficjalna instrukcja dla SLES/openSUSE (zawiera Docker Compose).
Po zainstalowaniu narzędzi i Dockera, sklonuj repozytorium i przejdź do katalogu:
git clone https://github.com/iplweb/bpp-deploy.git
cd bpp-deployPodpowiedź: Możesz też zainstalować Docker poleceniem
make install-dockerpo sklonowaniu repo.
Otwórz Terminal — znajdziesz go w Finderze pod sciezką Aplikacje > Narzędzia > Terminal (albo wyszukaj "Terminal" przez Spotlight: Cmd+Spacja).
Zainstaluj Xcode Command Line Tools (zawiera git i make). Wpisz w Terminalu:
xcode-select --installPojawi się okno z prośbą o potwierdzenie — kliknij Zainstaluj i poczekaj na zakończenie.
Zainstaluj Docker Desktop dla macOS — pobierz ze strony, otwórz plik .dmg i przeciągnij Docker do folderu Aplikacje. Uruchom Docker Desktop i poczekaj, aż ikona w pasku menu przestanie się animować.
Zainstaluj envsubst (potrzebny do generowania konfiguracji). Jeśli nie masz jeszcze Homebrew, najpierw go zainstaluj, a potem wpisz w Terminalu:
brew install gettextSklonuj repozytorium i przejdź do katalogu:
git clone https://github.com/iplweb/bpp-deploy.git
cd bpp-deployPobierz i zainstaluj (klikając "Dalej" w instalatorach):
- Git for Windows — dostarcza Git Bash, czyli terminal z narzędziami Unix
- Docker Desktop for Windows — po instalacji uruchom Docker Desktop i poczekaj, aż ikona w zasobniku przestanie się animować
Zainstaluj GNU Make. Otwórz PowerShell jako Administrator (kliknij prawym przyciskiem na menu Start > "Terminal (Administrator)" lub "Windows PowerShell (Administrator)") i wpisz:
choco install makeJeśli nie masz Chocolatey, możesz zamiast tego użyć Scoop:
scoop install makeOtwórz Git Bash (znajdziesz go w menu Start po wpisaniu "Git Bash"). Wpisz:
git clone https://github.com/iplweb/bpp-deploy.git
cd bpp-deployWażne: Od tego momentu wszystkie komendy
makeuruchamiaj w Git Bash, nie w CMD ani PowerShell.
makePrzy pierwszym uruchomieniu make zapyta o ścieżkę do katalogu konfiguracyjnego — musi znajdować się poza repozytorium. Jego nazwa stanie się nazwą projektu Docker Compose.
=== BPP Deploy - pierwsze uruchomienie ===
Podaj sciezke do katalogu konfiguracyjnego instancji BPP.
Katalog musi znajdowac sie POZA repozytorium.
Przyklad: /home/deploy/publikacje-uczelnia
Sciezka: /home/deploy/moja-instancja
make automatycznie:
- utworzy strukturę katalogów konfiguracyjnych,
- skopiuje szablonowe pliki z
defaults/, - wygeneruje losowe hasła do bazy danych i RabbitMQ,
- utworzy plik
.envz konfiguracją.
Otwórz plik .env z katalogu konfiguracyjnego w dowolnym edytorze tekstu (np. Notepad, VS Code, nano, vim):
# Ścieżka wyświetli się po pierwszym uruchomieniu make, np.:
# /home/deploy/moja-instancja/.env
Co trzeba zmienić w .env:
DJANGO_BPP_HOSTNAME— właściwa nazwa hosta (np.publikacje.uczelnia.pl)DJANGO_BPP_CSRF_EXTRA_ORIGINS— dozwolone originy CSRF- Sprawdź wygenerowane hasła (opcjonalnie)
Dodaj certyfikaty SSL (lub wygeneruj samopodpisane):
# Opcja A: własne certyfikaty — skopiuj cert.pem i key.pem
# do podkatalogu ssl/ w katalogu konfiguracyjnym
# Opcja B: samopodpisane certyfikaty (snakeoil) do testów
make generate-snakeoil-certsmake runPo uruchomieniu make run główny serwis jest dostępny przez webserver (Nginx), który wystawia standardowe porty HTTP i HTTPS:
80:80443:443
Na Docker Desktop pod macOS oznacza to, że porty są mapowane na hosta macOS. Aplikację otwierasz więc w przeglądarce przez adres hosta, a nie przez wewnętrzne porty kontenerów.
Zalecane warianty konfiguracji lokalnej:
- ustaw
DJANGO_BPP_HOSTNAME=localhosti otwórzhttps://localhost/ - albo ustaw własną nazwę, np.
bpp.local, dodaj ją do/etc/hosts, a następnie otwórzhttps://bpp.local/
Uwaga: Nginx akceptuje tylko hostname zgodny z DJANGO_BPP_HOSTNAME. Jeśli w konfiguracji ustawisz inną nazwę hosta, wejście przez localhost może nie działać poprawnie mimo poprawnego mapowania portów.
Przy pierwszym uruchomieniu, jeśli baza danych jest pusta, aplikacja automatycznie przekieruje do /setup/. Jest to oczekiwane zachowanie kreatora konfiguracji początkowej, w którym tworzysz pierwsze konto administratora.
Dodatkowe narzędzia administracyjne i monitoring nie są wystawiane jako osobne porty hosta. Są dostępne przez Nginx pod ścieżkami:
https://<hostname>/grafana/https://<hostname>/flower/https://<hostname>/dozzle/https://<hostname>/rabbitmq/
~/
├── bpp-deploy/ # To repozytorium
│ ├── .env # Wskazuje katalog konfiguracyjny
│ ├── Makefile
│ ├── docker-compose.*.yml
│ ├── mk/ # Moduły Makefile
│ ├── defaults/ # Szablonowe pliki konfiguracyjne
│ └── tests/
│
├── moja-instancja/ # Katalog konfiguracyjny (BPP_CONFIGS_DIR)
│ ├── .env # Zmienne aplikacyjne (hasła, hostname)
│ ├── ssl/ # Certyfikaty SSL
│ ├── alloy/ # Konfiguracja Grafana Alloy
│ ├── prometheus/ # Konfiguracja Prometheus
│ ├── grafana/provisioning/ # Dashboardy i datasources Grafana
│ ├── rabbitmq/ # Pluginy RabbitMQ
│ ├── rclone/ # Konfiguracja backupów
│ └── dozzle/ # Użytkownicy Dozzle
│
└── backups/ # Backupy baz danych
make run # Pełne wdrożenie (pull, build, configs, up)
make up # Start wszystkich usług (force recreate)
make up-quick # Szybki start bez recreation
make stop # Zatrzymaj usługi
make restart-appserver # Restart serwera aplikacjimake migrate # Migracje Django (bezpiecznie zatrzymuje workery)
make db-backup # Backup bazy (równoległy pg_dump, tar.gz)
make dbshell # Django database shell
make dbshell-psql # Bezpośredni psqlmake health # Szybki healthcheck wszystkich usług
make logs-appserver # Logi serwera aplikacji
make logs-celery # Logi workerów Celery
make ps # Lista kontenerów
make celery-stats # Statystyki zadań Celerymake update-configs # Regeneruj datasources.yaml (envsubst)
make update-ssl-certs # Przeładuj nginx po zmianie certyfikatów
make init-configs # Uzupełnij brakujące pliki w katalogu konfiguracyjnym
make generate-snakeoil-certs # Wygeneruj samopodpisane certyfikaty SSLmake base-host-update-upgrade # Aktualizacja systemu (apt update + full-upgrade)
make base-host-reboot # Restart hosta
make install-docker # Instalacja Dockera na hoście| Usługa | Opis |
|---|---|
| appserver | Serwer aplikacji Django |
| authserver | Serwer uwierzytelniania dla nginx |
| dbserver | PostgreSQL |
| webserver | Nginx (reverse proxy + static files) |
| redis | Cache i broker Celery |
| rabbitmq | Broker wiadomości |
| workerserver-general | Ogólne zadania Celery |
| workerserver-denorm | Zadania denormalizacji |
| denorm-queue | Bridge PostgreSQL LISTEN → Celery (single instance!) |
| celerybeat | Harmonogram zadań okresowych |
| flower | UI monitorowania Celery (/flower) |
| grafana | Dashboardy i wizualizacje (/grafana) |
| prometheus | Metryki |
| loki | Agregacja logów |
| alloy | Kolektor logów z kontenerów Docker |
| dozzle | Przeglądarka logów w czasie rzeczywistym (/dozzle) |
| rclone | Backup do chmury |
| ofelia | Cron dla Dockera |
./tests/test_makefile.shTesty weryfikują:
- first-run setup (tworzenie konfiguracji, generowanie haseł)
- idempotentność
init-configs - losowość haseł między instancjami
- dostępność targetów Make w trybie normalnym
- poprawność bind mountów w docker-compose
- brak mechanizmów SCP w konfiguracji
Repozytorium używa pre-commit z następującymi hookami:
- trailing-whitespace, end-of-file-fixer — formatowanie
- check-yaml — walidacja YAML
- check-merge-conflict — wykrywanie konfliktów merge
- detect-private-key — blokada kluczy prywatnych
- shellcheck — linter bash
- TruffleHog — wykrywanie sekretów i haseł
pip install pre-commit
pre-commit installMIT

