Compare commits
27 Commits
41fac2c4f9
...
master
Author | SHA1 | Date | |
---|---|---|---|
8a9b3db287
|
|||
a72c67f070
|
|||
47745b7bc9
|
|||
c568f00db1
|
|||
99b6959c84
|
|||
fa65726096
|
|||
f9eaf7a41e
|
|||
d825b1f391
|
|||
b296a3f2fe
|
|||
8ff89c9ee1
|
|||
62a4e598bd
|
|||
b65aaa5072
|
|||
98b7aff274
|
|||
6eaf7f7390
|
|||
32e80282ef
|
|||
c8bd9f4ec3
|
|||
d3d189e284
|
|||
71fe688ef8
|
|||
c5d0f96bdf
|
|||
eea8db6499
|
|||
7893349da4
|
|||
a4c61f94e6
|
|||
da0a261ddd
|
|||
b9954d1bba
|
|||
3a23c08f37
|
|||
d1500ea373
|
|||
a77fefcded
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -5,6 +5,7 @@
|
||||
|
||||
/galaxy.roles/
|
||||
/ansible-vault-password-file
|
||||
/temp
|
||||
*.retry
|
||||
|
||||
test_smtp.py
|
||||
|
35
Taskfile.yml
35
Taskfile.yml
@ -12,8 +12,13 @@ vars:
|
||||
sh: 'yq .ungrouped.hosts.server.ansible_user {{.HOSTS_FILE}}'
|
||||
REMOTE_HOST:
|
||||
sh: 'yq .ungrouped.hosts.server.ansible_host {{.HOSTS_FILE}}'
|
||||
AUTHELIA_DOCKER: 'docker run --rm -v $PWD:/data authelia/authelia:4.39.4 authelia'
|
||||
|
||||
tasks:
|
||||
install-roles:
|
||||
cmds:
|
||||
- ansible-galaxy role install --role-file requirements.yml --force
|
||||
|
||||
ssh:
|
||||
cmds:
|
||||
- ssh {{.REMOTE_USER}}@{{.REMOTE_HOST}}
|
||||
@ -30,6 +35,36 @@ tasks:
|
||||
cmds:
|
||||
- ansible-vault encrypt vars/vars.yml
|
||||
|
||||
authelia-cli:
|
||||
cmds:
|
||||
- "{{.AUTHELIA_DOCKER}} {{.CLI_ARGS}}"
|
||||
|
||||
authelia-validate-config:
|
||||
vars:
|
||||
DEST_FILE: "temp/configuration.yml"
|
||||
cmds:
|
||||
- >
|
||||
ansible localhost
|
||||
--module-name template
|
||||
--args "src=files/authelia/configuration.yml.j2 dest={{.DEST_FILE}}"
|
||||
--extra-vars "@vars/secrets.yml"
|
||||
- defer: rm -f {{.DEST_FILE}}
|
||||
- >
|
||||
{{.AUTHELIA_DOCKER}}
|
||||
validate-config --config /data/{{.DEST_FILE}}
|
||||
|
||||
authelia-gen-random-string:
|
||||
cmds:
|
||||
- >
|
||||
{{.AUTHELIA_DOCKER}}
|
||||
crypto rand --length 32 --charset alphanumeric
|
||||
|
||||
authelia-gen-secret-and-hash:
|
||||
cmds:
|
||||
- >
|
||||
{{.AUTHELIA_DOCKER}}
|
||||
crypto hash generate pbkdf2 --variant sha512 --random --random.length 72 --random.charset rfc3986
|
||||
|
||||
format-py-files:
|
||||
cmds:
|
||||
- >-
|
||||
|
3725
files/authelia/configuration.yml.j2
Normal file
3725
files/authelia/configuration.yml.j2
Normal file
File diff suppressed because it is too large
Load Diff
15
files/authelia/docker-compose.yml.j2
Normal file
15
files/authelia/docker-compose.yml.j2
Normal file
@ -0,0 +1,15 @@
|
||||
services:
|
||||
|
||||
authelia_app:
|
||||
container_name: 'authelia_app'
|
||||
image: 'docker.io/authelia/authelia:4.39.4'
|
||||
user: '{{ user_create_result.uid }}:{{ user_create_result.group }}'
|
||||
restart: 'unless-stopped'
|
||||
networks:
|
||||
- "{{ web_proxy_network }}"
|
||||
volumes:
|
||||
- "{{ config_dir }}:/config"
|
||||
|
||||
networks:
|
||||
{{ web_proxy_network }}:
|
||||
external: true
|
37
files/authelia/users.yml
Normal file
37
files/authelia/users.yml
Normal file
@ -0,0 +1,37 @@
|
||||
$ANSIBLE_VAULT;1.1;AES256
|
||||
33323463653739626134366261626263396338333966376262313263613131343962326432613263
|
||||
6430616564313432666436376432383539626231616438330a646161313364353566373833353337
|
||||
64633361306564646564663736663937303435356332316432666135353863393439663235646462
|
||||
3136303031383835390a396531366636386133656366653835633833633733326561383066656464
|
||||
31613933333731643065316130303561383563626636346633396266346332653234373732326535
|
||||
39663765353938333835646563663633393835633163323435303164663261303661666435306239
|
||||
34353264633736383565306336633565376436646536623835613330393466363935303031346664
|
||||
63626465656435383162633761333131393934666632336539386435613362353135383538643836
|
||||
66373261306139353134393839333539366531393163393266386531613732366431663865343134
|
||||
64363933616338663966353431396133316561653366396130653232636561343739336265386339
|
||||
38646238653436663531633465616164303633356233363433623038666465326339656238653233
|
||||
36323162303233633935646132353835336364303833636563346535316166346533636536656665
|
||||
64323030616665316133363739393364306462316135636630613262646436643062373138656431
|
||||
35663334616239623534383564643738616264373762663034376332323637626337306639653830
|
||||
65386339666465343931303933663561643664313364386662656663643336636264636333666435
|
||||
66366531613538363233346137383462326334306534333564636232393931393433386664363036
|
||||
39623134636331646536323531653063326231613363366562643561353939633062663132303035
|
||||
38303265326136303633666566613966636133666336396133333033643434303138303065666463
|
||||
36643765316134636133333937396332613233383932663265386264623133633364646237346465
|
||||
32623965653662336335366639643765393636623236323036396538353666646132393636663536
|
||||
65646638643236313762373135336430643731643961386264303134366633353934366431333430
|
||||
34313362633836613166336437323835626537653237666139383230663835626630623933383834
|
||||
32636136663830643661363663303136393733646133626538333836666135653936323832336433
|
||||
64396234396430326334656561393264366263313730306631383037643135613765373861356561
|
||||
37363933383238316232336564363364376637626630373963666262376165343838303530653764
|
||||
64343937666365646666363939383662313334656236326566373565643637313434616261616635
|
||||
35646131396432623534396133666239613036386332663038353531313935636139363136666562
|
||||
62616234663935383262626235313337623332333733383035666633393965336535316234323561
|
||||
37353563623138343339616565653465633633383563636631356333303435376536393634343031
|
||||
63653062303432366230643333353634383061313135616533643935316263393366653335353964
|
||||
36363135356365373064613338393261326265396330323930613538326330663532616163666564
|
||||
39313631633434353938626637626462376139383536306531633733646331303030333238373161
|
||||
36336364383939663132366461383264346631366566363638333738386235623264623331343738
|
||||
34316436393363323165396430343163653837623035626236313663643038336666633535666462
|
||||
33323566353062653964643362363233346264396365336637376661323730336437333031363830
|
||||
38303962646561346262
|
@ -4,23 +4,23 @@ set -eu
|
||||
set -o pipefail
|
||||
|
||||
echo "Backup: perform gitea backup"
|
||||
|
||||
su --login gitea --command '/home/gitea/backup.sh'
|
||||
|
||||
|
||||
echo "Backup: perform outline backup"
|
||||
|
||||
su --login outline --command '/home/outline/backup.sh'
|
||||
|
||||
|
||||
echo "Backup: perform gramps backup"
|
||||
|
||||
su --login gramps --command '/home/gramps/backup.sh'
|
||||
|
||||
echo "Backup: perform miniflux backup"
|
||||
su --login miniflux --command '/home/miniflux/backup.sh'
|
||||
|
||||
echo "Backup: perform wakapi backup"
|
||||
su --login wakapi --command '/home/wakapi/backup.sh'
|
||||
|
||||
echo "Backup: send backups to remote storage with retic"
|
||||
|
||||
restic-shell.sh backup --verbose /home/gitea/backups /home/outline/backups /home/gramps/backups \
|
||||
restic-shell.sh backup --verbose /home/gitea/backups /home/outline/backups /home/gramps/backups /home/miniflux/backups /home/wakapi/backups \
|
||||
&& restic-shell.sh check \
|
||||
&& restic-shell.sh forget --compact --prune --keep-daily 90 --keep-monthly 36 \
|
||||
&& restic-shell.sh check
|
||||
|
@ -4,22 +4,12 @@
|
||||
{
|
||||
grace_period 15s
|
||||
|
||||
|
||||
admin :2019
|
||||
# Netdata service
|
||||
# -------------------------------------------------------------------
|
||||
|
||||
|
||||
# Enable metrics in Prometheus format
|
||||
tls anwinged@ya.ru
|
||||
|
||||
reverse_proxy {
|
||||
to netdata:19999
|
||||
}
|
||||
|
||||
basicauth / {
|
||||
{{ netdata.login }} {{ netdata.password_hash }}
|
||||
}
|
||||
}
|
||||
# https://caddyserver.com/docs/metrics
|
||||
metrics
|
||||
}
|
||||
|
||||
# -------------------------------------------------------------------
|
||||
# Applications
|
||||
@ -34,6 +24,23 @@ vakhrushev.me {
|
||||
}
|
||||
|
||||
auth.vakhrushev.me {
|
||||
tls anwinged@ya.ru
|
||||
|
||||
reverse_proxy authelia_app:9091
|
||||
}
|
||||
|
||||
status.vakhrushev.me, :29999 {
|
||||
tls anwinged@ya.ru
|
||||
|
||||
forward_auth authelia_app:9091 {
|
||||
uri /api/authz/forward-auth
|
||||
copy_headers Remote-User Remote-Groups Remote-Email Remote-Name
|
||||
}
|
||||
|
||||
reverse_proxy netdata:19999
|
||||
}
|
||||
|
||||
git.vakhrushev.me {
|
||||
tls anwinged@ya.ru
|
||||
|
||||
reverse_proxy {
|
||||
@ -42,14 +49,6 @@ git.vakhrushev.me {
|
||||
}
|
||||
|
||||
outline.vakhrushev.me {
|
||||
tls anwinged@ya.ru
|
||||
|
||||
reverse_proxy {
|
||||
to keycloak_app:8080
|
||||
}
|
||||
}
|
||||
|
||||
outline.vakhrushev.me {
|
||||
tls anwinged@ya.ru
|
||||
|
||||
reverse_proxy {
|
||||
@ -65,3 +64,30 @@ gramps.vakhrushev.me {
|
||||
}
|
||||
}
|
||||
|
||||
miniflux.vakhrushev.me {
|
||||
tls anwinged@ya.ru
|
||||
|
||||
reverse_proxy {
|
||||
to miniflux_app:8080
|
||||
}
|
||||
}
|
||||
|
||||
wakapi.vakhrushev.me {
|
||||
tls anwinged@ya.ru
|
||||
|
||||
reverse_proxy {
|
||||
to wakapi_app:3000
|
||||
}
|
||||
}
|
||||
|
||||
rssbridge.vakhrushev.me {
|
||||
tls anwinged@ya.ru
|
||||
|
||||
forward_auth authelia_app:9091 {
|
||||
uri /api/authz/forward-auth
|
||||
copy_headers Remote-User Remote-Groups Remote-Email Remote-Name
|
||||
}
|
||||
|
||||
reverse_proxy rssbridge_app:80
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
services:
|
||||
|
||||
{{ service_name }}:
|
||||
image: caddy:2.9.1
|
||||
image: caddy:2.10.0
|
||||
restart: unless-stopped
|
||||
container_name: {{ service_name }}
|
||||
ports:
|
||||
|
@ -1,7 +1,7 @@
|
||||
services:
|
||||
|
||||
gitea_app:
|
||||
image: gitea/gitea:1.23.7
|
||||
image: gitea/gitea:1.24.2
|
||||
restart: unless-stopped
|
||||
container_name: gitea_app
|
||||
ports:
|
||||
|
@ -3,13 +3,11 @@
|
||||
services:
|
||||
|
||||
gramps_app: &gramps_app
|
||||
image: ghcr.io/gramps-project/grampsweb:v25.4.1
|
||||
image: ghcr.io/gramps-project/grampsweb:25.7.0
|
||||
container_name: gramps_app
|
||||
depends_on:
|
||||
- gramps_redis
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "127.0.0.1:{{ gramps_port }}:5000" # host:docker
|
||||
networks:
|
||||
- "gramps_network"
|
||||
- "{{ web_proxy_network }}"
|
||||
|
@ -32,7 +32,7 @@ def main():
|
||||
sorted_files = sorted(files)
|
||||
|
||||
# Identify files to delete
|
||||
to_delete = sorted_files[: -args.keep] if args.keep > 0 else sorted_files.copy()
|
||||
to_delete = sorted_files[:-args.keep] if args.keep > 0 else sorted_files.copy()
|
||||
|
||||
# Delete files and print results
|
||||
for filename in to_delete:
|
||||
|
@ -1,29 +0,0 @@
|
||||
# Images: https://quay.io/repository/keycloak/keycloak?tab=tags&tag=latest
|
||||
# Configuration: https://www.keycloak.org/server/all-config
|
||||
|
||||
# NB
|
||||
# - На проде были проблемы с правами к директории data, пришлось выдать 777
|
||||
# - Переменную KC_HOSTNAME_ADMIN_URL нужно указать вместе с KC_HOSTNAME_URL, иначе будут ошибки 403
|
||||
|
||||
services:
|
||||
|
||||
keycloak_app:
|
||||
image: quay.io/keycloak/keycloak:24.0.4
|
||||
container_name: keycloak_app
|
||||
command: ["start-dev"]
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "127.0.0.1:{{ keycloak_port }}:8080"
|
||||
networks:
|
||||
- "{{ web_proxy_network }}"
|
||||
volumes:
|
||||
- "./data:/opt/keycloak/data"
|
||||
environment:
|
||||
KEYCLOAK_ADMIN: "{{ keycloak_admin_login }}"
|
||||
KEYCLOAK_ADMIN_PASSWORD: "{{ keycloak_admin_password }}"
|
||||
KC_HOSTNAME_URL: "https://kk.vakhrushev.me"
|
||||
KC_HOSTNAME_ADMIN_URL: "https://kk.vakhrushev.me"
|
||||
|
||||
networks:
|
||||
{{ web_proxy_network }}:
|
||||
external: true
|
25
files/miniflux/backup.sh.j2
Normal file
25
files/miniflux/backup.sh.j2
Normal file
@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -eu
|
||||
set -o pipefail
|
||||
|
||||
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
||||
BACKUP_FILE="miniflux_postgres_${TIMESTAMP}.sql.gz"
|
||||
|
||||
echo "miniflux: backing up postgresql database"
|
||||
|
||||
docker compose --file "{{ base_dir }}/docker-compose.yml" exec \
|
||||
miniflux_postgres \
|
||||
pg_dump \
|
||||
-U "{{ miniflux_postgres_user }}" \
|
||||
"{{ miniflux_postgres_database }}" \
|
||||
| gzip > "{{ postgres_backups_dir }}/${BACKUP_FILE}"
|
||||
|
||||
echo "miniflux: PostgreSQL backup saved to {{ postgres_backups_dir }}/${BACKUP_FILE}"
|
||||
|
||||
echo "miniflux: removing old backups"
|
||||
|
||||
# Keep only the 3 most recent backups
|
||||
keep-files.py "{{ postgres_backups_dir }}" --keep 3
|
||||
|
||||
echo "miniflux: backup completed successfully."
|
52
files/miniflux/docker-compose.yml.j2
Normal file
52
files/miniflux/docker-compose.yml.j2
Normal file
@ -0,0 +1,52 @@
|
||||
# See sample https://miniflux.app/docs/docker.html#docker-compose
|
||||
# See env https://miniflux.app/docs/configuration.html
|
||||
|
||||
services:
|
||||
miniflux_app:
|
||||
image: miniflux/miniflux:2.2.10
|
||||
container_name: miniflux_app
|
||||
depends_on:
|
||||
miniflux_postgres:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- "miniflux_network"
|
||||
- "{{ web_proxy_network }}"
|
||||
environment:
|
||||
- DATABASE_URL=postgres://{{ miniflux_postgres_user }}:{{ miniflux_postgres_password }}@miniflux_postgres/{{ miniflux_postgres_database }}?sslmode=disable
|
||||
- RUN_MIGRATIONS=1
|
||||
- CREATE_ADMIN=1
|
||||
- ADMIN_USERNAME={{ miniflux_admin_user }}
|
||||
- ADMIN_PASSWORD={{ miniflux_admin_password }}
|
||||
- BASE_URL=https://miniflux.vakhrushev.me
|
||||
- DISABLE_LOCAL_AUTH=1
|
||||
- OAUTH2_OIDC_DISCOVERY_ENDPOINT=https://auth.vakhrushev.me
|
||||
- OAUTH2_CLIENT_ID={{ miniflux_oidc_client_id }}
|
||||
- OAUTH2_CLIENT_SECRET={{ miniflux_oidc_client_secret }}
|
||||
- OAUTH2_OIDC_PROVIDER_NAME=Authelia
|
||||
- OAUTH2_PROVIDER=oidc
|
||||
- OAUTH2_REDIRECT_URL=https://miniflux.vakhrushev.me/oauth2/oidc/callback
|
||||
- OAUTH2_USER_CREATION=1
|
||||
- METRICS_COLLECTOR=1
|
||||
- METRICS_ALLOWED_NETWORKS=0.0.0.0/0
|
||||
|
||||
miniflux_postgres:
|
||||
image: postgres:16.3-bookworm
|
||||
container_name: miniflux_postgres
|
||||
environment:
|
||||
- POSTGRES_USER={{ miniflux_postgres_user }}
|
||||
- POSTGRES_PASSWORD={{ miniflux_postgres_password }}
|
||||
- POSTGRES_DB={{ miniflux_postgres_database }}
|
||||
networks:
|
||||
- "miniflux_network"
|
||||
volumes:
|
||||
- {{ postgres_data_dir }}:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD", "pg_isready", "-U", "miniflux"]
|
||||
interval: 10s
|
||||
start_period: 30s
|
||||
|
||||
networks:
|
||||
miniflux_network:
|
||||
driver: bridge
|
||||
{{ web_proxy_network }}:
|
||||
external: true
|
37
files/netdata/docker-compose.yml.j2
Normal file
37
files/netdata/docker-compose.yml.j2
Normal file
@ -0,0 +1,37 @@
|
||||
|
||||
services:
|
||||
|
||||
netdata:
|
||||
image: netdata/netdata:v2.5.4
|
||||
container_name: netdata
|
||||
restart: unless-stopped
|
||||
cap_add:
|
||||
- SYS_PTRACE
|
||||
- SYS_ADMIN
|
||||
security_opt:
|
||||
- apparmor:unconfined
|
||||
networks:
|
||||
- "{{ web_proxy_network }}"
|
||||
volumes:
|
||||
- "{{ config_dir }}:/etc/netdata"
|
||||
- "{{ (data_dir, 'lib') | path_join }}:/var/lib/netdata"
|
||||
- "{{ (data_dir, 'cache') | path_join }}:/var/cache/netdata"
|
||||
# Netdata system volumes
|
||||
- "/:/host/root:ro,rslave"
|
||||
- "/etc/group:/host/etc/group:ro"
|
||||
- "/etc/localtime:/etc/localtime:ro"
|
||||
- "/etc/os-release:/host/etc/os-release:ro"
|
||||
- "/etc/passwd:/host/etc/passwd:ro"
|
||||
- "/proc:/host/proc:ro"
|
||||
- "/run/dbus:/run/dbus:ro"
|
||||
- "/sys:/host/sys:ro"
|
||||
- "/var/log:/host/var/log:ro"
|
||||
- "/var/run:/host/var/run:ro"
|
||||
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||
environment:
|
||||
PGID: "{{ netdata_docker_group_output.stdout | default(999) }}"
|
||||
NETDATA_EXTRA_DEB_PACKAGES: "fail2ban"
|
||||
|
||||
networks:
|
||||
{{ web_proxy_network }}:
|
||||
external: true
|
3
files/netdata/go.d/fail2ban.conf
Normal file
3
files/netdata/go.d/fail2ban.conf
Normal file
@ -0,0 +1,3 @@
|
||||
jobs:
|
||||
- name: fail2ban
|
||||
update_every: 5 # Collect Fail2Ban jails statistics every 5 seconds
|
22
files/netdata/go.d/prometheus.conf
Normal file
22
files/netdata/go.d/prometheus.conf
Normal file
@ -0,0 +1,22 @@
|
||||
update_every: 5
|
||||
autodetection_retry: 0
|
||||
|
||||
jobs:
|
||||
|
||||
- name: caddyproxy
|
||||
url: http://caddyproxy:2019/metrics
|
||||
selector:
|
||||
allow:
|
||||
- "caddy_http_*"
|
||||
|
||||
- name: authelia
|
||||
url: http://authelia_app:9959/metrics
|
||||
selector:
|
||||
allow:
|
||||
- "authelia_*"
|
||||
|
||||
- name: miniflux
|
||||
url: http://miniflux_app:8080/metrics
|
||||
selector:
|
||||
allow:
|
||||
- "miniflux_*"
|
687
files/netdata/netdata.conf.j2
Normal file
687
files/netdata/netdata.conf.j2
Normal file
@ -0,0 +1,687 @@
|
||||
# netdata configuration
|
||||
#
|
||||
# You can download the latest version of this file, using:
|
||||
#
|
||||
# wget -O /etc/netdata/netdata.conf http://localhost:19999/netdata.conf
|
||||
# or
|
||||
# curl -o /etc/netdata/netdata.conf http://localhost:19999/netdata.conf
|
||||
#
|
||||
# You can uncomment and change any of the options below.
|
||||
# The value shown in the commented settings, is the default value.
|
||||
#
|
||||
|
||||
# global netdata configuration
|
||||
|
||||
[global]
|
||||
# run as user = netdata
|
||||
# host access prefix = /host
|
||||
# pthread stack size = 8MiB
|
||||
# cpu cores = 2
|
||||
# libuv worker threads = 16
|
||||
# profile = standalone
|
||||
hostname = {{ host_name }}
|
||||
# glibc malloc arena max for plugins = 1
|
||||
# glibc malloc arena max for netdata = 1
|
||||
# crash reports = all
|
||||
# timezone = Etc/UTC
|
||||
# OOM score = 0
|
||||
# process scheduling policy = keep
|
||||
# is ephemeral node = no
|
||||
# has unstable connection = no
|
||||
|
||||
[db]
|
||||
# enable replication = yes
|
||||
# replication period = 1d
|
||||
# replication step = 1h
|
||||
# replication threads = 1
|
||||
# replication prefetch = 10
|
||||
# update every = 1s
|
||||
# db = dbengine
|
||||
# memory deduplication (ksm) = auto
|
||||
# cleanup orphan hosts after = 1h
|
||||
# cleanup ephemeral hosts after = off
|
||||
# cleanup obsolete charts after = 1h
|
||||
# gap when lost iterations above = 1
|
||||
# dbengine page type = gorilla
|
||||
# dbengine page cache size = 32MiB
|
||||
# dbengine extent cache size = off
|
||||
# dbengine enable journal integrity check = no
|
||||
# dbengine use all ram for caches = no
|
||||
# dbengine out of memory protection = 391.99MiB
|
||||
# dbengine use direct io = yes
|
||||
# dbengine journal v2 unmount time = 2m
|
||||
# dbengine pages per extent = 109
|
||||
# storage tiers = 3
|
||||
# dbengine tier backfill = new
|
||||
# dbengine tier 1 update every iterations = 60
|
||||
# dbengine tier 2 update every iterations = 60
|
||||
# dbengine tier 0 retention size = 1024MiB
|
||||
# dbengine tier 0 retention time = 14d
|
||||
# dbengine tier 1 retention size = 1024MiB
|
||||
# dbengine tier 1 retention time = 3mo
|
||||
# dbengine tier 2 retention size = 1024MiB
|
||||
# dbengine tier 2 retention time = 2y
|
||||
# extreme cardinality protection = yes
|
||||
# extreme cardinality keep instances = 1000
|
||||
# extreme cardinality min ephemerality = 50
|
||||
|
||||
[directories]
|
||||
# config = /etc/netdata
|
||||
# stock config = /usr/lib/netdata/conf.d
|
||||
# log = /var/log/netdata
|
||||
# web = /usr/share/netdata/web
|
||||
# cache = /var/cache/netdata
|
||||
# lib = /var/lib/netdata
|
||||
# cloud.d = /var/lib/netdata/cloud.d
|
||||
# plugins = "/usr/libexec/netdata/plugins.d" "/etc/netdata/custom-plugins.d"
|
||||
# registry = /var/lib/netdata/registry
|
||||
# home = /etc/netdata
|
||||
# stock health config = /usr/lib/netdata/conf.d/health.d
|
||||
# health config = /etc/netdata/health.d
|
||||
|
||||
[logs]
|
||||
# facility = daemon
|
||||
# logs flood protection period = 1m
|
||||
# logs to trigger flood protection = 1000
|
||||
# level = info
|
||||
# debug = /var/log/netdata/debug.log
|
||||
# daemon = /var/log/netdata/daemon.log
|
||||
# collector = /var/log/netdata/collector.log
|
||||
# access = /var/log/netdata/access.log
|
||||
# health = /var/log/netdata/health.log
|
||||
# debug flags = 0x0000000000000000
|
||||
|
||||
[environment variables]
|
||||
# PATH = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin
|
||||
# PYTHONPATH =
|
||||
# TZ = :/etc/localtime
|
||||
|
||||
[host labels]
|
||||
# name = value
|
||||
|
||||
[cloud]
|
||||
# conversation log = no
|
||||
# scope = full
|
||||
# query threads = 6
|
||||
# proxy = env
|
||||
|
||||
[ml]
|
||||
# enabled = auto
|
||||
# maximum num samples to train = 21600
|
||||
# minimum num samples to train = 900
|
||||
# train every = 3h
|
||||
# number of models per dimension = 18
|
||||
# delete models older than = 7d
|
||||
# num samples to diff = 1
|
||||
# num samples to smooth = 3
|
||||
# num samples to lag = 5
|
||||
# random sampling ratio = 0.20000
|
||||
# maximum number of k-means iterations = 1000
|
||||
# dimension anomaly score threshold = 0.99000
|
||||
# host anomaly rate threshold = 1.00000
|
||||
# anomaly detection grouping method = average
|
||||
# anomaly detection grouping duration = 5m
|
||||
# num training threads = 1
|
||||
# flush models batch size = 256
|
||||
# dimension anomaly rate suppression window = 15m
|
||||
# dimension anomaly rate suppression threshold = 450
|
||||
# enable statistics charts = yes
|
||||
# hosts to skip from training = !*
|
||||
# charts to skip from training = netdata.*
|
||||
# stream anomaly detection charts = yes
|
||||
|
||||
[health]
|
||||
# silencers file = /var/lib/netdata/health.silencers.json
|
||||
# enabled = yes
|
||||
# enable stock health configuration = yes
|
||||
# use summary for notifications = yes
|
||||
# default repeat warning = off
|
||||
# default repeat critical = off
|
||||
# in memory max health log entries = 1000
|
||||
# health log retention = 5d
|
||||
# script to execute on alarm = /usr/libexec/netdata/plugins.d/alarm-notify.sh
|
||||
# enabled alarms = *
|
||||
# run at least every = 10s
|
||||
# postpone alarms during hibernation for = 1m
|
||||
|
||||
[web]
|
||||
#| >>> [web].default port <<<
|
||||
#| migrated from: [global].default port
|
||||
# default port = 19999
|
||||
|
||||
# ssl key = /etc/netdata/ssl/key.pem
|
||||
# ssl certificate = /etc/netdata/ssl/cert.pem
|
||||
# tls version = 1.3
|
||||
# tls ciphers = none
|
||||
# ses max tg_des_window = 15
|
||||
# des max tg_des_window = 15
|
||||
# mode = static-threaded
|
||||
# listen backlog = 4096
|
||||
# bind to = *
|
||||
# bearer token protection = no
|
||||
# disconnect idle clients after = 1m
|
||||
# timeout for first request = 1m
|
||||
# accept a streaming request every = off
|
||||
# respect do not track policy = no
|
||||
# x-frame-options response header =
|
||||
# allow connections from = localhost *
|
||||
# allow connections by dns = heuristic
|
||||
# allow dashboard from = localhost *
|
||||
# allow dashboard by dns = heuristic
|
||||
# allow badges from = *
|
||||
# allow badges by dns = heuristic
|
||||
# allow streaming from = *
|
||||
# allow streaming by dns = heuristic
|
||||
# allow netdata.conf from = localhost fd* 10.* 192.168.* 172.16.* 172.17.* 172.18.* 172.19.* 172.20.* 172.21.* 172.22.* 172.23.* 172.24.* 172.25.* 172.26.* 172.27.* 172.28.* 172.29.* 172.30.* 172.31.* UNKNOWN
|
||||
# allow netdata.conf by dns = no
|
||||
# allow management from = localhost
|
||||
# allow management by dns = heuristic
|
||||
# enable gzip compression = yes
|
||||
# gzip compression strategy = default
|
||||
# gzip compression level = 3
|
||||
# ssl skip certificate verification = no
|
||||
# web server threads = 6
|
||||
# web server max sockets = 262144
|
||||
|
||||
[registry]
|
||||
# enabled = no
|
||||
# registry db file = /var/lib/netdata/registry/registry.db
|
||||
# registry log file = /var/lib/netdata/registry/registry-log.db
|
||||
# registry save db every new entries = 1000000
|
||||
# registry expire idle persons = 1y
|
||||
# registry domain =
|
||||
# registry to announce = https://registry.my-netdata.io
|
||||
# registry hostname = 7171b7f9fc69
|
||||
# verify browser cookies support = yes
|
||||
# enable cookies SameSite and Secure = yes
|
||||
# max URL length = 1024
|
||||
# max URL name length = 50
|
||||
# netdata management api key file = /var/lib/netdata/netdata.api.key
|
||||
# allow from = *
|
||||
# allow by dns = heuristic
|
||||
|
||||
[pulse]
|
||||
# extended = no
|
||||
# update every = 1s
|
||||
|
||||
[plugins]
|
||||
# idlejitter = yes
|
||||
# netdata pulse = yes
|
||||
# profile = no
|
||||
# tc = yes
|
||||
# diskspace = yes
|
||||
# proc = yes
|
||||
# cgroups = yes
|
||||
# timex = yes
|
||||
# statsd = yes
|
||||
# enable running new plugins = yes
|
||||
# check for new plugins every = 1m
|
||||
# slabinfo = no
|
||||
# freeipmi = no
|
||||
# python.d = yes
|
||||
# go.d = yes
|
||||
# apps = yes
|
||||
# systemd-journal = yes
|
||||
# network-viewer = yes
|
||||
# charts.d = yes
|
||||
# debugfs = yes
|
||||
# perf = yes
|
||||
# ioping = yes
|
||||
|
||||
[statsd]
|
||||
# update every (flushInterval) = 1s
|
||||
# udp messages to process at once = 10
|
||||
# create private charts for metrics matching = *
|
||||
# max private charts hard limit = 1000
|
||||
# set charts as obsolete after = off
|
||||
# decimal detail = 1000
|
||||
# disconnect idle tcp clients after = 10m
|
||||
# private charts hidden = no
|
||||
# histograms and timers percentile (percentThreshold) = 95.00000
|
||||
# dictionaries max unique dimensions = 200
|
||||
# add dimension for number of events received = no
|
||||
# gaps on gauges (deleteGauges) = no
|
||||
# gaps on counters (deleteCounters) = no
|
||||
# gaps on meters (deleteMeters) = no
|
||||
# gaps on sets (deleteSets) = no
|
||||
# gaps on histograms (deleteHistograms) = no
|
||||
# gaps on timers (deleteTimers) = no
|
||||
# gaps on dictionaries (deleteDictionaries) = no
|
||||
# statsd server max TCP sockets = 262144
|
||||
# listen backlog = 4096
|
||||
# default port = 8125
|
||||
# bind to = udp:localhost tcp:localhost
|
||||
|
||||
[plugin:idlejitter]
|
||||
# loop time = 20ms
|
||||
|
||||
[plugin:timex]
|
||||
# update every = 10s
|
||||
# clock synchronization state = yes
|
||||
# time offset = yes
|
||||
|
||||
[plugin:proc]
|
||||
# /proc/net/dev = yes
|
||||
# /proc/pagetypeinfo = no
|
||||
# /proc/stat = yes
|
||||
# /proc/uptime = yes
|
||||
# /proc/loadavg = yes
|
||||
# /proc/sys/fs/file-nr = yes
|
||||
# /proc/sys/kernel/random/entropy_avail = yes
|
||||
# /run/reboot_required = yes
|
||||
# /proc/pressure = yes
|
||||
# /proc/interrupts = yes
|
||||
# /proc/softirqs = yes
|
||||
# /proc/vmstat = yes
|
||||
# /proc/meminfo = yes
|
||||
# /sys/kernel/mm/ksm = yes
|
||||
# /sys/block/zram = yes
|
||||
# /sys/devices/system/edac/mc = yes
|
||||
# /sys/devices/pci/aer = yes
|
||||
# /sys/devices/system/node = yes
|
||||
# /proc/net/wireless = yes
|
||||
# /proc/net/sockstat = yes
|
||||
# /proc/net/sockstat6 = yes
|
||||
# /proc/net/netstat = yes
|
||||
# /proc/net/sctp/snmp = yes
|
||||
# /proc/net/softnet_stat = yes
|
||||
# /proc/net/ip_vs/stats = yes
|
||||
# /sys/class/infiniband = yes
|
||||
# /proc/net/stat/conntrack = yes
|
||||
# /proc/net/stat/synproxy = yes
|
||||
# /proc/diskstats = yes
|
||||
# /proc/mdstat = yes
|
||||
# /proc/net/rpc/nfsd = yes
|
||||
# /proc/net/rpc/nfs = yes
|
||||
# /proc/spl/kstat/zfs/arcstats = yes
|
||||
# /sys/fs/btrfs = yes
|
||||
# ipc = yes
|
||||
# /sys/class/power_supply = yes
|
||||
# /sys/class/drm = yes
|
||||
|
||||
[plugin:cgroups]
|
||||
# update every = 1s
|
||||
# check for new cgroups every = 10s
|
||||
# use unified cgroups = auto
|
||||
# max cgroups to allow = 1000
|
||||
# max cgroups depth to monitor = 0
|
||||
# enable by default cgroups matching = !*/init.scope !/system.slice/run-*.scope *user.slice/docker-* !*user.slice* *.scope !/machine.slice/*/.control !/machine.slice/*/payload* !/machine.slice/*/supervisor /machine.slice/*.service */kubepods/pod*/* */kubepods/*/pod*/* */*-kubepods-pod*/* */*-kubepods-*-pod*/* !*kubepods* !*kubelet* !*/vcpu* !*/emulator !*.mount !*.partition !*.service !*.service/udev !*.socket !*.slice !*.swap !*.user !/ !/docker !*/libvirt !/lxc !/lxc/*/* !/lxc.monitor* !/lxc.pivot !/lxc.payload !*lxcfs.service/.control !/machine !/qemu !/system !/systemd !/user *
|
||||
# enable by default cgroups names matching = *
|
||||
# search for cgroups in subpaths matching = !*/init.scope !*-qemu !*.libvirt-qemu !/init.scope !/system !/systemd !/user !/lxc/*/* !/lxc.monitor !/lxc.payload/*/* !/lxc.payload.* *
|
||||
# script to get cgroup names = /usr/libexec/netdata/plugins.d/cgroup-name.sh
|
||||
# script to get cgroup network interfaces = /usr/libexec/netdata/plugins.d/cgroup-network
|
||||
# run script to rename cgroups matching = !/ !*.mount !*.socket !*.partition /machine.slice/*.service !*.service !*.slice !*.swap !*.user !init.scope !*.scope/vcpu* !*.scope/emulator *.scope *docker* *lxc* *qemu* */kubepods/pod*/* */kubepods/*/pod*/* */*-kubepods-pod*/* */*-kubepods-*-pod*/* !*kubepods* !*kubelet* *.libvirt-qemu *
|
||||
# cgroups to match as systemd services = !/system.slice/*/*.service /system.slice/*.service
|
||||
|
||||
[plugin:proc:diskspace]
|
||||
# remove charts of unmounted disks = yes
|
||||
# update every = 1s
|
||||
# check for new mount points every = 15s
|
||||
# exclude space metrics on paths = /dev /dev/shm /proc/* /sys/* /var/run/user/* /run/lock /run/user/* /snap/* /var/lib/docker/* /var/lib/containers/storage/* /run/credentials/* /run/containerd/* /rpool /rpool/*
|
||||
# exclude space metrics on filesystems = *gvfs *gluster* *s3fs *ipfs *davfs2 *httpfs *sshfs *gdfs *moosefs fusectl autofs cgroup cgroup2 hugetlbfs devtmpfs fuse.lxcfs
|
||||
# exclude inode metrics on filesystems = msdosfs msdos vfat overlayfs aufs* *unionfs
|
||||
# space usage for all disks = auto
|
||||
# inodes usage for all disks = auto
|
||||
|
||||
[plugin:tc]
|
||||
# script to run to get tc values = /usr/libexec/netdata/plugins.d/tc-qos-helper.sh
|
||||
|
||||
[plugin:python.d]
|
||||
# update every = 1s
|
||||
# command options =
|
||||
|
||||
[plugin:go.d]
|
||||
# update every = 1s
|
||||
# command options =
|
||||
|
||||
[plugin:apps]
|
||||
# update every = 1s
|
||||
# command options =
|
||||
|
||||
[plugin:systemd-journal]
|
||||
# update every = 1s
|
||||
# command options =
|
||||
|
||||
[plugin:network-viewer]
|
||||
# update every = 1s
|
||||
# command options =
|
||||
|
||||
[plugin:charts.d]
|
||||
# update every = 1s
|
||||
# command options =
|
||||
|
||||
[plugin:debugfs]
|
||||
# update every = 1s
|
||||
# command options =
|
||||
|
||||
[plugin:perf]
|
||||
# update every = 1s
|
||||
# command options =
|
||||
|
||||
[plugin:ioping]
|
||||
# update every = 1s
|
||||
# command options =
|
||||
|
||||
[plugin:proc:/proc/net/dev]
|
||||
# compressed packets for all interfaces = no
|
||||
# disable by default interfaces matching = lo fireqos* *-ifb fwpr* fwbr* fwln* ifb4*
|
||||
|
||||
[plugin:proc:/proc/stat]
|
||||
# cpu utilization = yes
|
||||
# per cpu core utilization = no
|
||||
# cpu interrupts = yes
|
||||
# context switches = yes
|
||||
# processes started = yes
|
||||
# processes running = yes
|
||||
# keep per core files open = yes
|
||||
# keep cpuidle files open = yes
|
||||
# core_throttle_count = auto
|
||||
# package_throttle_count = no
|
||||
# cpu frequency = yes
|
||||
# cpu idle states = no
|
||||
# core_throttle_count filename to monitor = /host/sys/devices/system/cpu/%s/thermal_throttle/core_throttle_count
|
||||
# package_throttle_count filename to monitor = /host/sys/devices/system/cpu/%s/thermal_throttle/package_throttle_count
|
||||
# scaling_cur_freq filename to monitor = /host/sys/devices/system/cpu/%s/cpufreq/scaling_cur_freq
|
||||
# time_in_state filename to monitor = /host/sys/devices/system/cpu/%s/cpufreq/stats/time_in_state
|
||||
# schedstat filename to monitor = /host/proc/schedstat
|
||||
# cpuidle name filename to monitor = /host/sys/devices/system/cpu/cpu%zu/cpuidle/state%zu/name
|
||||
# cpuidle time filename to monitor = /host/sys/devices/system/cpu/cpu%zu/cpuidle/state%zu/time
|
||||
# filename to monitor = /host/proc/stat
|
||||
|
||||
[plugin:proc:/proc/uptime]
|
||||
# filename to monitor = /host/proc/uptime
|
||||
|
||||
[plugin:proc:/proc/loadavg]
|
||||
# filename to monitor = /host/proc/loadavg
|
||||
# enable load average = yes
|
||||
# enable total processes = yes
|
||||
|
||||
[plugin:proc:/proc/sys/fs/file-nr]
|
||||
# filename to monitor = /host/proc/sys/fs/file-nr
|
||||
|
||||
[plugin:proc:/proc/sys/kernel/random/entropy_avail]
|
||||
# filename to monitor = /host/proc/sys/kernel/random/entropy_avail
|
||||
|
||||
[plugin:proc:/proc/pressure]
|
||||
# base path of pressure metrics = /proc/pressure
|
||||
# enable cpu some pressure = yes
|
||||
# enable cpu full pressure = no
|
||||
# enable memory some pressure = yes
|
||||
# enable memory full pressure = yes
|
||||
# enable io some pressure = yes
|
||||
# enable io full pressure = yes
|
||||
# enable irq some pressure = no
|
||||
# enable irq full pressure = yes
|
||||
|
||||
[plugin:proc:/proc/interrupts]
|
||||
# interrupts per core = no
|
||||
# filename to monitor = /host/proc/interrupts
|
||||
|
||||
[plugin:proc:/proc/softirqs]
|
||||
# interrupts per core = no
|
||||
# filename to monitor = /host/proc/softirqs
|
||||
|
||||
[plugin:proc:/proc/vmstat]
|
||||
# filename to monitor = /host/proc/vmstat
|
||||
# swap i/o = auto
|
||||
# disk i/o = yes
|
||||
# memory page faults = yes
|
||||
# out of memory kills = yes
|
||||
# system-wide numa metric summary = auto
|
||||
# transparent huge pages = auto
|
||||
# zswap i/o = auto
|
||||
# memory ballooning = auto
|
||||
# kernel same memory = auto
|
||||
|
||||
[plugin:proc:/sys/devices/system/node]
|
||||
# directory to monitor = /host/sys/devices/system/node
|
||||
# enable per-node numa metrics = auto
|
||||
|
||||
[plugin:proc:/proc/meminfo]
|
||||
# system ram = yes
|
||||
# system swap = auto
|
||||
# hardware corrupted ECC = auto
|
||||
# committed memory = yes
|
||||
# writeback memory = yes
|
||||
# kernel memory = yes
|
||||
# slab memory = yes
|
||||
# hugepages = auto
|
||||
# transparent hugepages = auto
|
||||
# memory reclaiming = yes
|
||||
# high low memory = yes
|
||||
# cma memory = auto
|
||||
# direct maps = yes
|
||||
# filename to monitor = /host/proc/meminfo
|
||||
|
||||
[plugin:proc:/sys/kernel/mm/ksm]
|
||||
# /sys/kernel/mm/ksm/pages_shared = /host/sys/kernel/mm/ksm/pages_shared
|
||||
# /sys/kernel/mm/ksm/pages_sharing = /host/sys/kernel/mm/ksm/pages_sharing
|
||||
# /sys/kernel/mm/ksm/pages_unshared = /host/sys/kernel/mm/ksm/pages_unshared
|
||||
# /sys/kernel/mm/ksm/pages_volatile = /host/sys/kernel/mm/ksm/pages_volatile
|
||||
|
||||
[plugin:proc:/sys/devices/system/edac/mc]
|
||||
# directory to monitor = /host/sys/devices/system/edac/mc
|
||||
|
||||
[plugin:proc:/sys/class/pci/aer]
|
||||
# enable root ports = no
|
||||
# enable pci slots = no
|
||||
|
||||
[plugin:proc:/proc/net/wireless]
|
||||
# filename to monitor = /host/proc/net/wireless
|
||||
# status for all interfaces = auto
|
||||
# quality for all interfaces = auto
|
||||
# discarded packets for all interfaces = auto
|
||||
# missed beacon for all interface = auto
|
||||
|
||||
[plugin:proc:/proc/net/sockstat]
|
||||
# ipv4 sockets = auto
|
||||
# ipv4 TCP sockets = auto
|
||||
# ipv4 TCP memory = auto
|
||||
# ipv4 UDP sockets = auto
|
||||
# ipv4 UDP memory = auto
|
||||
# ipv4 UDPLITE sockets = auto
|
||||
# ipv4 RAW sockets = auto
|
||||
# ipv4 FRAG sockets = auto
|
||||
# ipv4 FRAG memory = auto
|
||||
# update constants every = 1m
|
||||
# filename to monitor = /host/proc/net/sockstat
|
||||
|
||||
[plugin:proc:/proc/net/sockstat6]
|
||||
# ipv6 TCP sockets = auto
|
||||
# ipv6 UDP sockets = auto
|
||||
# ipv6 UDPLITE sockets = auto
|
||||
# ipv6 RAW sockets = auto
|
||||
# ipv6 FRAG sockets = auto
|
||||
# filename to monitor = /host/proc/net/sockstat6
|
||||
|
||||
[plugin:proc:/proc/net/netstat]
|
||||
# bandwidth = auto
|
||||
# input errors = auto
|
||||
# multicast bandwidth = auto
|
||||
# broadcast bandwidth = auto
|
||||
# multicast packets = auto
|
||||
# broadcast packets = auto
|
||||
# ECN packets = auto
|
||||
# TCP reorders = auto
|
||||
# TCP SYN cookies = auto
|
||||
# TCP out-of-order queue = auto
|
||||
# TCP connection aborts = auto
|
||||
# TCP memory pressures = auto
|
||||
# TCP SYN queue = auto
|
||||
# TCP accept queue = auto
|
||||
# filename to monitor = /host/proc/net/netstat
|
||||
|
||||
[plugin:proc:/proc/net/snmp]
|
||||
# ipv4 packets = auto
|
||||
# ipv4 fragments sent = auto
|
||||
# ipv4 fragments assembly = auto
|
||||
# ipv4 errors = auto
|
||||
# ipv4 TCP connections = auto
|
||||
# ipv4 TCP packets = auto
|
||||
# ipv4 TCP errors = auto
|
||||
# ipv4 TCP opens = auto
|
||||
# ipv4 TCP handshake issues = auto
|
||||
# ipv4 UDP packets = auto
|
||||
# ipv4 UDP errors = auto
|
||||
# ipv4 ICMP packets = auto
|
||||
# ipv4 ICMP messages = auto
|
||||
# ipv4 UDPLite packets = auto
|
||||
# filename to monitor = /host/proc/net/snmp
|
||||
|
||||
[plugin:proc:/proc/net/snmp6]
|
||||
# ipv6 packets = auto
|
||||
# ipv6 fragments sent = auto
|
||||
# ipv6 fragments assembly = auto
|
||||
# ipv6 errors = auto
|
||||
# ipv6 UDP packets = auto
|
||||
# ipv6 UDP errors = auto
|
||||
# ipv6 UDPlite packets = auto
|
||||
# ipv6 UDPlite errors = auto
|
||||
# bandwidth = auto
|
||||
# multicast bandwidth = auto
|
||||
# broadcast bandwidth = auto
|
||||
# multicast packets = auto
|
||||
# icmp = auto
|
||||
# icmp redirects = auto
|
||||
# icmp errors = auto
|
||||
# icmp echos = auto
|
||||
# icmp group membership = auto
|
||||
# icmp router = auto
|
||||
# icmp neighbor = auto
|
||||
# icmp mldv2 = auto
|
||||
# icmp types = auto
|
||||
# ect = auto
|
||||
# filename to monitor = /host/proc/net/snmp6
|
||||
|
||||
[plugin:proc:/proc/net/sctp/snmp]
|
||||
# established associations = auto
|
||||
# association transitions = auto
|
||||
# fragmentation = auto
|
||||
# packets = auto
|
||||
# packet errors = auto
|
||||
# chunk types = auto
|
||||
# filename to monitor = /host/proc/net/sctp/snmp
|
||||
|
||||
[plugin:proc:/proc/net/softnet_stat]
|
||||
# softnet_stat per core = no
|
||||
# filename to monitor = /host/proc/net/softnet_stat
|
||||
|
||||
[plugin:proc:/proc/net/ip_vs_stats]
|
||||
# IPVS bandwidth = yes
|
||||
# IPVS connections = yes
|
||||
# IPVS packets = yes
|
||||
# filename to monitor = /host/proc/net/ip_vs_stats
|
||||
|
||||
[plugin:proc:/sys/class/infiniband]
|
||||
# dirname to monitor = /host/sys/class/infiniband
|
||||
# bandwidth counters = yes
|
||||
# packets counters = yes
|
||||
# errors counters = yes
|
||||
# hardware packets counters = auto
|
||||
# hardware errors counters = auto
|
||||
# monitor only active ports = auto
|
||||
# disable by default interfaces matching =
|
||||
# refresh ports state every = 30s
|
||||
|
||||
[plugin:proc:/proc/net/stat/nf_conntrack]
|
||||
# filename to monitor = /host/proc/net/stat/nf_conntrack
|
||||
# netfilter new connections = no
|
||||
# netfilter connection changes = no
|
||||
# netfilter connection expectations = no
|
||||
# netfilter connection searches = no
|
||||
# netfilter errors = no
|
||||
# netfilter connections = yes
|
||||
|
||||
[plugin:proc:/proc/sys/net/netfilter/nf_conntrack_max]
|
||||
# filename to monitor = /host/proc/sys/net/netfilter/nf_conntrack_max
|
||||
# read every seconds = 10
|
||||
|
||||
[plugin:proc:/proc/sys/net/netfilter/nf_conntrack_count]
|
||||
# filename to monitor = /host/proc/sys/net/netfilter/nf_conntrack_count
|
||||
|
||||
[plugin:proc:/proc/net/stat/synproxy]
|
||||
# SYNPROXY cookies = auto
|
||||
# SYNPROXY SYN received = auto
|
||||
# SYNPROXY connections reopened = auto
|
||||
# filename to monitor = /host/proc/net/stat/synproxy
|
||||
|
||||
[plugin:proc:/proc/diskstats]
|
||||
# enable new disks detected at runtime = yes
|
||||
# performance metrics for physical disks = auto
|
||||
# performance metrics for virtual disks = auto
|
||||
# performance metrics for partitions = no
|
||||
# bandwidth for all disks = auto
|
||||
# operations for all disks = auto
|
||||
# merged operations for all disks = auto
|
||||
# i/o time for all disks = auto
|
||||
# queued operations for all disks = auto
|
||||
# utilization percentage for all disks = auto
|
||||
# extended operations for all disks = auto
|
||||
# backlog for all disks = auto
|
||||
# bcache for all disks = auto
|
||||
# bcache priority stats update every = off
|
||||
# remove charts of removed disks = yes
|
||||
# path to get block device = /host/sys/block/%s
|
||||
# path to get block device bcache = /host/sys/block/%s/bcache
|
||||
# path to get virtual block device = /host/sys/devices/virtual/block/%s
|
||||
# path to get block device infos = /host/sys/dev/block/%lu:%lu/%s
|
||||
# path to device mapper = /host/dev/mapper
|
||||
# path to /dev/disk = /host/dev/disk
|
||||
# path to /sys/block = /host/sys/block
|
||||
# path to /dev/disk/by-label = /host/dev/disk/by-label
|
||||
# path to /dev/disk/by-id = /host/dev/disk/by-id
|
||||
# path to /dev/vx/dsk = /host/dev/vx/dsk
|
||||
# name disks by id = no
|
||||
# preferred disk ids = *
|
||||
# exclude disks = loop* ram*
|
||||
# filename to monitor = /host/proc/diskstats
|
||||
# performance metrics for disks with major 252 = yes
|
||||
|
||||
[plugin:proc:/proc/mdstat]
|
||||
# faulty devices = yes
|
||||
# nonredundant arrays availability = yes
|
||||
# mismatch count = auto
|
||||
# disk stats = yes
|
||||
# operation status = yes
|
||||
# make charts obsolete = yes
|
||||
# filename to monitor = /host/proc/mdstat
|
||||
# mismatch_cnt filename to monitor = /host/sys/block/%s/md/mismatch_cnt
|
||||
|
||||
[plugin:proc:/proc/net/rpc/nfsd]
|
||||
# filename to monitor = /host/proc/net/rpc/nfsd
|
||||
|
||||
[plugin:proc:/proc/net/rpc/nfs]
|
||||
# filename to monitor = /host/proc/net/rpc/nfs
|
||||
|
||||
[plugin:proc:/proc/spl/kstat/zfs/arcstats]
|
||||
# filename to monitor = /host/proc/spl/kstat/zfs/arcstats
|
||||
|
||||
[plugin:proc:/sys/fs/btrfs]
|
||||
# path to monitor = /host/sys/fs/btrfs
|
||||
# check for btrfs changes every = 1m
|
||||
# physical disks allocation = auto
|
||||
# data allocation = auto
|
||||
# metadata allocation = auto
|
||||
# system allocation = auto
|
||||
# commit stats = auto
|
||||
# error stats = auto
|
||||
|
||||
[plugin:proc:ipc]
|
||||
# message queues = yes
|
||||
# semaphore totals = yes
|
||||
# shared memory totals = yes
|
||||
# msg filename to monitor = /host/proc/sysvipc/msg
|
||||
# shm filename to monitor = /host/proc/sysvipc/shm
|
||||
# max dimensions in memory allowed = 50
|
||||
|
||||
[plugin:proc:/sys/class/power_supply]
|
||||
# battery capacity = yes
|
||||
# battery power = yes
|
||||
# battery charge = no
|
||||
# battery energy = no
|
||||
# power supply voltage = no
|
||||
# keep files open = auto
|
||||
# directory to monitor = /host/sys/class/power_supply
|
||||
|
||||
[plugin:proc:/sys/class/drm]
|
||||
# directory to monitor = /host/sys/class/drm
|
@ -3,7 +3,7 @@ services:
|
||||
# See sample https://github.com/outline/outline/blob/main/.env.sample
|
||||
|
||||
outline_app:
|
||||
image: outlinewiki/outline:0.83.0
|
||||
image: outlinewiki/outline:0.84.0
|
||||
container_name: outline_app
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
@ -17,6 +17,7 @@ services:
|
||||
environment:
|
||||
NODE_ENV: 'production'
|
||||
URL: 'https://outline.vakhrushev.me'
|
||||
FORCE_HTTPS: 'true'
|
||||
SECRET_KEY: '{{ outline_secret_key }}'
|
||||
UTILS_SECRET: '{{ outline_utils_secret }}'
|
||||
DATABASE_URL: 'postgres://{{ outline_postgres_user }}:{{ outline_postgres_password }}@outline_postgres:5432/{{ outline_postgres_database }}'
|
||||
@ -34,14 +35,15 @@ services:
|
||||
AWS_S3_FORCE_PATH_STYLE: 'true'
|
||||
AWS_S3_ACL: 'private'
|
||||
|
||||
OIDC_CLIENT_ID: '{{ outline_oidc_client_id }}'
|
||||
OIDC_CLIENT_SECRET: '{{ outline_oidc_client_secret }}'
|
||||
OIDC_AUTH_URI: 'https://kk.vakhrushev.me/realms/outline/protocol/openid-connect/auth'
|
||||
OIDC_TOKEN_URI: 'https://kk.vakhrushev.me/realms/outline/protocol/openid-connect/token'
|
||||
OIDC_USERINFO_URI: 'https://kk.vakhrushev.me/realms/outline/protocol/openid-connect/userinfo'
|
||||
OIDC_LOGOUT_URI: 'https://kk.vakhrushev.me/realms/outline/protocol/openid-connect/logout'
|
||||
OIDC_CLIENT_ID: '{{ outline_oidc_client_id | replace("$", "$$") }}'
|
||||
OIDC_CLIENT_SECRET: '{{ outline_oidc_client_secret | replace("$", "$$") }}'
|
||||
OIDC_AUTH_URI: 'https://auth.vakhrushev.me/api/oidc/authorization'
|
||||
OIDC_TOKEN_URI: 'https://auth.vakhrushev.me/api/oidc/token'
|
||||
OIDC_USERINFO_URI: 'https://auth.vakhrushev.me/api/oidc/userinfo'
|
||||
OIDC_LOGOUT_URI: 'https://auth.vakhrushev.me/logout'
|
||||
OIDC_USERNAME_CLAIM: 'email'
|
||||
OIDC_DISPLAY_NAME: 'KK'
|
||||
OIDC_SCOPES: 'openid profile email'
|
||||
OIDC_DISPLAY_NAME: 'Authelia'
|
||||
|
||||
SMTP_HOST: '{{ postbox_host }}'
|
||||
SMTP_PORT: '{{ postbox_port }}'
|
||||
|
12
files/rssbridge/docker-compose.yml.j2
Normal file
12
files/rssbridge/docker-compose.yml.j2
Normal file
@ -0,0 +1,12 @@
|
||||
services:
|
||||
|
||||
rssbridge_app:
|
||||
image: rssbridge/rss-bridge:2025-06-03
|
||||
container_name: rssbridge_app
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- "{{ web_proxy_network }}"
|
||||
|
||||
networks:
|
||||
{{ web_proxy_network }}:
|
||||
external: true
|
10
files/wakapi/backup.sh.j2
Normal file
10
files/wakapi/backup.sh.j2
Normal file
@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -eu
|
||||
set -o pipefail
|
||||
|
||||
echo "{{ app_name }}: backup data with gobackups"
|
||||
|
||||
(cd "{{ base_dir }}" && gobackup perform --config "{{ gobackup_config }}")
|
||||
|
||||
echo "{{ app_name }}: done."
|
32
files/wakapi/docker-compose.yml.j2
Normal file
32
files/wakapi/docker-compose.yml.j2
Normal file
@ -0,0 +1,32 @@
|
||||
# See versions: https://github.com/gramps-project/gramps-web/pkgs/container/grampsweb
|
||||
|
||||
services:
|
||||
|
||||
wakapi_app:
|
||||
image: ghcr.io/muety/wakapi:2.14.0
|
||||
container_name: wakapi_app
|
||||
restart: unless-stopped
|
||||
user: '{{ user_create_result.uid }}:{{ user_create_result.group }}'
|
||||
networks:
|
||||
- "{{ web_proxy_network }}"
|
||||
volumes:
|
||||
- "{{ data_dir }}:/data"
|
||||
environment:
|
||||
WAKAPI_PUBLIC_URL: "https://wakapi.vakhrushev.me"
|
||||
WAKAPI_PASSWORD_SALT: "{{ wakapi_password_salt }}"
|
||||
WAKAPI_ALLOW_SIGNUP: "false"
|
||||
WAKAPI_DISABLE_FRONTPAGE: "true"
|
||||
WAKAPI_COOKIE_MAX_AGE: 31536000
|
||||
# Mail
|
||||
WAKAPI_MAIL_SENDER: "Wakapi <wakapi@vakhrushev.me>"
|
||||
WAKAPI_MAIL_PROVIDER: "smtp"
|
||||
WAKAPI_MAIL_SMTP_HOST: "{{ postbox_host }}"
|
||||
WAKAPI_MAIL_SMTP_PORT: "{{ postbox_port }}"
|
||||
WAKAPI_MAIL_SMTP_USER: "{{ postbox_user }}"
|
||||
WAKAPI_MAIL_SMTP_PASS: "{{ postbox_pass }}"
|
||||
WAKAPI_MAIL_SMTP_TLS: "false"
|
||||
|
||||
|
||||
networks:
|
||||
{{ web_proxy_network }}:
|
||||
external: true
|
16
files/wakapi/gobackup.yml.j2
Normal file
16
files/wakapi/gobackup.yml.j2
Normal file
@ -0,0 +1,16 @@
|
||||
# https://gobackup.github.io/configuration
|
||||
|
||||
models:
|
||||
|
||||
gramps:
|
||||
compress_with:
|
||||
type: 'tgz'
|
||||
storages:
|
||||
local:
|
||||
type: 'local'
|
||||
path: '{{ backups_dir }}'
|
||||
keep: 3
|
||||
databases:
|
||||
wakapi:
|
||||
type: sqlite
|
||||
path: "{{ (data_dir, 'wakapi.db') | path_join }}"
|
68
playbook-authelia.yml
Normal file
68
playbook-authelia.yml
Normal file
@ -0,0 +1,68 @@
|
||||
---
|
||||
- name: "Configure authelia application"
|
||||
hosts: all
|
||||
|
||||
vars_files:
|
||||
- vars/ports.yml
|
||||
- vars/secrets.yml
|
||||
|
||||
vars:
|
||||
app_name: "authelia"
|
||||
app_user: "{{ app_name }}"
|
||||
base_dir: "/home/{{ app_user }}"
|
||||
config_dir: "{{ (base_dir, 'config') | path_join }}"
|
||||
|
||||
tasks:
|
||||
- name: "Create user and environment"
|
||||
ansible.builtin.import_role:
|
||||
name: owner
|
||||
vars:
|
||||
owner_name: "{{ app_user }}"
|
||||
owner_extra_groups: ["docker"]
|
||||
|
||||
- name: "Create internal application directories"
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: "directory"
|
||||
owner: "{{ app_user }}"
|
||||
group: "{{ app_user }}"
|
||||
mode: "0700"
|
||||
loop:
|
||||
- "{{ config_dir }}"
|
||||
|
||||
- name: "Copy configuration files"
|
||||
ansible.builtin.copy:
|
||||
src: "files/{{ app_name }}/{{ item }}"
|
||||
dest: "{{ (config_dir, item) | path_join }}"
|
||||
owner: "{{ app_user }}"
|
||||
group: "{{ app_user }}"
|
||||
mode: "0600"
|
||||
loop:
|
||||
- "users.yml"
|
||||
|
||||
- name: "Copy configuration files (templates)"
|
||||
ansible.builtin.template:
|
||||
src: "files/{{ app_name }}/configuration.yml.j2"
|
||||
dest: "{{ (config_dir, 'configuration.yml') | path_join }}"
|
||||
owner: "{{ app_user }}"
|
||||
group: "{{ app_user }}"
|
||||
mode: "0600"
|
||||
|
||||
- name: "Copy docker compose file"
|
||||
ansible.builtin.template:
|
||||
src: "./files/{{ app_name }}/docker-compose.yml.j2"
|
||||
dest: "{{ base_dir }}/docker-compose.yml"
|
||||
owner: "{{ app_user }}"
|
||||
group: "{{ app_user }}"
|
||||
mode: "0640"
|
||||
|
||||
- name: "Run application with docker compose"
|
||||
community.docker.docker_compose_v2:
|
||||
project_src: "{{ base_dir }}"
|
||||
state: "present"
|
||||
remove_orphans: true
|
||||
|
||||
- name: "Restart application with docker compose"
|
||||
community.docker.docker_compose_v2:
|
||||
project_src: "{{ base_dir }}"
|
||||
state: "restarted"
|
@ -3,7 +3,7 @@
|
||||
hosts: all
|
||||
|
||||
vars_files:
|
||||
- vars/vars.yml
|
||||
- vars/secrets.yml
|
||||
- vars/secrets.yml
|
||||
|
||||
vars:
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
vars_files:
|
||||
- vars/ports.yml
|
||||
- vars/vars.yml
|
||||
- vars/secrets.yml
|
||||
|
||||
vars:
|
||||
app_name: "caddyproxy"
|
||||
@ -60,8 +60,13 @@
|
||||
state: "present"
|
||||
remove_orphans: true
|
||||
|
||||
- name: "Reload caddy"
|
||||
community.docker.docker_compose_v2_exec:
|
||||
project_src: '{{ base_dir }}'
|
||||
service: "{{ service_name }}"
|
||||
command: caddy reload --config /etc/caddy/Caddyfile
|
||||
# - name: "Reload caddy"
|
||||
# community.docker.docker_compose_v2_exec:
|
||||
# project_src: '{{ base_dir }}'
|
||||
# service: "{{ service_name }}"
|
||||
# command: caddy reload --config /etc/caddy/Caddyfile
|
||||
|
||||
- name: "Restart application with docker compose"
|
||||
community.docker.docker_compose_v2:
|
||||
project_src: "{{ base_dir }}"
|
||||
state: "restarted"
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
vars_files:
|
||||
- vars/ports.yml
|
||||
- vars/vars.yml
|
||||
- vars/secrets.yml
|
||||
|
||||
tasks:
|
||||
- name: "Install python docker lib from pip"
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
vars_files:
|
||||
- vars/ports.yml
|
||||
- vars/vars.yml
|
||||
- vars/secrets.yml
|
||||
|
||||
# See: https://github.com/zyedidia/eget/releases
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
vars_files:
|
||||
- vars/ports.yml
|
||||
- vars/vars.yml
|
||||
- vars/secrets.yml
|
||||
|
||||
vars:
|
||||
app_name: "gitea"
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
vars_files:
|
||||
- vars/ports.yml
|
||||
- vars/vars.yml
|
||||
- vars/secrets.yml
|
||||
|
||||
vars:
|
||||
app_name: "gramps"
|
||||
|
@ -4,7 +4,7 @@
|
||||
hosts: all
|
||||
vars_files:
|
||||
- vars/ports.yml
|
||||
- vars/vars.yml
|
||||
- vars/secrets.yml
|
||||
- vars/homepage.yml
|
||||
tags:
|
||||
- setup
|
||||
@ -28,7 +28,7 @@
|
||||
hosts: all
|
||||
vars_files:
|
||||
- vars/ports.yml
|
||||
- vars/vars.yml
|
||||
- vars/secrets.yml
|
||||
- vars/homepage.yml
|
||||
tags:
|
||||
- deploy
|
||||
|
55
playbook-miniflux.yml
Normal file
55
playbook-miniflux.yml
Normal file
@ -0,0 +1,55 @@
|
||||
---
|
||||
- name: "Configure miniflux application"
|
||||
hosts: all
|
||||
|
||||
vars_files:
|
||||
- vars/ports.yml
|
||||
- vars/secrets.yml
|
||||
|
||||
vars:
|
||||
app_name: "miniflux"
|
||||
app_user: "{{ app_name }}"
|
||||
base_dir: "/home/{{ app_user }}"
|
||||
data_dir: "{{ (base_dir, 'data') | path_join }}"
|
||||
postgres_data_dir: "{{ (base_dir, 'data', 'postgres') | path_join }}"
|
||||
postgres_backups_dir: "{{ (base_dir, 'backups', 'postgres') | path_join }}"
|
||||
|
||||
tasks:
|
||||
- name: "Create user and environment"
|
||||
ansible.builtin.import_role:
|
||||
name: owner
|
||||
vars:
|
||||
owner_name: "{{ app_user }}"
|
||||
owner_extra_groups: ["docker"]
|
||||
|
||||
- name: "Create internal directories"
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: "directory"
|
||||
owner: "{{ app_user }}"
|
||||
group: "{{ app_user }}"
|
||||
mode: "0770"
|
||||
loop:
|
||||
- "{{ postgres_backups_dir }}"
|
||||
|
||||
- name: "Copy docker compose file"
|
||||
ansible.builtin.template:
|
||||
src: "./files/{{ app_name }}/docker-compose.yml.j2"
|
||||
dest: "{{ base_dir }}/docker-compose.yml"
|
||||
owner: "{{ app_user }}"
|
||||
group: "{{ app_user }}"
|
||||
mode: "0640"
|
||||
|
||||
- name: "Copy backup script"
|
||||
ansible.builtin.template:
|
||||
src: "./files/{{ app_name }}/backup.sh.j2"
|
||||
dest: "{{ base_dir }}/backup.sh"
|
||||
owner: "{{ app_user }}"
|
||||
group: "{{ app_user }}"
|
||||
mode: "0750"
|
||||
|
||||
- name: "Run application with docker compose"
|
||||
community.docker.docker_compose_v2:
|
||||
project_src: "{{ base_dir }}"
|
||||
state: "present"
|
||||
remove_orphans: true
|
@ -4,14 +4,60 @@
|
||||
|
||||
vars_files:
|
||||
- vars/ports.yml
|
||||
- vars/vars.yml
|
||||
- vars/secrets.yml
|
||||
|
||||
vars:
|
||||
netdata_version: "v2.4.0"
|
||||
netdata_image: "netdata/netdata:{{ netdata_version }}"
|
||||
netdata_exposed_port: "{{ netdata_port }}"
|
||||
app_name: "netdata"
|
||||
app_user: "{{ app_name }}"
|
||||
base_dir: "/home/{{ app_user }}"
|
||||
config_dir: "{{ (base_dir, 'config') | path_join }}"
|
||||
config_go_d_dir: "{{ (config_dir, 'go.d') | path_join }}"
|
||||
data_dir: "{{ (base_dir, 'data') | path_join }}"
|
||||
|
||||
tasks:
|
||||
- name: "Create user and environment"
|
||||
ansible.builtin.import_role:
|
||||
name: owner
|
||||
vars:
|
||||
owner_name: "{{ app_user }}"
|
||||
owner_extra_groups: ["docker"]
|
||||
|
||||
- name: "Create internal application directories"
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: "directory"
|
||||
owner: "{{ app_user }}"
|
||||
group: "{{ app_user }}"
|
||||
mode: "0770"
|
||||
loop:
|
||||
- "{{ config_dir }}"
|
||||
- "{{ config_go_d_dir }}"
|
||||
- "{{ data_dir }}"
|
||||
|
||||
- name: "Copy netdata config file"
|
||||
ansible.builtin.template:
|
||||
src: "files/{{ app_name }}/netdata.conf.j2"
|
||||
dest: "{{ config_dir }}/netdata.conf"
|
||||
owner: "{{ app_user }}"
|
||||
group: "{{ app_user }}"
|
||||
mode: "0640"
|
||||
|
||||
- name: "Copy prometheus plugin config file"
|
||||
ansible.builtin.copy:
|
||||
src: "files/{{ app_name }}/go.d/prometheus.conf"
|
||||
dest: "{{ config_go_d_dir }}/prometheus.conf"
|
||||
owner: "{{ app_user }}"
|
||||
group: "{{ app_user }}"
|
||||
mode: "0640"
|
||||
|
||||
- name: "Copy fail2ban plugin config file"
|
||||
ansible.builtin.copy:
|
||||
src: "files/{{ app_name }}/go.d/fail2ban.conf"
|
||||
dest: "{{ config_go_d_dir }}/fail2ban.conf"
|
||||
owner: "{{ app_user }}"
|
||||
group: "{{ app_user }}"
|
||||
mode: "0640"
|
||||
|
||||
- name: "Grab docker group id."
|
||||
ansible.builtin.shell:
|
||||
cmd: |
|
||||
@ -21,31 +67,21 @@
|
||||
register: netdata_docker_group_output
|
||||
changed_when: netdata_docker_group_output.rc != 0
|
||||
|
||||
- name: "Create NetData container from {{ netdata_image }}"
|
||||
community.docker.docker_container:
|
||||
name: netdata
|
||||
image: "{{ netdata_image }}"
|
||||
image_name_mismatch: "recreate"
|
||||
restart_policy: "unless-stopped"
|
||||
published_ports:
|
||||
- "127.0.0.1:{{ netdata_exposed_port }}:19999"
|
||||
networks:
|
||||
- name: "{{ web_proxy_network }}"
|
||||
volumes:
|
||||
- "/:/host/root:ro,rslave"
|
||||
- "/etc/group:/host/etc/group:ro"
|
||||
- "/etc/localtime:/etc/localtime:ro"
|
||||
- "/etc/os-release:/host/etc/os-release:ro"
|
||||
- "/etc/passwd:/host/etc/passwd:ro"
|
||||
- "/proc:/host/proc:ro"
|
||||
- "/run/dbus:/run/dbus:ro"
|
||||
- "/sys:/host/sys:ro"
|
||||
- "/var/log:/host/var/log:ro"
|
||||
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||
capabilities:
|
||||
- "SYS_PTRACE"
|
||||
- "SYS_ADMIN"
|
||||
security_opts:
|
||||
- "apparmor:unconfined"
|
||||
env:
|
||||
PGID: "{{ netdata_docker_group_output.stdout | default(999) }}"
|
||||
- name: "Copy docker compose file"
|
||||
ansible.builtin.template:
|
||||
src: "./files/{{ app_name }}/docker-compose.yml.j2"
|
||||
dest: "{{ base_dir }}/docker-compose.yml"
|
||||
owner: "{{ app_user }}"
|
||||
group: "{{ app_user }}"
|
||||
mode: "0640"
|
||||
|
||||
- name: "Run application with docker compose"
|
||||
community.docker.docker_compose_v2:
|
||||
project_src: "{{ base_dir }}"
|
||||
state: "present"
|
||||
remove_orphans: true
|
||||
|
||||
- name: "Restart application with docker compose"
|
||||
community.docker.docker_compose_v2:
|
||||
project_src: "{{ base_dir }}"
|
||||
state: "restarted"
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
vars_files:
|
||||
- vars/ports.yml
|
||||
- vars/vars.yml
|
||||
- vars/secrets.yml
|
||||
|
||||
vars:
|
||||
app_name: "outline"
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
vars_files:
|
||||
- vars/ports.yml
|
||||
- vars/vars.yml
|
||||
- vars/secrets.yml
|
||||
|
||||
vars:
|
||||
user_name: "<put-name-here>"
|
||||
|
@ -1,13 +1,13 @@
|
||||
---
|
||||
- name: "Configure keycloak application"
|
||||
- name: "Configure rssbridge application"
|
||||
hosts: all
|
||||
|
||||
vars_files:
|
||||
- vars/ports.yml
|
||||
- vars/vars.yml
|
||||
- vars/secrets.yml
|
||||
|
||||
vars:
|
||||
app_name: "keycloak"
|
||||
app_name: "rssbridge"
|
||||
app_user: "{{ app_name }}"
|
||||
base_dir: "/home/{{ app_user }}"
|
||||
|
||||
@ -17,18 +17,7 @@
|
||||
name: owner
|
||||
vars:
|
||||
owner_name: "{{ app_user }}"
|
||||
owner_extra_groups:
|
||||
- "docker"
|
||||
owner_ssh_keys:
|
||||
- "{{ lookup('file', 'files/av_id_rsa.pub') }}"
|
||||
|
||||
- name: "Create application data directory"
|
||||
ansible.builtin.file:
|
||||
path: "{{ (base_dir, 'data') | path_join }}"
|
||||
state: "directory"
|
||||
owner: "{{ app_user }}"
|
||||
group: "{{ app_user }}"
|
||||
mode: "0777"
|
||||
owner_extra_groups: ["docker"]
|
||||
|
||||
- name: "Copy docker compose file"
|
||||
ansible.builtin.template:
|
||||
@ -36,7 +25,7 @@
|
||||
dest: "{{ base_dir }}/docker-compose.yml"
|
||||
owner: "{{ app_user }}"
|
||||
group: "{{ app_user }}"
|
||||
mode: "0644"
|
||||
mode: "0640"
|
||||
|
||||
- name: "Run application with docker compose"
|
||||
community.docker.docker_compose_v2:
|
@ -4,7 +4,7 @@
|
||||
|
||||
vars_files:
|
||||
- vars/ports.yml
|
||||
- vars/vars.yml
|
||||
- vars/secrets.yml
|
||||
|
||||
vars:
|
||||
apt_packages:
|
||||
@ -25,21 +25,13 @@
|
||||
name: "{{ apt_packages }}"
|
||||
update_cache: true
|
||||
|
||||
- name: "Configure timezone"
|
||||
ansible.builtin.import_role:
|
||||
name: yatesr.timezone
|
||||
vars:
|
||||
timezone: UTC
|
||||
tags:
|
||||
- skip_ansible_lint
|
||||
|
||||
- name: "Configure security settings"
|
||||
ansible.builtin.import_role:
|
||||
name: geerlingguy.security
|
||||
vars:
|
||||
security_ssh_permit_root_login: "yes"
|
||||
security_autoupdate_enabled: "no"
|
||||
security_fail2ban_enabled: "yes"
|
||||
security_fail2ban_enabled: true
|
||||
|
||||
- name: "Copy keep files script"
|
||||
ansible.builtin.copy:
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
vars_files:
|
||||
- vars/ports.yml
|
||||
- vars/vars.yml
|
||||
- vars/secrets.yml
|
||||
|
||||
tasks:
|
||||
- name: Perform an upgrade of packages
|
||||
|
64
playbook-wakapi.yml
Normal file
64
playbook-wakapi.yml
Normal file
@ -0,0 +1,64 @@
|
||||
---
|
||||
- name: "Configure wakapi application"
|
||||
hosts: all
|
||||
|
||||
vars_files:
|
||||
- vars/ports.yml
|
||||
- vars/secrets.yml
|
||||
|
||||
vars:
|
||||
app_name: "wakapi"
|
||||
app_user: "{{ app_name }}"
|
||||
base_dir: "/home/{{ app_user }}"
|
||||
data_dir: "{{ (base_dir, 'data') | path_join }}"
|
||||
backups_dir: "{{ (base_dir, 'backups') | path_join }}"
|
||||
gobackup_config: "{{ (base_dir, 'gobackup.yml') | path_join }}"
|
||||
|
||||
tasks:
|
||||
- name: "Create user and environment"
|
||||
ansible.builtin.import_role:
|
||||
name: owner
|
||||
vars:
|
||||
owner_name: "{{ app_user }}"
|
||||
owner_extra_groups: ["docker"]
|
||||
|
||||
- name: "Create application internal directories"
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: "directory"
|
||||
owner: "{{ app_user }}"
|
||||
group: "{{ app_user }}"
|
||||
mode: "0750"
|
||||
loop:
|
||||
- "{{ data_dir }}"
|
||||
- "{{ backups_dir }}"
|
||||
|
||||
- name: "Copy gobackup config"
|
||||
ansible.builtin.template:
|
||||
src: "./files/{{ app_name }}/gobackup.yml.j2"
|
||||
dest: "{{ gobackup_config }}"
|
||||
owner: "{{ app_user }}"
|
||||
group: "{{ app_user }}"
|
||||
mode: "0640"
|
||||
|
||||
- name: "Copy backup script"
|
||||
ansible.builtin.template:
|
||||
src: "files/{{ app_name }}/backup.sh.j2"
|
||||
dest: "{{ base_dir }}/backup.sh"
|
||||
owner: "{{ app_user }}"
|
||||
group: "{{ app_user }}"
|
||||
mode: "0750"
|
||||
|
||||
- name: "Copy docker compose file"
|
||||
ansible.builtin.template:
|
||||
src: "./files/{{ app_name }}/docker-compose.yml.j2"
|
||||
dest: "{{ base_dir }}/docker-compose.yml"
|
||||
owner: "{{ app_user }}"
|
||||
group: "{{ app_user }}"
|
||||
mode: "0640"
|
||||
|
||||
- name: "Run application with docker compose"
|
||||
community.docker.docker_compose_v2:
|
||||
project_src: "{{ base_dir }}"
|
||||
state: "present"
|
||||
remove_orphans: true
|
@ -3,7 +3,7 @@
|
||||
version: 1.2.2
|
||||
|
||||
- src: geerlingguy.security
|
||||
version: 2.4.0
|
||||
version: 3.0.0
|
||||
|
||||
- src: geerlingguy.docker
|
||||
version: 7.4.3
|
||||
version: 7.4.7
|
||||
|
@ -3,6 +3,5 @@ base_port: 41080
|
||||
homepage_port: "{{ base_port + 3 }}"
|
||||
netdata_port: "{{ base_port + 4 }}"
|
||||
gitea_port: "{{ base_port + 8 }}"
|
||||
keycloak_port: "{{ base_port + 9 }}"
|
||||
outline_port: "{{ base_port + 10 }}"
|
||||
gramps_port: "{{ base_port + 12 }}"
|
||||
|
142
vars/secrets.yml
Normal file
142
vars/secrets.yml
Normal file
@ -0,0 +1,142 @@
|
||||
$ANSIBLE_VAULT;1.1;AES256
|
||||
62653431636461623338643536653736633166303934626565363963373637396534303130373035
|
||||
6565376162653735313737333439633862643366336264650a633265316463323062653032363861
|
||||
32626536343138663837633334316537373662653262366163633334623764633938323363363962
|
||||
6230333564643665320a613862653632363363616266336338346539323964383736366235306437
|
||||
33306363353163383663643062656330313134353836666232616532316264303564336235356661
|
||||
30653262363866653139646436333036393837383262643537313933613939326433313565393465
|
||||
31373036353133663337613935343038616164316132303833363338623863633234656537653039
|
||||
62626436346238636234393939366139363034306432326538656264343733356537393332633836
|
||||
38636639626665666238656338363633383566616638353235383465623232646537616230626630
|
||||
63303130316438353934656636393366306566346362356564393661643064323630636463383061
|
||||
37636461386432323136393739633862313337333261306664323361393835323034643134383461
|
||||
31313762616538336666656137373631336132383364646163633732323431613239333563653332
|
||||
65616664333839363834333362626238633833666430653738613636333432333430333861356339
|
||||
61323865663661383534343964346238383134613532616637346235616139383434623564333361
|
||||
31636165653261363830623162623738333937316664633434346431626630393837366666643434
|
||||
61643734653834326434353431393732376266626266313264376235323838313539306463653864
|
||||
36393461366230643234376161623330326365616539323965633431633238386262373562383161
|
||||
39323634633166643038356434616461613864303334393932663730303839373530643933323839
|
||||
66353337326336656635636362356531613634623633303461336565363564393964663430393666
|
||||
64326439346233346132653230343234653430653239636362616561636166343030303863373337
|
||||
36363633646432613138313062346164663730313061363432396138323561366430316439343036
|
||||
32353931393064666231323863656165363066313236613332356161363139616636333963386130
|
||||
37363030383765613132353161613766633635363033656561343038633839313933646264383730
|
||||
64336339646264383332373639326164373163383966626363653762643037353636376336626136
|
||||
33346533303036326531316332306461646361376435316438376161663162336335353938366565
|
||||
30633133653431393066393961313138383337313731653031323432633766356338316366373432
|
||||
32373937663961623739633439636661336461346132376533373961666432353937373066643165
|
||||
61663063363661633938373365393665356665636562646265313834373962336566393835633339
|
||||
34396666396162613162326331313037303933366564623837386338363063636564656339336639
|
||||
66346465366233663534373465313930323134313835316464363263383866313563396263616535
|
||||
63383265623865636162346635613863356266336664343434393437656134353639353535383332
|
||||
62623934643930313939646466663336633034343534396137333264623263663866663339663266
|
||||
30343234356536663262616363376663646264353331646164376331376639363135373137396437
|
||||
37363166386233356434656237373535326162303437346233623263663534383032363638376134
|
||||
61653939306433393437656465343066613530396265396262373433383637656266303064623234
|
||||
64333062353435373863636439663561393763333538303836303631666262326430623835656138
|
||||
37653562353562373935333235316430613737653862303933333062643663333364333966643461
|
||||
33323335346566363337643161303835356336306232653763346639323265373432376239363566
|
||||
64373562653238333865326335613133636335373739396335633631313431363061616139303463
|
||||
37333364393438666532396131343637373833353766396234383739306565646439366438653032
|
||||
33656330343061636338643465653664326338663233316631303465666632653436633135643664
|
||||
64616132366632666431653262393035393163343664303961396431666236303864303865343634
|
||||
35616634613165373637653235323164323666343436646339646637646234306163333462393063
|
||||
32346534636165656436353036316232303266616135303663343631303565623562616237306365
|
||||
65303938646239393564333461343238636335336533633265383066653734613332656563666434
|
||||
31316665613630336263613934316361383332363164323266373565323239343033666663396534
|
||||
39323739313636616232663535386439363065333766623837336230303334656466656262613363
|
||||
37386664336436376530373436353235616437333834646563353830626162336261333135383866
|
||||
64383930316531373366646335306131633166353161336463376530353066356530393665393063
|
||||
31613636386532623035373866373065633233633135343439616662616232366337313764646436
|
||||
64626262643532613136373238316561616361393433323066326333663663353236393662396539
|
||||
31653036303031303462643231333965653536666136313638613832393361666131363435633932
|
||||
31663864326563663230626237643763333737613239373134626433636564386231383961316162
|
||||
39383165336433626466393935383363396333636131643733663866356434366664613766396263
|
||||
34313934626133653361633665323131613736306331373732323434323535346136393964356231
|
||||
62346136356331393238346333393266613365633563626238353530333931613330663765393936
|
||||
32333261353634646366323238353238643837633735636662356630373464343330626630656130
|
||||
36356565356430643133386461313335343436316263303064366139316638663161356332386362
|
||||
37376431393661386231313763303266313630323362363664336366633035353562303439373630
|
||||
33343265633630343065363461363064653933303932613761303538393734373962613633386539
|
||||
66636534333537313135356665633966326430373062346136326532666638303334653263646431
|
||||
38393131653338316663313265653861663334326635353137623739396636333637343137636339
|
||||
32303836373535326363396434326233623532633931653039643763326263616232333462616631
|
||||
36666564623030396134346665386661386433366266363739626161653062323963313365353161
|
||||
35643530343439326133613939353737653165326538666530366530323963363839373032326462
|
||||
34666235376263616364656130633637346334353934396132353263313237316366303137386430
|
||||
64653563333963313361303239666361336136356363306266633833366262326431616161613238
|
||||
38653538613032386238623839663332613064333031303939363733396635373238666562386536
|
||||
32316566666435376239386637396334643861643634316338613063656465373164646530363865
|
||||
34373130636435326130633437303539646535336131393339613139383636333763336530636534
|
||||
34636666666265373636326666333130623863316465663333653466353063313134386262333739
|
||||
62626264393362353663303531313061643538663532333164336662343732373463623166396539
|
||||
39396531376338616538633633343733343765306237656466666232623163303738643431633763
|
||||
61656335616430653936303831393664653365363764333362373337323364323039363163353461
|
||||
61336536316466396636306266353830316665343739613033346538333830306263386134613737
|
||||
64316339613462346438656362346664303762643766373364343931626530626439336634666537
|
||||
31633964386564663531343764326666666261643464353438353035333665363434646661646663
|
||||
38636239373331623061343730376632393963303732393533396464633131633435373161303163
|
||||
66383461343861326665623463636262336562633936623563373136613063356362383862663232
|
||||
37333331373431393137363735613366656434323065346661366433663464666363343231393863
|
||||
64633530316230653065356165366135396531663731323866376162306238343962376362633234
|
||||
61626563306431623336623737353931316236623333623337383366613262346631646330313637
|
||||
39366239396330303461303666396431663062626533336136643039353034633230353765353334
|
||||
38613362653963336162326163356662356661386630353664333265373032316531656131376665
|
||||
37376262363130336161613230333863653662623436666361396561613935323432663665643138
|
||||
38616564636634613164313666393532396265396135326538336665373232316461326635306131
|
||||
34343632636637653835653131613161316237346239363830386536363933643532333533373333
|
||||
39643364306163666366376535653333323435383332633961343930633635383030356463333964
|
||||
39626130666166313234386439383833616265316265363430343134633730336261383435356138
|
||||
62373063346238613061363033343366623633373034346531303538396335653938646664303962
|
||||
31336634623135616237323837623831306535316463613266326262663934303938373132343735
|
||||
37656335333263326531646162393738653632376164323165393563656138613830633936396433
|
||||
61353332343134636564333233393863643837353366386234376237623435663765343366363033
|
||||
63326233383962633266303962613361643464613764303531333930363736323535386632393766
|
||||
61353666303134663466333330383031333933666137346364656364313965656164303065303530
|
||||
34616130653061613934393831373130333566363736626261316330303966656162326638333130
|
||||
66373133613536623566303432356666346535636237616561323063643439616436393666376536
|
||||
32613830343636393031333737376332396230313034393062663437613838363263333233613439
|
||||
30623039336339373234326261306435366332656164613439376139346333616331326561383963
|
||||
30643133376632656564616536323863373237623263366266396264633464373765316164346165
|
||||
37636233633661643362636630356333333766613036663335613264333439323239633861363034
|
||||
34663937376530653837653236303839336631313863363239626632646436653638366638366566
|
||||
39306538353231623434373537313862386335393262633062313432646232623863383731313031
|
||||
30656366363837366666393933346238363336363030373836386230343062363661306263633163
|
||||
33626562623935643665626239386133636531393536336661613430343630333961303233343430
|
||||
63656666346138643163393663316134666336323961626163376461663635633834333337393062
|
||||
61656163613234633965356133666335343065626137633137333266613561633936386136643134
|
||||
37383562663031393133326662623136386539633066323336306262346236613161613637626162
|
||||
36636133666334333636653535623732343233396430653566393165353431303739656239373738
|
||||
33323939633264303139323162613964306237376461383261646635343036313639626539373238
|
||||
32336537373436373338386432646139303831383138326564333739353761616336346461356532
|
||||
38303138656533386231303336336564656135346162376662663962663763353830663237323138
|
||||
33373331656637363139626132393231313136303936633161636261643264313230356261366165
|
||||
39666331306262643566663830626663656530303831343231323336306266363735393966613062
|
||||
63353938386263376166316335656164633233633465303065663565373764343031663866653135
|
||||
64663766386436653665356265333565323336636539656237303334383636353161643366656637
|
||||
66356532373130323236313936623964663433333965326662333833316437326461326165376661
|
||||
66396537653032346666363965313339323331303864616230646361386335663138613433326261
|
||||
35613430363864336635343434333761656639633863323534653862383936653762646134356664
|
||||
38326463326239636162333435656561343739366364313738663535636136323439373462643832
|
||||
62633661663337343538393466613734633531666532353161616231323161646237653736346561
|
||||
64323063656366373931396639393261643333393333626539663561636661393936316539633263
|
||||
63343331313464623636353031343232613534663565303538333164306531303438616539386364
|
||||
30376233333630336431336364663834633734636261353364343564333639623737363538313462
|
||||
61616233663335303062336635376435643965373039336231346234363436356238356162613138
|
||||
65326532663461616263626238346535623136633039613939353132313836373962646463333535
|
||||
65313562346631633435616232366166373763346337303561326130333936346130363431383036
|
||||
62356435616630396539303633343166646461393030336462366463636138316333633363643636
|
||||
65376131333731356566333237363266656466376539326438313930376363386231616138336335
|
||||
65333735653830373035656265336331346562353233663465343935383235303930633831613137
|
||||
64303130666532303733633133386334613733383562613661643931636136386264396438316366
|
||||
61653964643135646332343764666134336666336232376465353462356632346533633961636534
|
||||
32643234396636303135663562656435376561336235303837643932366334616265383639343733
|
||||
65633833653763643366646232343765306131313465326263623636386131376463356139623334
|
||||
39343163366439643334646663393434353333316234623530393431643539346435616263303734
|
||||
61633066653838363933646230623238653431393061646430383537343363643562653831336362
|
||||
37626630633161653763386663373630306564663339393265663732623434643231326335376562
|
||||
37663234643466366535326461396631633430613431346134316635653032663033623465346338
|
||||
61353331393631343365663233376330333730366161353362626166646232313666336333386265
|
||||
33373761313536326165343339346263316636363362393365663034353964373164643763383037
|
||||
3666
|
121
vars/vars.yml
121
vars/vars.yml
@ -1,121 +0,0 @@
|
||||
$ANSIBLE_VAULT;1.1;AES256
|
||||
63336665643133366538363963613966643631396163333335386462303362346632336332663763
|
||||
6561306531386234636433663866373239396533363361610a373331666131393038346230666434
|
||||
31323362623166643732326431343766666663623431663964653335393863306264643136383935
|
||||
6230663135383161660a336461353136383735393631383333616665303836333561306663366434
|
||||
30313738316131306564626330623164323766666530346632613932343233316162313033323130
|
||||
37373330346539356534663837356131313631643665373432316434616431366438303461336566
|
||||
62386463353936383762353331646637393537666164346364643036323166663963653864633763
|
||||
35353230656333376465666531306333356533343836653933366230393466633638353865633762
|
||||
64663531613939663439396634343033303337363630383532333633393937396336363261313963
|
||||
61646163643339363831366633383134346536343332393366646237626335303130396435396166
|
||||
38613639373037326430363337623036613135346139633061386236363131646566616433346535
|
||||
62386633396232666538393066363139336233313161636365373632363161656132636238613162
|
||||
31326566616438393834336331383432373962343436626464363266636535626264353466623631
|
||||
39303164396261373739333137646266323939306133386366383233666235303636343337396261
|
||||
39623836383232303737363032613361323437336364346430333931373030643635663730383332
|
||||
62623864623238373861656664393061316433393832646431333636633662313037616665666536
|
||||
36396538346632393563386662393166626230623430626530643766643638663332613436323534
|
||||
34653336623539626632396364653337313430356338363131343363346530626133333938353834
|
||||
30336535333933333764346437376261343434383237336331653938613766386234656266366465
|
||||
33323531623838303862396462373835323366613866306234373737393263373438373635653861
|
||||
31343235323162393461666335386136386435646466383631623237633734336161303165633366
|
||||
34656631333038323039393338376232663930656164626334393139313531373437306534353133
|
||||
33636436666530616535326631363537323131313132623830316139346637386566316138383833
|
||||
36323633636366353932386235303239623333396636333834313833353232373461323231393066
|
||||
61323339623865306264353937373163383435623962383364343163306432353834613536636665
|
||||
36343837323937653533633364623435663038333038353663666566383336366366383132363164
|
||||
31353338613466343834313635373131626338313230653733666633646162316366343630613630
|
||||
64336539373231306336643437646161353230633763366230346338353264353561376333623132
|
||||
30363764656662396230343531306462343139333336343135613063386530343265663537383539
|
||||
61353137373235663038323166613564386631623230356263316463653764656464393866646536
|
||||
36366162333637633438343038336532346432633632613134646361393936306634353566376363
|
||||
64353766613361663434383638613637626333323538303433313235303961376536333338353237
|
||||
32346662313530356564653463376562366239626465646230636531356235396537663261663535
|
||||
34623638643565373164363339646464303864373437333232616339393465396133653262376636
|
||||
62633136356636623663633562623462303362353139373630313064663738363139636336316438
|
||||
66373665666661376131366432376437323439373863376136336565636337356166396561363662
|
||||
32646438346561623132633238636131373561336335336161366261393634323139363062663439
|
||||
37666664363461353131613637646434343361336236383433666230333964396531356362623862
|
||||
32636530306534386266643033316262333637653933373133363935646561663064306266323531
|
||||
38333936666266343133666563653363373635663465386235393463623361316663613136376134
|
||||
62643539633438636263313633343562613664626432623731393061333261363937613563343131
|
||||
30623137313063633636613733633237346464373234656333346336643532383931333938633433
|
||||
36363536323264346537653761653033633133626265613831306262343062613130643561363563
|
||||
37633664663039666663666362346636353139393265343165363466616338643666336534613033
|
||||
65343164316235356439366335316263383166326165326134653963656438343630643037353035
|
||||
63366532373464366662636330326334333732646336613730333537336335623265626537633634
|
||||
34623366656337623635653131383936643436653735636165643330393034383437616162346632
|
||||
39663235663362346563306130343266303834663433336364653563353466383535383532366539
|
||||
64356536613539636630373039663035316335313335353137366537333838363135653236393331
|
||||
37633065323762613330616535363430653865366666623730663230333436323839626131643331
|
||||
31353662383332333638666336656466646530376339373435633037323432333538656433623865
|
||||
63616531346265353238373531363232326331616265343233393161383064393866633536343437
|
||||
36636336633934633236393034346138376466613839653938353336343163313830303330633565
|
||||
30373833323435306138343933333837636161393862306430613161396233323661333430626364
|
||||
65356662336636653039626363623135386336626566613837613261336138623663316266316565
|
||||
32323865663662376335626432333934356239363563623965353436356536323339656461616233
|
||||
61653930666266363165303461643465333063366166346636303163333738663165353139626430
|
||||
63356466616635656565383938313730366635316533656261376436396463343434626564643963
|
||||
32663961623063343233323037366631356662343963313034626633326564633066326633353133
|
||||
34663737356237306363356237383461376534356235316433326535616465633936363238383232
|
||||
61616666656261336434356262663066316630613633373535656465353262633934353938643664
|
||||
32303234363461633438383037386364366134303933623332356165613335626266633132633932
|
||||
64333366353837353461353261356434356361303665346631636632653965336162373536393935
|
||||
39663531613233393364353631383033303132323962356462366561343333663335383831353736
|
||||
36306534653030666265343462653730306438343733633066353965393462353136656336333036
|
||||
64313733376565633264613133336162366130363633313336343131353362363638666634393330
|
||||
66613961616238373566386362316430353966333136626663653537653838346533353862303437
|
||||
33396630303764386534666666373737636666383361383765396466623639353265653831383761
|
||||
65363637386539643439343434383534646563343038626536653836346437323666333362623838
|
||||
39366332613631363363633064646134366639386164313636343130613461306237646564623061
|
||||
66363261303737633434383161326530646365366539623966396166626533636538633037396239
|
||||
30376639353566313637656362353862303937356431653733346363306138333162326166633236
|
||||
38336539333462383838653937343466376365393962303037306536633231343133313738343736
|
||||
65626264333265656535343339643361366261323066376436346331383365383135626262393139
|
||||
62316233303366303932343036316238643135616335393431323030396263653031663732306231
|
||||
39346131373963626433316363393830343330353433623136613532363833366633326262313636
|
||||
30323365343364336662643235386464373432343030333836326465663966336563366461626534
|
||||
61323163663330623766656439623837303263643038313566663139363036373666333732303237
|
||||
37626330663664636236613038373937306563343635343034663832313363613161303630323934
|
||||
66393966366537393466383764386434666132393038376663623333613061633465306235316130
|
||||
37393133303062346334386634333539356435643163336332386238643362373736376164323630
|
||||
64313661303738366565376564656665316166326532633036643533306135336564326334393436
|
||||
32656431383534383865333737376531306665376635616635623766396165613035393330336239
|
||||
30643230323737373262313363316238316533653265646661313736323835393362643961633030
|
||||
63646664303639316632383763323537363264663739633530346538643663373130353962323436
|
||||
66306561376638373436366233336535313761623532633862303533663762623838326239376664
|
||||
62663534363262346232666463373332646234623733346165613630643330356131616632353533
|
||||
66353434326233643561363730373964393039343766393862663563643939343831653666643564
|
||||
31626538633130313964636230343530333535353831613566346165303330663964666161666363
|
||||
66623736323464663731343431373938323331663364666634646165643030646266363261646130
|
||||
63373830316338303564343239343761623231356562316536626135316430386530613238353233
|
||||
32646438323637303038653737386363313162343535396632363030386333616561613966363163
|
||||
65326461653063323132623130336265303764653965323966663466376463623433623365353137
|
||||
62363039616630313034373734633261303830636334333233393562386563363963666263643561
|
||||
38363766386465643835383837353631353138313263346361366266666161633334343238396165
|
||||
65646139626537643261656564333131643566306636316137333636303430613535353831343436
|
||||
31373734333231393737643432353361623061613363383433366366313230366461663031303864
|
||||
65616337396161373733386463303730396437333330366563346437333331343435313134376536
|
||||
33313861376333386138336339313935623861653435323039323835633038653263656364656239
|
||||
39383561643834313635663464636261643962373434383733653631336265386638383430653533
|
||||
38613838316563393631366263306138353161616635386332656331343935336538626331386634
|
||||
37636133353637363932346462336539623366613066313336643739653661336336393131383665
|
||||
39613162613863643761623737326438313732363263666135623537636266363664316430393366
|
||||
34663161366337386436353333393637383231333564633932333238643362396232353430353136
|
||||
34343562366363613664646465313135316438386532653539656137366436663630623831323466
|
||||
32393230333330323761656665363731656462363536396632343934643932373939323834336238
|
||||
66666132326334353165366535326130333831353537383931366539616237633830386234626366
|
||||
30663162363531613937343135633032316338646433633262643462316631356434363563386339
|
||||
39366666303062346663653435313966663930373238613037386430313063386534666562303336
|
||||
64393763323336356631376633353037326464383639333734306161623463373466623734306231
|
||||
34616564656466336161346664326230633938393834323432303562666437323764336137663966
|
||||
66373238386663613631353964353339333738323032376465373736636132323535626164356464
|
||||
33366162646563613464383663323965663766376530613562666661643137656137366237303033
|
||||
34373733633738323566306261613135393533346332633339396436663438653761363530386639
|
||||
63396461623465343862323639396333313639636632306236393438386262393664646564333238
|
||||
65653462376138636332653933366162396337343530636338616336333263656266383736386535
|
||||
63643034393035633533663236366135363466653765383366336430646562313763336561376334
|
||||
64396430343330653335326133616566663533313233616432666264623231666338393730623531
|
||||
33376163666430623835376336363863356237336137323066356262333436623266323661613765
|
||||
61656662373435663132
|
Reference in New Issue
Block a user