19 Commits

Author SHA1 Message Date
Matthieu Gautier
ee75bc72f5 Time to switch the CI to focal. 2023-10-08 18:29:45 +02:00
Matthieu Gautier
7f0c1d8a3f Merge pull request #642 from kiwix/fix_docs 2023-10-06 15:47:10 +02:00
Matthieu Gautier
bd9e67f48e Add readthedocs configuration 2023-10-06 15:33:40 +02:00
Kelson
a4cc4ba55b Merge pull request #636 from kiwix/cpp17
Move to c++17.
2023-09-22 17:38:55 +02:00
Matthieu Gautier
1a1274012f Move to c++17.
All our compilers should handle c++17. Let's move on.
2023-08-30 17:58:40 +02:00
Kelson
74712ff022 Merge pull request #631 from kiwix/kiwix-serve-docker-readme
Dedicated Docker Compose section
2023-08-13 09:39:44 +02:00
Emmanuel Engelhart
3c6971fced Dedicated Docker Compose section 2023-08-13 09:38:59 +02:00
Kelson
7a7eaaba0e Merge pull request #626 from iArchitSharma/patch-1
Added missing parameters to kiwix-serve.1
2023-07-12 15:20:43 +02:00
Archit Sharma
d166947447 Added missing parameters to kiwix-serve.1 2023-07-12 13:38:11 +05:30
Kelson
92ee72a8f2 Merge pull request #622 from kiwix/new-archs
Docker images for new architectures
2023-06-16 18:03:35 +02:00
renaud gaudin
d0f8226f50 Docker images for new architectures
- Fixes the release filename for arm64 and armv7
- Add new architectures for i386 and armv6
2023-06-16 17:59:33 +02:00
Kelson
221055f49c Merge pull request #621 from kiwix/docker-readme-improvements
Docker readme improvements
2023-05-24 10:53:31 +03:00
Emmanuel Engelhart
a463c31a0c Add example with globbing 2023-05-24 09:51:42 +02:00
Emmanuel Engelhart
6e239d5cb6 Add link to Kiwix server container image 2023-05-24 09:51:11 +02:00
Emmanuel Engelhart
191dc95266 Fix small typo in the usage() 2023-05-23 17:05:03 +02:00
Matthieu Gautier
840f92c677 Merge pull request #618 from kiwix/fix_clone_ci 2023-05-03 16:31:10 +02:00
Matthieu Gautier
f03dc46342 Remove custom git clone
Now possible because of new Docker images and proper user/permission mgmt
within the container.
2023-05-03 15:34:41 +02:00
Kelson
a8a62aef74 Merge pull request #617 from jgmoss/main
Update docker-compose.yml to use ghcr.io image
2023-04-29 13:42:28 +02:00
Graham Moss
7f9bf58742 Update docker-compose.yml to use ghcr.io image 2023-04-28 15:01:05 -04:00
11 changed files with 195 additions and 76 deletions

View File

@@ -14,10 +14,10 @@ jobs:
- win32_dyn
include:
- target: native_static
image_variant: bionic
image_variant: focal
lib_postfix: '/x86_64-linux-gnu'
- target: native_dyn
image_variant: bionic
image_variant: focal
lib_postfix: '/x86_64-linux-gnu'
- target: win32_static
image_variant: f35
@@ -36,22 +36,12 @@ jobs:
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
id: extract_branch
- name: Checkout code
shell: python
run: |
from subprocess import check_call
from os import environ
command = [
'git', 'clone',
'https://github.com/${{github.repository}}',
'--depth=1',
'--branch', '${{steps.extract_branch.outputs.branch}}'
]
check_call(command, cwd=environ['HOME'])
uses: actions/checkout@v3
- name: Install deps
shell: bash
run: |
ARCHIVE_NAME=deps2_${OS_NAME}_${{matrix.target}}_kiwix-tools.tar.xz
wget -O- http://tmp.kiwix.org/ci/${ARCHIVE_NAME} | tar -xJ -C /home/runner
wget -O- http://tmp.kiwix.org/ci/${ARCHIVE_NAME} | tar -xJ -C ${{env.HOME}}
- name: Compile
shell: bash
run: |
@@ -63,10 +53,9 @@ jobs:
if [[ ! "${{matrix.target}}" =~ native_.* ]]; then
MESON_OPTION="$MESON_OPTION --cross-file $HOME/BUILD_${{matrix.target}}/meson_cross_file.txt"
fi
cd $HOME/kiwix-tools
meson . build ${MESON_OPTION}
cd build
ninja
env:
PKG_CONFIG_PATH: "/home/runner/BUILD_${{matrix.target}}/INSTALL/lib/pkgconfig:/home/runner/BUILD_${{matrix.target}}/INSTALL/lib${{matrix.lib_postfix}}/pkgconfig"
CPPFLAGS: "-I/home/runner/BUILD_${{matrix.target}}/INSTALL/include"
PKG_CONFIG_PATH: "${{env.HOME}}/BUILD_${{matrix.target}}/INSTALL/lib/pkgconfig:${{env.HOME}}/BUILD_${{matrix.target}}/INSTALL/lib${{matrix.lib_postfix}}/pkgconfig"
CPPFLAGS: "-I${{env.HOME}}/BUILD_${{matrix.target}}/INSTALL/include"

View File

@@ -28,8 +28,10 @@ jobs:
VERSION={tag}
platforms: |
linux/amd64
linux/arm/v7
linux/arm64
linux/arm/v7
linux/arm/v6
linux/386
restrict-to: kiwix/kiwix-tools
manual-tag: ${{ github.event.inputs.version }}
repo_description: auto
@@ -55,8 +57,10 @@ jobs:
VERSION={tag}
platforms: |
linux/amd64
linux/arm/v7
linux/arm64
linux/arm/v7
linux/arm/v6
linux/386
restrict-to: kiwix/kiwix-tools
manual-tag: ${{ github.event.inputs.version }}
repo_description: auto

21
.readthedocs.yaml Normal file
View File

@@ -0,0 +1,21 @@
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
# Set the version of Python and other tools you might need
build:
os: ubuntu-22.04
tools:
python: "3.11"
# Build documentation in the docs/ directory with Sphinx
sphinx:
configuration: docs/conf.py
# We recommend specifying your dependencies to enable reproducible builds:
# https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
python:
install:
- requirements: docs/requirements.txt

View File

@@ -1,3 +1,8 @@
Unreleased
==========
* Additional docker images archs for armv6 and i386.
kiwix-tools 3.5.0
=================

View File

@@ -1,12 +1,25 @@
FROM alpine:3.16
FROM alpine:3.18
LABEL org.opencontainers.image.source https://github.com/openzim/kiwix-tools
# TARGETPLATFORM is injected by docker build
ARG TARGETPLATFORM
ARG VERSION
RUN apk --no-cache add dumb-init curl && \
ARCH=$(cat /etc/apk/arch) && \
if [ "$ARCH" = "x86" ]; then ARCH="i586"; \
elif [ "$ARCH" = "aarch64" ]; then ARCH="armhf"; \
elif [ "$ARCH" = "armv7" ]; then ARCH="armhf"; fi && \
RUN set -e && \
apk --no-cache add dumb-init curl && \
echo "TARGETPLATFORM: $TARGETPLATFORM" && \
if [ "$TARGETPLATFORM" = "linux/386" ]; then ARCH="i586"; \
# linux/arm64/v8 points to linux/arm64
elif [ "$TARGETPLATFORM" = "linux/arm64/v8" \
-o "$TARGETPLATFORM" = "linux/arm64" ]; then ARCH="aarch64"; \
# linux/arm translates to linux/arm/v7
elif [ "$TARGETPLATFORM" = "linux/arm/v7" ]; then ARCH="armv8"; \
elif [ "$TARGETPLATFORM" = "linux/arm/v6" ]; then ARCH="armv6"; \
elif [ "$TARGETPLATFORM" = "linux/amd64/v3" \
-o "$TARGETPLATFORM" = "linux/amd64/v2" \
-o "$TARGETPLATFORM" = "linux/amd64" ]; then ARCH="x86_64"; \
# we dont suppot any other arch so let it fail
else ARCH="unknown"; fi && \
# download requested kiwix-tools version
url="http://mirror.download.kiwix.org/release/kiwix-tools/kiwix-tools_linux-$ARCH-$VERSION.tar.gz" && \
echo "URL: $url" && \

View File

