Mediawiki 1.31 Instalasi Docker Ubuntu 24.04

From OnnoWiki
Jump to navigation Jump to search

Catatan penting

MediaWiki 1.31.16 sudah berstatus *End of Life* sejak 30 September 2021 dan tidak lagi menerima perbaikan keamanan. Versi ini mensyaratkan minimal PHP 7.0.13 dan dibuat untuk generasi PHP 7, bukan PHP 8.5 yang tersedia pada Ubuntu 26.04. Karena itu, jangan memasangnya langsung ke PHP utama Ubuntu dan jangan membuka instalasi ini ke internet. ([mediawiki.org][1])

Cara yang lebih aman untuk kebutuhan migrasi, pemulihan data lama, atau pengujian adalah:

Ubuntu 26.04
└── Docker
    ├── Apache + PHP 7.4 + MediaWiki 1.31.16
    └── MariaDB 10.6

Docker resmi mendukung Ubuntu 26.04, dan image resmi PHP menyediakan varian Apache. ([Docker Documentation][2])


1. Periksa apakah Docker sudah terpasang

docker --version
docker compose version

Jika kedua perintah menampilkan versi, lanjut langsung ke langkah 3.


2. Instal Docker di Ubuntu 26.04

Pasang paket pendukung:

sudo apt update
sudo apt install -y ca-certificates curl

Keterangan:

  • `sudo`: menjalankan perintah sebagai administrator.
  • `apt update`: memperbarui daftar paket.
  • `-y`: otomatis menjawab “yes” saat instalasi.
  • `ca-certificates`: memungkinkan verifikasi koneksi HTTPS.
  • `curl`: mengunduh data dari internet.

Tambahkan kunci resmi Docker:

sudo install -m 0755 -d /etc/apt/keyrings

Keterangan:

  • `install -d`: membuat direktori.
  • `-m 0755`: mengatur izin direktori menjadi `rwxr-xr-x`.

Unduh kunci Docker:

sudo curl -fsSL \
https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc

Keterangan:

  • `-f`: gagal jika server mengembalikan kesalahan.
  • `-s`: mode senyap.
  • `-S`: tetap menampilkan pesan kesalahan.
  • `-L`: mengikuti pengalihan URL.
  • `-o`: menentukan nama file tujuan.

Atur agar kunci dapat dibaca APT:

sudo chmod a+r /etc/apt/keyrings/docker.asc

Tambahkan repositori Docker:

sudo tee /etc/apt/sources.list.d/docker.sources >/dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

Kemudian instal Docker Engine dan Docker Compose:

sudo apt update

sudo apt install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin

Aktifkan Docker:

sudo systemctl enable --now docker

Keterangan:

  • `enable`: menjalankan Docker otomatis saat boot.
  • `--now`: langsung menjalankan Docker sekarang.

Tes:

sudo docker run --rm hello-world


  • `--rm`: menghapus container pengujian setelah selesai.

Langkah tersebut mengikuti repositori dan paket resmi Docker untuk Ubuntu 26.04. ([Docker Documentation][2])


3. Siapkan direktori instalasi

Asumsikan file berada di:

~/Downloads/mediawiki-1.31.16.tar.gz

Buat direktori proyek:

mkdir -p ~/mediawiki131


  • `-p`: membuat seluruh direktori yang diperlukan dan tidak menghasilkan error jika sudah ada.

Salin paket:

cp ~/Downloads/mediawiki-1.31.16.tar.gz ~/mediawiki131/

Masuk ke direktori proyek:

cd ~/mediawiki131

Ekstrak paket:

tar -xzf mediawiki-1.31.16.tar.gz

Keterangan:

  • `-x`: mengekstrak arsip.
  • `-z`: membuka kompresi gzip.
  • `-f`: menggunakan nama file setelah opsi tersebut.

Periksa hasilnya:

ls -la mediawiki-1.31.16

4. Buat Dockerfile PHP 7.4

Masih di dalam direktori:

~/mediawiki131

Buat file `Dockerfile`:

nano Dockerfile

Masukkan:

FROM php:7.4-apache

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
       imagemagick \
       libfreetype6-dev \
       libicu-dev \
       libjpeg62-turbo-dev \
       libonig-dev \
       libpng-dev \
       libxml2-dev \
       libzip-dev \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j"$(nproc)" \
       gd \
       intl \
       mbstring \
       mysqli \
       opcache \
       xml \
       zip \
    && a2enmod rewrite \
    && rm -rf /var/lib/apt/lists/*

COPY mediawiki-1.31.16/ /var/www/html/

RUN chown -R www-data:www-data /var/www/html

Simpan dengan:

Ctrl+O
Enter
Ctrl+X

Dockerfile ini membuat Apache dan PHP 7.4 terisolasi dari PHP utama Ubuntu.

5. Buat password database

Jalankan:

MW_DB_PASSWORD=$(openssl rand -hex 24)
MW_DB_ROOT_PASSWORD=$(openssl rand -hex 24)


  • `openssl rand`: membuat nilai acak.
  • `-hex`: menampilkan nilai dalam format heksadesimal.
  • `24`: membuat 24 byte data acak.

Buat file `.env`:

cat > .env <<EOF
MW_DB_NAME=mediawiki
MW_DB_USER=mediawiki
MW_DB_PASSWORD=$MW_DB_PASSWORD
MW_DB_ROOT_PASSWORD=$MW_DB_ROOT_PASSWORD
EOF


Batasi izin file:

chmod 600 .env


`600` berarti hanya pemilik file yang dapat membaca dan mengubahnya.

Lihat kredensialnya:

cat .env


Simpan nilai `MW_DB_PASSWORD`, karena akan dimasukkan ke installer MediaWiki.


6. Buat konfigurasi Docker Compose

Buat file:

nano compose.yaml

Masukkan:

services:
  database:
    image: mariadb:10.6
    container_name: mediawiki131-db
    restart: unless-stopped
    environment:
      MARIADB_DATABASE: ${MW_DB_NAME}
      MARIADB_USER: ${MW_DB_USER}
      MARIADB_PASSWORD: ${MW_DB_PASSWORD}
      MARIADB_ROOT_PASSWORD: ${MW_DB_ROOT_PASSWORD}
    volumes:
      - database_data:/var/lib/mysql 

  mediawiki:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: mediawiki131-web
    restart: unless-stopped
    depends_on:
      - database
    ports:
      - "127.0.0.1:8080:80"
    volumes:
      - mediawiki_files:/var/www/html 

volumes:
  database_data:
  mediawiki_files:

Konfigurasi tersebut sengaja menggunakan:

127.0.0.1:8080:80

Artinya MediaWiki hanya dapat diakses dari server sendiri atau melalui SSH tunnel, bukan langsung dari internet.

MediaWiki mendokumentasikan pola Docker Compose dengan volume, database terpisah, dan pemasangan `LocalSettings.php` setelah proses installer selesai. ([MediaWiki][3])

7. Bangun dan jalankan container

sudo docker compose up --build -d

Keterangan:

  • `up`: membuat dan menjalankan semua service.
  • `--build`: membangun ulang image berdasarkan `Dockerfile`.
  • `-d`: menjalankan container di belakang layar.

Proses pembangunan PHP 7.4 dan ekstensi mungkin menghasilkan banyak output.

Periksa status:

sudo docker compose ps

Hasil yang diharapkan kira-kira:

mediawiki131-db    running
mediawiki131-web   running

Periksa versi PHP di container:

sudo docker exec mediawiki131-web php -v

Hasilnya seharusnya menunjukkan:

PHP 7.4.x


8. Buka installer MediaWiki

Bila Ubuntu menggunakan desktop

Buka browser:

http://127.0.0.1:8080

Bila Ubuntu adalah server jarak jauh

Dari komputer Anda, buka SSH tunnel:

ssh -L 8080:127.0.0.1:8080 namauser@IP_SERVER

Contoh:

ssh -L 8080:127.0.0.1:8080 onno@192.168.1.10

Keterangan:

  • `-L`: membuat *local port forwarding*.
  • `8080`: port pada komputer Anda.
  • `127.0.0.1:8080`: layanan MediaWiki pada server.

Biarkan koneksi SSH tersebut terbuka, kemudian buka:

http://127.0.0.1:8080

9. Isi konfigurasi database

Pada installer MediaWiki, gunakan:

Database type     : MySQL, MariaDB, or equivalent
Database host     : database
Database name     : mediawiki
Database username : mediawiki
Database password : nilai MW_DB_PASSWORD
Table prefix      : kosong
Storage engine    : InnoDB

Untuk melihat kembali password:

grep '^MW_DB_PASSWORD=' .env

Nama host database harus:

database

Bukan:

localhost

Karena `database` merupakan nama service MariaDB dalam jaringan Docker Compose.

10. Pasang LocalSettings.php

Setelah installer selesai, browser akan mengunduh:

LocalSettings.php

Jika browser berada pada komputer lain

Kirim file ke server:

scp ~/Downloads/LocalSettings.php \
namauser@IP_SERVER:~/mediawiki131/

Kemudian di server:

cd ~/mediawiki131

Salin ke container:

sudo docker cp \
LocalSettings.php \
mediawiki131-web:/var/www/html/LocalSettings.php

Atur pemilik:

sudo docker exec mediawiki131-web \
chown www-data:www-data /var/www/html/LocalSettings.php

Batasi izin:

sudo docker exec mediawiki131-web \
chmod 600 /var/www/html/LocalSettings.php

Restart MediaWiki:

sudo docker restart mediawiki131-web

Buka kembali:

http://127.0.0.1:8080

File `LocalSettings.php` berisi kredensial database dan memang harus dilindungi dari akses pengguna lain. ([MediaWiki][4])


11. Memeriksa error

Lihat 100 baris log terakhir MediaWiki:

sudo docker compose logs --tail=100 mediawiki

Lihat log database:

sudo docker compose logs --tail=100 database

Pantau log secara langsung:

sudo docker compose logs -f
  • `--tail=100`: hanya menampilkan 100 baris terakhir.
  • `-f`: terus mengikuti log baru.

12. Menghentikan dan menjalankan kembali

Menghentikan:

sudo docker compose stop

Menjalankan kembali:

sudo docker compose start

Restart semua service:

sudo docker compose restart

Menghapus container tetapi mempertahankan database dan volume:

sudo docker compose down


Jangan jalankan ini kecuali benar-benar ingin menghapus data:

sudo docker compose down -v

Opsi `-v` menghapus volume, termasuk database dan file MediaWiki.


Rekomendasi akhir

Gunakan MediaWiki 1.31.16 ini hanya untuk:

  • membuka instalasi lama;
  • memulihkan database lama;
  • menguji ekstensi lama;
  • mempersiapkan proses migrasi.

Untuk wiki baru atau server produksi, gunakan MediaWiki 1.45 atau LTS yang masih didukung. MediaWiki juga menyarankan upgrade versi lama dilakukan secara bertahap karena upgrade langsung dari rilis yang sangat tua tidak selalu didukung. ([MediaWiki][5])

[1]: https://www.mediawiki.org/wiki/Release_notes/1.31 "Release notes/1.31 - MediaWiki"
[2]: https://docs.docker.com/engine/install/ubuntu/ "Install Docker Engine on Ubuntu | Docker Docs"
[3]: https://www.mediawiki.org/wiki/Docker/Docker_Hub "Docker/Docker Hub - MediaWiki"
[4]: https://www.mediawiki.org/wiki/Manual%3ALocalSettings.php?utm_source=chatgpt.com "Manual:LocalSettings.php"
[5]: https://www.mediawiki.org/wiki/Compatibility "Compatibility - MediaWiki"