From c1b0007ee193d736932cffada9d793fec36c8a1c Mon Sep 17 00:00:00 2001 From: jonnymacbean <75743578+jonnymacbean@users.noreply.github.com> Date: Wed, 27 Sep 2023 16:34:01 +0100 Subject: [PATCH 1/4] add kwiix-serve files --- apps/kiwix-serve/config.json | 19 +++++++++++ apps/kiwix-serve/docker-compose.yml | 39 +++++++++++++++++++++++ apps/kiwix-serve/metadata/description.md | 1 + apps/kiwix-serve/metadata/logo.jpg | Bin 0 -> 12163 bytes 4 files changed, 59 insertions(+) create mode 100644 apps/kiwix-serve/config.json create mode 100644 apps/kiwix-serve/docker-compose.yml create mode 100644 apps/kiwix-serve/metadata/description.md create mode 100644 apps/kiwix-serve/metadata/logo.jpg diff --git a/apps/kiwix-serve/config.json b/apps/kiwix-serve/config.json new file mode 100644 index 00000000..35898c4c --- /dev/null +++ b/apps/kiwix-serve/config.json @@ -0,0 +1,19 @@ +{ + "$schema": "../schema.json", + "name": "Kiwix Serve", + "port": 8080, + "available": true, + "exposable": true, + "id": "kiwix-serve", + "tipi_version": 1, + "version": "3.5.0-2", + "categories": [ + "media" + ], + "description": "Kiwix Serve is a web server for hosting .zim files", + "short_desc": "Kiwix Serve is a web server for hosting .zim files", + "author": "Kiwix", + "source": "https://github.com/kiwix/kiwix-tools/", + "website": "https://kiwix.org/", + "form_fields": [] +} \ No newline at end of file diff --git a/apps/kiwix-serve/docker-compose.yml b/apps/kiwix-serve/docker-compose.yml new file mode 100644 index 00000000..7c349984 --- /dev/null +++ b/apps/kiwix-serve/docker-compose.yml @@ -0,0 +1,39 @@ +version: "3.9" + +services: + kiwix-serve: + container_name: kiwix-serve + image: ghcr.io/kiwix/kiwix-serve:3.5.0-2 + ports: + - ${APP_PORT}:8080 + volumes: + - ${APP_DATA_DIR}/zim:/data + command: '*.zim' + restart: unless-stopped + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.kiwix-serve-web-redirect.redirectscheme.scheme: https + traefik.http.services.kiwix-serve.loadbalancer.server.port: 8080 + # Web + traefik.http.routers.kiwix-serve-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.kiwix-serve-insecure.entrypoints: web + traefik.http.routers.kiwix-serve-insecure.service: kiwix-serve + traefik.http.routers.kiwix-serve-insecure.middlewares: kiwix-serve-web-redirect + # Websecure + traefik.http.routers.kiwix-serve.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.kiwix-serve.entrypoints: websecure + traefik.http.routers.kiwix-serve.service: kiwix-serve + traefik.http.routers.kiwix-serve.tls.certresolver: myresolver + # Local domain + traefik.http.routers.kiwix-serve-local-insecure.rule: Host(`kiwix-serve.${LOCAL_DOMAIN}`) + traefik.http.routers.kiwix-serve-local-insecure.entrypoints: web + traefik.http.routers.kiwix-serve-local-insecure.service: kiwix-serve + traefik.http.routers.kiwix-serve-local-insecure.middlewares: kiwix-serve-web-redirect + # Local domain secure + traefik.http.routers.kiwix-serve-local.rule: Host(`kiwix-serve.${LOCAL_DOMAIN}`) + traefik.http.routers.kiwix-serve-local.entrypoints: websecure + traefik.http.routers.kiwix-serve-local.service: kiwix-serve + traefik.http.routers.kiwix-serve-local.tls: true diff --git a/apps/kiwix-serve/metadata/description.md b/apps/kiwix-serve/metadata/description.md new file mode 100644 index 00000000..30404ce4 --- /dev/null +++ b/apps/kiwix-serve/metadata/description.md @@ -0,0 +1 @@ +TODO \ No newline at end of file diff --git a/apps/kiwix-serve/metadata/logo.jpg b/apps/kiwix-serve/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f31a9e0c3bdce49488796765c427a6ba22cd75fc GIT binary patch literal 12163 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

