Line 30: |
Line 30: |
| ===MediaWiki=== | | ===MediaWiki=== |
| Copy the following to '''/srv/wiki/docker-compose.yml''' | | Copy the following to '''/srv/wiki/docker-compose.yml''' |
− | | + | <syntaxhighlight lang="yaml"> |
− | version: '3'
| + | version: '3' |
− | services:
| + | services: |
− | web:
| + | web: |
− | image: mediawiki
| + | image: mediawiki |
− | build: build/.
| + | build: build/. |
− | container_name: wiki
| + | container_name: wiki |
− | depends_on:
| + | depends_on: |
− | - database
| + | - database |
− | ## parsoid is bundled as part of 1.35+, only uncomment if using an older version
| + | ## parsoid is bundled as part of 1.35+, only uncomment if using an older version |
− | #- parsoid
| + | #- parsoid |
− | restart: always
| + | restart: always |
− | ports:
| + | ports: |
− | - 80:80
| + | - 80:80 |
− | links:
| + | links: |
− | - database
| + | - database |
− | volumes:
| + | volumes: |
− | - /srv/wiki/html/images:/var/www/html/images
| + | - /srv/wiki/html/images:/var/www/html/images |
− | ## TODO: remove the # below AFTER you have downloaded the LocalSettings.php file
| + | ## TODO: remove the # below AFTER you have downloaded the LocalSettings.php file |
− | #- /srv/wiki/LocalSettings.php:/var/www/html/LocalSettings.php
| + | #- /srv/wiki/LocalSettings.php:/var/www/html/LocalSettings.php |
− | database:
| + | database: |
− | image: mariadb
| + | image: mariadb |
− | container_name: db
| + | container_name: db |
− | restart: always
| + | restart: always |
− | environment:
| + | environment: |
− | MYSQL_DATABASE: mediawiki
| + | MYSQL_DATABASE: mediawiki |
− | ## TODO: Change the password below
| + | ## TODO: Change the password below |
− | MYSQL_USER: wikiuser
| + | MYSQL_USER: wikiuser |
− | ## TODO: Change the password below
| + | ## TODO: Change the password below |
− | MYSQL_PASSWORD: wiki
| + | MYSQL_PASSWORD: wiki |
− | MYSQL_ROOT_PASSWORD: changeme
| + | MYSQL_ROOT_PASSWORD: changeme |
− | volumes:
| + | volumes: |
− | - /srv/wiki/db:/var/lib/mysql
| + | - /srv/wiki/db:/var/lib/mysql |
− |
| + | |
− | ## parsoid is bundled as part of 1.35+, only uncomment if using an older version
| + | ## parsoid is bundled as part of 1.35+, only uncomment if using an older version |
− | #parsoid:
| + | #parsoid: |
− | # image: thenets/parsoid:0.10
| + | # image: thenets/parsoid:0.10 |
− | # container_name: parsoid
| + | # container_name: parsoid |
− | # restart: always
| + | # restart: always |
− | # environment:
| + | # environment: |
− | # - PARSOID_NUM_WORKERS=0
| + | # - PARSOID_NUM_WORKERS=0 |
− | # - PARSOID_DOMAIN_wiki=http://web/api.php
| + | # - PARSOID_DOMAIN_wiki=http://web/api.php |
− | # networks:
| + | </syntaxhighlight> |
− | # - default
| |
| | | |
| ==Internet== | | ==Internet== |
Line 79: |
Line 78: |
| | | |
| ===NGINX-Proxy=== | | ===NGINX-Proxy=== |
− | Copy the following to '''/srv/nginx-proxy/docker-compose.yml''' | + | *Copy the following to '''/srv/nginx-proxy/docker-compose.yml''' |
| + | <syntaxhighlight lang="yaml"> |
| + | version: '2' |
| + | services: |
| + | nginx-proxy: |
| + | image: jwilder/nginx-proxy |
| + | container_name: nginx-proxy |
| + | environment: |
| + | - "HTTPS_METHOD=noredirect" |
| + | labels: |
| + | - "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy" |
| + | ports: |
| + | - "80:80" |
| + | - "443:443" |
| + | restart: always |
| + | volumes: |
| + | - "./data/etc/certs:/etc/nginx/certs" |
| + | - "./data/etc/nginx/vhost.d:/etc/nginx/vhost.d" |
| + | - "./data/etc/nginx/htpasswd:/etc/nginx/htpasswd" |
| + | - "./data/etc/nginx/html:/usr/share/nginx/html" |
| + | - "./data/etc/nginx/conf.d:/etc/nginx/conf.d" |
| + | - "/var/run/docker.sock:/tmp/docker.sock:ro" |
| + | |
| + | letsencrypt: |
| + | image: jrcs/letsencrypt-nginx-proxy-companion |
| + | environment: |
| + | ### ToDo: Change to your e-mail address |
| + | # - DEFAULT_EMAIL=admin@demo.io |
| + | - NGINX_PROXY_CONTAINER=nginx-proxy |
| + | volumes_from: |
| + | - nginx-proxy |
| + | volumes: |
| + | - /var/run/docker.sock:/var/run/docker.sock:ro |
| + | - ./data/etc/certs:/etc/nginx/certs:rw |
| + | restart: always |
| + | |
| + | networks: |
| + | default: |
| + | external: |
| + | name: nginx-proxy |
| + | </syntaxhighlight> |
| + | |
| + | *Copy the following to '''/srv/nginx-proxy/data/etc/nginx/conf.d/proxy-settings.conf''' |
| + | <syntaxhighlight lang="text"> |
| + | proxy_connect_timeout 300; |
| + | proxy_send_timeout 300; |
| + | proxy_read_timeout 30m; |
| + | send_timeout 300; |
| + | </syntaxhighlight> |
| | | |
− | version: '2'
| + | Note: Add the following line to the file above for large file upload issues: |
− | services:
| + | <syntaxhighlight lang="text"> |
− | nginx-proxy:
| + | client_max_body_size 5000m; |
− | image: jwilder/nginx-proxy
| + | </syntaxhighlight> |
− | container_name: nginx-proxy
| + | You will need to adjust the size to a value suitable for your environment. |
− | environment:
| |
− | - "HTTPS_METHOD=noredirect"
| |
− | labels:
| |
− | - "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy"
| |
− | ports:
| |
− | - "80:80"
| |
− | - "443:443"
| |
− | restart: always
| |
− | volumes:
| |
− | - "./data/etc/certs:/etc/nginx/certs"
| |
− | - "./data/etc/nginx/vhost.d:/etc/nginx/vhost.d"
| |
− | - "./data/etc/nginx/htpasswd:/etc/nginx/htpasswd"
| |
− | - "./data/etc/nginx/html:/usr/share/nginx/html"
| |
− | - "/var/run/docker.sock:/tmp/docker.sock:ro"
| |
− |
| |
− | letsencrypt:
| |
− | image: jrcs/letsencrypt-nginx-proxy-companion
| |
− | environment:
| |
− | ### ToDo: Change to your e-mail address
| |
− | # - DEFAULT_EMAIL=admin@demo.io
| |
− | - NGINX_PROXY_CONTAINER=nginx-proxy
| |
− | volumes_from:
| |
− | - nginx-proxy
| |
− | volumes:
| |
− | - /var/run/docker.sock:/var/run/docker.sock:ro
| |
− | - ./data/etc/certs:/etc/nginx/certs:rw
| |
− | restart: always
| |
− |
| |
− | networks:
| |
− | default:
| |
− | external:
| |
− | name: nginx-proxy
| |
| | | |
| ====Create docker network==== | | ====Create docker network==== |
Line 125: |
Line 140: |
| ===MediaWiki=== | | ===MediaWiki=== |
| Copy the following to '''/srv/wiki/docker-compose.yml''' | | Copy the following to '''/srv/wiki/docker-compose.yml''' |
− | | + | <syntaxhighlight lang="yaml"> |
− | version: '3'
| + | version: '3' |
− | services:
| + | services: |
− | web:
| + | web: |
− | image: mediawiki
| + | image: mediawiki |
− | build: build/.
| + | build: build/. |
− | container_name: wiki
| + | container_name: wiki |
− | depends_on:
| + | depends_on: |
− | - database
| + | - database |
− | ## parsoid is bundled as part of 1.35+, only uncomment if using an older version
| + | ## parsoid is bundled as part of 1.35+, only uncomment if using an older version |
− | # - parsoid
| + | # - parsoid |
− | restart: always
| + | restart: always |
− | environment:
| + | environment: |
− | ## TODO: CHANGE VIRTUAL_HOST, LETSENCRYPT_HOST, and LETSENCRYPT_EMAIL TO YOUR OWN
| + | ## TODO: CHANGE VIRTUAL_HOST, LETSENCRYPT_HOST, and LETSENCRYPT_EMAIL TO YOUR OWN |
− | - VIRTUAL_HOST=wiki.example.com
| + | - VIRTUAL_HOST=wiki.example.com |
− | - HTTPS_METHOD=nohttp
| + | - HTTPS_METHOD=nohttp |
− | - LETSENCRYPT_HOST=wiki.example.com
| + | - LETSENCRYPT_HOST=wiki.example.com |
− | - LETSENCRYPT_EMAIL=nobody@example.com
| + | - LETSENCRYPT_EMAIL=nobody@example.com |
− | links:
| + | links: |
− | - database
| + | - database |
− | volumes:
| + | volumes: |
− | - /srv/wiki/html/images:/var/www/html/images
| + | - /srv/wiki/html/images:/var/www/html/images |
− | ## TODO: remove the # below AFTER you have downloaded the LocalSettings.php file
| + | ## TODO: remove the # below AFTER you have downloaded the LocalSettings.php file |
− | #- /srv/wiki/LocalSettings.php:/var/www/html/LocalSettings.php
| + | #- /srv/wiki/LocalSettings.php:/var/www/html/LocalSettings.php |
− | networks:
| + | networks: |
− | - default
| + | - default |
− | - nginx-proxy
| + | - nginx-proxy |
− |
| + | |
− | database:
| + | database: |
− | image: mariadb
| + | image: mariadb |
− | container_name: db
| + | container_name: db |
− | restart: always
| + | restart: always |
− | environment:
| + | environment: |
− | MYSQL_DATABASE: mediawiki
| + | MYSQL_DATABASE: mediawiki |
− | MYSQL_USER: wikiuser
| + | MYSQL_USER: wikiuser |
− | ## TODO: Change the password below
| + | ## TODO: Change the password below |
− | MYSQL_PASSWORD: wiki
| + | MYSQL_PASSWORD: wiki |
− | ## TODO: Change the password below
| + | ## TODO: Change the password below |
− | MYSQL_ROOT_PASSWORD: changeme
| + | MYSQL_ROOT_PASSWORD: changeme |
− | volumes:
| + | volumes: |
− | - /srv/wiki/db:/var/lib/mysql
| + | - /srv/wiki/db:/var/lib/mysql |
− | networks:
| + | networks: |
− | - default
| + | - default |
− | ## parsoid is bundled as part of 1.35+, only uncomment if using an older version
| + | ## parsoid is bundled as part of 1.35+, only uncomment if using an older version |
− | #parsoid:
| + | #parsoid: |
− | # image: thenets/parsoid:0.10
| + | # image: thenets/parsoid:0.10 |
− | # container_name: parsoid
| + | # container_name: parsoid |
− | # restart: always
| + | # restart: always |
− | # environment:
| + | # environment: |
− | # - PARSOID_NUM_WORKERS=0
| + | # - PARSOID_NUM_WORKERS=0 |
− | # - PARSOID_DOMAIN_wiki=http://web/api.php
| + | # - PARSOID_DOMAIN_wiki=http://web/api.php |
− | # networks:
| + | # networks: |
− | # - default
| + | # - default |
| | | |
− | networks:
| + | networks: |
− | nginx-proxy:
| + | nginx-proxy: |
− | external:
| + | external: |
− | name: nginx-proxy
| + | name: nginx-proxy |
| + | </syntaxhighlight> |
| | | |
| =Mediawiki Docker Image= | | =Mediawiki Docker Image= |
Line 201: |
Line 217: |
| | | |
| Note: You can change the version of the MediaWiki docker image used by changing the FROM line. | | Note: You can change the version of the MediaWiki docker image used by changing the FROM line. |
− | | + | <syntaxhighlight lang="dockerfile"> |
− | FROM mediawiki:1.35.3
| + | FROM mediawiki:1.35.3 |
− | COPY ./extensions /var/www/html/extensions
| + | COPY ./extensions /var/www/html/extensions |
| + | </syntaxhighlight> |
| | | |
| ==== Advanced ==== | | ==== Advanced ==== |
Line 214: |
Line 231: |
| | | |
| Copy the following to '''/srv/wiki/build/Dockerfile''' | | Copy the following to '''/srv/wiki/build/Dockerfile''' |
| + | <syntaxhighlight lang="dockerfile"> |
| + | FROM php:7.4-apache |
| + | |
| + | COPY --from=composer /usr/bin/composer /usr/bin/composer |
| + | |
| + | # System dependencies |
| + | RUN set -eux; \ |
| + | \ |
| + | apt-get update; \ |
| + | apt-get install -y --no-install-recommends \ |
| + | git \ |
| + | librsvg2-bin \ |
| + | imagemagick \ |
| + | # Required for SyntaxHighlighting |
| + | python3 \ |
| + | ; \ |
| + | rm -rf /var/lib/apt/lists/* |
| + | |
| + | # Install the PHP extensions we need |
| + | RUN set -eux; \ |
| + | \ |
| + | savedAptMark="$(apt-mark showmanual)"; \ |
| + | \ |
| + | apt-get update; \ |
| + | apt-get install -y --no-install-recommends \ |
| + | libicu-dev \ |
| + | libonig-dev \ |
| + | ; \ |
| + | \ |
| + | docker-php-ext-install -j "$(nproc)" \ |
| + | intl \ |
| + | mbstring \ |
| + | mysqli \ |
| + | opcache \ |
| + | ; \ |
| + | \ |
| + | pecl install APCu-5.1.20; \ |
| + | docker-php-ext-enable \ |
| + | apcu \ |
| + | ; \ |
| + | rm -r /tmp/pear; \ |
| + | \ |
| + | # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies |
| + | apt-mark auto '.*' > /dev/null; \ |
| + | apt-mark manual $savedAptMark; \ |
| + | ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ |
| + | | awk '/=>/ { print $3 }' \ |
| + | | sort -u \ |
| + | | xargs -r dpkg-query -S \ |
| + | | cut -d: -f1 \ |
| + | | sort -u \ |
| + | | xargs -rt apt-mark manual; \ |
| + | \ |
| + | apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ |
| + | rm -rf /var/lib/apt/lists/* |
| + | |
| + | # Enable Short URLs |
| + | RUN set -eux; \ |
| + | a2enmod rewrite; \ |
| + | { \ |
| + | echo "<Directory /var/www/html>"; \ |
| + | echo " RewriteEngine On"; \ |
| + | echo " RewriteCond %{REQUEST_FILENAME} !-f"; \ |
| + | echo " RewriteCond %{REQUEST_FILENAME} !-d"; \ |
| + | echo " RewriteRule ^ %{DOCUMENT_ROOT}/index.php [L]"; \ |
| + | echo "</Directory>"; \ |
| + | } > "$APACHE_CONFDIR/conf-available/short-url.conf"; \ |
| + | a2enconf short-url |
| + | |
| + | # Enable AllowEncodedSlashes for VisualEditor |
| + | RUN sed -i "s/<\/VirtualHost>/\tAllowEncodedSlashes NoDecode\n<\/VirtualHost>/" "$APACHE_CONFDIR/sites-available/000-default.conf" |
| + | |
| + | # set recommended PHP.ini settings |
| + | # see https://secure.php.net/manual/en/opcache.installation.php |
| + | RUN { \ |
| + | echo 'opcache.memory_consumption=128'; \ |
| + | echo 'opcache.interned_strings_buffer=8'; \ |
| + | echo 'opcache.max_accelerated_files=4000'; \ |
| + | echo 'opcache.revalidate_freq=60'; \ |
| + | } > /usr/local/etc/php/conf.d/opcache-recommended.ini |
| + | |
| + | # SQLite Directory Setup |
| + | RUN set -eux; \ |
| + | mkdir -p /var/www/data; \ |
| + | chown -R www-data:www-data /var/www/data |
| + | |
| + | # Version |
| + | ENV MEDIAWIKI_MAJOR_VERSION 1.35 |
| + | ENV MEDIAWIKI_VERSION 1.35.3 |
| + | ENV MW_VERSION=REL1_35 |
| + | |
| + | # Home folder location |
| + | ENV MW_HOME=/var/www/html |
| + | |
| + | |
| + | # MediaWiki setup |
| + | RUN set -eux; \ |
| + | fetchDeps=" \ |
| + | gnupg \ |
| + | dirmngr \ |
| + | "; \ |
| + | apt-get update; \ |
| + | apt-get install -y --no-install-recommends $fetchDeps; \ |
| + | \ |
| + | curl -fSL "https://releases.wikimedia.org/mediawiki/${MEDIAWIKI_MAJOR_VERSION}/mediawiki-${MEDIAWIKI_VERSION}.tar.gz" -o mediawiki.tar.gz; \ |
| + | curl -fSL "https://releases.wikimedia.org/mediawiki/${MEDIAWIKI_MAJOR_VERSION}/mediawiki-${MEDIAWIKI_VERSION}.tar.gz.sig" -o mediawiki.tar.gz.sig; \ |
| + | export GNUPGHOME="$(mktemp -d)"; \ |
| + | # gpg key from https://www.mediawiki.org/keys/keys.txt |
| + | gpg --batch --keyserver keyserver.ubuntu.com --recv-keys \ |
| + | D7D6767D135A514BEB86E9BA75682B08E8A3FEC4 \ |
| + | 441276E9CCD15F44F6D97D18C119E1A64D70938E \ |
| + | F7F780D82EBFB8A56556E7EE82403E59F9F8CD79 \ |
| + | 1D98867E82982C8FE0ABC25F9B69B3109D3BB7B0 \ |
| + | ; \ |
| + | gpg --batch --verify mediawiki.tar.gz.sig mediawiki.tar.gz; \ |
| + | tar -x --strip-components=1 -f mediawiki.tar.gz; \ |
| + | gpgconf --kill all; \ |
| + | rm -r "$GNUPGHOME" mediawiki.tar.gz.sig mediawiki.tar.gz; \ |
| + | chown -R www-data:www-data extensions skins cache images; \ |
| + | \ |
| + | apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps; \ |
| + | rm -rf /var/lib/apt/lists/* |
| + | |
| + | RUN set -eux; \ |
| + | apt update; \ |
| + | apt install -y --no-install-recommends \ |
| + | unzip |
| + | |
| + | ##### Commonly used extensions |
| + | RUN set -x; \ |
| + | cd $MW_HOME/extensions \ |
| + | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Echo \ |
| + | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Thanks \ |
| + | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/CheckUser |
| + | |
| + | # Flow extension |
| + | RUN set -x; \ |
| + | cd $MW_HOME/extensions \ |
| + | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Flow \ |
| + | && cd Flow \ |
| + | && composer install --no-dev \ |
| + | && cd .. |
| + | |
| + | ### MediaWiki Language Extension Bundle |
| + | # Translate |
| + | RUN set -x; \ |
| + | cd $MW_HOME/extensions \ |
| + | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Babel \ |
| + | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/cldr \ |
| + | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/CleanChanges \ |
| + | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/UniversalLanguageSelector |
| + | |
| + | ##### ElasticSearch extensions |
| + | RUN set -x; \ |
| + | cd $MW_HOME/extensions \ |
| + | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/CirrusSearch \ |
| + | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Elastica \ |
| + | && cd Elastica \ |
| + | && composer install --no-dev \ |
| + | && cd .. |
| + | |
| + | ##### MobileFrontend extension |
| + | RUN set -x; \ |
| + | cd $MW_HOME/extensions \ |
| + | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/MobileFrontend |
| + | |
| + | ##### ElectronPdfService extension |
| + | RUN set -x; \ |
| + | cd $MW_HOME/extensions \ |
| + | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/ElectronPdfService |
| + | |
| + | ##### ConfirmAccount, UploadWizard |
| + | RUN set -x; \ |
| + | cd $MW_HOME/extensions \ |
| + | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/ConfirmAccount \ |
| + | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/UploadWizard |
| + | |
| + | |
| + | #### Add AutoSitemap extension ** disable if wiki is not reacahble from Internet! |
| + | RUN set -x; \ |
| + | cd $MW_HOME/extensions \ |
| + | && git clone --depth 1 https://github.com/dolfinus/AutoSitemap.git |
| + | |
| + | # Copy any other extenions from the ./build/extensions folder |
| + | COPY ./extensions $MW_HOME/extensions |
| | | |
− | FROM php:7.4-apache
| + | CMD ["apache2-foreground"] |
− |
| + | </syntaxhighlight> |
− | COPY --from=composer /usr/bin/composer /usr/bin/composer
| |
− |
| |
− | # System dependencies
| |
− | RUN set -eux; \
| |
− | \
| |
− | apt-get update; \
| |
− | apt-get install -y --no-install-recommends \
| |
− | git \
| |
− | librsvg2-bin \
| |
− | imagemagick \
| |
− | # Required for SyntaxHighlighting
| |
− | python3 \
| |
− | ; \
| |
− | rm -rf /var/lib/apt/lists/*
| |
− |
| |
− | # Install the PHP extensions we need
| |
− | RUN set -eux; \
| |
− | \
| |
− | savedAptMark="$(apt-mark showmanual)"; \
| |
− | \
| |
− | apt-get update; \
| |
− | apt-get install -y --no-install-recommends \
| |
− | libicu-dev \
| |
− | libonig-dev \
| |
− | ; \
| |
− | \
| |
− | docker-php-ext-install -j "$(nproc)" \
| |
− | intl \
| |
− | mbstring \
| |
− | mysqli \
| |
− | opcache \
| |
− | ; \
| |
− | \
| |
− | pecl install APCu-5.1.20; \
| |
− | docker-php-ext-enable \
| |
− | apcu \
| |
− | ; \
| |
− | rm -r /tmp/pear; \
| |
− | \
| |
− | # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies
| |
− | apt-mark auto '.*' > /dev/null; \
| |
− | apt-mark manual $savedAptMark; \
| |
− | ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \
| |
− | | awk '/=>/ { print $3 }' \
| |
− | | sort -u \
| |
− | | xargs -r dpkg-query -S \
| |
− | | cut -d: -f1 \
| |
− | | sort -u \
| |
− | | xargs -rt apt-mark manual; \
| |
− | \
| |
− | apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
| |
− | rm -rf /var/lib/apt/lists/*
| |
− |
| |
− | # Enable Short URLs
| |
− | RUN set -eux; \
| |
− | a2enmod rewrite; \
| |
− | { \
| |
− | echo "<Directory /var/www/html>"; \
| |
− | echo " RewriteEngine On"; \
| |
− | echo " RewriteCond %{REQUEST_FILENAME} !-f"; \
| |
− | echo " RewriteCond %{REQUEST_FILENAME} !-d"; \
| |
− | echo " RewriteRule ^ %{DOCUMENT_ROOT}/index.php [L]"; \
| |
− | echo "</Directory>"; \
| |
− | } > "$APACHE_CONFDIR/conf-available/short-url.conf"; \
| |
− | a2enconf short-url
| |
− |
| |
− | # Enable AllowEncodedSlashes for VisualEditor
| |
− | RUN sed -i "s/<\/VirtualHost>/\tAllowEncodedSlashes NoDecode\n<\/VirtualHost>/" "$APACHE_CONFDIR/sites-available/000-default.conf"
| |
− |
| |
− | # set recommended PHP.ini settings
| |
− | # see https://secure.php.net/manual/en/opcache.installation.php
| |
− | RUN { \
| |
− | echo 'opcache.memory_consumption=128'; \
| |
− | echo 'opcache.interned_strings_buffer=8'; \
| |
− | echo 'opcache.max_accelerated_files=4000'; \
| |
− | echo 'opcache.revalidate_freq=60'; \
| |
− | } > /usr/local/etc/php/conf.d/opcache-recommended.ini
| |
− |
| |
− | # SQLite Directory Setup
| |
− | RUN set -eux; \
| |
− | mkdir -p /var/www/data; \
| |
− | chown -R www-data:www-data /var/www/data
| |
− |
| |
− | # Version
| |
− | ENV MEDIAWIKI_MAJOR_VERSION 1.35
| |
− | ENV MEDIAWIKI_VERSION 1.35.3
| |
− | ENV MW_VERSION=REL1_35
| |
− |
| |
− | # Home folder location
| |
− | ENV MW_HOME=/var/www/html
| |
− |
| |
− |
| |
− | # MediaWiki setup
| |
− | RUN set -eux; \
| |
− | fetchDeps=" \
| |
− | gnupg \
| |
− | dirmngr \
| |
− | "; \
| |
− | apt-get update; \
| |
− | apt-get install -y --no-install-recommends $fetchDeps; \
| |
− | \
| |
− | curl -fSL "https://releases.wikimedia.org/mediawiki/${MEDIAWIKI_MAJOR_VERSION}/mediawiki-${MEDIAWIKI_VERSION}.tar.gz" -o mediawiki.tar.gz; \
| |
− | curl -fSL "https://releases.wikimedia.org/mediawiki/${MEDIAWIKI_MAJOR_VERSION}/mediawiki-${MEDIAWIKI_VERSION}.tar.gz.sig" -o mediawiki.tar.gz.sig; \
| |
− | export GNUPGHOME="$(mktemp -d)"; \
| |
− | # gpg key from https://www.mediawiki.org/keys/keys.txt
| |
− | gpg --batch --keyserver keyserver.ubuntu.com --recv-keys \
| |
− | D7D6767D135A514BEB86E9BA75682B08E8A3FEC4 \
| |
− | 441276E9CCD15F44F6D97D18C119E1A64D70938E \
| |
− | F7F780D82EBFB8A56556E7EE82403E59F9F8CD79 \
| |
− | 1D98867E82982C8FE0ABC25F9B69B3109D3BB7B0 \
| |
− | ; \
| |
− | gpg --batch --verify mediawiki.tar.gz.sig mediawiki.tar.gz; \
| |
− | tar -x --strip-components=1 -f mediawiki.tar.gz; \
| |
− | gpgconf --kill all; \
| |
− | rm -r "$GNUPGHOME" mediawiki.tar.gz.sig mediawiki.tar.gz; \
| |
− | chown -R www-data:www-data extensions skins cache images; \
| |
− | \
| |
− | apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps; \
| |
− | rm -rf /var/lib/apt/lists/*
| |
− |
| |
− | RUN set -eux; \
| |
− | apt update; \
| |
− | apt install -y --no-install-recommends \
| |
− | unzip
| |
− |
| |
− | ##### Commonly used extensions
| |
− | RUN set -x; \
| |
− | cd $MW_HOME/extensions \
| |
− | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Echo \
| |
− | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Thanks \
| |
− | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/CheckUser
| |
− |
| |
− | # Flow extension
| |
− | RUN set -x; \
| |
− | cd $MW_HOME/extensions \
| |
− | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Flow \
| |
− | && cd Flow \
| |
− | && composer install --no-dev \
| |
− | && cd ..
| |
− |
| |
− | ### MediaWiki Language Extension Bundle
| |
− | # Translate
| |
− | RUN set -x; \
| |
− | cd $MW_HOME/extensions \
| |
− | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Babel \
| |
− | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/cldr \
| |
− | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/CleanChanges \
| |
− | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/UniversalLanguageSelector
| |
− |
| |
− | ##### ElasticSearch extensions
| |
− | RUN set -x; \
| |
− | cd $MW_HOME/extensions \
| |
− | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/CirrusSearch \
| |
− | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Elastica \
| |
− | && cd Elastica \
| |
− | && composer install --no-dev \
| |
− | && cd ..
| |
− |
| |
− | ##### MobileFrontend extension
| |
− | RUN set -x; \
| |
− | cd $MW_HOME/extensions \
| |
− | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/MobileFrontend
| |
− |
| |
− | ##### ElectronPdfService extension
| |
− | RUN set -x; \
| |
− | cd $MW_HOME/extensions \
| |
− | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/ElectronPdfService
| |
− |
| |
− | ##### ConfirmAccount, UploadWizard
| |
− | RUN set -x; \
| |
− | cd $MW_HOME/extensions \
| |
− | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/ConfirmAccount \
| |
− | && git clone --depth 1 -b $MW_VERSION https://gerrit.wikimedia.org/r/p/mediawiki/extensions/UploadWizard
| |
− |
| |
− |
| |
− | #### Add AutoSitemap extension ** disable if wiki is not reacahble from Internet!
| |
− | RUN set -x; \
| |
− | cd $MW_HOME/extensions \
| |
− | && git clone --depth 1 https://github.com/dolfinus/AutoSitemap.git
| |
− |
| |
− | # Copy any other extenions from the ./build/extensions folder
| |
− | COPY ./extensions $MW_HOME/extensions
| |
− |
| |
− | CMD ["apache2-foreground"]
| |
| | | |
| =Running= | | =Running= |
Line 448: |
Line 466: |
| | | |
| Add this to your '''LocalSettings.php''' file: | | Add this to your '''LocalSettings.php''' file: |
− | | + | <syntaxhighlight lang="php> |
− | $wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg', 'doc',
| + | $wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg', 'doc', |
− | 'xls', 'mpp', 'pdf', 'ppt', 'tiff', 'bmp', 'docx', 'xlsx',
| + | 'xls', 'mpp', 'pdf', 'ppt', 'tiff', 'bmp', 'docx', 'xlsx', |
− | 'pptx', 'ps', 'odt', 'ods', 'odp', 'odg'
| + | 'pptx', 'ps', 'odt', 'ods', 'odp', 'odg' |
− | );
| + | ); |
| + | </syntaxhighlight> |
| | | |
| ===Increase file upload size=== | | ===Increase file upload size=== |
Line 459: |
Line 478: |
| | | |
| * Add this to your '''LocalSettings.php''' file to allow uploading of 2G files: | | * Add this to your '''LocalSettings.php''' file to allow uploading of 2G files: |
− | | + | <syntaxhighlight lang="php> |
− | $wgUploadSizeWarning = 2147483647;
| + | $wgUploadSizeWarning = 2147483647; |
− | $wgMaxUploadSize = 2147483647;
| + | $wgMaxUploadSize = 2147483647; |
− | | + | </syntaxhighlight> |
| * Then create '''/srv/wiki/uploads.ini''' with the following: | | * Then create '''/srv/wiki/uploads.ini''' with the following: |
− | | + | <syntaxhighlight lang="php> |
− | upload_max_filesize = 2048M
| + | upload_max_filesize = 2048M |
− | post_max_size = 2048M
| + | post_max_size = 2048M |
− | max_execution_time = 7200
| + | max_execution_time = 7200 |
− | max_file_uploads = 1000
| + | max_file_uploads = 1000 |
− | | + | </syntaxhighlight> |
| * Add the following line to the '''/srv/wiki/docker-compose.yml''' file under volumes | | * Add the following line to the '''/srv/wiki/docker-compose.yml''' file under volumes |
| | | |
| - /srv/wiki/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini:ro | | - /srv/wiki/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini:ro |