Mainly add searx/searx-checker
- Add searx/searx-checker image with automatic check everyday. Result https://${HOSTNAME}/status - Cache /static files - Add start.sh, stop.sh, update.sh
This commit is contained in:
parent
4023196f54
commit
86f1f7e22d
10 changed files with 183 additions and 46 deletions
11
.env
11
.env
|
@ -1,10 +1,13 @@
|
||||||
# hostname and protocol
|
# hostname and protocol (empty except for localhost, set to "https://")
|
||||||
SEARX_HOSTNAME=localhost
|
SEARX_HOSTNAME=localhost
|
||||||
|
|
||||||
# empty unless SEARX_HOSTNAME is localhost in this case "https://"
|
|
||||||
SEARX_PROTOCOL=https://
|
SEARX_PROTOCOL=https://
|
||||||
|
SEARX_TLS=self_signed
|
||||||
|
|
||||||
# Let's Encrypt : email provided
|
# automaticaly update settings to the new version
|
||||||
|
# comment this line if you made / will make some modifications to the settings
|
||||||
|
SEARX_COMMAND=-f
|
||||||
|
|
||||||
|
# Let's encrypt contact information
|
||||||
LETSENCRYPT_EMAIL=email@example.com
|
LETSENCRYPT_EMAIL=email@example.com
|
||||||
|
|
||||||
# Do you agree Let's Encrypt TOS https://letsencrypt.org/repository/
|
# Do you agree Let's Encrypt TOS https://letsencrypt.org/repository/
|
||||||
|
|
15
Caddyfile
15
Caddyfile
|
@ -1,5 +1,5 @@
|
||||||
{$SEARX_PROTOCOL}{$SEARX_HOSTNAME} {
|
{$SEARX_PROTOCOL}{$SEARX_HOSTNAME} {
|
||||||
tls self_signed
|
tls {$SEARX_TLS}
|
||||||
gzip {
|
gzip {
|
||||||
not /morty
|
not /morty
|
||||||
}
|
}
|
||||||
|
@ -48,8 +48,18 @@
|
||||||
-Pragma
|
-Pragma
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cache {
|
||||||
|
match_path /static
|
||||||
|
status_header X-Cache-Status
|
||||||
|
default_max_age 12h
|
||||||
|
path /tmp/caddy-cache
|
||||||
|
}
|
||||||
|
|
||||||
|
rewrite /status /searx-checker/status.json
|
||||||
|
|
||||||
proxy / 127.0.0.1:4040 {
|
proxy / 127.0.0.1:4040 {
|
||||||
transparent
|
transparent
|
||||||
|
except /searx-checker/status.json
|
||||||
}
|
}
|
||||||
|
|
||||||
basicauth /filtron {$FILTRON_USER} {$FILTRON_PASSWORD}
|
basicauth /filtron {$FILTRON_USER} {$FILTRON_PASSWORD}
|
||||||
|
@ -57,7 +67,6 @@
|
||||||
without /filtron
|
without /filtron
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
proxy /morty 127.0.0.1:3000
|
proxy /morty 127.0.0.1:3000
|
||||||
|
|
||||||
limits {
|
limits {
|
||||||
|
@ -66,4 +75,6 @@
|
||||||
body /morty 5MB
|
body /morty 5MB
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ratelimit * /morty 150 300 hour
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
38
README.md
38
README.md
|
@ -5,26 +5,42 @@ See https://github.com/asciimoo/searx/issues/1561 )
|
||||||
|
|
||||||
Do not use it for now : this is a work in progress and there is no antibot feature.
|
Do not use it for now : this is a work in progress and there is no antibot feature.
|
||||||
|
|
||||||
|
## What is included ?
|
||||||
|
|
||||||
|
- [Caddy](https://github.com/abiosoft/caddy-docker) as a reverse proxy (create a LetsEncrypt certificate automaticaly)
|
||||||
|
- [filtron](https://github.com/asciimoo/filtron): See [#4](https://github.com/asciimoo/filtron/pull/4) to build the docker image.
|
||||||
|
- [searx](https://github.com/asciimoo/searx): See [#1629](https://github.com/asciimoo/searx/pull/1629) to build the docker image.
|
||||||
|
- [morty](https://github.com/asciimoo/morty): clone the project, then "make build" to create the docker image
|
||||||
|
|
||||||
## How to use it
|
## How to use it
|
||||||
- [Install docker](https://docs.docker.com/install/)
|
- [Install docker](https://docs.docker.com/install/)
|
||||||
- [Install docker-compose](https://docs.docker.com/compose/install/)
|
- [Install docker-compose](https://docs.docker.com/compose/install/)
|
||||||
- Get searx-docker
|
- Get searx-docker
|
||||||
```sh
|
```sh
|
||||||
mkdir -p /opt
|
cd /usr/local
|
||||||
cd /opt
|
|
||||||
git clone https://github.com/searx/searx-docker.git
|
git clone https://github.com/searx/searx-docker.git
|
||||||
|
cd searx-docker
|
||||||
```
|
```
|
||||||
- Configure the .env file
|
- Edit the .env file according to your need
|
||||||
- Check using ```docker-compose up```
|
- Check everything is working: ```./start.sh```,
|
||||||
- If everything is working, then :
|
- ```cp searx-docker.service.template searx-docker.service```
|
||||||
|
- edit the content of ```WorkingDirectory``` in the ```searx-docker.service``` file (only if the installation path is different from /usr/local/searx-docker)
|
||||||
|
- Install the systemd unit :
|
||||||
```sh
|
```sh
|
||||||
cp /opt/searx-docker/searx-docker.service /etc/systemd/system
|
systemctl enable $(pwd)/searx-docker.service
|
||||||
systemctl start searx-docker.service
|
systemctl start searx-docker.service
|
||||||
```
|
```
|
||||||
|
|
||||||
## What is included ?
|
## Custom docker-compose.yaml
|
||||||
|
|
||||||
- [Caddy](https://github.com/abiosoft/caddy-docker) as a reverse proxy (take care to call LetsEncrypt)
|
Do not modify docker-compose.yaml otherwise you won't be able to update easily from the git repository.
|
||||||
- [filtron](https://github.com/asciimoo/filtron): See [#4](https://github.com/asciimoo/filtron/pull/4) to build the docker image.
|
|
||||||
- [searx](https://github.com/asciimoo/searx): See [#1629](https://github.com/asciimoo/searx/pull/1629) to build the docker image.
|
It is possible to the [extend feature](https://docs.docker.com/compose/extends/) of docker-compose :
|
||||||
- [morty](https://github.com/asciimoo/morty): clone the project, then "make build" to create the docker image
|
- stop the service : ```systemctl stop searx-docker.service```
|
||||||
|
- create a new docker-compose-extend.yaml, check with ```start.sh```
|
||||||
|
- update searx-docker.service (see SEARX_DOCKERCOMPOSEFILE)
|
||||||
|
- restart the servie : ```systemctl restart searx-docker.service```
|
||||||
|
|
||||||
|
## How to update ?
|
||||||
|
|
||||||
|
- Check the content of ```update.sh```
|
||||||
|
|
|
@ -11,12 +11,14 @@ services:
|
||||||
network_mode: host
|
network_mode: host
|
||||||
command: -email ${LETSENCRYPT_EMAIL} -agree=${LETSENCRYPT_AGREE} -log stdout -host ${SEARX_HOSTNAME} -conf /etc/Caddyfile
|
command: -email ${LETSENCRYPT_EMAIL} -agree=${LETSENCRYPT_AGREE} -log stdout -host ${SEARX_HOSTNAME} -conf /etc/Caddyfile
|
||||||
volumes:
|
volumes:
|
||||||
- ./Caddyfile:/etc/Caddyfile
|
- ./Caddyfile:/etc/Caddyfile:rw
|
||||||
- ./caddy:/root/.caddy
|
- ./caddy:/root/.caddy:rw
|
||||||
- ./srv:/srv
|
- ./srv:/srv:rw
|
||||||
|
- searx-checker:/srv/searx-checker:rw
|
||||||
environment:
|
environment:
|
||||||
- SEARX_HOSTNAME=${SEARX_HOSTNAME}
|
- SEARX_HOSTNAME=${SEARX_HOSTNAME}
|
||||||
- SEARX_PROTOCOL=${SEARX_PROTOCOL}
|
- SEARX_PROTOCOL=${SEARX_PROTOCOL:-}
|
||||||
|
- SEARX_TLS=${SEARX_TLS:-}
|
||||||
- FILTRON_USER=${FILTRON_USER}
|
- FILTRON_USER=${FILTRON_USER}
|
||||||
- FILTRON_PASSWORD=${FILTRON_PASSWORD}
|
- FILTRON_PASSWORD=${FILTRON_PASSWORD}
|
||||||
cap_drop:
|
cap_drop:
|
||||||
|
@ -43,14 +45,15 @@ services:
|
||||||
|
|
||||||
searx:
|
searx:
|
||||||
container_name: searx
|
container_name: searx
|
||||||
image: searx
|
image: asciimoo/searx
|
||||||
hostname: searx
|
hostname: searx
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
networks:
|
||||||
searx:
|
searx:
|
||||||
ipv4_address: 10.10.10.4
|
ipv4_address: 10.10.10.4
|
||||||
|
command: ${SEARX_COMMAND:-}
|
||||||
volumes:
|
volumes:
|
||||||
- ./searx:/etc/searx
|
- ./searx:/etc/searx:rw
|
||||||
environment:
|
environment:
|
||||||
- BIND_ADDRESS=10.10.10.4:8080
|
- BIND_ADDRESS=10.10.10.4:8080
|
||||||
- BASE_URL=https://${SEARX_HOSTNAME}/
|
- BASE_URL=https://${SEARX_HOSTNAME}/
|
||||||
|
@ -74,7 +77,7 @@ services:
|
||||||
networks:
|
networks:
|
||||||
searx:
|
searx:
|
||||||
ipv4_address: 10.10.10.5
|
ipv4_address: 10.10.10.5
|
||||||
command: -listen 10.10.10.5:3000 -timeout 3 -ipv6
|
command: -listen 10.10.10.5:3000 -timeout 6 -ipv6
|
||||||
environment:
|
environment:
|
||||||
- MORTY_KEY=${MORTY_KEY}
|
- MORTY_KEY=${MORTY_KEY}
|
||||||
logging:
|
logging:
|
||||||
|
@ -83,9 +86,24 @@ services:
|
||||||
cap_drop:
|
cap_drop:
|
||||||
- ALL
|
- ALL
|
||||||
|
|
||||||
|
searx-checker:
|
||||||
|
container_name: searx-checker
|
||||||
|
image: searx/searx-checker
|
||||||
|
hostname: searx-checker
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
searx:
|
||||||
|
ipv4_address: 10.10.10.6
|
||||||
|
command: -cron -o html/data/status.json http://10.10.10.4:8080
|
||||||
|
volumes:
|
||||||
|
- searx-checker:/usr/local/searx-checker/html/data:rw
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
searx:
|
searx:
|
||||||
ipam:
|
ipam:
|
||||||
driver: default
|
driver: default
|
||||||
config:
|
config:
|
||||||
- subnet: 10.10.10.0/24
|
- subnet: 10.10.10.0/24
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
searx-checker:
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
[Unit]
|
|
||||||
Description=searx-docker service
|
|
||||||
Requires=docker.service
|
|
||||||
After=docker.service
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Restart=always
|
|
||||||
|
|
||||||
WorkingDirectory=/opt/searx-docker/
|
|
||||||
|
|
||||||
# Remove old containers, images and volumes
|
|
||||||
ExecStartPre=/usr/local/bin/docker-compose down -v
|
|
||||||
ExecStartPre=/usr/local/bin/docker-compose rm -fv
|
|
||||||
|
|
||||||
# Compose up
|
|
||||||
ExecStart=/usr/bin/docker-compose up
|
|
||||||
|
|
||||||
# Compose down, remove containers and volumes
|
|
||||||
ExecStop=/usr/local/bin/docker-compose down -v
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
17
searx-docker.service.template
Normal file
17
searx-docker.service.template
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
<[Unit]
|
||||||
|
Description=searx service
|
||||||
|
Requires=docker.service
|
||||||
|
After=docker.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
Environment=SEARX_DOCKERCOMPOSEFILE=docker-compose.yaml
|
||||||
|
|
||||||
|
WorkingDirectory=/usr/local/searx-docker
|
||||||
|
|
||||||
|
ExecStart=/bin/sh -c "start.sh"
|
||||||
|
ExecStop=/bin/sh -c "stop.sh"
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
21
start.sh
Executable file
21
start.sh
Executable file
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ./util.sh
|
||||||
|
|
||||||
|
if grep -q "MORTY_KEY=RemplaceWithARealKey!" .env; then
|
||||||
|
echo "In the .env file, you must configure MORTY_KEY" 1>&2
|
||||||
|
CANT_START=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if grep -q "FILTRON_PASSWORD=password" .env; then
|
||||||
|
echo "In the .env file, you must configure FILTRON_PASSWORD" 1>&2
|
||||||
|
CANT_START=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $CANT_START ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
$DOCKERCOMPOSE -f $DOCKERCOMPOSEFILE down -v
|
||||||
|
$DOCKERCOMPOSE -f $DOCKERCOMPOSEFILE rm -fv
|
||||||
|
$DOCKERCOMPOSE -f $DOCKERCOMPOSEFILE up
|
5
stop.sh
Executable file
5
stop.sh
Executable file
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ./util.sh
|
||||||
|
|
||||||
|
$DOCKERCOMPOSE -f $DOCKERCOMPOSEFILE down -v
|
40
update.sh
Executable file
40
update.sh
Executable file
|
@ -0,0 +1,40 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ./util.sh
|
||||||
|
|
||||||
|
if [ ! -x "${which systemctl}" ]; then
|
||||||
|
echo "systemctl not found" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -x "${which git}" ]; then
|
||||||
|
echo "git not found" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# stop the systemd service
|
||||||
|
systemctl stop searx-docker.service
|
||||||
|
|
||||||
|
# save local modification
|
||||||
|
git stash push
|
||||||
|
|
||||||
|
# update only if fast forward can be used, saver than "git pull --rebase"
|
||||||
|
git pull --ff-only || {
|
||||||
|
git stash pop
|
||||||
|
echo "The local and remote branches have diverged. Please update manually."
|
||||||
|
echo "Use\n systemctl start searx-docker.service\nto restart searx"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# re-apply local modification
|
||||||
|
git stash pop
|
||||||
|
|
||||||
|
# update docker images
|
||||||
|
docker-compose pull
|
||||||
|
|
||||||
|
# update searx configuration
|
||||||
|
source ./.env
|
||||||
|
docker-compose run searx ${SEARX_COMMAND} -d
|
||||||
|
|
||||||
|
# let the user see
|
||||||
|
echo "Use\n systemctl start searx-docker.service\nto restart searx"
|
28
util.sh
Normal file
28
util.sh
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
BASE_DIR="$(dirname -- "`readlink -f -- "$0"`")"
|
||||||
|
cd -- "$BASE_DIR"
|
||||||
|
set -e
|
||||||
|
|
||||||
|
DOCKERCOMPOSE=$(which docker-compose || echo "/usr/local/bin/docker-compose")
|
||||||
|
DOCKERCOMPOSEFILE="${DOCKERCOMPOSEFILE:-docker-compose.yaml}"
|
||||||
|
|
||||||
|
echo "use ${DOCKERCOMPOSEFILE}"
|
||||||
|
|
||||||
|
if [ ! -x "$(which docker)" ]; then
|
||||||
|
echo "docker not found" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! docker version > /dev/null 2>&1; then
|
||||||
|
echo "can't execute docker (current user: $(whoami))" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -x "${DOCKERCOMPOSE}" ]; then
|
||||||
|
echo "docker-compose not found" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "${DOCKERCOMPOSEFILE}" ]; then
|
||||||
|
echo "${DOCKERCOMPOSEFILE} not found" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
Loading…
Reference in a new issue