AzBRaLY9Ji^%xk{ zpnl@sD8s&nfejZ~%u8$cRd_^X4@!|KvK#0TPJE|#cvo?l`Y;C3s6{yv5uiuoUSoO<|*0v9pz3IgT8S$KLZyhX>s7FTTB1AE{}7XHM3{w(Z{jQwcY@}%>V7R6`s z!=fMY7_TG=9w{n7RZUrAEDRH7D>CI~7{RFSWFP|mR3%hcR!l^hoE~pw;dNT$Iw?s8 zJdIA-n`)J;Qy-YLKv`r$?~hy^MdjRlvDQ^tk>V$1NbJU`F#SxP>9{f^iyZaJ;`> zvnI`-)5Zt*aCiSXNVPiPd+2WSb(o5>>L3~D-AhV|o;#qNhrJuGIkFoUA@QO~)=qe< zM{(st7QBm37k2Tt{I`8CYx1t^c+O`xqBvZ2(mmHuV|4E>QoKZ{#F1_ys?8IGoho(O zd&ZVl7y?rlVaOYR*&XGs^WwWd)?EqA6zw#t)+z5{NGL>(X@&Di(LFwjn(`qk1}Gs9 z-1RO_PQAoj*?3feX--|o5eWGue_{A3ll{KJD52)?96XtB?XIR(m6Zj3!LqxKT5s8~ zH#o<@dCb^OlgAqw6F(g@fSW;OPlV@B_;7^i#tZp!;~I+rHG_V|n1OmhbE)U?jaiC@ zY)bicy@P7rj8tj1ZX7nYzMOmGKt~CMzAgt{GD?kxvfT1ukV96|J&|fgUlXfc2V!Dx zuCD0HnkPlY-TcItm}@lhvd;sfyvk4xLSLzYCd`3oD4^FdM;B!90T~}QBD1}OKNH(4Udz{O*hW=q0$<0_noe<04-vOF$09(<2n#=r5}@XOih zB&|b3;}?+m@uhtW`t(OXS;4&0A_{6&A?Pd04wt4)&)oOso~4|ss&N0pSI~4MhGTpK0@|_4P!#u2myh}^r)8X zcX`WqbL|)CPhz0jzKt!)+I|6@MW9}LaJ*?nka8bqZ}7#vdNbO)xis5(=sRE%>^X18 zAzOPrqBfivNTEW2%`bok^i$&frrf!jZ^zZa4~05(yPeCDs|;8M8fzdu`#VkI)AtDUY0hufGetZqogQ=>`R9TdzeG2FIWz=Ld_J0~Z29El6xsr}NDgQyiq~OPx|RWFkZc zqzwH}9<(I>0r!GLG$yhTy69zgl+ z#W5-(R~=~HB<@#A9h7OMm}_=DKQrxRUM80b8Mv=z8ReI4blEA<@dVd+EQZQIa84Y( zDuA{BJGu-!0BAzjCVhpx(=tyr4{SjPP2vkPb{-TX=I5GBgxi1=&9J)7Jq=a2(4!cHXi~#6{M6=U)1> zVOA=wD|d_>0V~q-OWZ|%+S+)NKg95{Lr$ze+$BQiZ7^z;66M`rc$Su{#}gXdW7&Yx z1mXpYz0yTVSnA<~KJSubuL_%7hNGx@Z@TH1_f+XV8Axc-we;qxiwA;=Y7TY0`xhf_KS>hmjM}s(1I>=b zX3FQ*Z1{NZzPc&UPfhqn(*9N9k?Sls8Hfq1BUMo_YsVFj;^K63HM>01Gi_cO2AH-0 z@RK~#?=$^Jkp0WGpXiF8Jn$v13iPeP7s76A1~Jj2W9KP(UQVUi8}DX!Cj;D;{)U-u z@Uuu7dY^{HXKOie0CvuI(~NKH-Ny=`V*b(r<{|tQAgI{TaXxr|P~j&Q$X;1zXz5`4 z6DQsmc&RMPvym5k$BW7$X9nhdZcC*ctwhclttC)kIt$}#j5N2+At>)?Z7nyhXdMnU z(6?tgde^?6r}+{of(k(EmYy_gBrv{E-lOz+aQsONOQe(`A=BuQi$K}(c9}lU^`bd3 zZ+C6&371gX1{gq;+n*08%L#_5C9sRMsOo=(=(kG7y@oJ%Et6tzPa$S1bq3cbIZ$JU zY+?qQ5SJ+KMO7g5^Ij2fJX`kK^?;me+v|Lwq-td{;Ln>tCEH#~22$*+m&gDKiI=v| zKcxJD6p%)lAu{keM{z4?W9>Q_pwur%vp@%91Pksuvir0stE*`nl58FrRmi`+dx-2e@3g)fTjvc^sz6VAOb z`M^65q<3|U1!BLTs2`B)AIQIJ=1M?P(3wY}Y`RAp}HRt|?9Zy3(x?W5k5 zlLXh>JIN91!Nu68&7W^pFM{zRUt*$iTJBmpl8s+ia6=VK6?P(G%^-eT)amZr)cb4w zwnx(xxfz2hP;)R;Ei|<6L2^~+!v;;E{AO((js9q0byqoB@6?lLPomcSGW1U|HtVtE z9hYo$k7|Hx=~A6I;6HzlLJ6dBwQtktkR;Xn6@|!vvTVv{)|724yo7!J#}c2Dq)V>o zMN#zUdbK0%VKz~=mBrm+8XJ9{aU$(#zHsSA)iPb!5jN+1j?6nwFR&0{S1hq?Msi^1 z!?9lr4JBgZi<>=)rdKNK23=b;xtj_uHx7ze3&sXr_W^>abKldBG|4J@l}f#&hlaa9 z@QX%|;{{MCI#8n{FkzpcQvBJPbZMb_Q3(C{)uH5(XE7sTLldGVIIg0p7A^sN*D7v*eE}iHPZO3@#1uY_hM^P z4Q)5kzMWUr@|E7V#dxsyOl91VV@^|svkfl(qS7_uYArlk6?k)`G9uHHdE*#oKc8^5 zilIkimT9gUpt)vTJ^4KF6d8Eg`7g2CQx}?Id!6K;Ird@u6z_LQT@5&KFh<+R6Y4KZ z2_vWbG|yjd_2;-7GGryO0zYfUb6uj@@+Ka{c1zpH#$w9tbhJ80Jz#oL=9zN|{Pn7? z1nI+}u9RD-oQsYhTc7Ea91rFtnS$`ol-^<_lvFt24=FFq>BnB$rQ+Mu`09-oZu`t< z4z8!bln6LqiD%S#i8&K$gR7+w{nzr@SI6jeMZWZRQ@0E`mF z7yk(MzRTG764yemXUZD2eVM$zVJKb|cYn|)0M9<{dh=lCONWRnTd(FFvRd%Q#I zfi{x$7HAF*1OUT&Vh^=MIIvU5e^$!)xo-MHgb^-TrfNGsscbY-&f~SdbKvCM?wcf% zCja@M+X;z^Nt@%jdk8=;sr4CY6}?VElaNt!hV#Fc%{=g$!ex3ZXoCP^F<_LPKkT1-ZQiPH4+bGCp$1)|Y`^q@XsTnBJp5$( z(6N1lV+`CjI!thGw__HO@{vgNTdOIwE))-{WY{4^kpV)Up9sXF zzu7+Gyl2mh;k7Z0aM_3^k}nAf?<3@uLLR@4P!Q3DDQ>)gwJi=t2a zn;AdU?HiU_&fJb1RMX8)ElccOf6+6iZl#2nQZE?A^Qf818d2UgcznIp1vd5EKQ=RB zlL`rw*DYDnfX7HNzbX>Abaih=N;Jb~HUOJeWc}ud=t5%4YZe^;MaIC@K!+IplHf=8 z``#IZC~({kIsr7N6^kEMa(u&3e8!}m``G6`8QKjZ8+C!?2FBOwc$|&Q;^)oF19eks zfL>-JSIa0Wu5d4&E;0HDLAbpNQ_Ep40xxKn+uOrx?#QAQ#u0CMjSRG+8sLwGV|(Vy zlDtx>aTgqAb;8d@@Tc4&LDffIY<}XXw`)Go(x0*n`Le7jblu<9QGTh%!2g)%_+f2- zjh(Tgw!x(@>a}T>8le_Z_qo3if^pvLH>)=tGBpt!v|bstO^}eY zA?;08hq~jMfO~iHS}wV3(uP}E Date: Wed, 27 Sep 2023 20:54:27 +0100 Subject: [PATCH 2/4] added description --- apps/kiwix-serve/config.json | 6 ++--- apps/kiwix-serve/metadata/description.md | 27 ++++++++++++++++++++++- apps/kiwix-serve/metadata/logo.jpg | Bin 12163 -> 26000 bytes 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/apps/kiwix-serve/config.json b/apps/kiwix-serve/config.json index 35898c4c..c6f7140d 100644 --- a/apps/kiwix-serve/config.json +++ b/apps/kiwix-serve/config.json @@ -1,6 +1,6 @@ { "$schema": "../schema.json", - "name": "Kiwix Serve", + "name": "Kiwix Server", "port": 8080, "available": true, "exposable": true, @@ -10,8 +10,8 @@ "categories": [ "media" ], - "description": "Kiwix Serve is a web server for hosting .zim files", - "short_desc": "Kiwix Serve is a web server for hosting .zim files", + "description": "Kiwix Server is a web server for hosting .zim files", + "short_desc": "Kiwix Server is a web server for hosting .zim files", "author": "Kiwix", "source": "https://github.com/kiwix/kiwix-tools/", "website": "https://kiwix.org/", diff --git a/apps/kiwix-serve/metadata/description.md b/apps/kiwix-serve/metadata/description.md index 30404ce4..eab0c153 100644 --- a/apps/kiwix-serve/metadata/description.md +++ b/apps/kiwix-serve/metadata/description.md @@ -1 +1,26 @@ -TODO \ No newline at end of file +# Kiwix Server + +Kiwix Server is a .zim compatible web server: it allows you to deliver .zim files over the HTTP protocol within your local network – be it a University or your own house. Simply start Kiwix-Serve on your machine, and your content will be available for anybody through their web browser. This allows you to view a website without having internet access. + + +**Ensure that your there are .zim files in the `${APP_DATA_DIR}/zim` directory otherwise the server won't launch properly and will need to be restarted** + +For doumentation see [the Kiwix wiki](https://wiki.kiwix.org/wiki/Kiwix-serve) + +## Features + +* Full text search engine +* Search suggestions +* Really small and efficient +* Compatible with almost all browsers +* Available on all platforms +* Available as command line executable +* Embedded in Kiwix UI +* Able to deal with one ZIM file or XML library files +* [RESTful API endpoint with OPDS (XML)](https://wiki.kiwix.org/wiki/OPDS) + +## What are ZIM files? + +The ZIM file format is an open file format that stores wiki content for offline usage. The format is defined by the openZIM project, which also supports an Kiwix. The format is primarily used to store the contents of Wikipedia and other Wikimedia projects, including articles, full-text search indices and auxiliary files. + +Download ZIM files from the [Kiwix library](https://library.kiwix.org/#lang=eng), or create your own (see [Zimit](https://www.youzim.it/)) \ No newline at end of file diff --git a/apps/kiwix-serve/metadata/logo.jpg b/apps/kiwix-serve/metadata/logo.jpg index f31a9e0c3bdce49488796765c427a6ba22cd75fc..588df3e83402892660358562f4c3677fbd8e10a3 100644 GIT binary patch literal 26000 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 Qwf{=NeF*zgHeU7q1I+v9f&c&j literal 12163 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

AzBRaLY9Ji^%xk{ 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 Date: Wed, 27 Sep 2023 20:57:51 +0100 Subject: [PATCH 3/4] change dir --- apps/kiwix-serve/docker-compose.yml | 2 +- apps/kiwix-serve/metadata/description.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/kiwix-serve/docker-compose.yml b/apps/kiwix-serve/docker-compose.yml index 7c349984..6c5e0b83 100644 --- a/apps/kiwix-serve/docker-compose.yml +++ b/apps/kiwix-serve/docker-compose.yml @@ -7,7 +7,7 @@ services: ports: - ${APP_PORT}:8080 volumes: - - ${APP_DATA_DIR}/zim:/data + - ${APP_DATA_DIR}/data/zim:/data command: '*.zim' restart: unless-stopped networks: diff --git a/apps/kiwix-serve/metadata/description.md b/apps/kiwix-serve/metadata/description.md index eab0c153..6739cd45 100644 --- a/apps/kiwix-serve/metadata/description.md +++ b/apps/kiwix-serve/metadata/description.md @@ -3,7 +3,7 @@ Kiwix Server is a .zim compatible web server: it allows you to deliver .zim files over the HTTP protocol within your local network – be it a University or your own house. Simply start Kiwix-Serve on your machine, and your content will be available for anybody through their web browser. This allows you to view a website without having internet access. -**Ensure that your there are .zim files in the `${APP_DATA_DIR}/zim` directory otherwise the server won't launch properly and will need to be restarted** +**Ensure that your there are .zim files in the `${APP_DATA_DIR}/data/zim` directory otherwise the server won't launch properly and will need to be restarted** For doumentation see [the Kiwix wiki](https://wiki.kiwix.org/wiki/Kiwix-serve) From 6f17737a454ee02e5c2b42aaa62c6ff8b986a2b3 Mon Sep 17 00:00:00 2001 From: Nicolas Meienberger Date: Sat, 7 Oct 2023 11:57:33 +0200 Subject: [PATCH 4/4] chore(kiwix-serve): change port to 8169 --- apps/kiwix-serve/config.json | 8 +++----- apps/kiwix-serve/docker-compose.yml | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/apps/kiwix-serve/config.json b/apps/kiwix-serve/config.json index c6f7140d..dbeedfac 100644 --- a/apps/kiwix-serve/config.json +++ b/apps/kiwix-serve/config.json @@ -1,19 +1,17 @@ { "$schema": "../schema.json", "name": "Kiwix Server", - "port": 8080, + "port": 8169, "available": true, "exposable": true, "id": "kiwix-serve", "tipi_version": 1, "version": "3.5.0-2", - "categories": [ - "media" - ], + "categories": ["media"], "description": "Kiwix Server is a web server for hosting .zim files", "short_desc": "Kiwix Server is a web server for hosting .zim files", "author": "Kiwix", "source": "https://github.com/kiwix/kiwix-tools/", "website": "https://kiwix.org/", "form_fields": [] -} \ No newline at end of file +} diff --git a/apps/kiwix-serve/docker-compose.yml b/apps/kiwix-serve/docker-compose.yml index 6c5e0b83..56b739a8 100644 --- a/apps/kiwix-serve/docker-compose.yml +++ b/apps/kiwix-serve/docker-compose.yml @@ -1,4 +1,4 @@ -version: "3.9" +version: '3.9' services: kiwix-serve: