Merge branch 'master' of git.projectsegfau.lt:ProjectSegfault/ansible
This commit is contained in:
commit
215fc3d5ee
@ -24,6 +24,15 @@
|
|||||||
ansible.builtin.apt_repository:
|
ansible.builtin.apt_repository:
|
||||||
repo: deb [signed-by=/usr/share/keyrings/knot.gpg] https://deb.knot-dns.cz/knot-latest/ bookworm main
|
repo: deb [signed-by=/usr/share/keyrings/knot.gpg] https://deb.knot-dns.cz/knot-latest/ bookworm main
|
||||||
state: present
|
state: present
|
||||||
|
- name: Get GoAccess GPG keys
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
url: https://deb.goaccess.io/gnugpg.key
|
||||||
|
dest: /usr/share/keyrings/goaccess.asc
|
||||||
|
mode: '0644'
|
||||||
|
- name: Enable goaccess repo
|
||||||
|
ansible.builtin.apt_repository:
|
||||||
|
repo: deb [signed-by=/usr/share/keyrings/goaccess.asc arch=amd64] https://deb.goaccess.io/ bookworm main
|
||||||
|
state: present
|
||||||
- name: Install Required Programs / APT
|
- name: Install Required Programs / APT
|
||||||
ansible.builtin.apt:
|
ansible.builtin.apt:
|
||||||
name:
|
name:
|
||||||
|
12
cron/knot-restart.yaml
Normal file
12
cron/knot-restart.yaml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
- name: Knot Restarts (EU/US)
|
||||||
|
hosts: eu,us
|
||||||
|
vars:
|
||||||
|
services:
|
||||||
|
- knot
|
||||||
|
tasks:
|
||||||
|
- name: Do thing
|
||||||
|
ansible.builtin.systemd_service:
|
||||||
|
state: restarted
|
||||||
|
name: knot
|
||||||
|
with_items: "{{ services }}"
|
2
privfrontends/blocked-ranges.yaml
Normal file
2
privfrontends/blocked-ranges.yaml
Normal file
File diff suppressed because one or more lines are too long
@ -23,7 +23,7 @@ ENABLE_LIVESTREAM: true
|
|||||||
# Set custom SponsorBlock URL (with https://github.com/mchangrh/sb-mirror or other)
|
# Set custom SponsorBlock URL (with https://github.com/mchangrh/sb-mirror or other)
|
||||||
SPONSORBLOCK_URL: 'https://sponsor.ajay.app'
|
SPONSORBLOCK_URL: 'https://sponsor.ajay.app'
|
||||||
# Advanced: Custom video streaming endpoint
|
# Advanced: Custom video streaming endpoint
|
||||||
VIDEO_STREAMING_URL: 'https://proxy.lbry.projectsegfau.lt/stream'
|
VIDEO_STREAMING_URL: ''
|
||||||
# Rewrite links to other frontends. example: https://yt.domain.tld
|
# Rewrite links to other frontends. example: https://yt.domain.tld
|
||||||
FRONTEND:
|
FRONTEND:
|
||||||
youtube: 'https://invidious.projectsegfau.lt'
|
youtube: 'https://invidious.projectsegfau.lt'
|
||||||
|
68
privfrontends/configs/priviblur/config.toml
Normal file
68
privfrontends/configs/priviblur/config.toml
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
# Controls deployment options
|
||||||
|
[deployment]
|
||||||
|
host = "0.0.0.0"
|
||||||
|
port = 8000
|
||||||
|
|
||||||
|
# Amount of worker Priviblur instances to spawn. Increases speed significantly.
|
||||||
|
workers = 4
|
||||||
|
|
||||||
|
# # If you're running Priviblur behind a remote proxy, one or more of the following must be set
|
||||||
|
# # can also be set via env variables by captialzing and prefixing with PRIVIBLUR_
|
||||||
|
# #
|
||||||
|
# # For more information see
|
||||||
|
# # https://sanic.dev/en/guide/advanced/proxy-headers.html
|
||||||
|
# #
|
||||||
|
# # Default: None
|
||||||
|
# #
|
||||||
|
# forwarded_secret =
|
||||||
|
# real_ip_header =
|
||||||
|
# proxies_count =
|
||||||
|
|
||||||
|
# Controls redis cache options
|
||||||
|
# Ignore to disable the cache
|
||||||
|
#
|
||||||
|
[cache]
|
||||||
|
url = "redis://priviblur-redis:6379"
|
||||||
|
|
||||||
|
# Number of seconds to cache poll results from active polls
|
||||||
|
cache_active_poll_results_for = 3600
|
||||||
|
|
||||||
|
# Number of seconds to cache poll results from expired polls
|
||||||
|
cache_expired_poll_results_for = 86400
|
||||||
|
|
||||||
|
# Number of seconds to cache feed (explore, search, etc) results for
|
||||||
|
cache_feed_for = 3600
|
||||||
|
|
||||||
|
# Number of seconds to cache blog feed (blog posts, blog search, blog tagged posts, etc) results for
|
||||||
|
cache_blog_feed_for = 3600
|
||||||
|
|
||||||
|
# Number of seconds to cache individual posts for
|
||||||
|
cache_blog_post_for = 300
|
||||||
|
|
||||||
|
# Controls behaviors pertaining to the way Priviblur requests Tumblr
|
||||||
|
[priviblur_backend]
|
||||||
|
# # Timeout for requests to Tumblr's API
|
||||||
|
main_response_timeout = 10
|
||||||
|
|
||||||
|
# # Timeout for fetching image responses from Tumblr
|
||||||
|
image_response_timeout = 30
|
||||||
|
|
||||||
|
|
||||||
|
# Controls logging behavior
|
||||||
|
#
|
||||||
|
# Use Python's numerical logging levels
|
||||||
|
# https://docs.python.org/3/howto/logging.html#logging-levels
|
||||||
|
# [logging]
|
||||||
|
# # Sanic (Server)'s logging level'
|
||||||
|
# sanic_logging_level = 30
|
||||||
|
|
||||||
|
# # Priviblur's logging level
|
||||||
|
# priviblur_logging_level = 30
|
||||||
|
|
||||||
|
# # Priviblur extractor's logging level
|
||||||
|
# priviblur_extractor_logging_level = 20
|
||||||
|
|
||||||
|
|
||||||
|
# [misc]
|
||||||
|
# # Enable sanic's dev mode
|
||||||
|
# dev_mode = false
|
51
privfrontends/configs/shoelace/shoelace.toml
Normal file
51
privfrontends/configs/shoelace/shoelace.toml
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
[server]
|
||||||
|
# Address to listen on
|
||||||
|
listen="0.0.0.0"
|
||||||
|
# Port to bind
|
||||||
|
port=8080
|
||||||
|
# Instance URL. Needed for accurate proxied media locations in API
|
||||||
|
base_url="https://lace.projectsegfau.lt"
|
||||||
|
|
||||||
|
[server.tls]
|
||||||
|
# Enable TLS support
|
||||||
|
enabled=false
|
||||||
|
# Path for certificate chain, in PEM format
|
||||||
|
cert="cert.pem"
|
||||||
|
# Path for key file, in PEM format
|
||||||
|
key="key.pem"
|
||||||
|
|
||||||
|
[endpoint]
|
||||||
|
# Toggle the frontend
|
||||||
|
frontend=true
|
||||||
|
# Toggle the API
|
||||||
|
api=true
|
||||||
|
|
||||||
|
[proxy]
|
||||||
|
# Proxy backend. Valid options are:
|
||||||
|
# - none: Disable the media proxy. Not recommended if frontend is enabled
|
||||||
|
# - internal: Stores values in memory. Destroys itself after stopping Shoelace.
|
||||||
|
# - redis: Stores values in a Redis server. Higher performance. Requires additional software
|
||||||
|
backend="internal"
|
||||||
|
|
||||||
|
[proxy.redis]
|
||||||
|
# URI for Redis server.
|
||||||
|
# - TCP: redis://[<username>][:<password>@]<hostname>[:port][/<db>]
|
||||||
|
# - Unix socket: redis+unix:///<path>[?db=<db>[&pass=<password>][&user=<username>]]
|
||||||
|
uri="redis://127.0.0.1/"
|
||||||
|
|
||||||
|
[logging]
|
||||||
|
# Sets log level, for both stdout and logfiles. Valid levels are:
|
||||||
|
# - error: Shows errors presented during runtime
|
||||||
|
# - warn: Plus Alerts
|
||||||
|
# - info: Plus useful information, such as PID, requests, etc. (Recommended)
|
||||||
|
# - debug: Plus verbose actions. Not being used much.
|
||||||
|
# - trace: Plus low-level, extremely verbose info. Not used much.
|
||||||
|
level = "info"
|
||||||
|
# Whether to log the IP of an incoming connection
|
||||||
|
log_ips = false
|
||||||
|
# Whether to log what URLs are being assigned to each hash
|
||||||
|
log_cdn = false
|
||||||
|
# Store logs in a text file
|
||||||
|
store = false
|
||||||
|
# Where to store the logs in that case
|
||||||
|
output = "shoelace.log"
|
@ -16,6 +16,8 @@
|
|||||||
when: service.value.docker_settings
|
when: service.value.docker_settings
|
||||||
- name: Setup Caddy
|
- name: Setup Caddy
|
||||||
hosts: privfrontends
|
hosts: privfrontends
|
||||||
|
vars_files:
|
||||||
|
- ./blocked-ranges.yaml
|
||||||
tasks:
|
tasks:
|
||||||
- name: Copy Caddyfile
|
- name: Copy Caddyfile
|
||||||
ansible.builtin.template:
|
ansible.builtin.template:
|
||||||
|
@ -1,32 +1,4 @@
|
|||||||
{
|
{
|
||||||
log {
|
|
||||||
# Anonymised IPs, User-Agents, and Cookies, also removed the URI as mentionned in the privacy policy.
|
|
||||||
# Subject to change, if we find any missing config we haven't filtered, it will be added.
|
|
||||||
output file /var/log/caddy/caddy.log
|
|
||||||
format filter {
|
|
||||||
wrap json
|
|
||||||
fields {
|
|
||||||
request>remote_ip ip_mask {
|
|
||||||
ipv4 24
|
|
||||||
ipv6 64
|
|
||||||
}
|
|
||||||
request>headers>X-Forwarded-For ip_mask {
|
|
||||||
ipv4 24
|
|
||||||
ipv6 64
|
|
||||||
}
|
|
||||||
request>headers>client_ip ip_mask {
|
|
||||||
ipv4 24
|
|
||||||
ipv6 64
|
|
||||||
}
|
|
||||||
request>headers>Cookie cookie {
|
|
||||||
replace session REDACTED
|
|
||||||
delete secret
|
|
||||||
}
|
|
||||||
request>headers>User-Agent delete
|
|
||||||
request>uri delete
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
order rate_limit before basicauth
|
order rate_limit before basicauth
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -34,7 +6,6 @@ log {
|
|||||||
header {
|
header {
|
||||||
-Strict-Transport-Security
|
-Strict-Transport-Security
|
||||||
-Referrer-Policy
|
-Referrer-Policy
|
||||||
-X-XSS-Protection
|
|
||||||
-Content-Security-Policy
|
-Content-Security-Policy
|
||||||
# disable clients from sniffing the media type
|
# disable clients from sniffing the media type
|
||||||
X-Content-Type-Options nosniff
|
X-Content-Type-Options nosniff
|
||||||
@ -72,10 +43,43 @@ log {
|
|||||||
# clickjacking protection
|
# clickjacking protection
|
||||||
X-Frame-Options SAMEORIGIN
|
X-Frame-Options SAMEORIGIN
|
||||||
|
|
||||||
X-XSS-Protection "1; mode=block"
|
|
||||||
defer
|
defer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log {
|
||||||
|
# Anonymised IPs, User-Agents, and Cookies, also removed the URI as mentionned in the privacy policy.
|
||||||
|
# Subject to change, if we find any missing config we haven't filtered, it will be added.
|
||||||
|
output file /var/log/caddy/caddy.log
|
||||||
|
format filter {
|
||||||
|
wrap json
|
||||||
|
fields {
|
||||||
|
request>remote_ip ip_mask {
|
||||||
|
ipv4 16
|
||||||
|
ipv6 64
|
||||||
|
}
|
||||||
|
request>client_ip ip_mask {
|
||||||
|
ipv4 16
|
||||||
|
ipv6 64
|
||||||
|
}
|
||||||
|
request>headers>X-Forwarded-For ip_mask {
|
||||||
|
ipv4 16
|
||||||
|
ipv6 64
|
||||||
|
}
|
||||||
|
request>headers>Cookie cookie {
|
||||||
|
replace session REDACTED
|
||||||
|
delete secret
|
||||||
|
}
|
||||||
|
request>headers>User-Agent delete
|
||||||
|
request>headers>Onion-Location delete
|
||||||
|
request>headers>Referer delete
|
||||||
|
request>uri replace "/ABCDF"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@denied client_ip {{ blocked_ranges }}
|
||||||
|
respond @denied "Unfortunately, your IP is part of a range that has been involved in mass spam to our servers. If you think our action was a mistake, please email contact@projectsegfau.lt." 403
|
||||||
|
|
||||||
|
|
||||||
import acmedns
|
import acmedns
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -143,9 +147,19 @@ inv.{{ server_prefix }}.projectsegfau.lt i.{{ server_prefix }}.psf.lt {
|
|||||||
uri @jpgRedirect replace /maxres.jpg /maxres2.jpg
|
uri @jpgRedirect replace /maxres.jpg /maxres2.jpg
|
||||||
rewrite /vi/* ?host=i.ytimg.com
|
rewrite /vi/* ?host=i.ytimg.com
|
||||||
}
|
}
|
||||||
header -X-Frame-Options
|
|
||||||
import def
|
import def
|
||||||
import torloc inv
|
header -X-Frame-Options
|
||||||
|
header -Content-Security-Policy
|
||||||
|
@ratelimit not path /videoplayback/* /ggpht/* /vi/* /videoplayback /videojs/* /css/* /js/* /fonts/* /apple-touch-icon.png /favicon-16x16.png /feed/webhook /feed/webhook/*
|
||||||
|
rate_limit @ratelimit {remote.ip} 10r/s
|
||||||
|
rate_limit @ratelimit {remote.ip} 100r/m
|
||||||
|
@ratelimit_pubsub path /feed/webhook /feed/webhook/*
|
||||||
|
rate_limit @ratelimit_pubsub {remote.ip} 2r/s 404
|
||||||
|
log {
|
||||||
|
# This is temporarily required to monitor nitter traffic due to scrapers being more active, so we need to monitor and rate limit them at a later date.
|
||||||
|
output file /var/log/caddy/ratelimiters.log
|
||||||
|
format json
|
||||||
|
}
|
||||||
}
|
}
|
||||||
gothub.{{ server_prefix }}.projectsegfau.lt gothub.projectsegfau.lt gh.psf.lt gh.{{ server_prefix }}.psf.lt {
|
gothub.{{ server_prefix }}.projectsegfau.lt gothub.projectsegfau.lt gh.psf.lt gh.{{ server_prefix }}.psf.lt {
|
||||||
reverse_proxy :1024
|
reverse_proxy :1024
|
||||||
@ -222,8 +236,6 @@ search.{{ server_prefix }}.projectsegfau.lt search.projectsegfau.lt s.psf.lt s.{
|
|||||||
header {
|
header {
|
||||||
# Enable HTTP Strict Transport Security (HSTS) to force clients to always connect via HTTPS
|
# Enable HTTP Strict Transport Security (HSTS) to force clients to always connect via HTTPS
|
||||||
Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
|
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
|
# Prevent some browsers from MIME-sniffing a response away from the declared Content-Type
|
||||||
X-Content-Type-Options "nosniff"
|
X-Content-Type-Options "nosniff"
|
||||||
# Disable some features
|
# Disable some features
|
||||||
@ -273,3 +285,14 @@ pi.{{ server_prefix }}.psf.lt {
|
|||||||
header -X-Frame-Options
|
header -X-Frame-Options
|
||||||
import def
|
import def
|
||||||
}
|
}
|
||||||
|
priviblur.{{ server_prefix }}.projectsegfau.lt priviblur.projectsegfau.lt pb.psf.lt pb.{{ server_prefix }}.psf.lt {
|
||||||
|
import def
|
||||||
|
reverse_proxy :9084
|
||||||
|
import torloc priviblur
|
||||||
|
}
|
||||||
|
|
||||||
|
lace.{{ server_prefix }}.projectsegfau.lt lace.projectsegfau.lt l.psf.lt l.{{ server_prefix }}.psf.lt {
|
||||||
|
import def
|
||||||
|
reverse_proxy :9029
|
||||||
|
import torloc lace
|
||||||
|
}
|
||||||
|
@ -139,3 +139,9 @@ http://healthchecks.pjsfkvpxlinjamtawaksbnnaqs2fc2mtvmozrzckxh7f3kis6yea25ad.oni
|
|||||||
header_up Host "healthchecks.projectsegfau.lt"
|
header_up Host "healthchecks.projectsegfau.lt"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
http://rss.pjsfkvpxlinjamtawaksbnnaqs2fc2mtvmozrzckxh7f3kis6yea25ad.onion {
|
||||||
|
import tor rss
|
||||||
|
reverse_proxy https://rss.projectsegfau.lt {
|
||||||
|
header_up Host "rss.projectsegfau.lt"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -3,7 +3,7 @@ sl.projectsegfau.lt sl.psf.lt {
|
|||||||
import def
|
import def
|
||||||
}
|
}
|
||||||
inv.bp.projectsegfau.lt, i.bp.psf.lt, invidious.projectsegfau.lt, inv.projectsegfau.lt, i.psf.lt {
|
inv.bp.projectsegfau.lt, i.bp.psf.lt, invidious.projectsegfau.lt, inv.projectsegfau.lt, i.psf.lt {
|
||||||
reverse_proxy localhost:7573 {
|
reverse_proxy :7573 {
|
||||||
header_up Host "invidious.projectsegfau.lt"
|
header_up Host "invidious.projectsegfau.lt"
|
||||||
}
|
}
|
||||||
@pipedproxy {
|
@pipedproxy {
|
||||||
@ -25,6 +25,17 @@ inv.bp.projectsegfau.lt, i.bp.psf.lt, invidious.projectsegfau.lt, inv.projectseg
|
|||||||
}
|
}
|
||||||
import def
|
import def
|
||||||
header -X-Frame-Options
|
header -X-Frame-Options
|
||||||
|
header -Content-Security-Policy
|
||||||
|
@ratelimit not path /videoplayback/* /ggpht/* /vi/* /videoplayback /videojs/* /css/* /js/* /fonts/* /apple-touch-icon.png /favicon-16x16.png /feed/webhook /feed/webhook/*
|
||||||
|
rate_limit @ratelimit {remote.ip} 10r/s
|
||||||
|
rate_limit @ratelimit {remote.ip} 100r/m
|
||||||
|
@ratelimit_pubsub path /feed/webhook /feed/webhook/*
|
||||||
|
rate_limit @ratelimit_pubsub {remote.ip} 2r/s 404
|
||||||
|
log {
|
||||||
|
# This is temporarily required to monitor nitter traffic due to scrapers being more active, so we need to monitor and rate limit them at a later date.
|
||||||
|
output file /var/log/caddy/ratelimiters.log
|
||||||
|
format json
|
||||||
|
}
|
||||||
import torloc invbp
|
import torloc invbp
|
||||||
}
|
}
|
||||||
piped.projectsegfau.lt proxy.piped.projectsegfau.lt api.piped.projectsegfau.lt {
|
piped.projectsegfau.lt proxy.piped.projectsegfau.lt api.piped.projectsegfau.lt {
|
||||||
@ -40,7 +51,7 @@ pi.psf.lt {
|
|||||||
import def
|
import def
|
||||||
}
|
}
|
||||||
proxy.lbry.projectsegfau.lt {
|
proxy.lbry.projectsegfau.lt {
|
||||||
reverse_proxy localhost:3001
|
reverse_proxy :3001
|
||||||
import def
|
import def
|
||||||
}
|
}
|
||||||
aryak.me {
|
aryak.me {
|
||||||
@ -67,7 +78,7 @@ www.midou.dev midou.dev {
|
|||||||
# header_up Host {http.reverse_proxy.upstream.hostport}
|
# header_up Host {http.reverse_proxy.upstream.hostport}
|
||||||
# }
|
# }
|
||||||
#root * /var/www/midouwebsite
|
#root * /var/www/midouwebsite
|
||||||
reverse_proxy http://localhost:3000
|
reverse_proxy :3000
|
||||||
# Apparently sveltekit built apps needs to have strict path tries.
|
# Apparently sveltekit built apps needs to have strict path tries.
|
||||||
#try_files {path} {path}/index.html {path}.html =404
|
#try_files {path} {path}/index.html {path}.html =404
|
||||||
#file_server
|
#file_server
|
||||||
|
@ -273,3 +273,9 @@ timetagger.projectsegfau.lt tt.projectsegfau.lt tt.psf.lt {
|
|||||||
reverse_proxy :9900
|
reverse_proxy :9900
|
||||||
import def
|
import def
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rss.projectsegfau.lt freshrss.projectsegfau.lt rss.psf.lt {
|
||||||
|
reverse_proxy :3529
|
||||||
|
import def
|
||||||
|
import torloc rss
|
||||||
|
}
|
||||||
|
@ -94,15 +94,11 @@ apps:
|
|||||||
docker_settings:
|
docker_settings:
|
||||||
services:
|
services:
|
||||||
- name: librarian
|
- name: librarian
|
||||||
image: codeberg.org/librarian/librarian:latest
|
image: quay.io/pussthecatorg/librarian
|
||||||
ports:
|
ports:
|
||||||
- "3550:3550"
|
- "3550:3550"
|
||||||
mounts:
|
mounts:
|
||||||
- "{{configs_dir}}/librarian/config.yml:/app/config.yml"
|
- "{{configs_dir}}/librarian/config.yml:/app/config.yml"
|
||||||
- name: stream-proxy
|
|
||||||
image: codeberg.org/librarian/stream-proxy-ng:latest
|
|
||||||
ports:
|
|
||||||
- "3001:3001"
|
|
||||||
redlib:
|
redlib:
|
||||||
needs_data_dir: false
|
needs_data_dir: false
|
||||||
needs_configs_dir: false
|
needs_configs_dir: false
|
||||||
@ -125,7 +121,7 @@ apps:
|
|||||||
docker_settings:
|
docker_settings:
|
||||||
services:
|
services:
|
||||||
- name: nitter
|
- name: nitter
|
||||||
image: codeberg.org/aryak/nitter-image:latest
|
image: ghcr.io/privacydevel/nitter:master
|
||||||
ports:
|
ports:
|
||||||
- "8387:8080"
|
- "8387:8080"
|
||||||
mounts:
|
mounts:
|
||||||
@ -242,6 +238,38 @@ apps:
|
|||||||
REDIS_REPLICATION_MODE: master
|
REDIS_REPLICATION_MODE: master
|
||||||
mounts:
|
mounts:
|
||||||
- "{{data_dir}}/teddit/redis-data:/data"
|
- "{{data_dir}}/teddit/redis-data:/data"
|
||||||
|
priviblur:
|
||||||
|
needs_configs_dir: true
|
||||||
|
needs_data_dir: true
|
||||||
|
docker_settings:
|
||||||
|
services:
|
||||||
|
- name: priviblur
|
||||||
|
image: quay.io/pussthecatorg/priviblur:latest
|
||||||
|
ports:
|
||||||
|
- "9084:8000"
|
||||||
|
mounts:
|
||||||
|
- "{{configs_dir}}/priviblur/config.toml:/priviblur/config.toml:Z,ro"
|
||||||
|
- name: priviblur-redis
|
||||||
|
image: redis:6.2.5-alpine
|
||||||
|
command: redis-server
|
||||||
|
environment:
|
||||||
|
REDIS_REPLICATION_MODE: master
|
||||||
|
mounts:
|
||||||
|
- "{{data_dir}}/priviblur/redis-data:/data"
|
||||||
|
shoelace:
|
||||||
|
needs_configs_dir: true
|
||||||
|
needs_data_dir: true
|
||||||
|
docker_settings:
|
||||||
|
services:
|
||||||
|
- name: shoelace
|
||||||
|
image: nixgoat/shoelace
|
||||||
|
ports:
|
||||||
|
- "9029:8080"
|
||||||
|
mounts:
|
||||||
|
- "{{configs_dir}}/shoelace/shoelace.toml:/data/shoelace.toml"
|
||||||
|
- "{{data_dir}}/shoelace:/data"
|
||||||
|
environment:
|
||||||
|
SHOELACE_CONFIG: /data/shoelace.toml
|
||||||
watchtower:
|
watchtower:
|
||||||
needs_configs_dir: false
|
needs_configs_dir: false
|
||||||
needs_data_dir: false
|
needs_data_dir: false
|
||||||
|
Loading…
Reference in New Issue
Block a user