Add search
This commit is contained in:
+101
-2
@@ -6,10 +6,14 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
(secure) {
|
(secure) {
|
||||||
header {
|
@static-files {
|
||||||
Cache-Control "no-cache, no-store, must-revalidate"
|
file
|
||||||
|
path *.ico *.css *.js *.gif *.webp *.avif *.jpg *.jpeg *.png *.svg *.woff *.woff2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
header @static-files Cache-Control "max-age=5184000"
|
||||||
|
header / Cache-Control "no-cache, no-store, must-revalidate"
|
||||||
|
|
||||||
forward_auth authelia:9091 {
|
forward_auth authelia:9091 {
|
||||||
uri /api/authz/forward-auth
|
uri /api/authz/forward-auth
|
||||||
copy_headers Remote-User Remote-Groups Remote-Name Remote-Email
|
copy_headers Remote-User Remote-Groups Remote-Name Remote-Email
|
||||||
@@ -36,6 +40,101 @@ www.64815139.xyz {
|
|||||||
redir https://www.{host}{uri}
|
redir https://www.{host}{uri}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
search.64815139.xyz {
|
||||||
|
log {
|
||||||
|
output discard
|
||||||
|
}
|
||||||
|
|
||||||
|
import secure *
|
||||||
|
|
||||||
|
@api {
|
||||||
|
path /config
|
||||||
|
path /healthz
|
||||||
|
path /stats/errors
|
||||||
|
path /stats/checker
|
||||||
|
}
|
||||||
|
|
||||||
|
@static {
|
||||||
|
path /static/*
|
||||||
|
}
|
||||||
|
|
||||||
|
@notstatic {
|
||||||
|
not path /static/*
|
||||||
|
}
|
||||||
|
|
||||||
|
@imageproxy {
|
||||||
|
path /image_proxy
|
||||||
|
}
|
||||||
|
|
||||||
|
@notimageproxy {
|
||||||
|
not path /image_proxy
|
||||||
|
}
|
||||||
|
|
||||||
|
header {
|
||||||
|
# Enable HTTP Strict Transport Security (HSTS) to force clients to always connect via HTTPS
|
||||||
|
Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
|
||||||
|
|
||||||
|
# Enable cross-site filter (XSS) and tell browser to block detected attacks
|
||||||
|
X-XSS-Protection "1; mode=block"
|
||||||
|
|
||||||
|
# Prevent some browsers from MIME-sniffing a response away from the declared Content-Type
|
||||||
|
X-Content-Type-Options "nosniff"
|
||||||
|
|
||||||
|
# Disable some features
|
||||||
|
Permissions-Policy "accelerometer=(),ambient-light-sensor=(),autoplay=(),camera=(),encrypted-media=(),focus-without-user-activation=(),geolocation=(),gyroscope=(),magnetometer=(),microphone=(),midi=(),payment=(),picture-in-picture=(),speaker=(),sync-xhr=(),usb=(),vr=()"
|
||||||
|
|
||||||
|
# Disable some features (legacy)
|
||||||
|
Feature-Policy "accelerometer 'none';ambient-light-sensor 'none'; autoplay 'none';camera 'none';encrypted-media 'none';focus-without-user-activation 'none'; geolocation 'none';gyroscope 'none';magnetometer 'none';microphone 'none';midi 'none';payment 'none';picture-in-picture 'none'; speaker 'none';sync-xhr 'none';usb 'none';vr 'none'"
|
||||||
|
|
||||||
|
# Referer
|
||||||
|
Referrer-Policy "no-referrer"
|
||||||
|
|
||||||
|
# X-Robots-Tag
|
||||||
|
X-Robots-Tag "noindex, noarchive, nofollow"
|
||||||
|
|
||||||
|
# Remove Server header
|
||||||
|
-Server
|
||||||
|
}
|
||||||
|
|
||||||
|
header @api {
|
||||||
|
Access-Control-Allow-Methods "GET, OPTIONS"
|
||||||
|
Access-Control-Allow-Origin "*"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Cache
|
||||||
|
header @static {
|
||||||
|
# Cache
|
||||||
|
Cache-Control "public, max-age=31536000"
|
||||||
|
defer
|
||||||
|
}
|
||||||
|
|
||||||
|
header @notstatic {
|
||||||
|
# No Cache
|
||||||
|
Cache-Control "no-cache, no-store"
|
||||||
|
Pragma "no-cache"
|
||||||
|
}
|
||||||
|
|
||||||
|
# CSP (see http://content-security-policy.com/ )
|
||||||
|
header @imageproxy {
|
||||||
|
Content-Security-Policy "default-src 'none'; img-src 'self' data:"
|
||||||
|
}
|
||||||
|
|
||||||
|
header @notimageproxy {
|
||||||
|
Content-Security-Policy "upgrade-insecure-requests; default-src 'none'; script-src 'self'; style-src 'self' 'unsafe-inline'; form-action 'self' https://github.com/searxng/searxng/issues/new; font-src 'self'; frame-ancestors 'self'; base-uri 'self'; connect-src 'self' https://overpass-api.de; img-src 'self' data: https://*.tile.openstreetmap.org; frame-src https://www.youtube-nocookie.com https://player.vimeo.com https://www.dailymotion.com https://www.deezer.com https://www.mixcloud.com https://w.soundcloud.com https://embed.spotify.com"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
handle {
|
||||||
|
encode zstd gzip
|
||||||
|
|
||||||
|
reverse_proxy 192.168.0.221:8080 {
|
||||||
|
header_up X-Forwarded-Port {http.request.port}
|
||||||
|
header_up X-Forwarded-Proto {http.request.scheme}
|
||||||
|
header_up X-Real-IP {remote_host}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
gitea.64815139.xyz {
|
gitea.64815139.xyz {
|
||||||
rewrite /user/login /user/oauth2/Authelia
|
rewrite /user/login /user/oauth2/Authelia
|
||||||
reverse_proxy 192.168.0.221:3000
|
reverse_proxy 192.168.0.221:3000
|
||||||
|
|||||||
@@ -18,6 +18,10 @@
|
|||||||
"name": "auth",
|
"name": "auth",
|
||||||
"proxied": false
|
"proxied": false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "search",
|
||||||
|
"proxied": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "gitea",
|
"name": "gitea",
|
||||||
"proxied": false
|
"proxied": false
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
@@ -0,0 +1,56 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
id="svg8"
|
||||||
|
version="1.1"
|
||||||
|
viewBox="0 0 92 92"
|
||||||
|
height="92mm"
|
||||||
|
width="92mm">
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<metadata
|
||||||
|
id="metadata5">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
transform="translate(-40.921303,-17.416526)"
|
||||||
|
id="layer1">
|
||||||
|
<circle
|
||||||
|
r="0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:12;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
cy="92"
|
||||||
|
cx="75"
|
||||||
|
id="path3713" />
|
||||||
|
<circle
|
||||||
|
r="30"
|
||||||
|
cy="53.902557"
|
||||||
|
cx="75.921303"
|
||||||
|
id="path834"
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#3050ff;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
d="m 67.514849,37.91524 a 18,18 0 0 1 21.051475,3.312407 18,18 0 0 1 3.137312,21.078282"
|
||||||
|
id="path852"
|
||||||
|
style="fill:none;fill-opacity:1;stroke:#3050ff;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
<rect
|
||||||
|
transform="rotate(-46.234709)"
|
||||||
|
ry="1.8669105e-13"
|
||||||
|
y="122.08995"
|
||||||
|
x="3.7063529"
|
||||||
|
height="39.963303"
|
||||||
|
width="18.846331"
|
||||||
|
id="rect912"
|
||||||
|
style="opacity:1;fill:#3050ff;fill-opacity:1;stroke:none;stroke-width:8;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.7 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 462 KiB |
@@ -11,10 +11,18 @@
|
|||||||
<body>
|
<body>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<ul class="app-grid">
|
<ul class="app-grid">
|
||||||
|
<li class="app-item">
|
||||||
|
<a href="https://search.64815139.xyz" target="_blank">
|
||||||
|
<div class="app-icon-wrapper">
|
||||||
|
<img src="assets/icons/searxng.svg" alt="SearXNG" class="app-icon">
|
||||||
|
</div>
|
||||||
|
<span class="app-name">Search</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li class="app-item">
|
<li class="app-item">
|
||||||
<a href="https://immich.64815139.xyz" target="_blank">
|
<a href="https://immich.64815139.xyz" target="_blank">
|
||||||
<div class="app-icon-wrapper">
|
<div class="app-icon-wrapper">
|
||||||
<img src="icons/immich.svg" alt="Immich" class="app-icon">
|
<img src="assets/icons/immich.svg" alt="Immich" class="app-icon">
|
||||||
</div>
|
</div>
|
||||||
<span class="app-name">Photos</span>
|
<span class="app-name">Photos</span>
|
||||||
</a>
|
</a>
|
||||||
@@ -22,7 +30,7 @@
|
|||||||
<li class="app-item">
|
<li class="app-item">
|
||||||
<a href="https://gitea.64815139.xyz/user/login" target="_blank">
|
<a href="https://gitea.64815139.xyz/user/login" target="_blank">
|
||||||
<div class="app-icon-wrapper">
|
<div class="app-icon-wrapper">
|
||||||
<img src="icons/gitea.svg" alt="Gitea" class="app-icon">
|
<img src="assets/icons/gitea.svg" alt="Gitea" class="app-icon">
|
||||||
</div>
|
</div>
|
||||||
<span class="app-name">Gitea</span>
|
<span class="app-name">Gitea</span>
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
body {
|
body {
|
||||||
font-family: Arial, sans-serif;
|
font-family: Arial, sans-serif;
|
||||||
background-color: #f0f0f0;
|
background: center no-repeat url('./assets/wallpapers/blobs.jpg') fixed;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
@@ -30,7 +30,8 @@ body {
|
|||||||
|
|
||||||
.app-item {
|
.app-item {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
border: 1px solid #ddd;
|
opacity: 0.95;
|
||||||
|
border-radius: 12px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
width: 150px;
|
width: 150px;
|
||||||
height: 150px;
|
height: 150px;
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
# This configuration file updates the default configuration file
|
||||||
|
# See https://github.com/searxng/searxng/blob/master/searx/limiter.toml
|
||||||
|
|
||||||
|
[botdetection.ip_limit]
|
||||||
|
# activate link_token method in the ip_limit method
|
||||||
|
link_token = true
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# see https://docs.searxng.org/admin/settings/settings.html#settings-use-default-settings
|
||||||
|
use_default_settings: true
|
||||||
|
server:
|
||||||
|
limiter: false # can be disabled for a private instance
|
||||||
|
image_proxy: true
|
||||||
|
ui:
|
||||||
|
static_use_hash: true
|
||||||
|
redis:
|
||||||
|
url: redis://redis:6379/0
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
[uwsgi]
|
||||||
|
# Who will run the code
|
||||||
|
uid = searxng
|
||||||
|
gid = searxng
|
||||||
|
|
||||||
|
# Number of workers (usually CPU count)
|
||||||
|
# default value: %k (= number of CPU core, see Dockerfile)
|
||||||
|
workers = 2
|
||||||
|
|
||||||
|
# Number of threads per worker
|
||||||
|
# default value: 4 (see Dockerfile)
|
||||||
|
threads = 2
|
||||||
|
|
||||||
|
# The right granted on the created socket
|
||||||
|
chmod-socket = 666
|
||||||
|
|
||||||
|
# Plugin to use and interpreter config
|
||||||
|
single-interpreter = true
|
||||||
|
master = true
|
||||||
|
plugin = python3
|
||||||
|
lazy-apps = true
|
||||||
|
enable-threads = 2
|
||||||
|
|
||||||
|
# Module to import
|
||||||
|
module = searx.webapp
|
||||||
|
|
||||||
|
# Virtualenv and python path
|
||||||
|
pythonpath = /usr/local/searxng/
|
||||||
|
chdir = /usr/local/searxng/searx/
|
||||||
|
|
||||||
|
# automatically set processes name to something meaningful
|
||||||
|
auto-procname = true
|
||||||
|
|
||||||
|
# Disable request logging for privacy
|
||||||
|
disable-logging = true
|
||||||
|
log-5xx = true
|
||||||
|
|
||||||
|
# Set the max size of a request (request-body excluded)
|
||||||
|
buffer-size = 8192
|
||||||
|
|
||||||
|
# No keep alive
|
||||||
|
# See https://github.com/searx/searx-docker/issues/24
|
||||||
|
add-header = Connection: close
|
||||||
|
|
||||||
|
# Follow SIGTERM convention
|
||||||
|
# See https://github.com/searxng/searxng/issues/3427
|
||||||
|
die-on-term
|
||||||
|
|
||||||
|
# uwsgi serves the static files
|
||||||
|
static-map = /static=/usr/local/searxng/searx/static
|
||||||
|
# expires set to one day
|
||||||
|
static-expires = /* 86400
|
||||||
|
static-gzip-all = True
|
||||||
|
offload-threads = 2
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
name: searxng
|
||||||
|
secrets:
|
||||||
|
SECRET_KEY:
|
||||||
|
file: './secrets/SECRET_KEY'
|
||||||
|
services:
|
||||||
|
redis:
|
||||||
|
container_name: searxng_redis
|
||||||
|
image: docker.io/valkey/valkey:8-alpine
|
||||||
|
command: valkey-server --save 30 1 --loglevel warning
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
volumes:
|
||||||
|
- valkey-data:/data
|
||||||
|
cap_drop:
|
||||||
|
- ALL
|
||||||
|
cap_add:
|
||||||
|
- SETGID
|
||||||
|
- SETUID
|
||||||
|
- DAC_OVERRIDE
|
||||||
|
logging:
|
||||||
|
driver: "json-file"
|
||||||
|
options:
|
||||||
|
max-size: "1m"
|
||||||
|
max-file: "1"
|
||||||
|
|
||||||
|
searxng:
|
||||||
|
container_name: searxng_app
|
||||||
|
image: docker.io/searxng/searxng:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
ports:
|
||||||
|
- "8080:8080"
|
||||||
|
volumes:
|
||||||
|
- ./config:/etc/searxng:rw
|
||||||
|
secrets:
|
||||||
|
- SECRET_KEY
|
||||||
|
environment:
|
||||||
|
- SEARXNG_BASE_URL=https://search.64815139.xyz
|
||||||
|
- SEARXNG_SECRET= /run/secrets/SECRET_KEY
|
||||||
|
- UWSGI_WORKERS=4
|
||||||
|
- UWSGI_THREADS=4
|
||||||
|
cap_drop:
|
||||||
|
- ALL
|
||||||
|
cap_add:
|
||||||
|
- CHOWN
|
||||||
|
- SETGID
|
||||||
|
- SETUID
|
||||||
|
logging:
|
||||||
|
driver: "json-file"
|
||||||
|
options:
|
||||||
|
max-size: "1m"
|
||||||
|
max-file: "1"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
|
external: false
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
valkey-data:
|
||||||
Reference in New Issue
Block a user