Skip to content

2JS/wiki

Repository files navigation

wiki

Very personal wiki

Prerequisite

  1. Docker
  2. Docker Compose

Installation

  1. Download or clone this repository.
  2. Run sudo ./bootstrap.sh in termial.
  3. Set up .env, .config file. Details below.
  4. Run docker-compose up -d in terminal.
  5. Open http://localhost/mw-config on web brower and follow the instructions.

CAUTION: Do not overwrite LocalSettings.php as given in the last instruction. Do it if you understand what are you doing. This step initializes database.

  1. Run docker-compose exec wiki php maintenance/update.php --quick
  2. Voila!

Set up .env, .config file

This file sets system environment variable of running containers. Write a plain text file named .env inside compose directory.

.env

HOST=localhost
[email protected]
WG_PATH=/wiki
WG_SCRIPTPATH=/w
Variable (Required*) Example Description
HOST* localhost Domain name that hosts mediawiki. Or IP address.
EMAIL* [email protected] An email address for issuing letsencrypt certificate.
WG_PATH* /wiki URI path for wiki articles.
WG_SCRIPTPATH* /w URI path for wiki resources(scripts, images, etc).

.config

MYSQL_USER=user
MYSQL_PASSWORD=P@55W0RD
WG_SITENAME=
WG_METANAMESPACE=Project
WG_LANGUAGECODE=en
[email protected]
[email protected]
WG_SECRETKEY=
WG_UPGRADEKEY=4yy8yq1d4v1sxdpz
WG_SMTP_HOST=ssl://smtp.mail.com
WG_SMTP_IDHOST=mail.com
WG_SMTP_LOCALHOST=this.wiki
WG_SMTP_PORT=465
[email protected]
WG_SMTP_PASSWORD=P@55W0RD
WG_SMTP_AUTH=true
Variable (Required*) Example Description
MYSQL_USER* wiki User of mariadb database.
MYSQL_PASSWORD* P@55W0RD Do not leak. Password of corresponding user
WG_SITENAME* Wikipedia Name of wiki.
WG_METANAMESPACE* Project Name for project namespace
WG_LANGUAGECODE* en Language code for wiki
WG_EMERGENCYCONTACT* [email protected] Emergency email address. Also used for letsencrypt certificate issuing.
WG_PASSWORDSENDER [email protected] Adress that may send email reset, security alers, etc.
WG_SECRETKEY* (64 length string) Do not leak. Random 64-character alphanumeric string. You can generate one with keygen.py. Refer Manual:$wgSecretKey.
WG_UPGRADEKEY* 1omwk5pxsphkk6cl Do not leak. Random 16-character alphanumeric string. You can generate one with keygen.py. Refer Manual:$wgUpgradeKey
WG_SMTP_HOST Refer Manual:$wgSMTP
WG_SMTP_IDHOST Refer Manual:$wgSMTP
WG_SMTP_LOCALHOST Refer Manual:$wgSMTP
WG_SMTP_PORT 465 Refer Manual:$wgSMTP
WG_SMTP_USERNAME Refer Manual:$wgSMTP
WG_SMTP_PASSWORD Refer Manual:$wgSMTP
WG_SMTP_AUTH 1 or empty Refer Manual:$wgSMTP

keygen.py

You need these unique keys to run secure wiki. Type python keygen.py or shortly ./keygen.py to generate one.

> ./keygen.py # either python 2 or 3 is fine.
$wgSecretKey=   8nghg15hmibsqqzzdqpeue9on9k5ezumyis6d1rrfmx8lpjsj3xchohwhx5gb4jo
$wgUpgradeKey=  1omwk5pxsphkk6cl

Configure traefik.yml

Almost everything is already set up. You only need to configure entrypoints.websecure.http.tls.domains.main and certificatesResolvers.letsencrypt.acme.email.

The first value is domain name, and the second one is email address. Replace 2js.dev and [email protected] with your ones.

"I don't need HTTPS"

These values are used to get letsencrypt certificate, which is necessary for HTTPS secure connection. For those of you who don't want HTTPS or have no domain, just leave them blank, and delete lines containing

  • traefik.http.routers.wiki-local.
  • traefik.http.routers.wiki-global.
  • traefik.http.routers.wiki.tls.
  • traefik.http.middlewares.redirector.

in docker-compose.yml.

Usage

Start

docker-compose up -d --build

Stop

docker-compose down

CAUTION: Do not use option -v or --volumes when stopping services. It will irreversibly delete wiki data(including files and articles, users, etc) entirely.

Backup and Restore

To backup, run backup script. It'll archive database contents and uploaded files into backups directory.

./backup.sh

Restore script is not ready yet.

Refer to Manual:Backing up a wiki for more detail.

About

Very personal wiki

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published