Docker Bookstack własne wiki czyli organizacja wszelkiej informacji

Opis aplikacji

Bookstack to wspaniała aplikacja typu Wiki pozwalająca w wygodny sposób organizować dowolną informację i budowanie bazy wiedzy na dowolny temat, posiadająca następujące cechy:

  • Darmowe i otwarte oprogramowanie. BookStack jest w pełni darmowy i otwarty, na licencji MIT. Źródło jest dostępne na GitHubie. Pobieranie i instalowanie własnej instancji bookstack jest bezpłatne.
  • Łatwy, prosty interfejs. Prostota była najwyższym priorytetem podczas tworzenia BookStack. Edytor stron ma prosty interfejs WYSIWYG, a cała zawartość jest podzielona na trzy proste grupy: Książki Rozdziały Strony
  • Wyszukiwalne i połączone. Treści w BookStack można w pełni przeszukiwać. Możesz wyszukiwać na poziomie książki lub we wszystkich książkach, rozdziałach i stronach. Możliwość bezpośredniego linkowania do dowolnego akapitu pozwala zachować połączenie dokumentacji.
  • Konfigurowalny. Opcje konfiguracji pozwalają skonfigurować BookStack tak, aby pasował do Twojego przypadku użycia. Możesz zmienić nazwę, logo i opcje rejestracji. Możesz także zmienić, czy cały system jest publicznie widoczny, czy nie.
  • Proste wymagania. BookStack jest zbudowany przy użyciu PHP, na szczycie frameworka Laravel i używa MySQL do przechowywania danych.
  • Wbudowane diagrams.net. Edytor stron w BookStack ma wbudowaną funkcję rysowania diagrams.net, umożliwiając szybkie i łatwe tworzenie diagramów w dokumentacji.
  • Wielojęzyczny. Użytkownicy BookStack mogą ustawić preferowany język. Dzięki wspaniałym współtwórcom społeczności, obecne języki wbudowane w BookStack to EN, FR, DE, ES, IT, JA, NL, PL, RU i wiele innych.
  • Opcjonalny edytor Markdown. Jeśli wolisz pisać w Markdown, BookStack Cię wspiera. Dostępny jest edytor przeceny, który zawiera podgląd na żywo podczas pisania dokumentacji.
  • Zintegrowane uwierzytelnianie. Oprócz domyślnego adresu e-mail/hasła można używać dostawców społecznościowych, takich jak GitHub, Google, Slack, AzureAD i innych. Dla środowisk korporacyjnych dostępne są opcje Okta, SAML2 i LDAP.
  • Potężne funkcje. Oprócz zaawansowanego wyszukiwania i łączenia istnieje również sortowanie między książkami, rewizje stron i zarządzanie obrazami. Pełny system ról i uprawnień umożliwia blokowanie treści i działań zgodnie z wymaganiami.
  • Uwierzytelnianie wieloskładnikowe. Usługa MFA jest wbudowana i może być egzekwowana na poziomie poszczególnych ról w razie potrzeby. Opcje usługi MFA obejmują TOTP (Google/Microsoft Authenticator, Authy itp.) oraz statyczne kody zapasowe.
  • Tryby ciemne i jasne. BookStack zapewnia interfejs użytkownika zarówno w jasnym, jak i ciemnym motywie, oszczędzając oczy tym, którzy wolą pracować w cieniu. Jest to konfigurowalne na poziomie użytkownika.

Przydatne adresy związane z aplikacją

Przygotowanie systemu do uruchomienia aplikacji w kontenerze Docker

Proces przygotowania czystego systemu Debian 11 do uruchamiania aplikacji dockerowych został opisany na stronie https://itadmin.vblog.ovh/docker-instalacja-i-konfiguracja-na-systemie-debian-11/

Uruchomienie aplikacji

Przygotowanie docker-compose.yml

mkdir -p /home/dockeruser/docker/appdata/bookstack/
nano /home/dockeruser/docker/appdata/bookstack/docker-compose.yml
---
version: "2"

networks:
   npm_proxy:
     external: true

services:
  bookstack:
    image: lscr.io/linuxserver/bookstack
    networks:
      npm_proxy:
        ipv4_address: 192.168.89.110 # You can specify a static IP
    container_name: bookstack
    labels:
      - "com.centurylinklabs.watchtower.enable=true"
    environment:
      - PUID=1000
      - PGID=1000
      - APP_URL=https://bookstack.netapps.ovh
      - DB_HOST=bookstack_db
      - DB_USER=bookstack
      - DB_PASS=ALEPASS2107
      - DB_DATABASE=bookstackapp
    volumes:
      - /home/dockeruser/docker/appdata/bookstack/:/config
    ports:
      - 6875:80
    restart: unless-stopped
    depends_on:
      - bookstack_db
  bookstack_db:
    image: lscr.io/linuxserver/mariadb
    networks:
      npm_proxy:
        ipv4_address: 192.168.89.111 # You can specify a static IP
    container_name: bookstack_db
    labels:
      - "com.centurylinklabs.watchtower.enable=true"
    environment:
      - PUID=1000
      - PGID=1000
      - MYSQL_ROOT_PASSWORD=
      - TZ=Europe/Warsaw
      - MYSQL_DATABASE=bookstackapp
      - MYSQL_USER=bookstack
      - MYSQL_PASSWORD=ALEPASS2107
    volumes:
      - /home/dockeruser/docker/appdata/bookstack:/config
    restart: unless-stopped

Opis docker-compose.yml

  • 192.168.89.110/111 to  prywatne adresy ip tej aplikacji kontenerowej (aplikacji www i bazy danych). Wybrane przeze mnie aplikacje kontenerowe mają stały określony adres ip z prywatnej adresacji 192.168.89.0/24
  • PUID / PGID odpowiada uid/gid (1000/10000) użytkownika dockeruser na moim serwerze z działającym Dockerem
  • 192.168.10.30 to adres ip serwera z zainstalowanym Dockerem
  • /home/dockeruser/docker/appdata/bookstack/(…) to ścieżka na moim serwerze z działającym Dockerem do katalogu przechowującego indywidualne ustawienia, konfiguracje, dane konkretnej aplikacji kontenerowej nawet po jej wyłączeniu czy też usunięciu
  • labels: com.centurylinklabs.watchtower.enable=true oznacza, że obraz kontenera będzie automatycznie aktualizowany przez aplikację Dockerową Watchtower

Uruchomienie aplikacji na podstawie docker-compose.yml

cd /home/dockeruser/docker/appdata/bookstack/ && docker-compose up -d

Zarządzanie uruchomionym kontenerem aplikacji

Więcej informacji na temat zarządzania aplikacjami w kontenerze można znaleźć na stronach

Użytkowanie i konfiguracja aplikacji

  • dostęp do interfejsu www aplikacji http://192.168.10.30:6875 lub https://bookstack.netapps.ovh/ w zależności od konfiguracji naszej sieci oraz wpisów w docker-compose.yml
  • domyślny login i hasło: [email protected] / password
  • dla wygodnego dostępu poprzez nazwę domenową np. bookstack.netapps.ovh i szyfrowane połączenie https należy skonfigurować odpowiednio Nginx Proxy Manager wg. załączonych poniżej zrzutów ekranu
  • na naszym lokalnym serwerze DNS np. MikroTik należy utworzyć statyczny wpis o treści: rekord typu A 192.168.10.30 => bookstack.netapps.ovh