@@ -30,3 +30,7 @@ docker run -v $(pwd):/data -it ghcr.io/kiwix/kiwix-tools kiwix-search /data/wiki
- `wget` in `alpine:3` on `arm/v7` (__inside github action only__) crashes when downloading from HTTPs locations. Keep http-only in Dockerfile.
- Was also unhappy when using the mirrors so it's using `mirror.download` on purpose.
## See also
If you are interested by a Kiwix server only container image, [here it is](server/README.md).

View File

@@ -12,6 +12,12 @@ With local ZIM file(s)
docker run -v /tmp/zim:/data -p 8080:8080 ghcr.io/kiwix/kiwix-serve wikipedia.zim wiktionary.zim
```
or, if you want to load all ZIM files within a directory, then use globbing:
```bash
docker run -v /tmp/zim:/data -p 8080:8080 ghcr.io/kiwix/kiwix-serve '*.zim'
```
With remote ZIM file
--------------------
@@ -36,7 +42,12 @@ Build an image for an ARM based GNU/Linux:
docker build . -t ghcr.io/kiwix/kiwix-serve:latest --build-arg ARCH="arm32v7/"
```
You can also deploy kiwix with [`docker-compose`](https://docs.docker.com/compose/). Check out a sample at [docker-compose.yml.example](docker-compose.yml.example)
Docker Compose
--------------
You can also deploy kiwix with
[`docker-compose`](https://docs.docker.com/compose/). Check out a
sample at [docker-compose.yml.example](docker-compose.yml.example).
Screenshots
-----------

View File

@@ -3,7 +3,7 @@ services:
kiwix-serve:
ports:
- 8080:8080
image: kiwix/kiwix-serve
image: ghcr.io/kiwix/kiwix-serve:latest
# uncomment next 4 lines to use it with local zim file in /tmp/zim
# volumes:
# - /tmp/zim:/data

View File

@@ -1,7 +1,7 @@
project('kiwix-tools', 'cpp',
version : '3.5.0',
license : 'GPL',
default_options: ['c_std=c11', 'cpp_std=c++11', 'werror=true'])
default_options: ['c_std=c11', 'cpp_std=c++17', 'werror=true'])
compiler = meson.get_compiler('cpp')

View File

@@ -1,60 +1,132 @@
.TH KIWIX 1 "21 May 2012"
.TH KIWIX 1 "10 July 2023"
.SH NAME
kiwix\-serve \- Kiwix HTTP Server
kiwix-serve \- Kiwix HTTP Server
.SH SYNOPSIS
.IX Header "SYNOPSIS"
.B kiwix-serve --library [OPTIONS] LIBRARY_FILE_PATH
.br
kiwix\-serve [\-\-index=INDEX_PATH] [\-\-port=PORT] [\-\-verbose] [\-\-daemon] [\-\-attachToProcess=PID] ZIM_PATH
.br
kiwix\-serve \-\-library [\-\-port=PORT] [\-\-verbose] [\-\-daemon] [\-\-attachToProcess=PID] LIBRARY_PATH
.B kiwix-serve [OPTIONS] ZIM_FILE_PATH ...
.SH DESCRIPTION
.PP
Stand\-alone HTTP server for serving ZIM contents over the network.
The \fBkiwix-serve\fR command is used to run a stand-alone HTTP server for serving ZIM contents over the network.
.SH ARGUMENTS
.TP
\fBLIBRARY_FILE_PATH\fR
Path of an XML library file listing ZIM files to serve. To be used only with the --library option. Multiple library files can be provided as a semicolon (;) separated list.
.TP
\fB\-\-index=INDEX_PATH\fR
Path to index folder created using \fBkiwix-install\fB.
\fBZIM_FILE_PATH ...\fR
ZIM file path(s). Multiple arguments are allowed.
.SH OPTIONS
.TP
\fB--library\fR
By default, kiwix-serve expects a list of ZIM files as command line arguments. Providing the --library option tells kiwix-serve that the command line argument is rather a library XML file.
.TP
\fB\-\-port=PORT\fR
Port number on which the server should listen.
\fB-i ADDR, --address=ADDR\fR
Listen only on this IP address. By default, the server listens on all available IP addresses.
.TP
\fB-p PORT, --port=PORT\fR
TCP port on which to listen for HTTP requests (default: 80).
.TP
\fB-r ROOT, --urlRootLocation=ROOT\fR
URL prefix on which the content should be made available (default: empty).
.TP
\fB-d, --daemon\fR
Detach the HTTP server daemon from the main process.
.TP
\fB-a PID, --attachToProcess=PID\fR
Exit when the process with id PID stops running.
.TP
\fB-M, --monitorLibrary\fR
Monitor the XML library file and reload it automatically when it changes.
Library reloading can be forced anytime by sending a SIGHUP signal to the
\*(lqkiwix-serve\*(rq process (this works regardless of the presence of the
\*(lq--monitorLibrary\*(rq/\*(lq-M\*(rq option).
.TP
\fB-m, --nolibrarybutton\fR
Disable the library home button in the ZIM viewer toolbar.
.TP
\fB-n, --nosearchbar\fR
Disable the search box in the ZIM viewer toolbar.
.TP
\fB-b, --blockexternal\fR
Prevent users from directly navigating to external resources via links in ZIM content.
.TP
\fB-t N, --threads=N\fR
Number of threads to run in parallel (default: 4).
.TP
\fB-s N, --searchLimit=N\fR
Maximum number of ZIM files in a fulltext multizim search (default: No limit).
.TP
\fB-z, --nodatealiases\fR
Create URL aliases for each content by removing the date embedded in the file name.
The expected format of the date in the filename is \*(lq_YYYY-MM\*(rq. For example, a ZIM file named \*(lqwikipedia_en_all_2020-08.zim\*(rq will be accessible both as \*(lqwikipedia_en_all_2020-08\*(rq and \*(lqwikipedia_en_all\*(rq.
.TP
\fB-c PATH, --customIndex=PATH\fR
Override the welcome page with a custom HTML file.
.TP
\fB-L N, --ipConnectionLimit=N\fR
Max number of (concurrent) connections per IP (default: infinite, recommended: >= 6).
.TP
\fB-v, --verbose\fR
Print debug log to STDOUT.
.TP
\fB-V, --version\fR
Print the software version.
.TP
\fB-h, --help\fR
Print a help message.
.SH EXAMPLES
Serve a single ZIM file:
.sp
.nf
.B kiwix-serve myzim.zim
.fi
Serve multiple ZIM files:
.sp
.nf
.B kiwix-serve zim1.zim zim2.zim zim3.zim
.fi
Serve ZIM files from a library:
.sp
.nf
.B kiwix-serve --library library.xml
.fi
.SH DOCUMENTATION
Online documentation: https://kiwix-tools.readthedocs.io/en/latest/kiwix-serve.html
.br
By default, server listens on port 80.
.TP
\fB\-\-verbose\fR
Enable verbose output.
.TP
\fB\-\-daemon\fR
Run the server as a daemon.
.TP
\fB\-\-attachToProcess=PID\fR
Shutdown the server when process numbered PID dies.
.TP
\fBZIM_PATH\fR
ZIM file of the content to serve.
Source code: https://github.com/kiwix/kiwix-tools
.br
Mandatory if not in library mode.
More info: https://wiki.kiwix.org/wiki/Kiwix-serve
.TP
\fB\-\-library\fR
Enable library mode.
.br
Serves the contents of a library file instead of a single ZIM file.
.TP
\fBLIBRARY_PATH\fR
Kiwix library file path.
.br
Library is an XML file created using \fBkiwix-manage\fB.
.SH SEE ALSO
kiwix(1) kiwix\-manage(1)
.SH AUTHOR
.SH AUTHORS
Emmanuel Engelhart <kelson@kiwix.org>
.br
Vasudev Kamath <kamathvasudev@gmail.com> (Manual)
Vasudev Kamath <kamathvasudev@gmail.com>

View File

@@ -61,7 +61,7 @@ void usage()
<< "Optional arguments:" << std::endl << std::endl
<< "\t-h, --help\t\tPrint this help" << std::endl << std::endl
<< "\t-a, --attachToProcess\tWxit if given process id is not running anymore" << std::endl
<< "\t-a, --attachToProcess\tExit if given process id is not running anymore" << std::endl
<< "\t-d, --daemon\t\tDetach the HTTP server daemon from the main process" << std::endl
<< "\t-i, --address\t\tListen only on this ip address, all available ones otherwise" << std::endl
<< "\t-M, --monitorLibrary\tMonitor the XML library file and reload it automatically" << std::endl