-
Notifications
You must be signed in to change notification settings - Fork 0
Instrukcja instalacji
# git clone https://github.com/LiquidPL/docker-sio2.git
# cd docker-sio2
# cp .env.example .env
# cp .oioioi.env.example .env
Zmienne środowiskowe konfigurujące aplikację znajdują się we wcześniej utworzonych plikach .env
oraz .oioioi.env
.
Większość ważnych zmiennych które należy ustawić jest opisana w pliku.
Hasło/inny losowy ciąg znaków można łatwo wygenerować w interpreterze Pythona
# python
Python 3.10.10 (main, Mar 5 2023, 22:26:53) [GCC 12.2.1 20230201] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import secrets
>>> secrets.token_hex(32) # wygenerowany ciąg znaków będzie miał 2*32 znaków
'015be4387b88d563072310afdef135576bba787a8b3e88bccd2161d2a5eff3ed'
Zmienne które są niezbędne do działania aplikacji:
- hasła do bazy danych (
POSTGRES_PASSWORD
,DATABASE_PASSWORD
) - pierwsze z nich to hasło do administratora serwera bazodanowego, drugie - do właściwego użytkownika posiadającego bazę danych SIO. - adresy z których można otworzyć stronę (
ALLOWED_HOSTS
) - jeśli ktoś spróbuje dostać się do strony z adresu innego niż podany w tej zmiennej, serwer odrzuci połączenie. Można ustawić więcej niż jeden adres, rozdzielone spacjami. - tajny klucz (
SECRET_KEY
) - niezbędny do bezpiecznego przechowywania haseł i innych wrażliwych danych. Musi być ustawiony na długi ciąg losowo wygenerowanych znaków (>=50 znaków).
W pliku .oioioi.env
, pod zmienną VIRTUAL_HOST
należy ustawić listę domen pod którymi będzie dostępna aplikacja (tę samą, co w ALLOWED_HOSTS
w pliku .env
), tym razem rozdzielone przecinkami zamiast spacjami
VIRTUAL_HOST=localhost,sio2.example # przykładowe wartości
Jeżeli aplikacja będzie uruchomiona pod adresem publicznie dostępnym w internecie, można skonfigurować dla niej certyfikat HTTPS. Zostanie to zrobione automatycznie, w ciągu kilku minut od uruchomienia kontenerów, pod warunkiem że domeny w zmiennych środowiskowych ALLOWED_HOSTS
oraz VIRTUAL_HOST
są poprawnie skonfigurowane.
Jeśli aplikacja jest uruchomiona tylko w sieci lokalnej, pobieranie certyfikatów należy wyłączyć, komentując sekcję letsencrypt
w pliku docker-compose.yml
:
...
# letsencrypt:
# image: nginxproxy/acme-companion
# container_name: sio2-letsencrypt
# volumes:
# - ./nginx/certs:/etc/nginx/certs
# - ./docker-gen/vhost.d:/etc/nginx/vhost.d
# - /var/run/docker.sock:/var/run/docker.sock:ro
# - nginx-html:/usr/share/nginx/html
# - acme:/etc/acme.sh
# environment:
# - "DEFAULT_EMAIL=${LETSENCRYPT_EMAIL}"
# - "NGINX_DOCKER_GEN_CONTAINER=sio2-docker-gen"
# - "NGINX_PROXY_CONTAINER=sio2-nginx"
# restart: on-failure
# depends_on:
# - docker-gen
...
Aplikację uruchamiamy poleceniem (z folderu `docker-sio2):
# docker compose up
Pierwsze uruchomienie potrwa dłużej niż zwykle, ponieważ tworzone zostają tabele w bazie danych. W terminalu widoczne są logi wszystkich kontenerów. Aplikacje można zatrzymać wciskając kombinację klawiszy Ctrl+C.
Aplikację można też uruchomić w trybie "cichym" tzn. bez wyświetlania logów w terminalu:
# docker compose up -d
W tym przypadku po uruchomieniu wszystkich kontenerów kontrola zostanie zwrócona do terminala i będzie można wydawać inne polecenia. Aplikację można zatrzymać poleceniem:
# docker compose down
Niezależnie od sposobu uruchomienia, aplikacja jest skonfigurowana tak, że automatycznie uruchomi się ponownie np. po ponownym uruchomieniu systemu po zaniku prądu, pod warunkiem że przedtem była uruchomiona.
Aby utworzyć konto administratora, musimy mieć dostęp do wiersza poleceń w kontenerze aplikacji. Z folderu docker-sio2
wykonujemy polecenie:
# docker compose exec oioioi bash
# cd /sio2/deployment
#
Teraz można wykonać polecenie dodające konto administratora:
# ./manage.py createsuperuser
Username (leave blank to use 'oioioi'): admin
Email address: [email protected]
Password:
Password (again):
Superuser created successfully.
#
Konto administratora zostało utworzone, i można się na nie zalogować wchodząc pod wcześniej skonfigurowany adres aplikacji.